@lvce-editor/server 0.9.0 → 0.9.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 (927) hide show
  1. package/ThirdPartyNotices.txt +2 -2
  2. package/package.json +2 -2
  3. package/static/{5ae11b9 → 0e8e702}/config/builtinCommands.json +0 -0
  4. package/static/{5ae11b9 → 0e8e702}/config/colorTheme.json +0 -0
  5. package/static/{5ae11b9 → 0e8e702}/config/defaultKeyBindings.json +0 -0
  6. package/static/{5ae11b9 → 0e8e702}/config/defaultSettings.json +0 -0
  7. package/static/{5ae11b9 → 0e8e702}/config/fileMap.json +0 -0
  8. package/static/{5ae11b9 → 0e8e702}/config/webExtensions.json +0 -0
  9. package/static/{5ae11b9 → 0e8e702}/css/App.css +9 -9
  10. package/static/{5ae11b9 → 0e8e702}/fonts/FiraCode-VariableFont.ttf +0 -0
  11. package/static/{5ae11b9 → 0e8e702}/icons/arrow-down.svg +0 -0
  12. package/static/{5ae11b9 → 0e8e702}/icons/arrow-left.svg +0 -0
  13. package/static/{5ae11b9 → 0e8e702}/icons/arrow-right.svg +0 -0
  14. package/static/{5ae11b9 → 0e8e702}/icons/arrow-up.svg +0 -0
  15. package/static/{5ae11b9 → 0e8e702}/icons/check.svg +0 -0
  16. package/static/{5ae11b9 → 0e8e702}/icons/chevron-right.svg +0 -0
  17. package/static/{5ae11b9 → 0e8e702}/icons/chrome-close.svg +0 -0
  18. package/static/{5ae11b9 → 0e8e702}/icons/chrome-maximize.svg +0 -0
  19. package/static/{5ae11b9 → 0e8e702}/icons/chrome-minimize.svg +0 -0
  20. package/static/{5ae11b9 → 0e8e702}/icons/debug-alt-2.svg +0 -0
  21. package/static/{5ae11b9 → 0e8e702}/icons/ellipsis.svg +0 -0
  22. package/static/{5ae11b9 → 0e8e702}/icons/extensionDefaultIcon.png +0 -0
  23. package/static/{5ae11b9 → 0e8e702}/icons/extensions.svg +0 -0
  24. package/static/{5ae11b9 → 0e8e702}/icons/files.svg +0 -0
  25. package/static/{5ae11b9 → 0e8e702}/icons/icon-close.svg +0 -0
  26. package/static/{5ae11b9 → 0e8e702}/icons/icon-source-control.svg +0 -0
  27. package/static/{5ae11b9 → 0e8e702}/icons/icon-sync.svg +0 -0
  28. package/static/{5ae11b9 → 0e8e702}/icons/icon.png +0 -0
  29. package/static/{5ae11b9 → 0e8e702}/icons/language-icon.svg +0 -0
  30. package/static/{5ae11b9 → 0e8e702}/icons/pwa-icon-192.png +0 -0
  31. package/static/{5ae11b9 → 0e8e702}/icons/pwa-icon-512.png +0 -0
  32. package/static/{5ae11b9 → 0e8e702}/icons/search.svg +0 -0
  33. package/static/{5ae11b9 → 0e8e702}/icons/settings-gear.svg +0 -0
  34. package/static/{5ae11b9 → 0e8e702}/icons/source-control.svg +0 -0
  35. package/static/{5ae11b9 → 0e8e702}/icons/symbol-array.svg +0 -0
  36. package/static/{5ae11b9 → 0e8e702}/icons/symbol-boolean.svg +0 -0
  37. package/static/{5ae11b9 → 0e8e702}/icons/symbol-class.svg +0 -0
  38. package/static/{5ae11b9 → 0e8e702}/icons/symbol-color.svg +0 -0
  39. package/static/{5ae11b9 → 0e8e702}/icons/symbol-constant.svg +0 -0
  40. package/static/{5ae11b9 → 0e8e702}/icons/symbol-enum-member.svg +0 -0
  41. package/static/{5ae11b9 → 0e8e702}/icons/symbol-enum.svg +0 -0
  42. package/static/{5ae11b9 → 0e8e702}/icons/symbol-event.svg +0 -0
  43. package/static/{5ae11b9 → 0e8e702}/icons/symbol-field.svg +0 -0
  44. package/static/{5ae11b9 → 0e8e702}/icons/symbol-file.svg +0 -0
  45. package/static/{5ae11b9 → 0e8e702}/icons/symbol-interface.svg +0 -0
  46. package/static/{5ae11b9 → 0e8e702}/icons/symbol-key.svg +0 -0
  47. package/static/{5ae11b9 → 0e8e702}/icons/symbol-keyword.svg +0 -0
  48. package/static/{5ae11b9 → 0e8e702}/icons/symbol-method.svg +0 -0
  49. package/static/{5ae11b9 → 0e8e702}/icons/symbol-misc.svg +0 -0
  50. package/static/{5ae11b9 → 0e8e702}/icons/symbol-namespace.svg +0 -0
  51. package/static/{5ae11b9 → 0e8e702}/icons/symbol-numeric.svg +0 -0
  52. package/static/{5ae11b9 → 0e8e702}/icons/symbol-operator.svg +0 -0
  53. package/static/{5ae11b9 → 0e8e702}/icons/symbol-parameter.svg +0 -0
  54. package/static/{5ae11b9 → 0e8e702}/icons/symbol-property.svg +0 -0
  55. package/static/{5ae11b9 → 0e8e702}/icons/symbol-ruler.svg +0 -0
  56. package/static/{5ae11b9 → 0e8e702}/icons/symbol-snippet.svg +0 -0
  57. package/static/{5ae11b9 → 0e8e702}/icons/symbol-string.svg +0 -0
  58. package/static/{5ae11b9 → 0e8e702}/icons/symbol-structure.svg +0 -0
  59. package/static/{5ae11b9 → 0e8e702}/icons/symbol-variable.svg +0 -0
  60. package/static/{5ae11b9 → 0e8e702}/icons/theme-icon.png +0 -0
  61. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +0 -0
  62. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/dist/extensionHostWorkerMain.js.map +0 -0
  63. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/extensionHostWorkerMain.js +0 -0
  64. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Api/Api.js +0 -0
  65. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Assert/Assert.js +0 -0
  66. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Command/Command.js +0 -0
  67. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Errors/Errors.js +0 -0
  68. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostBraceCompletion/ExtensionHostBraceCompletion.js +0 -0
  69. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostCommand/ExtensionHostCommand.js +0 -0
  70. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostCompletion/ExtensionHostCompletion.js +0 -0
  71. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostDefinition/ExtensionHostDefinition.js +0 -0
  72. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostExtension/ExtensionHostExtension.js +0 -0
  73. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostImplementation/ExtensionHostImplementation.js +0 -0
  74. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostNotification/ExtensionHostNotification.js +0 -0
  75. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostReference/ExtensionHostReference.js +0 -0
  76. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostSourceControl/ExtensionHostSourceControl.js +0 -0
  77. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostTabCompletion/ExtensionHostTabCompletion.js +0 -0
  78. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostTextDocument/ExtensionHostTextDocument.js +0 -0
  79. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostTextSearch/ExtensionHostTextSearch.js +0 -0
  80. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostTypeDefinition/ExtensionHostTypeDefinition.js +0 -0
  81. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/ExtensionHostWorkspace/ExtensionHostWorkspace.js +0 -0
  82. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/IpcChild/IpcChild.js +0 -0
  83. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithMessagePort.js +0 -0
  84. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithModuleWorker.js +0 -0
  85. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithReferencePort.js +0 -0
  86. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Registry/Registry.js +0 -0
  87. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Rpc/Rpc.js +0 -0
  88. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/VError/VError.js +0 -0
  89. package/static/{5ae11b9 → 0e8e702}/packages/extension-host-worker/src/parts/Validation/Validation.js +0 -0
  90. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/dist/rendererProcessMain.js +2 -6
  91. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/dist/rendererProcessMain.js.map +2 -2
  92. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ActivityBarItemFlags/ActvityBarItemFlags.js +0 -0
  93. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/AriaAlert/AriaAlert.js +0 -0
  94. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Assert/Assert.js +0 -0
  95. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Audio/Audio.ipc.js +0 -0
  96. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Audio/Audio.js +0 -0
  97. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/BackDrop/BackDrop.js +0 -0
  98. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Callback/Callback.js +0 -0
  99. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ClipBoard/ClipBoard.ipc.js +0 -0
  100. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ClipBoard/ClipBoard.js +0 -0
  101. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Command/Command.js +0 -0
  102. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Context/Context.js +0 -0
  103. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Css/Css.ipc.js +0 -0
  104. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Css/Css.js +0 -0
  105. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Developer/Developer.ipc.js +0 -0
  106. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Developer/Developer.js +0 -0
  107. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Dialog/Dialog.ipc.js +0 -0
  108. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Dialog/Dialog.js +0 -0
  109. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/DirentType/DirentType.js +0 -0
  110. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Download/Download.ipc.js +0 -0
  111. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Download/Download.js +0 -0
  112. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/Editor.js +0 -0
  113. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/EditorEvents.js +0 -0
  114. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/EditorHelper.js +0 -0
  115. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerCursor.js +0 -0
  116. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerDecoration2.js +0 -0
  117. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerDiagnostics.js +0 -0
  118. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerLineNumbers.js +0 -0
  119. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerMarker.js +0 -0
  120. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerScreenReader.js +0 -0
  121. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerScrollBar.js +0 -0
  122. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerSelections.js +0 -0
  123. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Editor/LayerText.js +0 -0
  124. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorError/EditorError.ipc.js +0 -0
  125. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorError/EditorError.js +0 -0
  126. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorGroup/EditorGroup.js +0 -0
  127. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorHover/EditorHover.ipc.js +0 -0
  128. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorHover/EditorHover.js +0 -0
  129. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorRename/EditorRename.ipc.js +0 -0
  130. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorRename/EditorRename.js +0 -0
  131. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/EditorTab/EditorTab.js +0 -0
  132. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ElementTagMap/ElementTagMap.js +0 -0
  133. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ElementTags/ElementTags.js +0 -0
  134. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Errors/JsonRpcError.js +0 -0
  135. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Eval/Eval.ipc.js +0 -0
  136. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Eval/Eval.js +0 -0
  137. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/FilePicker/FilePicker.ipc.js +0 -0
  138. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/FilePicker/FilePicker.js +0 -0
  139. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/FileSystemHandle/FileSystemHandle.ipc.js +0 -0
  140. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/FileSystemHandle/FileSystemHandle.js +0 -0
  141. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Focus/Focus.js +0 -0
  142. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Icon/Icon.js +0 -0
  143. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ImagePreview/ImagePreview.ipc.js +0 -0
  144. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ImagePreview/ImagePreview.js +0 -0
  145. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/InitData/InitData.ipc.js +0 -0
  146. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/InitData/InitData.js +0 -0
  147. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/InputBox/InputBox.js +0 -0
  148. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/InputEventType/InputEventType.js +0 -0
  149. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/IpcClient/IpcClient.js +0 -0
  150. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/IpcParent/IpcParent.js +0 -0
  151. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/IpcParent/IpcParentWithMessagePort.js +0 -0
  152. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/IpcParent/IpcParentWithModuleWorker.js +0 -0
  153. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/IpcParent/IpcParentWithReferencePort.js +0 -0
  154. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/KeyBindings/KeyBindings.ipc.js +0 -0
  155. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/KeyBindings/KeyBindings.js +0 -0
  156. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Layout/Layout.ipc.js +0 -0
  157. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Layout/Layout.js +0 -0
  158. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Location/Location.ipc.js +0 -0
  159. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Location/Location.js +0 -0
  160. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/MenuEntryId/MenuEntryId.js +0 -0
  161. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/MenuItem/MenuItem.js +0 -0
  162. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/MenuItemFlags/MenuItemFlags.js +0 -0
  163. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Meta/Meta.ipc.js +0 -0
  164. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Meta/Meta.js +0 -0
  165. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ModifierKey/ModifierKey.js +0 -0
  166. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Module/Module.js +0 -0
  167. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ModuleId/ModuleId.js +0 -0
  168. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ModuleMap/ModuleMap.js +0 -0
  169. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/MouseEventType/MouseEventType.js +0 -0
  170. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Notification/Notification.ipc.js +0 -0
  171. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Notification/Notification.js +0 -0
  172. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/OldMenu/Menu.ipc.js +0 -0
  173. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/OldMenu/Menu.js +0 -0
  174. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/OldMenu/Menu2.js +0 -0
  175. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Open/Open.ipc.js +0 -0
  176. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Open/Open.js +0 -0
  177. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Performance/Performance.ipc.js +0 -0
  178. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Performance/Performance.js +0 -0
  179. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Platform/Platform.js +2 -2
  180. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/PlatformType/PlatformType.js +0 -0
  181. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Renderer/Renderer.js +0 -0
  182. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Renderer/RendererExtension.js +0 -0
  183. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Renderer/RendererQuickPick.js +0 -0
  184. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Renderer/RendererSearchResult.js +0 -0
  185. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Renderer/RendererSuggestWidget.js +0 -0
  186. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Renderer/RendererTree.js +0 -0
  187. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/RendererWorker/RendererWorker.js +0 -0
  188. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/SanitizeHtml/SanitizeHtml.ipc.js +0 -0
  189. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/SanitizeHtml/SanitizeHtml.js +0 -0
  190. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ServiceWorker/ServiceWorker.ipc.js +0 -0
  191. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ServiceWorker/ServiceWorker.js +0 -0
  192. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Terminal/Terminal.ipc.js +0 -0
  193. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Terminal/Terminal.js +0 -0
  194. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/ConditionErrors.js +0 -0
  195. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/ElementActions.js +0 -0
  196. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/HtmlElements.js +0 -0
  197. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/KeyBoardActions.js +0 -0
  198. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/MultiElementConditions.js +0 -0
  199. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/QuerySelector.js +0 -0
  200. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/SingleElementConditions.js +0 -0
  201. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/TestFrameWork.ipc.js +0 -0
  202. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/TestFrameWork/TestFrameWork.js +0 -0
  203. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/ExplorerModel.js +0 -0
  204. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/TreeProviderJson.js +0 -0
  205. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/TreeProviderNpm.js +0 -0
  206. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/TreeView.js +0 -0
  207. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/TreeView2.js +0 -0
  208. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/TreeViewClass.js +0 -0
  209. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/TreeViewNumber.js +0 -0
  210. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/Viewlet.ipc.js +0 -0
  211. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/Viewlet.js +0 -0
  212. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Viewlet/ViewletList.js +0 -0
  213. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBar.js +1 -5
  214. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBarEvents.js +0 -0
  215. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletClock/ViewletClock.js +0 -0
  216. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletController/ViewletProblems.controller.js +0 -0
  217. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletDebugConsole/ViewletDebugConsole.js +0 -0
  218. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js +0 -0
  219. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletionEvents.js +0 -0
  220. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorFindWidget/ViewletEditorFindWidget.js +0 -0
  221. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorFindWidget/ViewletEditorFindWidgetEvents.js +0 -0
  222. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImage.js +0 -0
  223. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImageEvents.js +0 -0
  224. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js +0 -0
  225. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorPlainText/ViewletOutputEvents.js +0 -0
  226. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEditorText/ViewletEditorText.js +0 -0
  227. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletEmpty/ViewletEmpty.js +0 -0
  228. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorer.js +0 -0
  229. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorerEvents.js +0 -0
  230. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js +0 -0
  231. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetailEvents.js +0 -0
  232. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensions.js +0 -0
  233. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensionsEvents.js +0 -0
  234. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletIframe/ViewletIframe.js +0 -0
  235. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletImplementations/ViewletImplementations.js +0 -0
  236. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindings.js +0 -0
  237. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindingsEvents.js +0 -0
  238. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletLocations/ViewletLocations.js +0 -0
  239. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletMain/ViewletMain.js +0 -0
  240. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletMain/ViewletMainEvents.js +0 -0
  241. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletModule/ViewletModule.js +0 -0
  242. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletModuleId/ViewletModuleId.js +0 -0
  243. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutput.js +0 -0
  244. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutputEvents.js +0 -0
  245. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletPanel/ViewletPanel.js +0 -0
  246. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblems.js +0 -0
  247. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblemsEvents.js +0 -0
  248. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPick.js +0 -0
  249. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPickEvents.js +0 -0
  250. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletReferences/ViewletReferences.js +0 -0
  251. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js +0 -0
  252. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearch.js +0 -0
  253. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearchEvents.js +0 -0
  254. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletSideBar/ViewletSideBar.js +0 -0
  255. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletSourceControl/ViewletSourceControl.js +0 -0
  256. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletStatusBar/ViewletStatusBar.js +0 -0
  257. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTerminal/ViewletTerminal.js +0 -0
  258. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBar.js +0 -0
  259. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBarEvents.js +0 -0
  260. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js +0 -0
  261. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsEvents.js +0 -0
  262. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js +0 -0
  263. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarEvents.js +0 -0
  264. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/VirtualDom/VirtualDom.js +0 -0
  265. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/VirtualDomElement/VirtualDomElement.js +0 -0
  266. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/VirtualDomElements/VirtualDomElements.js +0 -0
  267. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/WebStorage/WebStorage.ipc.js +0 -0
  268. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/WebStorage/WebStorage.js +0 -0
  269. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/WebStorageType/WebStorageType.js +0 -0
  270. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/WheelEventType/WheelEventType.js +0 -0
  271. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Widget/Widget.js +0 -0
  272. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/WidgetManager/WidgetManager.js +0 -0
  273. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Window/Window.ipc.js +0 -0
  274. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/parts/Window/Window.js +0 -0
  275. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/rendererProcessMain.js +0 -0
  276. package/static/{5ae11b9 → 0e8e702}/packages/renderer-process/src/shared/findIndex.js +0 -0
  277. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/dist/rendererWorkerMain.js +39 -10
  278. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/dist/rendererWorkerMain.js.map +4 -4
  279. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ActivityBarItemFlags/ActvityBarItemFlags.js +0 -0
  280. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Ajax/Ajax.ipc.js +0 -0
  281. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Ajax/Ajax.js +0 -0
  282. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Arrays/Arrays.js +0 -0
  283. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Assert/Assert.js +0 -0
  284. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Audio/Audio.ipc.js +0 -0
  285. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Audio/Audio.js +0 -0
  286. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Base64/Base64.ipc.js +0 -0
  287. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Base64/Base64.js +0 -0
  288. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/BeforeInput/BeforeInput.js +0 -0
  289. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Blob/Blob.ipc.js +0 -0
  290. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Blob/Blob.js +0 -0
  291. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/BrowserErrorTypes/BrowserErrorTypes.js +0 -0
  292. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/CacheStorage/CacheStorage.ipc.js +0 -0
  293. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/CacheStorage/CacheStorage.js +0 -0
  294. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Callback/Callback.ipc.js +0 -0
  295. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Callback/Callback.js +0 -0
  296. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Chrome/Chrome.ipc.js +0 -0
  297. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Chrome/Chrome.js +0 -0
  298. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Clamp/Clamp.js +0 -0
  299. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ClipBoard/ClipBoard.ipc.js +0 -0
  300. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ClipBoard/ClipBoard.js +0 -0
  301. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/CodeFrameColumns/CodeFrameColumns.js +0 -0
  302. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorPicker/ColorPicker.ipc.js +0 -0
  303. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorPicker/ColorPicker.js +0 -0
  304. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorTheme/Color.js +0 -0
  305. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorTheme/ColorTheme.ipc.js +0 -0
  306. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorTheme/ColorTheme.js +0 -0
  307. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorThemeFromJson/ColorThemeFromJson.ipc.js +0 -0
  308. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ColorThemeFromJson/ColorThemeFromJson.js +0 -0
  309. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Command/Command.js +0 -0
  310. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Compare/Compare.js +0 -0
  311. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ContentTracing/ContentTracing.ipc.js +0 -0
  312. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ContentTracing/ContentTracing.js +0 -0
  313. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Context/ContextImpl.js +0 -0
  314. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ContextMenu/ContextMenu.ipc.js +0 -0
  315. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ContextMenu/ContextMenu.js +0 -0
  316. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Css/Css.js +0 -0
  317. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/DefaultIcon/DefaultIcon.js +0 -0
  318. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Developer/Developer.ipc.js +0 -0
  319. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Developer/Developer.js +0 -0
  320. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Dialog/Dialog.ipc.js +0 -0
  321. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Dialog/Dialog.js +0 -0
  322. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/DiffDom/DiffDom.js +0 -0
  323. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/DirentType/DirentType.js +0 -0
  324. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Download/Download.ipc.js +0 -0
  325. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Download/Download.js +0 -0
  326. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Editor/Editor.js +0 -0
  327. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Editor/EditorCursor.js +0 -0
  328. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Editor/EditorScrolling.js +0 -0
  329. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Editor/EditorSelection.js +0 -0
  330. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Editor/EditorText.js +0 -0
  331. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandApplyEdit.js +0 -0
  332. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandBlur.js +0 -0
  333. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandBraceCompletion.js +0 -0
  334. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCancelSelection.js +0 -0
  335. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCompletion.js +0 -0
  336. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandComposition.js +0 -0
  337. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopy.js +0 -0
  338. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopyLineDown.js +0 -0
  339. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopyLineUp.js +0 -0
  340. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorCharacterLeft.js +0 -0
  341. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorCharacterRight.js +0 -0
  342. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorDown.js +0 -0
  343. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorEnd.js +0 -0
  344. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHome.js +0 -0
  345. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHorizontalLeft.js +0 -0
  346. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHorizontalRight.js +0 -0
  347. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorSet.js +0 -0
  348. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorUp.js +0 -0
  349. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorVertical.js +0 -0
  350. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordLeft.js +0 -0
  351. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordPartLeft.js +0 -0
  352. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordPartRight.js +0 -0
  353. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordRight.js +0 -0
  354. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCut.js +0 -0
  355. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteAllLeft.js +0 -0
  356. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteAllRight.js +0 -0
  357. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteCharacterLeft.js +0 -0
  358. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteCharacterRight.js +0 -0
  359. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontal.js +0 -0
  360. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontalLeft.js +0 -0
  361. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontalRight.js +0 -0
  362. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteSelection.js +0 -0
  363. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordLeft.js +0 -0
  364. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordPartLeft.js +0 -0
  365. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordPartRight.js +0 -0
  366. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordRight.js +0 -0
  367. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDelta.js +0 -0
  368. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandFormat.js +0 -0
  369. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetPositionLeft.js +0 -0
  370. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetPositionRight.js +0 -0
  371. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetSelectionFromNativeRange.js +0 -0
  372. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetWordAt.js +0 -0
  373. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoTo.js +0 -0
  374. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoToDefinition.js +0 -0
  375. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoToTypeDefinition.js +0 -0
  376. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleContextMenu.js +0 -0
  377. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleDoubleClick.js +0 -0
  378. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseMove.js +0 -0
  379. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseMoveWithAltKey.js +0 -0
  380. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleNativeBeforeInputFromContentEditable.js +0 -0
  381. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleNativeSelectionChange.js +0 -0
  382. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarClick.js +0 -0
  383. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarMove.js +0 -0
  384. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleSingleClick.js +0 -0
  385. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTab.js +0 -0
  386. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchEnd.js +0 -0
  387. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchMove.js +0 -0
  388. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchStart.js +0 -0
  389. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTripleClick.js +0 -0
  390. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleWheel.js +0 -0
  391. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndent.js +0 -0
  392. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentLess.js +0 -0
  393. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentMore.js +0 -0
  394. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentSelection.js +0 -0
  395. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandInsertLineBreak.js +0 -0
  396. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveLineDown.js +0 -0
  397. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveLineUp.js +0 -0
  398. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveRectangleSelection.js +0 -0
  399. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveRectangleSelectionPx.js +0 -0
  400. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveSelection.js +0 -0
  401. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveSelectionPx.js +0 -0
  402. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandOpenFind.js +0 -0
  403. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPaste.js +0 -0
  404. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPasteText.js +0 -0
  405. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPosition.js +0 -0
  406. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandReplaceRange.js +0 -0
  407. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandReplaceSelection.js +0 -0
  408. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSave.js +0 -0
  409. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAll.js +0 -0
  410. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllLeft.js +0 -0
  411. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllOccurrences.js +0 -0
  412. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllRight.js +0 -0
  413. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectCharacterLeft.js +0 -0
  414. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectCharacterRight.js +0 -0
  415. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectDown.js +0 -0
  416. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectHorizontalLeft.js +0 -0
  417. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectHorizontalRight.js +0 -0
  418. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectInsideString.js +0 -0
  419. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectLine.js +0 -0
  420. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectNextOccurrence.js +0 -0
  421. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectPreviousOccurrence.js +0 -0
  422. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectUp.js +0 -0
  423. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWord.js +0 -0
  424. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWordLeft.js +0 -0
  425. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWordRight.js +0 -0
  426. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelection.js +0 -0
  427. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetDecorations.js +0 -0
  428. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetDeltaY.js +0 -0
  429. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetLanguageId.js +0 -0
  430. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetSelections.js +0 -0
  431. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandShowMessage.js +0 -0
  432. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSnippet.js +0 -0
  433. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSortLinesAscending.js +0 -0
  434. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTabCompletion.js +0 -0
  435. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleBlockComment.js +0 -0
  436. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleComment.js +0 -0
  437. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleLineComment.js +0 -0
  438. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandType.js +0 -0
  439. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandUndo.js +0 -0
  440. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandUnindent.js +0 -0
  441. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCommand/EditorIndent.js +0 -0
  442. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCompletionMap/EditorCompletionMap.js +0 -0
  443. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorCompletionType/EditorCompletionType.js +0 -0
  444. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorDiagnostics/EditorDiagnostics.ipc.js +0 -0
  445. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorDiagnostics/EditorDiagnostics.js +0 -0
  446. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorError/EditorError.ipc.js +0 -0
  447. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorError/EditorError.js +0 -0
  448. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorRename/EditorRename.ipc.js +0 -0
  449. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorRename/EditorRename.js +0 -0
  450. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/EditorSelection/EditorSelection.js +0 -0
  451. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronApp/ElectronApp.js +0 -0
  452. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronContentTracing/ElectronContentTracing.js +0 -0
  453. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronDeveloper/ElectronDeveloper.js +0 -0
  454. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronDialog/ElectronDialog.js +0 -0
  455. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronNetLog/ElectronNetLog.js +0 -0
  456. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronPowerSaveBlocker/ElectronPowerSaveBlocker.js +0 -0
  457. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronProcess/ElectronProcess.js +0 -0
  458. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronSafeStorage/ElectronSafeStorage.js +0 -0
  459. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronShell/ElectronShell.js +0 -0
  460. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronWindow/ElectronWindow.ipc.js +0 -0
  461. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronWindow/ElectronWindow.js +0 -0
  462. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronWindowAbout/ElectronWindowAbout.js +0 -0
  463. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ElectronWindowProcessExplorer/ElectronWindowProcessExplorer.js +0 -0
  464. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ErrorHandling/ErrorHandling.ipc.js +0 -0
  465. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ErrorHandling/ErrorHandling.js +0 -0
  466. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Errors/CancelationError.js +0 -0
  467. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Errors/Errors.js +0 -0
  468. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Eval/Eval.ipc.js +0 -0
  469. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Eval/Eval.js +0 -0
  470. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionDisplay/ExtensionDisplay.js +0 -0
  471. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostBraceCompletion.js +0 -0
  472. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostClosingTagCompletion.js +0 -0
  473. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCommands.js +0 -0
  474. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCompletion.js +0 -0
  475. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCore.ipc.js +0 -0
  476. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCore.js +0 -0
  477. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDefinition.js +0 -0
  478. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDiagnostic.js +0 -0
  479. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostEditor.js +0 -0
  480. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostFileSystem.js +0 -0
  481. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostFormatting.js +0 -0
  482. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostHover.js +0 -0
  483. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostImplementation.js +0 -0
  484. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguages.js +0 -0
  485. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguagesNode.js +0 -0
  486. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguagesWeb.js +0 -0
  487. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostOutput.js +0 -0
  488. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostQuickPick.js +0 -0
  489. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostReference.js +0 -0
  490. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostRename.js +0 -0
  491. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostSemanticTokens.js +0 -0
  492. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostShared.js +0 -0
  493. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostSourceControl.js +0 -0
  494. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostStatusBarItems.js +0 -0
  495. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTabCompletion.js +0 -0
  496. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTextDocument.js +0 -0
  497. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTextSearch.js +0 -0
  498. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTypeDefinition.js +0 -0
  499. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHost/shared.js +0 -0
  500. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostActivationEvent/ExtensionHostActivationEvent.js +0 -0
  501. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpc.js +0 -0
  502. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpcWithElectron.js +0 -0
  503. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpcWithMessagePort.js +0 -0
  504. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpcWithModuleWorker.js +0 -0
  505. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpcWithReferencePort.js +0 -0
  506. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpcWithSharedProcess.js +0 -0
  507. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpcWithWebSocket.js +0 -0
  508. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagement.js +0 -0
  509. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementBrowser.js +0 -0
  510. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementElectron.js +0 -0
  511. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementNode.js +0 -0
  512. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementShared.js +0 -0
  513. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionManagement/ExtensionManagement.js +0 -0
  514. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionManifestStatus/ExtensionManifestStatus.js +0 -0
  515. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionMarketplace/ExtensionMarketplace.js +0 -0
  516. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionMeta/ExtensionMeta.ipc.js +0 -0
  517. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionMeta/ExtensionMeta.js +0 -0
  518. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Extensions/Extensions.ipc.js +0 -0
  519. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Extensions/Extensions.js +0 -0
  520. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ExtensionsSomething/ExtensionsSomething.js +0 -0
  521. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileHandleEditMode/FileHandleEditMode.js +0 -0
  522. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileHandlePermissionType/FileHandlePermissionType.js +0 -0
  523. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileHandleType/FileHandleType.js +0 -0
  524. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileHandleTypeMap/FileHandleTypeMap.js +0 -0
  525. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FilePicker/FilePicker.ipc.js +0 -0
  526. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FilePicker/FilePicker.js +0 -0
  527. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystem.ipc.js +0 -0
  528. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystem.js +0 -0
  529. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemApp.js +0 -0
  530. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppMemoryUsage.js +0 -0
  531. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppRecentlyOpened.js +0 -0
  532. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppSession.js +0 -0
  533. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppSettings.js +0 -0
  534. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppShared.js +0 -0
  535. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppStartupPerformance.js +0 -0
  536. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemData.js +0 -0
  537. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemDisk.js +0 -0
  538. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemFetch.js +0 -0
  539. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemGitHub.js +0 -0
  540. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemHtml.js +0 -0
  541. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemMemory.js +0 -0
  542. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystem/FileSystemWeb.js +0 -0
  543. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystemErrorCodes/FileSystemErrorCodes.js +0 -0
  544. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystemHandle/FileSystemHandle.js +0 -0
  545. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystemHandlePermission/FileSystemHandlePermission.js +0 -0
  546. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FileSystemProtocol/FileSystemProtocol.js +0 -0
  547. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FilterCompletionItems/FilterCompletionItems.js +0 -0
  548. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FilterKeyBindings/FilterKeyBindings.js +0 -0
  549. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Focus/Focus.js +0 -0
  550. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Format/Format.ipc.js +0 -0
  551. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Format/Format.js +0 -0
  552. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FuzzySearch/FuzzySearch.js +0 -0
  553. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/FuzzySearch/FuzzySearchMrAleph.js +0 -0
  554. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/GitHubRestApi/GitHubRestApi.js +0 -0
  555. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/GlobalEventBus/GlobalEventBus.js +0 -0
  556. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Highlight/Highlight.js +0 -0
  557. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/History/History.js +0 -0
  558. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/I18NString/I18NString.js +0 -0
  559. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Icon/Icon.js +0 -0
  560. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IconTheme/IconTheme.ipc.js +0 -0
  561. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IconTheme/IconTheme.js +0 -0
  562. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Id/Id.js +0 -0
  563. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ImagePreview/ImagePreview.ipc.js +0 -0
  564. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ImagePreview/ImagePreview.js +0 -0
  565. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IndexedDb/IndexedDb.ipc.js +0 -0
  566. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IndexedDb/IndexedDb.js +0 -0
  567. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/InitData/InitData.js +0 -0
  568. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/InputEventType/InputEventType.js +0 -0
  569. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcChild/IpcChild.js +0 -0
  570. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcChild/IpcChildWithMessagePort.js +0 -0
  571. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcChild/IpcChildWithModuleWorker.js +0 -0
  572. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcChild/IpcChildWithReferencePort.js +0 -0
  573. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcParent/IpcParent.js +0 -0
  574. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithElectron.js +0 -0
  575. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithMessagePort.js +0 -0
  576. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithModuleWorker.js +0 -0
  577. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithReferencePort.js +0 -0
  578. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithWebSocket.js +0 -0
  579. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Json/Json.js +0 -0
  580. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/JsonRpc/JsonRpc.js +0 -0
  581. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/KeyBindings/KeyBindings.ipc.js +0 -0
  582. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/KeyBindings/KeyBindings.js +0 -0
  583. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/KeyBindingsInitial/KeyBindingsInitial.ipc.js +0 -0
  584. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/KeyBindingsInitial/KeyBindingsInitial.js +0 -0
  585. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/LanguageFeatures/LanguageFeatures.js +0 -0
  586. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Languages/Languages.js +0 -0
  587. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Layout/Layout.ipc.js +0 -0
  588. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Layout/Layout.js +0 -0
  589. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/LazyCommand/LazyCommand.js +0 -0
  590. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/LifeCycle/LifeCycle.js +0 -0
  591. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/List/List.js +0 -0
  592. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Listener/Listener.ipc.js +0 -0
  593. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Listener/Listener.js +0 -0
  594. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/LocalStorage/LocalStorage.ipc.js +0 -0
  595. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/LocalStorage/LocalStorage.js +0 -0
  596. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Location/Location.js +0 -0
  597. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/Main.js +0 -0
  598. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainCloseActiveEditor.js +0 -0
  599. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainCloseAllEditors.js +0 -0
  600. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainCloseEditorsToTheLeft.js +0 -0
  601. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainCloseEditorsToTheRight.js +0 -0
  602. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainFocusFirst.js +0 -0
  603. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainFocusIndex.js +0 -0
  604. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainFocusLast.js +0 -0
  605. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainFocusNext.js +0 -0
  606. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Main/MainFocusPrevious.js +0 -0
  607. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Markdown/Markdown.js +0 -0
  608. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Menu/Menu.ipc.js +0 -0
  609. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Menu/Menu.js +0 -0
  610. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuCore/MenuCore.js +0 -0
  611. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntries/MenuEntries.js +0 -0
  612. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesActivityBar/MenuEntriesActivityBar.js +0 -0
  613. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesActivityBarAdditionalViews/MenuEntriesActivityBarAdditionalViews.js +0 -0
  614. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesEdit/MenuEntriesEdit.js +0 -0
  615. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesEditor/MenuEntriesEditor.js +0 -0
  616. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesEditorImage/MenuEntriesEditorImage.js +0 -0
  617. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorer.js +0 -0
  618. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorerFile.js +0 -0
  619. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorerFolder.js +0 -0
  620. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesFile/MenuEntriesFile.js +0 -0
  621. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesGo/MenuEntriesGo.js +0 -0
  622. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesHelp/MenuEntriesHelp.js +0 -0
  623. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesManageExtension/MenuEntriesManageExtension.js +0 -0
  624. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesOpenRecent/MenuEntriesOpenRecent.js +0 -0
  625. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesRun/MenuEntriesRun.js +0 -0
  626. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesSearch/MenuEntriesSearch.js +0 -0
  627. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesSelection/MenuEntriesSelection.js +0 -0
  628. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesSettings/MenuEntriesSettings.js +0 -0
  629. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesTab/MenuEntriesTab.js +0 -0
  630. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesTerminal/MenuEntriesTerminal.js +0 -0
  631. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBar.js +0 -0
  632. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarRemote.js +0 -0
  633. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarWeb.js +0 -0
  634. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntriesView/MenuEntriesView.js +0 -0
  635. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuEntryId/MenuEntryId.js +0 -0
  636. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MenuItemFlags/MenuItemFlags.js +0 -0
  637. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Meta/Meta.js +0 -0
  638. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Mime/Mime.ipc.js +0 -0
  639. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Mime/Mime.js +0 -0
  640. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MimeTypes/MimeTypes.js +0 -0
  641. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/MimeTypes/MimeTypes.json +0 -0
  642. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ModifierKey/ModifierKey.js +0 -0
  643. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Module/Module.js +0 -0
  644. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ModuleId/ModuleId.js +0 -0
  645. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ModuleMap/ModuleMap.js +0 -0
  646. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/NameAnonymousFunction/NameAnonymousFunction.js +0 -0
  647. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Navigation/Navigation.ipc.js +0 -0
  648. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Navigation/Navigation.js +0 -0
  649. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/NestedError/NestedError.js +0 -0
  650. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Notification/Notification.ipc.js +0 -0
  651. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Notification/Notification.js +0 -0
  652. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Open/Open.ipc.js +0 -0
  653. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Open/Open.js +0 -0
  654. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/OpenNativeFolder/OpenNativeFolder.ipc.js +0 -0
  655. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/OpenNativeFolder/OpenNativeFolder.js +0 -0
  656. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ParseKeyBindings/ParseKeyBindings.js +0 -0
  657. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Path/Path.js +0 -0
  658. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/PathSeparatorType/PathSeparatorType.js +0 -0
  659. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Performance/Performance.js +0 -0
  660. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/PersistentFileHandle/PersistentFileHandle.ipc.js +0 -0
  661. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/PersistentFileHandle/PersistentFileHandle.js +0 -0
  662. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Platform/Platform.js +2 -2
  663. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/PlatformType/PlatformType.js +0 -0
  664. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Preferences/Preferences.ipc.js +0 -0
  665. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Preferences/Preferences.js +0 -0
  666. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/PrettyBytes/PrettyBytes.js +0 -0
  667. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorer.js +0 -0
  668. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerElectron.js +0 -0
  669. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerRemote.js +0 -0
  670. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerWeb.js +0 -0
  671. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/PromiseStatus/PromiseStatus.js +0 -0
  672. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPIckPrefix/QuickPickPrefix.js +0 -0
  673. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntries/QuickPickEntries.js +0 -0
  674. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesColorTheme/QuickPickEntriesColorTheme.js +0 -0
  675. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesCommand/QuickPickEntriesCommand.js +0 -0
  676. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesEverything/QuickPickEntriesEverything.js +0 -0
  677. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesFile/QuickPickEntriesFile.js +0 -0
  678. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesGoToLine/QuickPickEntriesGoToLine.js +0 -0
  679. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesNoop/QuickPickNoop.js +0 -0
  680. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesNumber/QuickPickEntriesNumber.js +0 -0
  681. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesOpenRecent/QuickPickEntriesOpenRecent.js +0 -0
  682. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesSymbol/QuickPickEntriesSymbol.js +0 -0
  683. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesView/QuickPickEntriesView.js +0 -0
  684. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntriesWorkspaceSymbol/QuickPickEntriesWorkspaceSymbol.js +0 -0
  685. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/QuickPickEntryId/QuickPickEntryId.js +0 -0
  686. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/RecentlyOpened/RecentlyOpened.ipc.js +0 -0
  687. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/RecentlyOpened/RecentlyOpened.js +0 -0
  688. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/RendererProcess/RendererProcess.js +0 -0
  689. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SafeTokenizeLine/SafeTokenizeLine.js +0 -0
  690. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SanitizeHtml/SanitizeHtml.js +0 -0
  691. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SaveState/SaveState.ipc.js +0 -0
  692. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SaveState/SaveState.js +0 -0
  693. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SearchFile/SearchFile.js +2 -0
  694. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SearchFileMemfs/SearchFileMemfs.js +0 -0
  695. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SearchFileRemote/SearchFileRemote.js +0 -0
  696. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SearchFileWeb/SearchFileWeb.js +0 -0
  697. package/static/0e8e702/packages/renderer-worker/src/parts/SearchFileWithFetch/SearchFileWithFetch.js +17 -0
  698. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SearchResultType/SearchResultType.js +0 -0
  699. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ServiceWorker/ServiceWorker.ipc.js +0 -0
  700. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ServiceWorker/ServiceWorker.js +0 -0
  701. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SessionReplay/SessionReplay.ipc.js +0 -0
  702. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SessionReplay/SessionReplay.js +0 -0
  703. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SessionStorage/SessionStorage.ipc.js +0 -0
  704. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SessionStorage/SessionStorage.js +0 -0
  705. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SharedProcess/SharedProcess.js +0 -0
  706. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SourceControl/SourceControl.ipc.js +0 -0
  707. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SourceControl/SourceControl.js +0 -0
  708. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Storage/Storage.js +0 -0
  709. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/SyntaxHighlightingWorker/SyntaxHighlightingWorker.js +0 -0
  710. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Test/Test.ipc.js +0 -0
  711. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Test/Test.js +0 -0
  712. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWork/Locator.js +0 -0
  713. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWork/TestFrameWork.js +0 -0
  714. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponent.js +0 -0
  715. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentCommand.js +0 -0
  716. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentContextMenu.js +0 -0
  717. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEditor.js +0 -0
  718. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEditorFindWidget.js +0 -0
  719. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEval.js +0 -0
  720. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentExplorer.js +0 -0
  721. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentExtension.js +0 -0
  722. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentFileSystem.js +0 -0
  723. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentKeyBoard.js +0 -0
  724. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentMain.js +0 -0
  725. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentPlatform.js +0 -0
  726. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentQuickPick.js +0 -0
  727. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSearch.js +0 -0
  728. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSettings.js +0 -0
  729. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSideBar.js +0 -0
  730. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentTitleBarMenuBar.js +0 -0
  731. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentWorkspace.js +0 -0
  732. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameworkComponentActivityBar.js +0 -0
  733. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextDocument/TextDocument.js +0 -0
  734. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextDocumentSearch/TextDocumentSearch.js +0 -0
  735. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextSearch/TextSearch.js +0 -0
  736. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextSearch/TextSearchExtension.js +0 -0
  737. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextSearch/TextSearchNode.js +0 -0
  738. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextSearch/TextSearchWeb.js +0 -0
  739. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TextSegmenter/TextSegmenter.js +0 -0
  740. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Timeout/Timeout.js +0 -0
  741. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Timers/Timers.js +0 -0
  742. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Timestamp/Timestamp.js +0 -0
  743. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TitleBarButtons/TitleBarButtons.js +0 -0
  744. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/TitleBarMenuBarEntries/TitleBarMenuBarEntries.js +0 -0
  745. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Tokenizer/TokenizePlainText.js +0 -0
  746. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Tokenizer/Tokenizer.js +0 -0
  747. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Url/Url.ipc.js +0 -0
  748. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Url/Url.js +0 -0
  749. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/VError/VError.js +0 -0
  750. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Viewlet/Viewlet.ipc.js +0 -0
  751. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Viewlet/Viewlet.js +0 -0
  752. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Viewlet/ViewletExtension.js +0 -0
  753. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Viewlet/ViewletExtensionsHeader.js +0 -0
  754. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Viewlet/ViewletExtensionsList.js +0 -0
  755. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBar.ipc.js +0 -0
  756. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBar.js +0 -0
  757. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocus.js +0 -0
  758. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusFirst.js +0 -0
  759. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusIndex.js +0 -0
  760. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusLast.js +0 -0
  761. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusNext.js +0 -0
  762. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusPrevious.js +0 -0
  763. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarHandleClick.js +0 -0
  764. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarSelectCurrent.js +0 -0
  765. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletClock/ViewletClock.ipc.js +0 -0
  766. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletClock/ViewletClock.js +0 -0
  767. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletContextMenu/ViewletContextMenu.js +0 -0
  768. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletCounter/ViewletCounter.js +0 -0
  769. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsole.ipc.js +0 -0
  770. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsole.js +0 -0
  771. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.ipc.js +0 -0
  772. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js +0 -0
  773. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorFindWidget/ViewletEditorFindWidget.ipc.js +0 -0
  774. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorFindWidget/ViewletEditorFindWidget.js +0 -0
  775. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImage.ipc.js +0 -0
  776. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImage.js +0 -0
  777. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCopyImage.js +0 -0
  778. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCopyPath.js +0 -0
  779. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageHandleContextMenu.js +0 -0
  780. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.ipc.js +0 -0
  781. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js +0 -0
  782. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorText.ipc.js +0 -0
  783. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorText.js +0 -0
  784. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletEmpty/ViewletEmpty.js +0 -0
  785. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorer.ipc.js +0 -0
  786. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorer.js +0 -0
  787. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerExpandRecursively.js +0 -0
  788. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocus.js +0 -0
  789. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusFirst.js +0 -0
  790. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusIndex.js +0 -0
  791. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusLast.js +0 -0
  792. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusNext.js +0 -0
  793. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusNone.js +0 -0
  794. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusPrevious.js +0 -0
  795. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuKeyboard.js +0 -0
  796. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuMouseAt.js +0 -0
  797. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDragOver.js +0 -0
  798. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDrop.js +0 -0
  799. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropIndex.js +0 -0
  800. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRoot.js +0 -0
  801. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRootDefault.js +0 -0
  802. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRootElectron.js +0 -0
  803. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandlePaste.js +0 -0
  804. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerShared.js +0 -0
  805. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerUpdateRoot.js +0 -0
  806. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.ipc.js +0 -0
  807. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js +0 -0
  808. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensions.ipc.js +0 -0
  809. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensions.js +0 -0
  810. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusFirst.js +0 -0
  811. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusIndex.js +0 -0
  812. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusLast.js +0 -0
  813. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusNext.js +0 -0
  814. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusNextPage.js +0 -0
  815. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusPrevious.js +0 -0
  816. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsFocusPreviousPage.js +0 -0
  817. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClick.js +0 -0
  818. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrent.js +0 -0
  819. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrentButKeepFocus.js +0 -0
  820. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleTouchEnd.js +0 -0
  821. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleTouchMove.js +0 -0
  822. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleTouchStart.js +0 -0
  823. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsShared.js +0 -0
  824. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletIframe/ViewletIframe.js +0 -0
  825. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletImplementations/ViewletImplementations.ipc.js +0 -0
  826. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletImplementations/ViewletImplementations.js +0 -0
  827. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindings.ipc.js +0 -0
  828. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindings.js +0 -0
  829. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindingsRender.js +0 -0
  830. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletList/ViewletList.ipc.js +0 -0
  831. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletList/ViewletList.js +0 -0
  832. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocations.ipc.js +0 -0
  833. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocations.js +0 -0
  834. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletMain/ViewletMain.ipc.js +0 -0
  835. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletMain/ViewletMain.js +0 -0
  836. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletManager/ViewletManager.js +0 -0
  837. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletMap/ViewletMap.js +0 -0
  838. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletModule/ViewletModule.js +0 -0
  839. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletModuleId/ViewletModuleId.js +0 -0
  840. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletNoop/ViewletNoop.ipc.js +0 -0
  841. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletNoop/ViewletNoop.js +0 -0
  842. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutput.ipc.js +0 -0
  843. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutput.js +0 -0
  844. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanel.ipc.js +0 -0
  845. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanel.js +0 -0
  846. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblems.ipc.js +0 -0
  847. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblems.js +0 -0
  848. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPick.ipc.js +0 -0
  849. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPick.js +0 -0
  850. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusFirst.js +0 -0
  851. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusIndex.js +0 -0
  852. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusLast.js +0 -0
  853. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusNext.js +0 -0
  854. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusPrevious.js +0 -0
  855. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletQuickPick/quickpickRender.js +0 -0
  856. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferences.ipc.js +0 -0
  857. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferences.js +0 -0
  858. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.ipc.js +0 -0
  859. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js +0 -0
  860. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearch.ipc.js +0 -0
  861. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearch.js +0 -0
  862. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBar.ipc.js +0 -0
  863. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBar.js +0 -0
  864. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControl.ipc.js +0 -0
  865. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControl.js +0 -0
  866. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletStates/ViewletStates.js +0 -0
  867. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBar.ipc.js +0 -0
  868. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBar.js +0 -0
  869. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTerminal/ViewletTerminal.ipc.js +0 -0
  870. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTerminal/ViewletTerminal.js +0 -0
  871. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBar.ipc.js +0 -0
  872. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBar.js +0 -0
  873. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.ipc.js +0 -0
  874. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js +0 -0
  875. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.ipc.js +0 -0
  876. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js +0 -0
  877. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/ViewletTodoList/ViewletTodoList.js +0 -0
  878. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/VirtualDomElements/VirtualDomElements.js +0 -0
  879. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/VirtualDomHelpers/VirtualDomHelpers.js +0 -0
  880. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/VirtualList/VirtualList.js +0 -0
  881. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/WebSocket/WebSocket.js +0 -0
  882. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/WebSocket/WebSocketNew.js +0 -0
  883. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/WebStorage/WebStorage.js +0 -0
  884. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/WebStorageType/WebStorageType.js +0 -0
  885. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Window/Window.ipc.js +0 -0
  886. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Window/Window.js +0 -0
  887. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Workbench/Workbench.ipc.js +0 -0
  888. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Workbench/Workbench.js +0 -0
  889. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Worker/Worker.js +0 -0
  890. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Workspace/Workspace.ipc.js +0 -0
  891. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/parts/Workspace/Workspace.js +0 -0
  892. package/static/{5ae11b9 → 0e8e702}/packages/renderer-worker/src/rendererWorkerMain.js +0 -0
  893. package/static/0e8e702/playground/.gitkeep +0 -0
  894. package/static/0e8e702/playground/languages/index.cpp +22 -0
  895. package/static/0e8e702/playground/languages/index.css +19 -0
  896. package/static/0e8e702/playground/languages/index.dart +3 -0
  897. package/static/0e8e702/playground/languages/index.env +1 -0
  898. package/static/0e8e702/playground/languages/index.ex +8 -0
  899. package/static/0e8e702/playground/languages/index.html +1 -0
  900. package/static/0e8e702/playground/languages/index.java +5 -0
  901. package/static/0e8e702/playground/languages/index.jl +14 -0
  902. package/static/0e8e702/playground/languages/index.js +3 -0
  903. package/static/0e8e702/playground/languages/index.kt +3 -0
  904. package/static/0e8e702/playground/languages/index.perl +11 -0
  905. package/static/0e8e702/playground/languages/index.py +25 -0
  906. package/static/0e8e702/playground/languages/index.ts +3 -0
  907. package/static/0e8e702/playground/languages/scrolling.txt +100 -0
  908. package/static/0e8e702/playground/sample-folder/a.txt +0 -0
  909. package/static/0e8e702/playground/sample-folder/b.txt +0 -0
  910. package/static/0e8e702/playground/sample-folder/c.txt +0 -0
  911. package/static/{5ae11b9 → 0e8e702}/sounds/bell.oga +0 -0
  912. package/static/{5ae11b9 → 0e8e702}/static/js/blob-util.js +0 -0
  913. package/static/{5ae11b9 → 0e8e702}/static/js/dompurify.js +0 -0
  914. package/static/{5ae11b9 → 0e8e702}/static/js/idb/async-iterators.js +0 -0
  915. package/static/{5ae11b9 → 0e8e702}/static/js/idb/index.js +0 -0
  916. package/static/{5ae11b9 → 0e8e702}/static/js/idb/with-async-ittr.js +0 -0
  917. package/static/{5ae11b9 → 0e8e702}/static/js/idb/wrap-idb-value.js +0 -0
  918. package/static/{5ae11b9 → 0e8e702}/static/js/js-base64.js +0 -0
  919. package/static/{5ae11b9 → 0e8e702}/static/js/ky.js +0 -0
  920. package/static/{5ae11b9 → 0e8e702}/static/js/marked.js +0 -0
  921. package/static/{5ae11b9 → 0e8e702}/static/js/p-min-delay.js +0 -0
  922. package/static/{5ae11b9 → 0e8e702}/static/js/pretty-bytes.js +0 -0
  923. package/static/{5ae11b9 → 0e8e702}/static/js/termterm.js +0 -0
  924. package/static/{5ae11b9 → 0e8e702}/static/js/yoctodelay.js +0 -0
  925. package/static/index.html +6 -6
  926. package/static/manifest.json +2 -2
  927. package/static/serviceWorker.js +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/parts/Css/Css.js", "../src/parts/Css/Css.ipc.js", "../src/parts/Callback/Callback.js", "../src/parts/ModuleId/ModuleId.js", "../src/parts/Audio/Audio.js", "../src/parts/Audio/Audio.ipc.js", "../src/parts/Assert/Assert.js", "../src/parts/ClipBoard/ClipBoard.js", "../src/parts/ClipBoard/ClipBoard.ipc.js", "../src/parts/Developer/Developer.js", "../src/parts/Developer/Developer.ipc.js", "../src/parts/Widget/Widget.js", "../src/parts/Context/Context.js", "../src/parts/Focus/Focus.js", "../src/parts/PlatformType/PlatformType.js", "../src/parts/Platform/Platform.js", "../src/parts/Dialog/Dialog.js", "../src/parts/Dialog/Dialog.ipc.js", "../src/parts/Download/Download.js", "../src/parts/Download/Download.ipc.js", "../src/parts/AriaAlert/AriaAlert.js", "../src/parts/EditorError/EditorError.js", "../src/parts/EditorError/EditorError.ipc.js", "../src/parts/EditorHover/EditorHover.js", "../src/parts/EditorHover/EditorHover.ipc.js", "../src/parts/InputBox/InputBox.js", "../src/parts/EditorRename/EditorRename.js", "../src/parts/EditorRename/EditorRename.ipc.js", "../src/parts/Eval/Eval.js", "../src/parts/Eval/Eval.ipc.js", "../src/parts/FilePicker/FilePicker.js", "../src/parts/FilePicker/FilePicker.ipc.js", "../src/parts/FileSystemHandle/FileSystemHandle.js", "../src/parts/FileSystemHandle/FileSystemHandle.ipc.js", "../src/parts/ImagePreview/ImagePreview.js", "../src/parts/ImagePreview/ImagePreview.ipc.js", "../src/parts/Location/Location.js", "../src/parts/InitData/InitData.js", "../src/parts/InitData/InitData.ipc.js", "../src/parts/KeyBindings/KeyBindings.js", "../src/parts/KeyBindings/KeyBindings.ipc.js", "../src/parts/Location/Location.ipc.js", "../src/parts/Meta/Meta.js", "../src/parts/Meta/Meta.ipc.js", "../src/parts/Notification/Notification.js", "../src/parts/Notification/Notification.ipc.js", "../src/shared/findIndex.js", "../src/parts/MenuItemFlags/MenuItemFlags.js", "../src/parts/MenuItem/MenuItem.js", "../src/parts/BackDrop/BackDrop.js", "../src/parts/OldMenu/Menu.js", "../src/parts/OldMenu/Menu.ipc.js", "../src/parts/Open/Open.js", "../src/parts/Open/Open.ipc.js", "../src/parts/Performance/Performance.js", "../src/parts/Performance/Performance.ipc.js", "../static/js/dompurify.js", "../src/parts/SanitizeHtml/SanitizeHtml.js", "../src/parts/SanitizeHtml/SanitizeHtml.ipc.js", "../src/parts/ServiceWorker/ServiceWorker.js", "../src/parts/ServiceWorker/ServiceWorker.ipc.js", "../src/parts/TestFrameWork/ElementActions.js", "../src/parts/TestFrameWork/HtmlElements.js", "../src/parts/TestFrameWork/QuerySelector.js", "../src/parts/TestFrameWork/SingleElementConditions.js", "../src/parts/TestFrameWork/MultiElementConditions.js", "../src/parts/TestFrameWork/ConditionErrors.js", "../src/parts/TestFrameWork/KeyBoardActions.js", "../src/parts/TestFrameWork/TestFrameWork.js", "../src/parts/TestFrameWork/TestFrameWork.ipc.js", "../src/parts/ViewletModuleId/ViewletModuleId.js", "../src/parts/DirentType/DirentType.js", "../src/parts/MouseEventType/MouseEventType.js", "../src/parts/WheelEventType/WheelEventType.js", "../src/parts/ViewletExplorer/ViewletExplorerEvents.js", "../src/parts/ViewletExplorer/ViewletExplorer.js", "../src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js", "../src/parts/ViewletSearch/ViewletSearchEvents.js", "../src/parts/ViewletSearch/ViewletSearch.js", "../src/parts/ViewletSourceControl/ViewletSourceControl.js", "../static/js/termterm.js", "../src/parts/Terminal/Terminal.js", "../src/parts/ViewletTerminal/ViewletTerminal.js", "../src/parts/Icon/Icon.js", "../src/parts/ViewletExtensions/ViewletExtensionsEvents.js", "../src/parts/ViewletExtensions/ViewletExtensions.js", "../src/parts/ViewletDebugConsole/ViewletDebugConsole.js", "../src/parts/ViewletOutput/ViewletOutputEvents.js", "../src/parts/ViewletOutput/ViewletOutput.js", "../src/parts/ViewletProblems/ViewletProblemsEvents.js", "../src/parts/ViewletProblems/ViewletProblems.js", "../src/parts/ViewletEmpty/ViewletEmpty.js", "../src/parts/InputEventType/InputEventType.js", "../src/parts/MenuEntryId/MenuEntryId.js", "../src/parts/ModifierKey/ModifierKey.js", "../src/parts/Editor/EditorEvents.js", "../src/parts/Editor/LayerCursor.js", "../src/parts/Editor/LayerDiagnostics.js", "../src/parts/Editor/LayerScrollBar.js", "../src/parts/Editor/LayerSelections.js", "../src/parts/Editor/LayerText.js", "../src/parts/Editor/Editor.js", "../src/parts/ViewletEditorText/ViewletEditorText.js", "../src/parts/ViewletEditorImage/ViewletEditorImageEvents.js", "../src/parts/ViewletEditorImage/ViewletEditorImage.js", "../src/parts/ViewletClock/ViewletClock.js", "../src/parts/ViewletSideBar/ViewletSideBar.js", "../src/parts/ViewletPanel/ViewletPanel.js", "../src/parts/ActivityBarItemFlags/ActvityBarItemFlags.js", "../src/parts/ViewletActivityBar/ViewletActivityBarEvents.js", "../src/parts/ViewletActivityBar/ViewletActivityBar.js", "../src/parts/ViewletQuickPick/ViewletQuickPickEvents.js", "../src/parts/ViewletQuickPick/ViewletQuickPick.js", "../src/parts/ViewletStatusBar/ViewletStatusBar.js", "../src/parts/ViewletTitleBar/ViewletTitleBar.js", "../src/parts/Editor/EditorHelper.js", "../src/parts/EditorTab/EditorTab.js", "../src/parts/EditorGroup/EditorGroup.js", "../src/parts/ViewletMain/ViewletMainEvents.js", "../src/parts/ViewletMain/ViewletMain.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletionEvents.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js", "../src/parts/ViewletLocations/ViewletLocations.js", "../src/parts/ViewletReferences/ViewletReferences.js", "../src/parts/ViewletImplementations/ViewletImplementations.js", "../src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindingsEvents.js", "../src/parts/VirtualDomElements/VirtualDomElements.js", "../src/parts/ElementTags/ElementTags.js", "../src/parts/ElementTagMap/ElementTagMap.js", "../src/parts/VirtualDomElement/VirtualDomElement.js", "../src/parts/VirtualDom/VirtualDom.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindings.js", "../src/parts/ViewletEditorFindWidget/ViewletEditorFindWidgetEvents.js", "../src/parts/ViewletEditorFindWidget/ViewletEditorFindWidget.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetailEvents.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsEvents.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarEvents.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js", "../src/parts/ViewletModule/ViewletModule.js", "../src/parts/Viewlet/Viewlet.js", "../src/parts/Viewlet/Viewlet.ipc.js", "../src/parts/WebStorageType/WebStorageType.js", "../src/parts/WebStorage/WebStorage.js", "../src/parts/WebStorage/WebStorage.ipc.js", "../src/parts/Window/Window.js", "../src/parts/Window/Window.ipc.js", "../src/parts/Module/Module.js", "../src/parts/ModuleMap/ModuleMap.js", "../src/parts/Command/Command.js", "../src/parts/Errors/JsonRpcError.js", "../src/parts/IpcParent/IpcParentWithMessagePort.js", "../src/parts/IpcParent/IpcParentWithModuleWorker.js", "../src/parts/IpcParent/IpcParentWithReferencePort.js", "../src/parts/IpcParent/IpcParent.js", "../src/parts/RendererWorker/RendererWorker.js", "../src/parts/Layout/Layout.js", "../src/parts/Layout/Layout.ipc.js", "../src/rendererProcessMain.js"],
4
- "sourcesContent": ["export const setInlineStyle = (id, css) => {\n const $ExistingStyle = document.getElementById(id)\n if ($ExistingStyle) {\n $ExistingStyle.textContent = css\n } else {\n const $Style = document.createElement('style')\n $Style.id = id\n $Style.textContent = css\n document.head.append($Style)\n }\n}\n", "import * as Css from './Css.js'\n\nexport const Commands = {\n 'Css.setInlineStyle': Css.setInlineStyle,\n}\n", "const callbacks = Object.create(null)\n\nexport const state = {\n id: 0,\n}\n\nexport const register = (resolve, reject) => {\n callbacks[++state.id] = { resolve, reject }\n return state.id\n}\n\nexport const unregister = (id) => {\n delete callbacks[id]\n}\n\nexport const resolve = (id, result) => {\n if (!(id in callbacks)) {\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].resolve(result)\n}\n\nexport const reject = (id, error) => {\n if (!(id in callbacks)) {\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].reject(error)\n}\n", "export const Audio = 1\nexport const ClipBoard = 2\nexport const Css = 3\nexport const Developer = 4\nexport const Dialog = 5\nexport const Download = 6\nexport const EditorController = 7\nexport const EditorError = 8\nexport const EditorHover = 9\nexport const EditorRename = 10\nexport const ImagePreview = 11\nexport const InitData = 12\nexport const KeyBindings = 13\nexport const Layout = 14\nexport const Location = 15\nexport const Main = 16\nexport const Menu = 17\nexport const Meta = 18\nexport const Notification = 19\nexport const Open = 20\nexport const Panel = 21\nexport const ServiceWorker = 22\nexport const Test = 23\nexport const TestFrameWork = 24\nexport const Viewlet = 25\nexport const ViewService = 26\nexport const WebStorage = 27\nexport const Window = 28\nexport const Workbench = 29\nexport const Performance = 30\nexport const Eval = 31\nexport const FilePicker = 32\nexport const FileSystemHandle = 33\nexport const SanitizeHtml = 34\n", "export const play = async (src) => {\n const audio = new Audio(src)\n await audio.play()\n}\n", "import * as Audio from './Audio.js'\n\nexport const Commands = {\n 'Audio.play': Audio.play,\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 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}\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", "import * as Assert from '../Assert/Assert.js'\n\nexport const readText = async () => {\n return navigator.clipboard.readText()\n}\n\nexport const writeText = async (text) => {\n Assert.string(text)\n await navigator.clipboard.writeText(text)\n}\n\nexport const writeImage = async (blob) => {\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })])\n}\n", "import * as ClipBoard from './ClipBoard.js'\n\nexport const Commands = {\n 'ClipBoard.readText': ClipBoard.readText,\n 'ClipBoard.writeImage': ClipBoard.writeImage,\n 'ClipBoard.writeText': ClipBoard.writeText,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst modules = [\n 'ActivityBar',\n 'Ajax',\n 'Allocator',\n 'Callback',\n 'Command',\n 'Context',\n 'ContextMenu',\n 'Delay',\n 'Developer',\n 'DomPool',\n 'Editor',\n 'EditorGroup',\n 'Exec',\n 'ExtensionHost',\n 'FileSystem',\n 'KeyBindings',\n 'Layout',\n 'Main',\n 'Notification',\n 'Panel',\n 'Parts',\n 'QuickPick',\n 'Renderer',\n 'RendererWorker',\n 'Search',\n 'SharedProcess',\n 'SideBar',\n 'StatusBar',\n 'TitleBar',\n 'Viewlet',\n 'ViewletController',\n 'ViewService',\n 'Vscode',\n 'Window',\n 'Workbench',\n 'Worker',\n 'Workspace',\n]\n\n// TODO send to renderer worker -> renderer worker has all state\nexport const showState = async () => {\n const state = Object.create(null)\n for (const module of modules) {\n let imported\n try {\n imported = await import(`../${module}/${module}.js`)\n } catch {}\n if (imported && imported.state) {\n state[module] = imported.state\n }\n }\n console.info(state)\n}\n", "import * as Developer from './Developer.js'\n\nexport const Commands = {\n 'Developer.getMemoryUsage': Developer.getMemoryUsage,\n 'Developer.showState': Developer.showState,\n}\n", "// TODO this file is not needed when all elements are position fixed\nexport const state = {\n isInDom: false,\n $PreviousFocusElement: undefined,\n widgetSet: new Set(),\n $Widgets: undefined,\n}\n\nconst create$Widgets = () => {\n const $Widgets = document.createElement('div')\n $Widgets.id = 'Widgets'\n return $Widgets\n}\n\nexport const append = ($Element) => {\n // TODO should not call append in the first place if it is already in dom\n if (state.widgetSet.has($Element)) {\n return\n }\n state.widgetSet.add($Element)\n if (state.$Widgets) {\n state.$Widgets.append($Element)\n } else {\n state.$Widgets = create$Widgets()\n state.$Widgets.append($Element)\n document.body.append(state.$Widgets)\n }\n}\n\nexport const find = (id) => {\n for (const $Widget of state.widgetSet) {\n if ($Widget.dataset.id === id) {\n return $Widget\n }\n }\n return undefined\n}\n\nexport const remove = ($Element) => {\n if (!$Element) {\n // TODO $Element should always be defined\n return\n }\n state.widgetSet.delete($Element)\n $Element.remove()\n // TODO state.$Widgets should always be defined at this point\n if (state.widgetSet.size === 0 && state.$Widgets) {\n state.$Widgets.remove()\n state.$Widgets = undefined\n }\n}\n", "export const state = {\n // contexts: Object.create(null),\n contexts: {},\n}\n\n// TODO all context keys should be numeric\n// comparing numbers is faster and more efficient than comparing strings every time\n// e.g. map 'focus.editor' -> 1\n// e.g. map 'focus.explorer' -> 2\n// Context.get(1), Context.get(2)\n\nexport const get = (key) => {\n return state.contexts[key]\n}\n\nexport const getAll = () => {\n return state.contexts\n}\n\nexport const set = (key, value) => {\n state.contexts[key] = value\n}\n\nexport const remove = (key) => {\n delete state.contexts[key]\n}\n", "import * as Context from '../Context/Context.js'\n\n// TODO not sure if its worth to have a separate module for this or keep it inside Context.js\n// export const setFocus = (item) => {\n// if (Context.state.currentFocus) {\n// Context.remove(Context.state.currentFocus)\n// }\n// Context.set(`focus.${item}`, true)\n// }\n\nexport const state = {\n $PreviousFocusElement: undefined,\n currentFocus: '',\n}\n\nexport const setFocus = (key) => {\n if (state.currentFocus) {\n Context.remove(state.currentFocus)\n }\n // TODO could make focus key numeric enum which would be more efficient\n state.currentFocus = `focus.${key}`\n Context.set(state.currentFocus, true)\n}\n\nexport const setAdditionalFocus = (key) => {\n // TODO key should be numeric\n Context.set(`focus.${key}`, true)\n}\n\nexport const removeAdditionalFocus = (key) => {\n Context.remove(`focus.${key}`)\n}\n\nexport const focus = ($Element, key) => {\n if ($Element === document.activeElement) {\n return\n }\n state.$PreviousFocusElement = document.activeElement\n $Element.focus({ preventScroll: true })\n setFocus(key)\n}\n\nexport const focusPrevious = () => {\n if (state.$PreviousFocusElement) {\n console.log(state.$PreviousFocusElement)\n state.$PreviousFocusElement.focus()\n }\n}\n", "export const Web = 'web'\n\nexport const Electron = 'electron'\n\nexport const Remote = 'remote'\n", "import * as PlatformType from '../PlatformType/PlatformType.js'\n/* istanbul ignore file */\n\n// TODO this should always be completely tree shaken out during build\n\n/**\n * @returns {'electron'|'remote'|'web'}\n */\nconst getPlatform = () => {\n // @ts-ignore\n if (typeof 'remote' !== 'undefined') {\n // @ts-ignore\n return 'remote'\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return PlatformType.Remote\n }\n // @ts-ignore\n if (typeof myApi !== 'undefined') {\n return PlatformType.Electron\n }\n return PlatformType.Remote\n}\n\nexport const platform = getPlatform()\n\n// TODO treeshake this function out when targeting electron\n\nexport const state = {\n getAssetDir() {\n // @ts-ignore\n if (typeof '/5ae11b9' !== 'undefined') {\n // @ts-ignore\n return '/5ae11b9'\n }\n if (platform === 'electron') {\n return '../../../../..'\n }\n return ''\n },\n supportsHtml5Dialog() {\n const $Dialog = document.createElement('dialog')\n // @ts-ignore\n return typeof $Dialog.showModal === 'function'\n },\n isElectron() {\n return (\n // @ts-ignore\n window.myApi &&\n // @ts-ignore\n window.myApi.ipcConnect &&\n // @ts-ignore\n typeof window.myApi.ipcConnect === 'function'\n )\n },\n}\n\n// TODO if necessary support more browser detection\nexport const getBrowser = () => {\n if (platform === 'electron') {\n return 'electron'\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData) {\n for (const brand of userAgentData.brands) {\n const actualBrand = brand.brand.toLowerCase()\n switch (actualBrand) {\n case 'firefox':\n return 'firefox'\n case 'chromium':\n return 'chromium'\n default:\n break\n }\n }\n }\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.includes('firefox')) {\n return 'firefox'\n }\n if (userAgent.includes('Electron')) {\n return 'electron'\n }\n return 'chromium'\n}\n\nexport const getAssetDir = () => {\n return state.getAssetDir()\n}\n\nexport const supportsHtml5Dialog = () => {\n return state.supportsHtml5Dialog()\n}\n\nexport const isElectron = () => {\n return state.isElectron()\n}\n\nconst getQueryParams = () => {\n if (isElectron()) {\n if (location.search) {\n return location.search + '&platform=electron'\n }\n return '?platform=electron'\n }\n return location.search\n}\n\nexport const getRendererWorkerUrl = () => {\n const assetDir = getAssetDir()\n const queryParams = getQueryParams()\n const urlRendererWorker = `${assetDir}/packages/renderer-worker/dist/rendererWorkerMain.js${queryParams}`\n return urlRendererWorker\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $Dialog: undefined,\n}\n\n// TODO in the future, new file creation should be in explorer like in vscode\n// workaround for electron bug https://github.com/electron/electron/issues/472\nconst showDialogInsteadOfPrompt = true\n\nexport const prompt = async (message) => {\n if (showDialogInsteadOfPrompt) {\n const $Dialog = document.createElement('dialog')\n $Dialog.id = 'Dialog'\n const $DialogTitle = document.createElement('h1')\n const $DialogInput = document.createElement('input')\n const $DialogButtonOk = document.createElement('button')\n $DialogButtonOk.textContent = 'ok'\n const $DialogButtonCancel = document.createElement('button')\n $DialogButtonCancel.textContent = 'Cancel'\n $Dialog.append(\n $DialogTitle,\n $DialogInput,\n $DialogButtonCancel,\n $DialogButtonOk\n )\n $DialogTitle.textContent = message\n Widget.append($Dialog)\n // @ts-ignore\n $Dialog.showModal()\n Focus.setFocus('dialog')\n state.$Dialog = $Dialog\n // TODO what if there is an error inside the body of the promise function?\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n $DialogButtonOk.onclick = undefined\n $DialogButtonCancel.onclick = undefined\n $Dialog.remove()\n }\n const handleOk = () => {\n console.log('ok clicked')\n cleanup()\n resolve($DialogInput.value)\n }\n const handleCancel = () => {\n console.log('cancel clicked')\n cleanup()\n resolve(undefined)\n }\n $DialogButtonOk.onclick = handleOk\n $DialogButtonCancel.onclick = handleCancel\n // TODO support escape key to close modal and cancel\n })\n }\n const result = window.prompt(message)\n return result\n}\n\nexport const alert = (message) => {\n console.log('actual alert', message)\n window.alert(message)\n // globalThis.alert(`message ${message}`)\n // globalThis.alert('odijdiej')\n}\n\nexport const close = () => {\n console.log('dialog removed')\n Widget.remove(state.$Dialog)\n state.$Dialog = undefined\n Focus.focusPrevious()\n}\n\nconst RE_STACK_1 = /\\((.*):(\\d+):(\\d+)\\)$/\nconst RE_STACK_2 = /at (.*):(\\d+):(\\d+)$/\n\nconst create$ErrorStack = (stack) => {\n const $DialogBodyErrorStack = document.createElement('div')\n $DialogBodyErrorStack.id = 'DialogBodyErrorStack'\n $DialogBodyErrorStack.textContent = stack\n\n // TODO chrome doesn't allow local file links,\n // should probably open editor with that file in new tab?\n // let match = stackLine.match(RE_STACK_1)\n // if (!match) {\n // match = stackLine.match(RE_STACK_2)\n // }\n // if (match) {\n // const [_, path, line, column] = match\n // console.log({ match })\n // const $Line = document.createElement('div')\n // const $Link = document.createElement('a')\n // $Link.setAttribute('target', 'noopener noreferrer')\n // $Link.setAttribute('target', 'blank')\n // $Link.textContent = path\n // $Link.href = path\n // $Line.append($Link)\n // $Lines.append($Line)\n // } else {\n // const $Line = document.createElement('div')\n // $Line.className = 'StackLine'\n // $Line.textContent = stackLine\n // $Lines.append($Line)\n // }\n // }\n return $DialogBodyErrorStack\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handleDialogOptionClick = (event) => {\n const $Target = event.target\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* Dialog.handleClick */ 'Dialog.handleClick',\n /* index */ index\n )\n}\n\n// TODO this show be a viewlet\nexport const showErrorDialogWithOptions = (error, options) => {\n if (!Platform.supportsHtml5Dialog()) {\n console.info('the dialog api is not available on this browser')\n alert(error) // TODO in electron this will do nothing, but electron always supports dialogs\n return\n }\n options ||= [] // TODO options should always be defined\n\n const $DialogTitle = document.createElement('h2')\n $DialogTitle.id = 'DialogTitle'\n $DialogTitle.textContent = error.category || 'Extension Error'\n\n const $DialogBodyErrorMessage = document.createElement('p')\n $DialogBodyErrorMessage.id = 'DialogBodyErrorMessage'\n $DialogBodyErrorMessage.textContent =\n typeof error === 'string' ? error : error.message\n\n const $DialogBodyErrorCodeFrame = document.createElement('code')\n $DialogBodyErrorCodeFrame.id = 'DialogBodyErrorCodeFrame'\n $DialogBodyErrorCodeFrame.textContent = error.codeFrame\n $DialogBodyErrorCodeFrame.ariaLabel = 'Code Frame'\n\n const $DialogBodyErrorStack = create$ErrorStack(error.stack)\n\n const $DialogBodyOptions = document.createElement('div')\n $DialogBodyOptions.id = 'DialogBodyOptions'\n\n for (const option of options) {\n const $DialogOption = document.createElement('button')\n $DialogOption.className = 'DialogOption'\n $DialogOption.textContent = option\n $DialogOption.onclick = handleDialogOptionClick\n $DialogBodyOptions.append($DialogOption)\n }\n const $DialogBody = document.createElement('div')\n $DialogBody.id = 'DialogBody'\n $DialogBody.append(\n $DialogBodyErrorMessage,\n $DialogBodyErrorCodeFrame,\n $DialogBodyErrorStack,\n $DialogBodyOptions\n )\n // TODO screen reader switches to browse mode for dialog and\n // reads dialog title and error message multiple times\n const $Dialog = document.createElement('dialog')\n $Dialog.id = 'Dialog'\n $Dialog.setAttribute('aria-labelledby', 'DialogTitle')\n $Dialog.setAttribute('aria-describedby', 'DialogBodyErrorMessage')\n $Dialog.append($DialogTitle, $DialogBody)\n Widget.append($Dialog)\n // @ts-ignore\n $Dialog.showModal()\n Focus.setFocus('dialog')\n state.$Dialog = $Dialog\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Dialog from './Dialog.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Dialog.alert': Dialog.alert,\n 'Dialog.close': Dialog.close,\n 'Dialog.prompt': Dialog.prompt,\n 'Dialog.showErrorDialogWithOptions': Dialog.showErrorDialogWithOptions,\n}\n", "export const downloadFile = (fileName, url) => {\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n a.click()\n}\n", "import * as Download from './Download.js'\n\nexport const Commands = {\n 'Download.downloadFile': Download.downloadFile,\n}\n", "export const state = {\n $AriaAlert1: undefined,\n $AriaAlert2: undefined,\n $AriaMessages: undefined,\n}\n\nconst create$AriaAlert = () => {\n const $AriaAlert = document.createElement('div')\n $AriaAlert.className = 'AriaAlert'\n // @ts-ignore\n $AriaAlert.role = 'alert' // TODO use idl once supported in chrome\n $AriaAlert.ariaAtomic = 'true'\n return $AriaAlert\n}\n\nconst setMessage = ($Old, $New, message) => {\n $Old.textContent = String(Math.random())\n $Old.ariaHidden = 'true'\n $New.removeAttribute('aria-hidden')\n $New.textContent = message\n}\n\nexport const alert = (message) => {\n if (!message) {\n return\n }\n if (!state.$AriaMessages) {\n state.$AriaAlert1 = create$AriaAlert()\n state.$AriaAlert2 = create$AriaAlert()\n // TODO find better name, for example AriaMessages, AriaOutlet, AriaContainer, ScreenReaderMessages\n state.$AriaMessages = document.createElement('div')\n state.$AriaMessages.className = 'monaco-aria-container'\n state.$AriaMessages.append(state.$AriaAlert1, state.$AriaAlert2)\n document.body.append(state.$AriaMessages)\n }\n const $AriaAlert1 = state.$AriaAlert1\n const $AriaAlert2 = state.$AriaAlert2\n if ($AriaAlert1.textContent === message) {\n setMessage($AriaAlert1, $AriaAlert2, message)\n } else {\n setMessage($AriaAlert2, $AriaAlert1, message)\n }\n}\n", "import * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as Widget from '../Widget/Widget.js'\n\n// TODO not sure whether created dom node\n// should stay in state or be removed\n// one option would result in less memory usage\n// the other option would result in less garbage collection\n\n// probably should optimize for less memory usage by default\n// unless the element is very likely to be used again soon (<30s)\n// but that's difficult to know\n\n// TODO hide widget after timeout or mousemove\nexport const create = (message, x, y) => {\n const $EditorError = document.createElement('div')\n $EditorError.className = 'EditorWidgetError'\n $EditorError.textContent = message\n $EditorError.style.left = `${x}px`\n $EditorError.style.top = `${y}px`\n AriaAlert.alert(message)\n Widget.append($EditorError)\n\n return {\n $EditorError,\n }\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorError from './EditorError.js'\n\nexport const Commands = {\n 'EditorError.create': EditorError.create,\n}\n", "import * as Widget from '../Widget/Widget.js'\n\nexport const create = (x, y, hover) => {\n const $Hover = document.createElement('div')\n $Hover.id = 'EditorHover'\n $Hover.textContent = hover.label\n $Hover.style.left = `${x}px`\n $Hover.style.top = `${y}px`\n Widget.append($Hover)\n return {\n $Hover,\n }\n}\n\nexport const update = (state, x, y, hover) => {\n const $Hover = state.$Hover\n $Hover.textContent = hover.label\n $Hover.style.left = `${x}px`\n $Hover.style.top = `${y}px`\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorHover from './EditorHover.js'\n\nexport const Commands = {\n 'EditorHover.create': EditorHover.create,\n}\n", "export const create = () => {\n const $InputBox = document.createElement('input')\n $InputBox.className = 'InputBox'\n $InputBox.spellcheck = false\n $InputBox.autocapitalize = 'off'\n // $InputBox.autocomplete = 'off' // TODO needed?\n $InputBox.type = 'text'\n $InputBox.setAttribute('autocorrect', 'off') // for ios\n return $InputBox\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleBlur = () => {\n RendererWorker.send(/* EditorRename.abort */ 'EditorRename.abort')\n}\n\nexport const create = (x, y) => {\n const $RenameWidgetInputBox = InputBox.create()\n $RenameWidgetInputBox.className = 'RenameWidgetInputBox'\n $RenameWidgetInputBox.onblur = handleBlur\n const $RenameWidget = document.createElement('div')\n $RenameWidget.className = 'RenameWidget'\n $RenameWidget.append($RenameWidgetInputBox)\n $RenameWidget.style.left = `${x}px`\n $RenameWidget.style.top = `${y}px`\n Widget.append($RenameWidget)\n Focus.focus($RenameWidgetInputBox, 'editorRename')\n return {\n $RenameWidget,\n $RenameWidgetInputBox,\n }\n}\n\nexport const dispose = (state) => {\n // TODO focus editor\n Widget.remove(state.$RenameWidget)\n}\n\n// TODO could also be event based\n// finish -> finish -> finishWithValue\n\nexport const finish = (state) => {\n const value = state.$RenameWidgetInputBox.value\n // TODO don't like side effect here\n return value\n}\n", "import * as EditorRename from './EditorRename.js'\n\nexport const Commands = {\n 'EditorRename.create': EditorRename.create,\n 'EditorRename.dispose': EditorRename.dispose,\n 'EditorRename.finish': EditorRename.finish,\n}\n", "/*\n * should only be used for testing\n */\nexport const evalCode = (code) => {\n window.eval(code)\n}\n", "import * as Eval from './Eval.js'\n\nexport const Commands = {\n 'Eval.evalCode': Eval.evalCode,\n}\n", "export const showDirectoryPicker = (options) => {\n // @ts-ignore\n return window.showDirectoryPicker(options)\n}\n\nexport const showFilePicker = (options) => {\n // @ts-ignore\n return window.showFilePicker(options)\n}\n\nexport const showSaveFilePicker = (options) => {\n // @ts-ignore\n return window.showSaveFilePicker(options)\n}\n", "import * as FilePicker from './FilePicker.js'\n\nexport const Commands = {\n 'FilePicker.showDirectoryPicker': FilePicker.showDirectoryPicker,\n 'FilePicker.showFilePicker': FilePicker.showFilePicker,\n 'FilePicker.showSaveFilePicker': FilePicker.showSaveFilePicker,\n}\n", "export const requestPermission = (handle, options) => {\n return handle.requestPermission(options)\n}\n", "import * as FileSystemHandle from './FileSystemHandle.js'\n\nexport const Commands = {\n 'FileSystemHandle.requestPermission': FileSystemHandle.requestPermission,\n}\n", "import * as Widget from '../Widget/Widget.js'\n\nconst handleImageLoad = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n const width = $ImagePreviewImage.naturalWidth\n const height = $ImagePreviewImage.naturalHeight\n $ImagePreviewCaption.textContent = `${width} \u00D7 ${height}`\n}\n\nconst handleImageError = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n $ImagePreviewCaption.textContent = 'Image could not be loaded'\n}\n\n// TODO duplicate code with below\n\nexport const showError = (message, top, left) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n $ImagePreviewCaption.textContent = message\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n $ImagePreview.style.top = `${top}px`\n $ImagePreview.style.left = `${left}px`\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const create = (uri, top, left) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.src = uri\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n $ImagePreviewImage.onload = handleImageLoad\n $ImagePreviewImage.onerror = handleImageError\n $ImagePreview.style.top = `${top}px`\n $ImagePreview.style.left = `${left}px`\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const update = (state, uri) => {\n state.$ImagePreviewImage.uri = uri\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$ImagePreview)\n}\n", "import * as ImagePreview from './ImagePreview.js'\n\nexport const Commands = {\n 'ImagePreview.create': ImagePreview.create,\n 'ImagePreview.dispose': ImagePreview.dispose,\n 'ImagePreview.showError': ImagePreview.showError,\n 'ImagePreview.update': ImagePreview.update,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const getPathName = () => {\n return location.pathname\n}\n\nexport const getHref = () => {\n return location.href\n}\n\n// TODO should do nothing if it is already at this path\nexport const setPathName = (pathName) => {\n const currentPathName = getPathName()\n if (currentPathName === pathName) {\n return\n }\n history.pushState(null, null, pathName)\n}\n\nconst handlePopState = (event) => {\n RendererWorker.send(/* Workspace.hydrate */ 'Workspace.hydrate')\n}\n\nexport const hydrate = () => {\n addEventListener('popstate', handlePopState)\n}\n", "import * as Location from '../Location/Location.js'\nimport * as Layout from '../Layout/Layout.js'\n\nexport const getInitData = () => {\n const initData = {\n Location: {\n href: Location.getHref(),\n },\n Layout: {\n bounds: Layout.getBounds(),\n },\n LocalStorage: {\n savedState: localStorage.getItem('stateToSave'),\n layout: localStorage.getItem('layout'),\n },\n }\n return initData\n}\n", "import * as InitData from './InitData.js'\n\nexport const Commands = {\n 'InitData.getInitData': InitData.getInitData,\n}\n", "import * as Context from '../Context/Context.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Platform from '../Platform/Platform.js'\n\nconst RE_ASCII = /[\\p{ASCII}]+/u\n\nexport const state = {\n keyBindings: [],\n modifier: '',\n modifierTimeout: -1,\n}\n\nconst isAscii = (key) => {\n return RE_ASCII.test(key)\n}\n\nconst getIdentifier = (event) => {\n let identifier = ''\n if (event.ctrlKey) {\n identifier += 'ctrl+'\n }\n if (event.shiftKey) {\n identifier += 'shift+'\n }\n if (event.altKey) {\n identifier += 'alt+'\n }\n let key = event.key\n if (key === ' ') {\n key = 'Space'\n }\n if (key.length === 1) {\n key = key.toLowerCase()\n }\n identifier += key\n return identifier\n}\n\n// TODO store keybindings as json somewhere\n\n// TODO sort keybindings by `when` priority -> focus.editorCompletions: 10, focus.editor:9 etc.\n\n// TODO does it make sense to have all of these configurable?\n// could remove some context logic and have less user configuration when these are default\n// e.g. arrow down focuses next, arrow up always focuses previous item (like in aria spec)\n\n// TODO ui should only have keys -> commands get resolved inside renderer worker\n// TODO should toggle terminal, not only open\n\nconst matchesContext = (keybinding) => {\n if (!keybinding.when) {\n return true\n }\n return Context.get(keybinding.when)\n}\n\nconst getMatchingKeyBinding = (identifier) => {\n // TODO this could be more efficient in O(N) instead of O(2N)\n const matchesIdentifier = (keyBinding) => {\n return keyBinding.key === identifier\n }\n const matchingKeyBindings = state.keyBindings.filter(matchesIdentifier)\n const matchingKeyBinding = matchingKeyBindings.find(matchesContext)\n return matchingKeyBinding\n}\n\nconst getModifier = (event) => {\n switch (event.key) {\n case 'Control':\n return 'ctrl'\n case 'Shift':\n return 'shift'\n case 'Alt':\n return 'alt'\n }\n return ''\n}\n\nconst clearModifier = () => {\n if (!state.modifier) {\n return\n }\n if (state.modifierTimeout !== -1) {\n clearTimeout(state.modifierTimeout)\n state.modifier = ''\n state.modifierTimeout = -1\n }\n}\n\nconst handleMatchingKeyBinding = (matchingKeyBinding) => {\n // TODO execute command directly or -> executeCommand -> keybindings -> executeCommand\n // better directly\n // TODO always should be number\n // when launching keybindings -> map string command to number\n // TODO should args always be defined? (probably yes -> monomorphism & simpler code since all objects are the same)\n\n // TODO matchingKeyBinding.command should always be number\n RendererWorker.send(\n /* KeyBindings.handleKeyBinding */ 'KeyBindings.handleKeyBinding',\n /* keyBinding */ matchingKeyBinding\n )\n}\n\nconst handleKeyDown = (event) => {\n const identifier = getIdentifier(event)\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (!matchingKeyBinding) {\n return\n }\n event.preventDefault()\n handleMatchingKeyBinding(matchingKeyBinding)\n}\n\nconst handleKeyUp = (event) => {\n const modifier = getModifier(event)\n if (!modifier) {\n clearModifier()\n return\n }\n if (state.modifier === modifier) {\n clearModifier()\n const identifier = `${modifier} ${modifier}`\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (matchingKeyBinding) {\n handleMatchingKeyBinding(matchingKeyBinding)\n }\n return\n }\n\n state.modifier = modifier\n // @ts-ignore\n state.modifierTimeout = setTimeout(clearModifier, 300)\n}\n\nexport const hydrate = async (keyBindings) => {\n // TODO is this the right place for browser context ?\n // maybe in env file / env service\n const browser = Platform.getBrowser()\n Context.set(`browser.${browser}`, true)\n state.keyBindings = keyBindings\n window.addEventListener('keydown', handleKeyDown)\n // TODO only need keyup listener if keybindings include double modifier key (e.g \"shift shift\")\n window.addEventListener('keyup', handleKeyUp)\n}\n\n// TODO should be in renderer worker\nexport const lookupKeyBinding = (commandId) => {\n switch (commandId) {\n case 'scm.acceptInput':\n return 'Ctrl+Enter'\n default:\n return ''\n }\n}\n", "import * as KeyBindings from './KeyBindings.js'\n\nexport const Commands = {\n 'KeyBindings.hydrate': KeyBindings.hydrate,\n // Command.register(756, KeyBindings.setKeyBindings)\n}\n", "import * as Location from './Location.js'\n\nexport const Commands = {\n 'Location.getHref': Location.getHref,\n 'Location.getPathName': Location.getPathName,\n 'Location.hydrate': Location.hydrate,\n 'Location.setPathName': Location.setPathName,\n}\n", "export const setThemeColor = (color) => {\n const meta = document.querySelector('meta[name=\"theme-color\"]')\n if (!meta) {\n return\n }\n // @ts-ignore\n meta.content = color\n}\n", "import * as Meta from './Meta.js'\n\nexport const Commands = {\n 'Meta.setThemeColor': Meta.setThemeColor,\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $Notifications: undefined,\n}\n\nconst create$Notifications = () => {\n const $Notifications = document.createElement('div')\n $Notifications.id = 'Notifications'\n return $Notifications\n}\n\nconst create$Notification = (message) => {\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.textContent = message\n return $Notification\n}\n\nexport const create = (type, message) => {\n // TODO this pattern might be also useful for activitybar, sidebar etc., creating elements as late as possible, only when actually needed\n const $Notification = create$Notification(message)\n Widget.append($Notification)\n}\n\nconst findIndex = ($Child) => {\n const $Parent = $Child.parentNode\n for (let i = 0; i < $Parent.children.length; i++) {\n if ($Parent.children[i] === $Child) {\n return i\n }\n }\n return -1\n}\n\nconst handleNotificationClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'NotificationOption':\n const index = findIndex($Target)\n RendererWorker.send(\n /* Notification.handleClick */ 'Notification.handleClick',\n /* index */ index\n )\n break\n default:\n break\n }\n console.log('notification clicked')\n}\n\nconst create$NotificationWithOptions = (message, options) => {\n const $NotificationMessage = document.createElement('p')\n $NotificationMessage.className = 'NotificationMessage'\n $NotificationMessage.textContent = message\n const $NotificationOptions = document.createElement('div')\n $NotificationOptions.className = 'NotificationOptions'\n for (const option of options) {\n const $NotificationOption = document.createElement('button')\n $NotificationOption.className = 'NotificationOption'\n $NotificationOption.textContent = option\n $NotificationOptions.append($NotificationOption)\n }\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.append($NotificationMessage, $NotificationOptions)\n $Notification.onclick = handleNotificationClick\n return $Notification\n}\n\nexport const createWithOptions = (type, message, options) => {\n const $Notification = create$NotificationWithOptions(message, options)\n Widget.append($Notification)\n}\n\nexport const dispose = (id) => {\n // const $Notification = state.$Notifications\n}\n", "import * as Notification from './Notification.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Notification.create': Notification.create,\n 'Notification.createWithOptions': Notification.createWithOptions,\n 'Notification.dispose': Notification.dispose,\n}\n", "// TODO this module should be called dom or dom utils\n\n// TODO this module makes for weird code splitting chunks,\n// maybe duplicate the code per file for better chunks\n\nexport const findIndex = ($Container, $Target) => {\n while ($Target && $Target.parentNode !== $Container) {\n $Target = $Target.parentNode\n }\n if (!$Target) {\n // console.log('no target to find', $Target, event.target)\n return -1\n }\n for (let i = 0; i < $Container.children.length; i++) {\n if ($Container.children[i] === $Target) {\n return i\n }\n }\n return -1\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", "import * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nconst getLabel = (item) => {\n if (!item || !item.label) {\n console.warn('menu item has missing label', item)\n return 'n/a'\n }\n return item.label\n}\n\nexport const create$MenuItem = (item) => {\n const $MenuItem = document.createElement('div')\n switch (item.flags) {\n case MenuItemFlags.None:\n case MenuItemFlags.RestoreFocus:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Separator:\n $MenuItem.className = 'MenuItemSeparator'\n // @ts-ignore\n $MenuItem.role = 'separator'\n break\n case MenuItemFlags.Checked:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitemcheckbox'\n $MenuItem.ariaChecked = 'true'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Unchecked:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitemcheckbox'\n $MenuItem.ariaChecked = 'false'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.SubMenu:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.ariaHasPopup = 'true'\n $MenuItem.ariaExpanded = 'false'\n break\n case MenuItemFlags.Disabled:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.setAttribute('disabled', 'true')\n break\n default:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n console.warn('invalid menu item flags:', item)\n break\n }\n return $MenuItem\n}\n", "export const create$BackDrop = () => {\n const $BackDrop = document.createElement('div')\n $BackDrop.id = 'BackDrop'\n return $BackDrop\n}\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\nimport * as BackDrop from '../BackDrop/BackDrop.js'\nimport * as Focus from '../Focus/Focus.js'\n\n// TODO when pressing tab -> focus next element in tab order and close menu\n\n// TODO menu and contextmenu should have own keybinding logic\n// seems not possible to do with just one keybinding listener\n\n// TODO similar to context menu, show sub menu entries\n// there can be multiple instances (parent -> child -> child) submenus\n\n// TODO using .style.top, .style.left causes chrome devtools to show many layout shift -> maybe use transform instead\n\n// TODO when cycling through items, recalculate style is much slower\n// than in vscode (1.49ms vs 0.33ms)\n// paint is also faster in vscode (0.32ms vs 0.14ms)\n\n// TODO focus on menu is not announced to screenreader\n\n// TODO recalculate style and paint is slow when cycling through items:\n// 0.59ms recalculate style\n// 36us update layer tree\n// 0.35ms paint\n// 0.20ms composite layer\n\n// const contextMenuWidth = 150\n// const contextMenuHeight = 150 + /* padding */ 8 * 4\n\n// TODO keyboard handling\n\nexport const state = {\n handleKeyDown(event) {},\n handleFocusOut(event) {},\n $$Menus: [],\n anchorX: 0,\n anchorY: 0,\n anchorTime: -1,\n $BackDrop: undefined,\n}\n\nconst getLevel = ($Menu) => {\n return state.$$Menus.indexOf($Menu)\n}\n\nconst handleMouseDown = (event) => {\n const $Target = event.target\n const $Menu = $Target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, $Target)\n if (index === -1) {\n console.log('index is negative one')\n return\n }\n event.preventDefault()\n const level = getLevel($Menu)\n RendererWorker.send(\n /* Menu.handleClick */ 'Menu.selectIndex',\n /* level */ level,\n /* index */ index\n )\n}\n\n// const handleKeyDown = (event) => {\n// console.log({ key: event.key })\n// switch (event.key) {\n// case 'ArrowUp':\n// RendererWorker.send( /* Menu.focusPrevious */ 7405)\n// break\n// case 'ArrowLeft':\n// // TODO collapse menu maybe\n// break\n// case 'ArrowDown':\n// RendererWorker.send( /* Menu.focusNext */ 7404)\n// break\n// case 'ArrowRight':\n// // TODO expand sub menu maybe\n// break\n// case 'Home':\n// RendererWorker.send( /* Menu.focusFirst */ 7406)\n// break\n// case 'End':\n// RendererWorker.send( /* Menu.focusLast */ 7407)\n// break\n// default:\n// break\n// }\n// }\n\nconst MOUSE_LOCS_TRACKED = 3\n\n/**\n *\n * @param {MouseEvent} event\n */\nconst handleMouseEnter = (event) => {\n const { target, clientX, clientY, timeStamp } = event\n // @ts-ignore\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n if (index === -1) {\n return\n }\n const level = getLevel($Menu)\n RendererWorker.send(\n /* Menu.handleMouseEnter */ 'Menu.handleMouseEnter',\n /* level */ level,\n /* index */ index,\n /* x */ clientX,\n /* y */ clientY,\n /* timeStamp */ timeStamp\n )\n}\n\nconst handleMouseMove = (event) => {\n // const x = event.clientX\n // const y = event.clientY\n // console.log('move', { x, y })\n}\n\nconst handleMouseLeave = (event) => {\n const $RelatedTarget = event.relatedTarget\n if ($RelatedTarget.classList.contains('MenuItem')) {\n return\n }\n RendererWorker.send(/* Menu.handleMouseLeave */ 'Menu.handleMouseLeave')\n}\n\n// const handleBlur = (event) => {}\nconst handleKeyDown = (event) => {\n state.handleKeyDown(event)\n}\n\nconst handleFocusOut = (event) => {\n state.handleFocusOut(event)\n}\n\nconst create$Menu = () => {\n // TODO set aria label on menu (e.g. File, Edit, Selection)\n const $Menu = document.createElement('ul')\n $Menu.className = 'Menu'\n // @ts-ignore\n $Menu.role = 'menu'\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n $Menu.addEventListener('mousedown', handleMouseDown)\n $Menu.addEventListener('mouseenter', handleMouseEnter, {\n capture: true,\n })\n $Menu.addEventListener('mouseleave', handleMouseLeave, {\n capture: true,\n })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n $Menu.onkeydown = handleKeyDown\n $Menu.addEventListener('focusout', handleFocusOut)\n $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\nexport const focusIndex = (level, oldFocusedIndex, newFocusedIndex) => {\n const $Menu = state.$$Menus[level]\n if (oldFocusedIndex !== -1) {\n $Menu.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex !== -1) {\n $Menu.children[newFocusedIndex].classList.add('Focused')\n $Menu.children[newFocusedIndex].focus()\n }\n}\n\n// TODO replace function that recycles menu dom nodes\n\nconst handleBackDropMouseDown = (event) => {\n event.preventDefault()\n event.stopPropagation()\n RendererWorker.send(/* Menu.hide */ 'Menu.hide')\n}\n\nconst handleContextMenu = (event) => {\n event.preventDefault()\n}\n\nexport const showMenu = (\n x,\n y,\n width,\n height,\n items,\n level,\n parentIndex = -1,\n mouseBlocking = false\n) => {\n if (mouseBlocking) {\n const $BackDrop = BackDrop.create$BackDrop()\n $BackDrop.onmousedown = handleBackDropMouseDown\n $BackDrop.oncontextmenu = handleContextMenu\n state.$BackDrop = $BackDrop\n Widget.append($BackDrop)\n }\n\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n $Menu.style.left = `${x}px`\n $Menu.style.top = `${y}px`\n $Menu.id = `Menu-${level}`\n\n if (parentIndex !== -1) {\n const $ParentMenu = state.$$Menus[level - 1]\n const $ParentMenuItem = $ParentMenu.children[parentIndex]\n $ParentMenuItem.ariaExpanded = 'true'\n $ParentMenuItem.setAttribute('aria-owns', $Menu.id)\n }\n\n state.$$Menus.push($Menu)\n Widget.append($Menu)\n\n if (level === 0) {\n Focus.focus($Menu, 'menu')\n }\n}\n\nexport const showContextMenu = (x, y, width, height, level, items) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n while (state.$$Menus.length > 0) {\n state.$$Menus[0].remove()\n }\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n $Menu.style.left = `${x}px`\n $Menu.style.top = `${y}px`\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n state.$$Menus.push($Menu)\n // TODO create backdrop\n}\n\nexport const closeSubMenu = () => {\n const $SubMenu = state.$$Menus.pop()\n const $ParentMenu = state.$$Menus.at(-1)\n Widget.remove($SubMenu)\n}\n\nexport const hideSubMenu = (level) => {\n const $$ChildMenus = state.$$Menus.slice(level)\n for (const $ChildMenu of $$ChildMenus) {\n Widget.remove($ChildMenu)\n }\n}\n\n// export const showSubMenu = (level, items, parentIndex) => {\n// const $$ChildMenus = state.$$Menus.slice(level)\n// for (const $ChildMenu of $$ChildMenus) {\n// Widget.remove($ChildMenu)\n// }\n// state.$$Menus = state.$$Menus.slice(0, level)\n// const $ParentMenu = state.$$Menus[level - 1]\n// const $ParentMenuItem = $ParentMenu.children[parentIndex]\n// const rect = $ParentMenuItem.getBoundingClientRect()\n// const x = rect.right\n// const y = rect.top\n// showMenu(x, y, items, level)\n// // TODO remove aria-owns when sub-menu is closed\n// $ParentMenuItem.setAttribute('aria-owns', 'Menu')\n// }\n\n// TODO implement focusIndex like this\n// const focusIndex2=(id, index)=>{\n// const $Menu = state.menus[id]\n// $Menu.children[index].focus()\n// }\n\n// TODO support nested menus / submenus\nexport const showControlled = ({\n x,\n y,\n items,\n handleKeyDown,\n handleFocusOut,\n $Parent,\n level,\n width,\n height,\n}) => {\n showMenu(x, y, width, height, items, level)\n // TODO menu should not necessarily know about parent (titleBarMenuBar)\n // it should be the other way around\n state.$Parent = $Parent\n state.handleFocusOut = handleFocusOut\n state.handleKeyDown = handleKeyDown\n if ($Parent) {\n // state.$Menu.ariaLabel=''\n // state.$Menu.ariaLabelledBy =$Parent.id\n $Parent.setAttribute('aria-owns', 'Menu')\n } else {\n // state.$Menu.removeAttribute('aria-labelledby')\n }\n // Context.setFocus('menu') // TODO overlapping focus: titleBarMenuBar has focus (kinda) but also menu at the same time\n}\n\n// TODO have function to show submenu\n\nexport const hide = (restoreFocus = true) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n if (state.$BackDrop) {\n Widget.remove(state.$BackDrop)\n state.$BackDrop = undefined\n }\n // TODO focus previous item\n if (restoreFocus) {\n Focus.focusPrevious()\n }\n}\n\nexport const contains = ($Element) => {\n for (const $Menu of state.$$Menus) {\n if ($Menu.contains($Element)) {\n return true\n }\n }\n return false\n}\n", "import * as Menu from './Menu.js'\n\nexport const Commands = {\n 'Menu.focusIndex': Menu.focusIndex,\n 'Menu.hide': Menu.hide,\n 'Menu.hideSubMenu': Menu.hideSubMenu,\n 'Menu.showContextMenu': Menu.showContextMenu,\n 'Menu.showControlled': Menu.showControlled,\n 'Menu.showMenu': Menu.showMenu,\n 'Menu.showSubMenu': Menu.showSubMenu,\n}\n", "export const openUrl = (url) => {\n open(url)\n}\n", "import * as Open from './Open.js'\n\nexport const Commands = {\n 'Open.openUrl': Open.openUrl,\n}\n", "export const measureUserAgentSpecificMemory = async () => {\n // @ts-ignore\n if (performance && performance.measureUserAgentSpecificMemory) {\n console.time('mem')\n // @ts-ignore\n const memory = await performance.measureUserAgentSpecificMemory()\n console.timeEnd('mem')\n return memory\n }\n return undefined\n}\n\nexport const getMemory = () => {\n // @ts-ignore\n const memory = performance.memory\n if (!memory) {\n return undefined\n }\n return {\n jsHeapSizeLimit: memory.jsHeapSizeLimit,\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize,\n }\n}\n", "import * as Performance from './Performance.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Performance.getMemory': Performance.getMemory,\n 'Performance.measureUserAgentSpecificMemory': Performance.measureUserAgentSpecificMemory,\n}\n", "/*! @license DOMPurify 2.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.0/LICENSE */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n return _typeof = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(obj2) {\n return typeof obj2;\n } : function(obj2) {\n return obj2 && typeof Symbol == \"function\" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? \"symbol\" : typeof obj2;\n }, _typeof(obj);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct)\n return false;\n if (Reflect.construct.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct2(Parent2, args2, Class2) {\n var a = [null];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2)\n _setPrototypeOf(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr))\n return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++)\n arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar hasOwnProperty = Object.hasOwnProperty, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze, seal = Object.seal, create = Object.create;\nvar _ref = typeof Reflect !== \"undefined\" && Reflect, apply = _ref.apply, construct = _ref.construct;\nif (!apply) {\n apply = function apply2(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!freeze) {\n freeze = function freeze2(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal2(x) {\n return x;\n };\n}\nif (!construct) {\n construct = function construct2(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function(thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n if (setPrototypeOf) {\n setPrototypeOf(set, null);\n }\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === \"string\") {\n var lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\nfunction clone(object) {\n var newObject = create(null);\n var property;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n return newObject;\n}\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === \"function\") {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue(element) {\n console.warn(\"fallback value for\", element);\n return null;\n }\n return fallbackValue;\n}\nvar html$1 = freeze([\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"bdi\", \"bdo\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"decorator\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"element\", \"em\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meter\", \"nav\", \"nobr\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"shadow\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"]);\nvar svg$1 = freeze([\"svg\", \"a\", \"altglyph\", \"altglyphdef\", \"altglyphitem\", \"animatecolor\", \"animatemotion\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"desc\", \"ellipse\", \"filter\", \"font\", \"g\", \"glyph\", \"glyphref\", \"hkern\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"style\", \"switch\", \"symbol\", \"text\", \"textpath\", \"title\", \"tref\", \"tspan\", \"view\", \"vkern\"]);\nvar svgFilters = freeze([\"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\"]);\nvar svgDisallowed = freeze([\"animate\", \"color-profile\", \"cursor\", \"discard\", \"fedropshadow\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignobject\", \"hatch\", \"hatchpath\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"missing-glyph\", \"script\", \"set\", \"solidcolor\", \"unknown\", \"use\"]);\nvar mathMl$1 = freeze([\"math\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mglyph\", \"mi\", \"mlabeledtr\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msup\", \"msubsup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\"]);\nvar mathMlDisallowed = freeze([\"maction\", \"maligngroup\", \"malignmark\", \"mlongdiv\", \"mscarries\", \"mscarry\", \"msgroup\", \"mstack\", \"msline\", \"msrow\", \"semantics\", \"annotation\", \"annotation-xml\", \"mprescripts\", \"none\"]);\nvar text = freeze([\"#text\"]);\nvar html = freeze([\"accept\", \"action\", \"align\", \"alt\", \"autocapitalize\", \"autocomplete\", \"autopictureinpicture\", \"autoplay\", \"background\", \"bgcolor\", \"border\", \"capture\", \"cellpadding\", \"cellspacing\", \"checked\", \"cite\", \"class\", \"clear\", \"color\", \"cols\", \"colspan\", \"controls\", \"controlslist\", \"coords\", \"crossorigin\", \"datetime\", \"decoding\", \"default\", \"dir\", \"disabled\", \"disablepictureinpicture\", \"disableremoteplayback\", \"download\", \"draggable\", \"enctype\", \"enterkeyhint\", \"face\", \"for\", \"headers\", \"height\", \"hidden\", \"high\", \"href\", \"hreflang\", \"id\", \"inputmode\", \"integrity\", \"ismap\", \"kind\", \"label\", \"lang\", \"list\", \"loading\", \"loop\", \"low\", \"max\", \"maxlength\", \"media\", \"method\", \"min\", \"minlength\", \"multiple\", \"muted\", \"name\", \"nonce\", \"noshade\", \"novalidate\", \"nowrap\", \"open\", \"optimum\", \"pattern\", \"placeholder\", \"playsinline\", \"poster\", \"preload\", \"pubdate\", \"radiogroup\", \"readonly\", \"rel\", \"required\", \"rev\", \"reversed\", \"role\", \"rows\", \"rowspan\", \"spellcheck\", \"scope\", \"selected\", \"shape\", \"size\", \"sizes\", \"span\", \"srclang\", \"start\", \"src\", \"srcset\", \"step\", \"style\", \"summary\", \"tabindex\", \"title\", \"translate\", \"type\", \"usemap\", \"valign\", \"value\", \"width\", \"xmlns\", \"slot\"]);\nvar svg = freeze([\"accent-height\", \"accumulate\", \"additive\", \"alignment-baseline\", \"ascent\", \"attributename\", \"attributetype\", \"azimuth\", \"basefrequency\", \"baseline-shift\", \"begin\", \"bias\", \"by\", \"class\", \"clip\", \"clippathunits\", \"clip-path\", \"clip-rule\", \"color\", \"color-interpolation\", \"color-interpolation-filters\", \"color-profile\", \"color-rendering\", \"cx\", \"cy\", \"d\", \"dx\", \"dy\", \"diffuseconstant\", \"direction\", \"display\", \"divisor\", \"dur\", \"edgemode\", \"elevation\", \"end\", \"fill\", \"fill-opacity\", \"fill-rule\", \"filter\", \"filterunits\", \"flood-color\", \"flood-opacity\", \"font-family\", \"font-size\", \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-variant\", \"font-weight\", \"fx\", \"fy\", \"g1\", \"g2\", \"glyph-name\", \"glyphref\", \"gradientunits\", \"gradienttransform\", \"height\", \"href\", \"id\", \"image-rendering\", \"in\", \"in2\", \"k\", \"k1\", \"k2\", \"k3\", \"k4\", \"kerning\", \"keypoints\", \"keysplines\", \"keytimes\", \"lang\", \"lengthadjust\", \"letter-spacing\", \"kernelmatrix\", \"kernelunitlength\", \"lighting-color\", \"local\", \"marker-end\", \"marker-mid\", \"marker-start\", \"markerheight\", \"markerunits\", \"markerwidth\", \"maskcontentunits\", \"maskunits\", \"max\", \"mask\", \"media\", \"method\", \"mode\", \"min\", \"name\", \"numoctaves\", \"offset\", \"operator\", \"opacity\", \"order\", \"orient\", \"orientation\", \"origin\", \"overflow\", \"paint-order\", \"path\", \"pathlength\", \"patterncontentunits\", \"patterntransform\", \"patternunits\", \"points\", \"preservealpha\", \"preserveaspectratio\", \"primitiveunits\", \"r\", \"rx\", \"ry\", \"radius\", \"refx\", \"refy\", \"repeatcount\", \"repeatdur\", \"restart\", \"result\", \"rotate\", \"scale\", \"seed\", \"shape-rendering\", \"specularconstant\", \"specularexponent\", \"spreadmethod\", \"startoffset\", \"stddeviation\", \"stitchtiles\", \"stop-color\", \"stop-opacity\", \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-miterlimit\", \"stroke-opacity\", \"stroke\", \"stroke-width\", \"style\", \"surfacescale\", \"systemlanguage\", \"tabindex\", \"targetx\", \"targety\", \"transform\", \"transform-origin\", \"text-anchor\", \"text-decoration\", \"text-rendering\", \"textlength\", \"type\", \"u1\", \"u2\", \"unicode\", \"values\", \"viewbox\", \"visibility\", \"version\", \"vert-adv-y\", \"vert-origin-x\", \"vert-origin-y\", \"width\", \"word-spacing\", \"wrap\", \"writing-mode\", \"xchannelselector\", \"ychannelselector\", \"x\", \"x1\", \"x2\", \"xmlns\", \"y\", \"y1\", \"y2\", \"z\", \"zoomandpan\"]);\nvar mathMl = freeze([\"accent\", \"accentunder\", \"align\", \"bevelled\", \"close\", \"columnsalign\", \"columnlines\", \"columnspan\", \"denomalign\", \"depth\", \"dir\", \"display\", \"displaystyle\", \"encoding\", \"fence\", \"frame\", \"height\", \"href\", \"id\", \"largeop\", \"length\", \"linethickness\", \"lspace\", \"lquote\", \"mathbackground\", \"mathcolor\", \"mathsize\", \"mathvariant\", \"maxsize\", \"minsize\", \"movablelimits\", \"notation\", \"numalign\", \"open\", \"rowalign\", \"rowlines\", \"rowspacing\", \"rowspan\", \"rspace\", \"rquote\", \"scriptlevel\", \"scriptminsize\", \"scriptsizemultiplier\", \"selection\", \"separator\", \"separators\", \"stretchy\", \"subscriptshift\", \"supscriptshift\", \"symmetric\", \"voffset\", \"width\", \"xmlns\"]);\nvar xml = freeze([\"xlink:href\", \"xml:id\", \"xlink:title\", \"xml:space\", \"xmlns:xlink\"]);\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm);\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/);\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nvar DOCTYPE_NAME = seal(/^html$/i);\nvar getGlobal = function getGlobal2() {\n return typeof window === \"undefined\" ? null : window;\n};\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document) {\n if (_typeof(trustedTypes) !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") {\n return null;\n }\n var suffix = null;\n var ATTR_NAME = \"data-tt-policy-suffix\";\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n var policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html2) {\n return html2;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n console.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n return null;\n }\n};\nfunction createDOMPurify() {\n var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n var DOMPurify = function DOMPurify2(root) {\n return createDOMPurify(root);\n };\n DOMPurify.version = \"2.4.0\";\n DOMPurify.removed = [];\n if (!window2 || !window2.document || window2.document.nodeType !== 9) {\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n var originalDocument = window2.document;\n var document = window2.document;\n var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n var getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n var getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n var getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n if (typeof HTMLTemplateElement === \"function\") {\n var template = document.createElement(\"template\");\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(\"\") : \"\";\n var _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {\n }\n var hooks = {};\n DOMPurify.isSupported = typeof getParentNode === \"function\" && implementation && typeof implementation.createHTMLDocument !== \"undefined\" && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n var FORBID_TAGS = null;\n var FORBID_ATTR = null;\n var ALLOW_ARIA_ATTR = true;\n var ALLOW_DATA_ATTR = true;\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n var SAFE_FOR_TEMPLATES = false;\n var WHOLE_DOCUMENT = false;\n var SET_CONFIG = false;\n var FORCE_BODY = false;\n var RETURN_DOM = false;\n var RETURN_DOM_FRAGMENT = false;\n var RETURN_TRUSTED_TYPE = false;\n var SANITIZE_DOM = true;\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n var KEEP_CONTENT = true;\n var IN_PLACE = false;\n var USE_PROFILES = {};\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, [\"annotation-xml\", \"audio\", \"colgroup\", \"desc\", \"foreignobject\", \"head\", \"iframe\", \"math\", \"mi\", \"mn\", \"mo\", \"ms\", \"mtext\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"svg\", \"template\", \"thead\", \"title\", \"video\", \"xmp\"]);\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, [\"audio\", \"video\", \"img\", \"source\", \"image\", \"track\"]);\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\"alt\", \"class\", \"for\", \"id\", \"label\", \"name\", \"pattern\", \"placeholder\", \"role\", \"summary\", \"title\", \"value\", \"style\", \"xmlns\"]);\n var MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n var SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n var HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n var DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n var transformCaseFunc;\n var CONFIG = null;\n var formElement = document.createElement(\"form\");\n var isRegexOrFunction = function isRegexOrFunction2(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n var _parseConfig = function _parseConfig2(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n if (!cfg || _typeof(cfg) !== \"object\") {\n cfg = {};\n }\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n transformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? function(x) {\n return x;\n } : stringToLowerCase;\n ALLOWED_TAGS = \"ALLOWED_TAGS\" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = \"ALLOWED_ATTR\" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = \"ADD_URI_SAFE_ATTR\" in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = \"ADD_DATA_URI_TAGS\" in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = \"FORBID_CONTENTS\" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = \"FORBID_TAGS\" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = \"FORBID_ATTR\" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = \"USE_PROFILES\" in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n RETURN_DOM = cfg.RETURN_DOM || false;\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n FORCE_BODY = cfg.FORCE_BODY || false;\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n IN_PLACE = cfg.IN_PLACE || false;\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === \"boolean\") {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (KEEP_CONTENT) {\n ALLOWED_TAGS[\"#text\"] = true;\n }\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, [\"html\", \"head\", \"body\"]);\n }\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, [\"tbody\"]);\n delete FORBID_TAGS.tbody;\n }\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]);\n var HTML_INTEGRATION_POINTS = addToSet({}, [\"foreignobject\", \"desc\", \"title\", \"annotation-xml\"]);\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\"title\", \"style\", \"font\", \"a\", \"script\"]);\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n var _checkValidNamespace = function _checkValidNamespace2(element) {\n var parent = getParentNode(element);\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: \"template\"\n };\n }\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n if (element.namespaceURI === SVG_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"svg\";\n }\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"math\";\n }\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n }\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n return false;\n };\n var _forceRemove = function _forceRemove2(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_2) {\n node.remove();\n }\n }\n };\n var _removeAttribute = function _removeAttribute2(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n if (name === \"is\" && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {\n }\n } else {\n try {\n node.setAttribute(name, \"\");\n } catch (_) {\n }\n }\n }\n };\n var _initDocument = function _initDocument2(dirty) {\n var doc;\n var leadingWhitespace;\n if (FORCE_BODY) {\n dirty = \"<remove></remove>\" + dirty;\n } else {\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === \"application/xhtml+xml\") {\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + \"</body></html>\";\n }\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {\n }\n }\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, \"template\", null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? \"\" : dirtyPayload;\n } catch (_) {\n }\n }\n var body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n var _createIterator = function _createIterator2(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n var _isClobbered = function _isClobbered2(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== \"string\" || typeof elm.textContent !== \"string\" || typeof elm.removeChild !== \"function\" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== \"function\" || typeof elm.setAttribute !== \"function\" || typeof elm.namespaceURI !== \"string\" || typeof elm.insertBefore !== \"function\");\n };\n var _isNode = function _isNode2(object) {\n return _typeof(Node) === \"object\" ? object instanceof Node : object && _typeof(object) === \"object\" && typeof object.nodeType === \"number\" && typeof object.nodeName === \"string\";\n };\n var _executeHook = function _executeHook2(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n arrayForEach(hooks[entryPoint], function(hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n var _sanitizeElements = function _sanitizeElements2(currentNode) {\n var content;\n _executeHook(\"beforeSanitizeElements\", currentNode, null);\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n return true;\n }\n var tagName = transformCaseFunc(currentNode.nodeName);\n _executeHook(\"uponSanitizeElement\", currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n if (tagName === \"select\" && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))\n return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName))\n return false;\n }\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n if ((tagName === \"noscript\" || tagName === \"noembed\") && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, \" \");\n content = stringReplace(content, ERB_EXPR$1, \" \");\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n _executeHook(\"afterSanitizeElements\", currentNode, null);\n return false;\n };\n var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {\n if (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) {\n return false;\n }\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName))\n ;\n else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName))\n ;\n else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (_basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value)))\n ;\n else {\n return false;\n }\n } else if (URI_SAFE_ATTRIBUTES[lcName])\n ;\n else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag])\n ;\n else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if (!value)\n ;\n else {\n return false;\n }\n return true;\n };\n var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {\n return tagName.indexOf(\"-\") > 0;\n };\n var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n _executeHook(\"beforeSanitizeAttributes\", currentNode, null);\n var attributes = currentNode.attributes;\n if (!attributes) {\n return;\n }\n var hookEvent = {\n attrName: \"\",\n attrValue: \"\",\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n while (l--) {\n attr = attributes[l];\n var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;\n value = name === \"value\" ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = void 0;\n _executeHook(\"uponSanitizeAttribute\", currentNode, hookEvent);\n value = hookEvent.attrValue;\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n _removeAttribute(name, currentNode);\n if (!hookEvent.keepAttr) {\n continue;\n }\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n value = stringReplace(value, ERB_EXPR$1, \" \");\n }\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n if (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\")) {\n _removeAttribute(name, currentNode);\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n if (trustedTypesPolicy && _typeof(trustedTypes) === \"object\" && typeof trustedTypes.getAttributeType === \"function\") {\n if (namespaceURI)\n ;\n else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case \"TrustedHTML\":\n value = trustedTypesPolicy.createHTML(value);\n break;\n case \"TrustedScriptURL\":\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n currentNode.setAttribute(name, value);\n }\n arrayPop(DOMPurify.removed);\n } catch (_) {\n }\n }\n _executeHook(\"afterSanitizeAttributes\", currentNode, null);\n };\n var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {\n var shadowNode;\n var shadowIterator = _createIterator(fragment);\n _executeHook(\"beforeSanitizeShadowDOM\", fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n _executeHook(\"uponSanitizeShadowNode\", shadowNode, null);\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM2(shadowNode.content);\n }\n _sanitizeAttributes(shadowNode);\n }\n _executeHook(\"afterSanitizeShadowDOM\", fragment, null);\n };\n DOMPurify.sanitize = function(dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var oldNode;\n var returnNode;\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = \"<!-->\";\n }\n if (typeof dirty !== \"string\" && !_isNode(dirty)) {\n if (typeof dirty.toString !== \"function\") {\n throw typeErrorCreate(\"toString is not a function\");\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== \"string\") {\n throw typeErrorCreate(\"dirty is not a string, aborting\");\n }\n }\n }\n if (!DOMPurify.isSupported) {\n if (_typeof(window2.toStaticHTML) === \"object\" || typeof window2.toStaticHTML === \"function\") {\n if (typeof dirty === \"string\") {\n return window2.toStaticHTML(dirty);\n }\n if (_isNode(dirty)) {\n return window2.toStaticHTML(dirty.outerHTML);\n }\n }\n return dirty;\n }\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n DOMPurify.removed = [];\n if (typeof dirty === \"string\") {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n }\n }\n } else if (dirty instanceof Node) {\n body = _initDocument(\"<!---->\");\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === \"BODY\") {\n body = importedNode;\n } else if (importedNode.nodeName === \"HTML\") {\n body = importedNode;\n } else {\n body.appendChild(importedNode);\n }\n } else {\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n body = _initDocument(dirty);\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n }\n }\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n while (currentNode = nodeIterator.nextNode()) {\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n _sanitizeAttributes(currentNode);\n oldNode = currentNode;\n }\n oldNode = null;\n if (IN_PLACE) {\n return dirty;\n }\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot) {\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n if (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n }\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, \" \");\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, \" \");\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function(cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function() {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function(tag, attr, value) {\n if (!CONFIG) {\n _parseConfig({});\n }\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function(entryPoint, hookFunction) {\n if (typeof hookFunction !== \"function\") {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function(entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n DOMPurify.removeHooks = function(entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n DOMPurify.removeAllHooks = function() {\n hooks = {};\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\nexport default purify;\n", "import DomPurify from '../../../static/js/dompurify.js'\n\nexport const sanitizeHtml = (html) => {\n return DomPurify.sanitize(html)\n}\n", "import * as SanitizeHtml from './SanitizeHtml.js'\n\nexport const Commands = {\n 'SanitizeHtml.sanitizeHtml': SanitizeHtml.sanitizeHtml,\n}\n", "const supportsServiceWorker = () => {\n return 'serviceWorker' in navigator\n}\n\nconst handleUpdateFound = () => {\n // console.info('[service-worker] update found')\n}\n\nconst handleControllerChange = () => {\n // console.info('[service-worker] controller changed - reloading page')\n location.reload()\n}\n\nexport const register = async (url) => {\n if (!supportsServiceWorker()) {\n return\n }\n const registration = await navigator.serviceWorker.register(url, {\n scope: '/',\n type: 'module',\n })\n registration.onupdatefound = handleUpdateFound\n navigator.serviceWorker.oncontrollerchange = handleControllerChange\n}\n\nconst uninstallRegistration = async (registration) => {\n await registration.unregister()\n}\n\nexport const uninstall = async () => {\n if (!supportsServiceWorker()) {\n return\n }\n const registrations = await navigator.serviceWorker.getRegistrations()\n await Promise.all(registrations.map(uninstallRegistration))\n}\n", "import * as ServiceWorker from './ServiceWorker.js'\n\nexport const Commands = {\n 'ServiceWorker.register': ServiceWorker.register,\n 'ServiceWorker.uninstall': ServiceWorker.uninstall,\n}\n", "export const mouseEvent = (element, eventType, options) => {\n const event = new MouseEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const mouseDown = (element, options) => {\n mouseEvent(element, 'mousedown', options)\n}\n\nexport const mouseUp = (element, options) => {\n mouseEvent(element, 'mouseup', options)\n}\n\nexport const contextMenu = (element, options) => {\n mouseEvent(element, 'contextmenu', options)\n}\n\nexport const click = (element, options) => {\n mouseDown(element, options)\n mouseEvent(element, 'click', options)\n mouseUp(element, options)\n if (options.button === 2 /* right */) {\n contextMenu(element, options)\n }\n}\n\nexport const hover = (element, options) => {\n mouseEvent(element, 'mouseenter', options)\n}\n\nexport const type = (element, options) => {\n element.value = options.text\n}\n\nexport const keyboardEvent = (element, eventType, options) => {\n const event = new KeyboardEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const keyDown = (element, options) => {\n keyboardEvent(element, 'keydown', options)\n}\n\nexport const keyUp = (element, options) => {\n keyboardEvent(element, 'keyup', options)\n}\n\nconst getEventClass = (eventType) => {\n switch (eventType) {\n case 'wheel':\n return WheelEvent\n case 'pointerdown':\n case 'pointerup':\n case 'pointermove':\n return PointerEvent\n default:\n return Event\n }\n}\n\nexport const dispatchEvent = (element, options) => {\n const eventClass = getEventClass(options.type)\n const event = new eventClass(options.type, options.init)\n element.dispatchEvent(event)\n}\n", "export const htmlElements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdo',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'command',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'map',\n 'mark',\n 'menu',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]\n", "import { htmlElements } from './HtmlElements.js'\n\nconst querySelectorByText = (root, text) => {\n let node\n const elements = []\n const walk = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null)\n while ((node = walk.nextNode())) {\n // @ts-ignore\n if (node.nodeValue === text) {\n elements.push(node.parentNode)\n }\n }\n return elements\n}\n\nconst querySelectorByCss = (selector) => {\n return Array.from(document.querySelectorAll(selector))\n}\n\nconst isElement = (selector) => {\n return htmlElements.includes(selector)\n}\n\nexport const querySelector = (selector) => {\n if (typeof selector !== 'string') {\n throw new Error('selector must be of type string')\n }\n if (selector.startsWith('text=')) {\n return querySelectorByText(document.body, selector.slice('text='.length))\n }\n if (selector.includes('text=')) {\n const index = selector.indexOf('text=')\n const elements = querySelectorByCss(selector.slice(0, index))\n const text = selector.slice(index + 'text='.length)\n return elements.flatMap((element) => {\n return querySelectorByText(element, text)\n })\n // for(const element of elements)\n }\n if (selector.startsWith('.')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('#')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('[data')) {\n return querySelectorByCss(selector)\n }\n if (isElement(selector)) {\n return querySelectorByCss(selector)\n }\n throw new Error(`unsupported selector: ${selector}`)\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\nexport const querySelectorWithOptions = (\n selector,\n { nth = -1, hasText = '' } = {}\n) => {\n let elements = querySelector(selector)\n if (hasText) {\n elements = elements.filter((element) => element.textContent === hasText)\n }\n if (elements.length === 0) {\n return undefined\n }\n if (elements.length === 1) {\n const element = elements[0]\n return element\n }\n if (nth === -1) {\n throw new Error(\n `too many matching elements for ${selector}, matching ${elements.length}`\n )\n }\n const element = elements[nth]\n if (!element) {\n throw new Error(`selector not found: ${selector}`)\n }\n return element\n}\n", "export const toBeVisible = (element) => {\n if (typeof element.isVisible === 'function') {\n return element.isVisible()\n }\n return element.isConnected\n}\n\nexport const toHaveValue = (element, { value }) => {\n return element.value === value\n}\n\nexport const toHaveText = (element, { text }) => {\n return element.textContent === text\n}\n\nexport const toHaveAttribute = (element, { key, value }) => {\n const attribute = element.getAttribute(key)\n return attribute === value\n}\n\nexport const toBeFocused = (element) => {\n return element === document.activeElement\n}\n\nexport const toHaveClass = (element, { className }) => {\n return element.classList.contains(className)\n}\n\nexport const toHaveId = (element, { id }) => {\n return element.id === id\n}\n\nexport const toHaveCss = (element, { key, value }) => {\n const style = getComputedStyle(element)\n return style[key] === value\n}\n", "export const toHaveCount = (elements, { count }) => {\n return elements.length === count\n}\n\nexport const toBeHidden = (elements) => {\n return elements.length === 0\n}\n", "import * as QuerySelector from './QuerySelector.js'\n\nexport const toBeVisible = (locator) => {\n return `expected selector to be visible ${locator._selector}`\n}\n\nexport const toHaveValue = (locator, { value }) => {\n return `expected selector ${locator._selector} to have value ${value}`\n}\n\nconst printLocator = (locator) => {\n if (locator._nth !== -1) {\n return `${locator._selector}:nth(${locator._nth})`\n }\n if (locator._hasText) {\n return `${locator._selector} \"${locator._hasText}\"`\n }\n return `${locator._selector}`\n}\n\nexport const toHaveText = (locator, { text }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected selector ${locatorString} to have text \"${text}\" element was not found`\n }\n return `expected selector ${locatorString} to have text \"${text}\" but was \"${element.textContent}\"`\n}\n\nexport const toHaveAttribute = (locator, { key, value }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have attribute ${key} ${value} but element was not found`\n }\n const actual = element.getAttribute(key)\n return `expected ${locatorString} to have attribute ${key} ${value} but was ${actual}`\n}\n\nexport const toHaveCount = (locator, { count }) => {\n const locatorString = printLocator(locator)\n return `expected ${locatorString} to have count ${count}`\n}\n\nconst stringifyElement = (element) => {\n if (element.id) {\n return `#${element.id}`\n }\n if (element.className) {\n return `.${element.className}`\n }\n if (element === document.body) {\n return 'document.body'\n }\n return element.tagName\n}\n\nexport const toBeFocused = (locator) => {\n const locatorString = printLocator(locator)\n const activeElement = document.activeElement\n const stringifiedActiveElement = stringifyElement(activeElement)\n return `expected ${locatorString} to be focused but active element is ${stringifiedActiveElement}`\n}\n\nexport const toHaveClass = (locator, { className }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have class ${className} but element was not found`\n }\n return `expected ${locatorString} to have class ${className}`\n}\n\nexport const toHaveId = (locator, { id }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have id ${id} but element was not found`\n }\n return `expected ${locatorString} to have id ${id}`\n}\n\nexport const toBeHidden = (locator) => {\n const locatorString = printLocator(locator)\n return `expected ${locatorString} to be hidden`\n}\n\nexport const toHaveCss = (locator, { key, value }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have css ${key} ${value}`\n }\n const style = getComputedStyle(element)\n const actual = style[key]\n return `expected ${locatorString} to have css ${key} ${value} but was ${actual}`\n}\n", "import * as ElementActions from './ElementActions.js'\n\nexport const press = (options) => {\n const element = document.activeElement\n\n ElementActions.keyDown(element, options)\n ElementActions.keyUp(element, options)\n}\n", "import * as ElementActions from './ElementActions.js'\nimport * as QuerySelector from './QuerySelector.js'\nimport * as SingleElementConditions from './SingleElementConditions.js'\nimport * as MultiElementConditions from './MultiElementConditions.js'\nimport * as ConditionErrors from './ConditionErrors.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as KeyBoardActions from './KeyBoardActions.js'\n\nconst create$Overlay = () => {\n const $TestOverlay = document.createElement('div')\n $TestOverlay.id = 'TestOverlay'\n $TestOverlay.style.position = 'fixed'\n $TestOverlay.style.bottom = '0px'\n $TestOverlay.style.left = '0px'\n $TestOverlay.style.right = '0px'\n $TestOverlay.style.height = '20px'\n $TestOverlay.style.whiteSpace = 'nowrap'\n $TestOverlay.style.contain = 'strict'\n $TestOverlay.style.userSelect = 'text'\n return $TestOverlay\n}\n\nexport const showOverlay = (state, background, text) => {\n const $TestOverlay = create$Overlay()\n $TestOverlay.dataset.state = state\n $TestOverlay.style.background = background\n $TestOverlay.textContent = text\n document.body.append($TestOverlay)\n}\n\nconst Time = {\n getTimeStamp() {\n return performance.now()\n },\n}\n\nconst maxTimeout = 2000\n\nconst Timeout = {\n async short() {\n await new Promise((resolve) => setTimeout(resolve, 1000))\n },\n async waitForMutation(maxDelay) {\n const disposables = []\n await Promise.race([\n new Promise((resolve) => {\n const timeout = setTimeout(resolve, maxDelay)\n disposables.push(() => {\n clearTimeout(timeout)\n })\n }),\n new Promise((resolve) => {\n const callback = (mutations) => {\n resolve(undefined)\n }\n const observer = new MutationObserver(callback)\n observer.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n attributeOldValue: true,\n characterDataOldValue: true,\n })\n disposables.push(() => {\n observer.disconnect()\n })\n }),\n ])\n for (const disposable of disposables) {\n disposable()\n }\n },\n}\n\nexport const performAction = async (locator, fnName, options) => {\n Assert.object(locator)\n Assert.string(fnName)\n Assert.object(options)\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = ElementActions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n fn(element, options)\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n}\n\nexport const performKeyBoardAction = (fnName, options) => {\n const fn = KeyBoardActions[fnName]\n fn(options)\n}\n\nclass AssertionError extends Error {\n constructor(message) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n\nexport const checkSingleElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = SingleElementConditions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n const successful = fn(element, options)\n if (successful) {\n return\n }\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const message = ConditionErrors[fn.name](locator, options)\n throw new AssertionError(message)\n}\n\nexport const checkMultiElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = MultiElementConditions[fnName]\n while (currentTime < endTime) {\n const elements = QuerySelector.querySelector(locator._selector)\n const successful = fn(elements, options)\n if (successful) {\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const message = ConditionErrors[fn.name](locator, options)\n throw new AssertionError(message)\n}\n", "import * as TestFrameWork from './TestFrameWork.js'\n\n// prettier-ignore\nexport const Commands = {\n 'TestFrameWork.checkMultiElementCondition': TestFrameWork.checkMultiElementCondition,\n 'TestFrameWork.checkSingleElementCondition': TestFrameWork.checkSingleElementCondition,\n 'TestFrameWork.performAction': TestFrameWork.performAction,\n 'TestFrameWork.performKeyBoardAction': TestFrameWork.performKeyBoardAction,\n 'TestFrameWork.showOverlay': TestFrameWork.showOverlay,\n}\n", "export const ActivityBar = 'ActivityBar'\n\nexport const Clock = 'Clock'\n\nexport const DebugConsole = 'Debug Console'\n\nexport const EditorCompletion = 'EditorCompletion'\n\nexport const EditorFindWidget = 'EditorFindWidget'\n\nexport const EditorImage = 'EditorImage'\n\nexport const EditorPlainText = 'EditorPlainText'\n\nexport const EditorText = 'EditorText'\n\nexport const Empty = 'Empty'\n\nexport const Explorer = 'Explorer'\n\nexport const ExtensionDetail = 'ExtensionDetail'\n\nexport const Extensions = 'Extensions'\n\nexport const ImagePreview = 'ImagePreview'\n\nexport const Implementations = 'Implementations'\n\nexport const KeyBindings = 'KeyBindings'\n\nexport const Main = 'Main'\n\nexport const Output = 'Output'\n\nexport const Panel = 'Panel'\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 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", "export const File = 'file'\n\nexport const Directory = 'directory'\n\nexport const DirectoryExpanding = 'directory-expanding'\n\nexport const DirectoryExpanded = 'directory-expanded'\n\nexport const Symlink = 'symlink'\n\nexport const Socket = 'socket'\n\nexport const BlockDevice = 'block-device'\n\nexport const CharacterDevice = 'character-device'\n\nexport const Unknown = 'unknown'\n", "export const Keyboard = -1\n\nexport const LeftClick = 0\n\nexport const MiddleClick = 1\n\nexport const RightClick = 2\n", "export const DomDeltaLine = WheelEvent.DOM_DELTA_LINE\n\nexport const DomDeltaPixel = WheelEvent.DOM_DELTA_PIXEL\n\nexport const DomDeltaPage = WheelEvent.DOM_DELTA_PAGE\n", "import * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// TODO put drop into separate module and use executeCommand to call it\n\n// TODO drag and drop should be loaded on demand\nconst getAllEntries = async (dataTransfer) => {\n const topLevelEntries = Array.from(dataTransfer.items).map((item) =>\n item.webkitGetAsEntry()\n )\n const allEntries = await new Promise((resolve, reject) => {\n const result = []\n let finished = 0\n let total = 0\n\n const fileCallback = (file) => {\n finished++\n result.push({\n type: 1,\n // path: entry.fullPath,\n file,\n })\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryFile = (entry) => {\n entry.file(fileCallback)\n }\n\n const entriesCallback = (childEntries) => {\n handleEntries(childEntries)\n finished++\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryDirectory = (entry) => {\n result.push({\n type: 2,\n path: entry.fullPath,\n })\n const dirReader = entry.createReader()\n dirReader.readEntries(entriesCallback)\n }\n\n const handleEntries = (entries) => {\n total += entries.length\n for (const entry of entries) {\n if (entry.isFile) {\n handleEntryFile(entry)\n } else if (entry.isDirectory) {\n handleEntryDirectory(entry)\n } else {\n }\n }\n }\n\n handleEntries(topLevelEntries)\n })\n return allEntries\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('Explorer')\n const $Target = event.target\n if ($Target.className === 'InputBox') {\n return\n }\n event.preventDefault()\n RendererWorker.send(/* Explorer.focus */ 'Explorer.focus')\n}\n\nexport const handleBlur = (event) => {\n RendererWorker.send(/* Explorer.handleBlur */ 'Explorer.handleBlur')\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDragOver = (event) => {\n event.dataTransfer.effectAllowed = 'copyMove'\n // console.log('dragover', event)\n event.dataTransfer.dropEffect = 'copy'\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send('Explorer.handleDragOver', clientX, clientY)\n // state.element.classList.add('DropTarget')\n}\n\n/**\n * @param {DragEvent} event\n */\nexport const handleDragStart = (event) => {\n event.dataTransfer.effectAllowed = 'copyMove'\n // event.dataTransfer.setData('DownloadURL', '/tmp/some-file.txt')\n // event.preventDefault()\n event.dataTransfer.setData('text/uri-list', 'https://example.com/foobar')\n // event.dataTransfer.setData('x-special/nautilus-clipboard', 'hello-world')\n // event.dataTransfer.setData('text/plain', 'abc')\n}\n\nconst getHandle = async (item) => {\n const entry = await item.getAsFileSystemHandle()\n return entry\n}\n\nconst getHandles = async (items) => {\n const itemsArray = [...items]\n const handles = await Promise.all(itemsArray.map(getHandle))\n return handles\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDrop = async (event) => {\n event.preventDefault()\n event.stopPropagation()\n const { files, dropEffect, items } = event.dataTransfer\n const { clientX, clientY } = event\n if (Platform.isElectron()) {\n RendererWorker.send('Explorer.handleDrop', clientX, clientY, files)\n } else {\n // unfortunately, DataTransferItem cannot be transferred to web worker\n // therefore the file system handles are sent to the web worker\n const handles = await getHandles(items)\n RendererWorker.send('Explorer.handleDrop', clientX, clientY, handles)\n }\n}\n\nconst handleContextMenuMouse = (event) => {\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Explorer.handleContextMenuMouseAt */ 'Explorer.handleContextMenuMouseAt',\n /* x */ x,\n /* y */ y\n )\n}\n\nconst handleContextMenuKeyboard = (event) => {\n RendererWorker.send(\n /* Explorer.handleContextMenuKeyboard */ 'Explorer.handleContextMenuKeyboard'\n )\n}\n\n// TODO maybe use aria active descendant instead\nconst getFocusedIndexFromFocusOutline = ($Viewlet) => {\n for (let i = 0; i < $Viewlet.children.length; i++) {\n const $Child = $Viewlet.children[i]\n if ($Child.classList.contains('FocusOutline')) {\n return i\n }\n }\n return -1\n}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n switch (event.button) {\n case MouseEventType.Keyboard:\n return handleContextMenuKeyboard(event)\n default:\n return handleContextMenuMouse(event)\n }\n}\n\nexport const handleMouseDown = (event) => {\n if (event.button !== MouseEventType.LeftClick) {\n return\n }\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Explorer.handleClickAt */ 'Explorer.handleClickAt',\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* Explorer.handleWheel */ 'Explorer.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* Explorer.handleWheel */ 'Explorer.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handleMouseEnter = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseEnter */ 'Explorer.handleMouseEnter',\n // /* index */ index\n // )\n}\n\nexport const handleMouseLeave = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseLeave */ 'Explorer.handleMouseLeave',\n // /* index */ index\n // )\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletExplorerEvents from './ViewletExplorerEvents.js'\n\nexport const name = 'Explorer'\n\nconst activeId = 'TreeItemActive'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.tabIndex = 0\n $Viewlet.dataset.viewletId = 'Explorer'\n // @ts-ignore\n $Viewlet.role = 'tree'\n $Viewlet.ariaLabel = 'Files Explorer'\n $Viewlet.onmousedown = ViewletExplorerEvents.handleMouseDown\n $Viewlet.oncontextmenu = ViewletExplorerEvents.handleContextMenu\n // TODO use the other mouse events that capture automatically\n $Viewlet.addEventListener(\n 'mouseenter',\n ViewletExplorerEvents.handleMouseEnter,\n { capture: true }\n )\n $Viewlet.addEventListener(\n 'mouseleave',\n ViewletExplorerEvents.handleMouseLeave,\n { capture: true }\n )\n $Viewlet.addEventListener('wheel', ViewletExplorerEvents.handleWheel, {\n passive: true,\n })\n $Viewlet.onblur = ViewletExplorerEvents.handleBlur\n $Viewlet.ondragstart = ViewletExplorerEvents.handleDragStart\n $Viewlet.ondragover = ViewletExplorerEvents.handleDragOver\n $Viewlet.ondrop = ViewletExplorerEvents.handleDrop\n return {\n $Viewlet,\n }\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n // @ts-ignore\n $Row.role = 'treeitem'\n $Row.className = 'TreeItem'\n $Row.draggable = true\n const $LabelText = document.createTextNode('')\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.append($LabelText)\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO rename to renderDirent\nconst render$Row = ($Row, rowInfo) => {\n const $Icon = $Row.childNodes[0]\n const $LabelText = $Row.childNodes[1].childNodes[0]\n $Icon.className = `Icon${rowInfo.icon}`\n $LabelText.data = rowInfo.name\n $Row.title = rowInfo.path\n $Row.ariaSetSize = `${rowInfo.setSize}`\n // TODO bug with windows narrator\n // windows narrator reads heading level 1\n $Row.ariaLevel = `${rowInfo.depth}`\n $Row.ariaPosInSet = `${rowInfo.posInSet}`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n switch (rowInfo.type) {\n // TODO decide on directory vs folder\n case DirentType.Directory:\n $Row.ariaExpanded = 'false'\n break\n case DirentType.DirectoryExpanding:\n $Row.ariaExpanded = 'true' // TODO tree should be aria-busy then\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = 'true'\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i])\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos)\n } else {\n render$RowsMore($Rows, rowInfos)\n }\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n state.$Viewlet.textContent = message\n}\n\nexport const updateDirents = (state, dirents) => {\n Assert.object(state)\n Assert.array(dirents)\n render$Rows(state.$Viewlet, dirents)\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n const { $Viewlet } = state\n switch (oldIndex) {\n case -2:\n break\n case -1:\n $Viewlet.classList.remove('FocusOutline')\n break\n default:\n const $Dirent = $Viewlet.children[oldIndex]\n if ($Dirent) {\n $Dirent.removeAttribute('id')\n }\n break\n }\n switch (newIndex) {\n case -2:\n $Viewlet.classList.remove('FocusOutline')\n $Viewlet.removeAttribute('aria-activedescendant')\n break\n case -1:\n $Viewlet.classList.add('FocusOutline')\n $Viewlet.removeAttribute('aria-activedescendant')\n $Viewlet.focus()\n Focus.setFocus('Explorer')\n break\n default:\n const $Dirent = $Viewlet.children[newIndex]\n $Dirent.id = activeId\n $Viewlet.focus()\n $Viewlet.setAttribute('aria-activedescendant', activeId)\n Focus.setFocus('Explorer')\n break\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const hoverIndex = (state, oldIndex, newIndex) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n if (oldIndex !== -1) {\n const $OldItem = state.$Viewlet.children[oldIndex]\n $OldItem.classList.remove('Hover')\n }\n const $NewItem = state.$Viewlet.children[newIndex]\n $NewItem.classList.add('Hover')\n}\n\nexport const showCreateFileInputBox = (state, index) => {\n const { $Viewlet } = state\n const $InputBox = InputBox.create()\n if (index === -1) {\n $Viewlet.append($InputBox)\n } else {\n const $Dirent = $Viewlet.children[index]\n // TODO this should never happen\n if (!$Dirent) {\n throw new Error(`dirent at index ${index} should be defined`)\n }\n $Dirent.before($InputBox)\n }\n $InputBox.focus()\n Focus.setFocus('ExplorerCreateFile')\n}\n\nexport const hideCreateFileInputBox = (state, index) => {\n const { $Viewlet } = state\n if (index === -1) {\n const $InputBox = $Viewlet.lastChild\n $InputBox.remove()\n return $InputBox.value\n }\n const $InputBox = $Viewlet.children[index]\n $InputBox.remove()\n return $InputBox.value\n}\n\nexport const showRenameInputBox = (state, index, name) => {\n const $InputBox = InputBox.create()\n $InputBox.value = name\n const $Dirent = state.$Viewlet.children[index]\n $Dirent.replaceWith($InputBox)\n $InputBox.select()\n $InputBox.setSelectionRange(0, $InputBox.value.length)\n Focus.setFocus('ExplorerRename')\n}\n\nexport const hideRenameBox = (state, index, dirent) => {\n const $InputBox = state.$Viewlet.children[index]\n const $Dirent = create$Row()\n render$Row($Dirent, dirent)\n $InputBox.replaceWith($Dirent)\n // $Dirent.focus()\n return $InputBox.value\n}\n\nexport const setDropTargets = (state, oldDropTargets, newDropTargets) => {\n const { $Viewlet } = state\n for (const oldIndex of oldDropTargets) {\n if (oldIndex === -1) {\n $Viewlet.classList.remove('DropTarget')\n } else {\n $Viewlet.children[oldIndex].classList.remove('DropTarget')\n }\n }\n for (const newIndex of newDropTargets) {\n if (newIndex === -1) {\n $Viewlet.classList.add('DropTarget')\n } else {\n $Viewlet.children[newIndex].classList.add('DropTarget')\n }\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\n// TODO is name export necessary? (probably not)\nexport const name = 'Run and Debug'\n\nconst handleMousedown = (event) => {\n // Highlight.highlightStart(state.$Viewlet)\n}\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'RunAndDebug'\n $Viewlet.className = 'Viewlet'\n $Viewlet.textContent = 'run and debug'\n $Viewlet.tabIndex = 0\n $Viewlet.addEventListener('mousedown', handleMousedown)\n return {\n $Viewlet,\n }\n}\n\nexport const refresh = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n state.$Viewlet.textContent = 'Run And Debug - Not implemented'\n}\n\nexport const focus = (state) => {\n // state.$Viewlet.classList.add('Focus')\n // requestAnimationFrame(() => {\n // state.$Viewlet.classList.add('FocusFaded')\n // setTimeout(() => {\n // state.$Viewlet.classList.remove('FocusFaded')\n // }, 1000)\n // })\n state.$Viewlet.focus()\n}\n\nexport const dispose = () => {}\n", "import * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send(\n /* ViewletSearch.handleInput */ 'Search.handleInput',\n /* value */ value\n )\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndexTreeItem = ($Target) => {\n return getNodeIndex($Target)\n}\n\nconst getIndexTreeItemLabel = ($Target) => {\n return getNodeIndex($Target.parentNode)\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TreeItem':\n return getIndexTreeItem($Target)\n case 'TreeItemLabel':\n return getIndexTreeItemLabel($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n if (event.button === MouseEventType.RightClick) {\n return\n }\n const $Target = event.target\n const index = getIndex($Target)\n RendererWorker.send(\n /* Search.handleClick */ 'Search.handleClick',\n /* index */ index\n )\n}\n\nconst handleContextMenuMouse = (event) => {\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Search.handleContextMenuMouseAt */ 'Search.handleContextMenuMouseAt',\n /* x */ x,\n /* y */ y\n )\n}\n\nconst handleContextMenuKeyboard = (event) => {\n RendererWorker.send(\n /* Search.handleContextMenuKeyboard */ 'Search.handleContextMenuKeyboard'\n )\n}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n switch (event.button) {\n case MouseEventType.Keyboard:\n return handleContextMenuKeyboard(event)\n default:\n return handleContextMenuMouse(event)\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletSearchEvents from './ViewletSearchEvents.js'\n\n// TODO name export not necessary\nexport const name = 'Search'\n\nexport const create = () => {\n const $ViewletSearchInput = InputBox.create()\n $ViewletSearchInput.placeholder = 'Search'\n $ViewletSearchInput.oninput = ViewletSearchEvents.handleInput\n\n const $SearchStatus = document.createElement('div')\n // @ts-ignore\n $SearchStatus.role = 'status'\n $SearchStatus.className = 'ViewletSearchMessage'\n\n const $SearchHeader = document.createElement('div')\n $SearchHeader.className = 'SearchHeader'\n $SearchHeader.append($ViewletSearchInput, $SearchStatus)\n\n const $SearchResults = document.createElement('div')\n $SearchResults.className = 'SearchResults'\n // TODO onclick vs onmousedown, should be consistent in whole application\n $SearchResults.onmousedown = ViewletSearchEvents.handleClick\n $SearchResults.oncontextmenu = ViewletSearchEvents.handleContextMenu\n\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Search'\n $Viewlet.className = 'Viewlet'\n $Viewlet.append($SearchHeader, $SearchResults)\n\n return {\n $Viewlet,\n $ViewletSearchInput,\n $SearchResults,\n $SearchStatus,\n }\n}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$ViewletSearchInput.focus()\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n // @ts-ignore\n $Row.role = 'treeitem'\n $Row.className = 'TreeItem'\n const $LabelText = document.createTextNode('')\n const $Label = document.createElement('div')\n $Label.className = 'TreeItemLabel'\n $Label.append($LabelText)\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO much duplication with explorer\nconst render$Row = ($Row, rowInfo) => {\n const $Icon = $Row.childNodes[0]\n const $LabelText = $Row.childNodes[1].childNodes[0]\n $Icon.className = `Icon${rowInfo.icon}`\n $LabelText.data = rowInfo.text\n $Row.title = rowInfo.title\n $Row.ariaSetSize = `${rowInfo.setSize}`\n $Row.ariaLevel = `${rowInfo.depth}`\n $Row.ariaPosInSet = `${rowInfo.posInSet}`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n switch (rowInfo.type) {\n // TODO type should be a number for efficiency\n case DirentType.Directory:\n $Row.ariaExpanded = 'false'\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = 'true'\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i])\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos)\n } else {\n render$RowsMore($Rows, rowInfos)\n }\n}\n\nexport const setResults = (state, results) => {\n Assert.object(state)\n Assert.array(results)\n // TODO should recycle nodes when rendering only search results\n // maybe could also recycle node from noResults and vice versa\n render$Rows(state.$SearchResults, results)\n}\n\nexport const setMessage = (state, message) => {\n const { $SearchStatus } = state\n // TODO recycle text node\n $SearchStatus.textContent = message\n}\n\nexport const setValue = (state, value) => {\n const { $ViewletSearchInput } = state\n $ViewletSearchInput.value = value\n}\n\nexport const dispose = () => {}\n", "import { findIndex } from '../../shared/findIndex.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const name = 'Source Control'\n\nconst getFileName = (file) => {\n return file.slice(file.lastIndexOf('/') + 1)\n}\n\nconst create$Item = (item) => {\n const $Item = document.createElement('li')\n $Item.className = 'TreeItem'\n $Item.textContent = getFileName(item.file)\n $Item.title = `${item.file}`\n // TODO use same virtual list as for explorer\n $Item.style.position = 'relative'\n return $Item\n}\n\nconst handleFocus = () => {\n Focus.setFocus('sourceControlInput')\n}\n\nconst handleClick = (event) => {\n const $Target = event.target\n const $Parent = $Target.closest('.ViewletTree')\n const index = findIndex($Parent, $Target)\n // TODO ignore when index === -1\n RendererWorker.send(\n /* viewletCommand */ 2133,\n /* viewletId */ 'Source Control',\n /* type */ 'handleClick',\n /* index */ index\n )\n}\n\nconst getPlaceHolderText = () => {\n return `Message (${KeyBindings.lookupKeyBinding(\n 'scm.acceptInput'\n )} to commit on 'master'`\n}\n\nexport const create = () => {\n const $ViewSourceControlInput = InputBox.create()\n $ViewSourceControlInput.placeholder = getPlaceHolderText()\n $ViewSourceControlInput.onfocus = handleFocus\n $ViewSourceControlInput.ariaLabel = 'Source Control Input'\n const $ViewletTree = document.createElement('ul')\n $ViewletTree.className = 'ViewletTree'\n $ViewletTree.onclick = handleClick\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'SourceControl'\n $Viewlet.className = 'Viewlet'\n $Viewlet.tabIndex = 0\n $Viewlet.append($ViewSourceControlInput, $ViewletTree)\n return {\n $Viewlet,\n $ViewletTree,\n $ViewSourceControlInput,\n }\n}\n\nexport const dispose = () => {}\n\nexport const setChangedFiles = (state, workingTree) => {\n Assert.object(state)\n Assert.array(workingTree)\n const $$Entries = workingTree.map(create$Item)\n state.$ViewletTree.append(...$$Entries)\n}\n\nexport const setError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n const $Error = document.createElement('div')\n $Error.className = 'Error'\n $Error.textContent = error\n state.$ViewletTree.append($Error)\n}\n\nexport const setInputValue = (state, value) => {\n const { $ViewSourceControlInput } = state\n $ViewSourceControlInput.value = value\n}\n\nexport const focus = (state) => {\n state.$ViewSourceControlInput.focus()\n}\n", "const BACKGROUND = \"#c00ccc\";\nconst CHAR_WIDTH = 12;\nconst CHAR_HEIGHT = 15;\nconst createDrawCursor = (canvas) => {\n const ctx = canvas.getContext(\"2d\");\n let previousX = -1;\n let previousY = -1;\n let previousCursorStyle = -1;\n const drawCursor = (x, y, cursorVisible, cursorStyle) => {\n if (cursorVisible) {\n if (previousX === x && previousY === y && previousCursorStyle === cursorStyle) {\n return;\n }\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n switch (cursorStyle) {\n case 1:\n break;\n case 2:\n ctx.fillStyle = BACKGROUND;\n ctx.fillRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n case 3:\n break;\n case 4:\n ctx.strokeStyle = BACKGROUND;\n ctx.strokeRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n }\n previousX = x;\n previousY = y;\n } else {\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n }\n };\n return drawCursor;\n};\nconst CHAR_WIDTH$1 = 12;\nconst CHAR_HEIGHT$1 = 15;\nconst BACKGROUND$1 = \"#000000\";\nconst supportsOffscreenCanvas = (() => {\n try {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n return true;\n } catch {\n return false;\n }\n})();\nconst supportsTransferToImageBitMap = (() => {\n try {\n supportsOffscreenCanvas ? (() => {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n canvas.transferToImageBitmap();\n })() : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n canvas.transferToImageBitmap();\n })();\n return true;\n } catch {\n return false;\n }\n})();\nself.supportsTransferToImageBitMap = supportsTransferToImageBitMap;\nconst tmpCanvas = supportsOffscreenCanvas ? new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1) : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n return canvas;\n})();\nconst tmpCtx = tmpCanvas.getContext(\"2d\", {\n alpha: false\n});\nconst bitmapCache = Object.create(null);\nconst createDrawLines = (canvas, lines, bufferLines, offsets, attributes, rows, cols) => {\n const ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n ctx.fillStyle = BACKGROUND$1;\n const drawChar = (char, x, y, background, foreground) => {\n if (char === \" \" && background === \"#000000\") {\n return;\n }\n const cacheKey = `${char}${background}${foreground}`;\n if (!(cacheKey in bitmapCache)) {\n tmpCtx.fillStyle = background;\n tmpCtx.fillRect(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n tmpCtx.font = `${CHAR_HEIGHT$1}px monospace`;\n tmpCtx.fillStyle = foreground;\n tmpCtx.fillText(char, 0, CHAR_HEIGHT$1);\n bitmapCache[cacheKey] = supportsTransferToImageBitMap ? tmpCanvas.transferToImageBitmap() : tmpCtx.getImageData(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n }\n supportsTransferToImageBitMap ? ctx.drawImage(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1) : ctx.putImageData(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1);\n };\n const getChars = (y) => {\n const text = new TextDecoder().decode(lines[y].subarray(0, offsets[y]));\n const chars = [...text];\n return chars;\n };\n const drawLine = (bufferY, positionY) => {\n let x = -1;\n const chars = getChars(bufferY);\n const attributesOnLine = attributes[bufferY] || {};\n let currentAttributes = {\n foreground: \"#ffffff\",\n background: \"#000000\"\n };\n while (++x < chars.length) {\n currentAttributes = attributesOnLine[x] || currentAttributes;\n const char = chars[x];\n const background = currentAttributes.background || \"#000000\";\n const foreground = currentAttributes.foreground || \"#ffffff\";\n drawChar(char, x, positionY, background, foreground);\n }\n };\n const clearLines = (x, y, width, height) => {\n ctx.fillRect(x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1, width * CHAR_WIDTH$1, height * CHAR_HEIGHT$1);\n };\n const drawLines = (start, end, bufferYEnd) => {\n clearLines(0, start, cols, end - start);\n if (bufferYEnd < rows) {\n for (let i = 0; i < rows - bufferYEnd; i++) {\n drawLine(bufferLines - i - 1, rows - i);\n }\n for (let i = 0; i < bufferYEnd + 1; i++) {\n drawLine(i, rows - (bufferYEnd - i));\n }\n } else {\n for (let i = 0; i < rows; i++) {\n drawLine(bufferYEnd - i, rows - i);\n }\n }\n };\n return drawLines;\n};\nconst State = {\n TopLevelContent: 1,\n Escaped: 2,\n Csi: 3,\n AfterEscape3: 4,\n Charset: 5,\n AfterEscape3AfterSemicolon: 6,\n Osc: 8,\n Dcs: 9,\n AfterQuestionMark: 10,\n AfterQuestionMark2: 11,\n AfterExclamationMark: 12,\n AfterExclamationMark2: 13,\n AfterSpace: 14,\n AfterSpace2: 15,\n Osc2: 16,\n Osc3: 17\n};\nconst parse = (array, {\n eraseInDisplay,\n eraseToEndOfLine,\n goToHome,\n setCharAttributes,\n bell,\n cursorUp,\n cursorDown,\n cursorRight,\n cursorLeft,\n backspace,\n print,\n setGLevel,\n saveCursor,\n restoreCursor,\n index,\n tabSet,\n reverseIndex,\n keypadApplicationMode,\n keypadNumericMode,\n fullReset,\n nextLine,\n carriageReturn,\n deleteCharacters,\n setWindowTitle,\n cursorPosition,\n softTerminalReset,\n cursorNextLine,\n cursorPrecedingLine,\n cursorCharacterAbsolute,\n cursorForwardTabulation,\n cursorBackwardTabulation,\n insertLines,\n deleteLines,\n scrollUp,\n scrollDown,\n eraseCharacters,\n characterPositionAbsolute,\n characterPositionRelative,\n repeatPrecedingGraphicCharacter,\n sendDeviceAttributesPrimary,\n sendDeviceAttributesTertiary,\n linePositionAbsolute,\n eraseInLine,\n linePositionRelative,\n horizontalAndVerticalPosition,\n tabClear,\n setMode,\n resetMode,\n lineFeed,\n privateModeSet,\n privateModeReset,\n setCursorStyle,\n shiftLeftColumns,\n insertBlankCharacters,\n setTextParameters\n}) => {\n if (!(array instanceof Uint8Array)) {\n throw new Error(\"invalid data, must be of type Uint8Array\");\n }\n let state = State.TopLevelContent;\n let i = 0;\n let currentParam = 0;\n let params = [];\n let printStartIndex = -1;\n while (i < array.length) {\n switch (state) {\n case State.TopLevelContent:\n middle:\n switch (array[i]) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n i++;\n break;\n case 7:\n bell();\n i++;\n break;\n case 8:\n backspace();\n i++;\n break;\n case 9:\n i++;\n break;\n case 10:\n lineFeed();\n i++;\n break;\n case 11:\n case 12:\n i++;\n break;\n case 13:\n carriageReturn();\n i++;\n break;\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n case 25:\n case 26:\n i++;\n break;\n case 27:\n state = State.Escaped;\n i++;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n i++;\n break;\n case 32:\n case 33:\n case 34:\n case 35:\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n case 41:\n case 42:\n case 43:\n case 44:\n case 45:\n case 46:\n case 47:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 58:\n case 59:\n case 60:\n case 61:\n case 62:\n case 63:\n case 64:\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n case 123:\n case 124:\n case 125:\n case 126:\n case 127:\n printStartIndex = i++;\n while (i < array.length) {\n const element = array[i];\n if (element >= 32 && element < 126) {\n i++;\n continue;\n }\n switch (element) {\n case 27:\n print(array, printStartIndex, i);\n state = State.Escaped;\n i++;\n break middle;\n case 7:\n print(array, printStartIndex, i);\n bell();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 8:\n print(array, printStartIndex, i);\n backspace();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 13:\n print(array, printStartIndex, i);\n carriageReturn();\n i++;\n state = State.TopLevelContent;\n break middle;\n default:\n i++;\n break;\n }\n }\n print(array, printStartIndex, i);\n break;\n default:\n throw new Error(\"no\");\n }\n break;\n case State.Escaped:\n switch (array[i]) {\n case 40:\n state = State.Charset;\n break;\n case 91:\n params = [];\n state = State.Csi;\n break;\n case 93:\n state = State.Osc;\n break;\n case 80:\n state = State.Dcs;\n break;\n case 95:\n break;\n case 94:\n break;\n case 99:\n break;\n case 69:\n nextLine();\n case 68:\n index();\n break;\n case 55:\n saveCursor();\n state = State.TopLevelContent;\n break;\n case 56:\n backspace();\n state = State.TopLevelContent;\n break;\n case 72:\n tabSet();\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Charset:\n i++;\n break;\n case State.Csi:\n switch (array[i]) {\n case 32:\n state = State.AfterSpace;\n break;\n case 33:\n state = State.AfterExclamationMark;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n case 63:\n state = State.AfterQuestionMark;\n break;\n case 64:\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n case 117:\n restoreCursor();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3:\n switch (array[i]) {\n case 32:\n params.push(currentParam);\n state = State.AfterSpace;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterEscape3AfterSemicolon;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 64:\n params.push(currentParam);\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n params.push(currentParam);\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n params.push(currentParam);\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n params.push(currentParam);\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n params.push(currentParam);\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n params.push(currentParam);\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n params.push(currentParam);\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n params.push(currentParam);\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n params.push(currentParam);\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n params.push(currentParam);\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n params.push(currentParam);\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n params.push(currentParam);\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n params.push(currentParam);\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n params.push(currentParam);\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n params.push(currentParam);\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n params.push(currentParam);\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n params.push(currentParam);\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n params.push(currentParam);\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n params.push(currentParam);\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n params.push(currentParam);\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n params.push(currentParam);\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n params.push(currentParam);\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n params.push(currentParam);\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n params.push(currentParam);\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3AfterSemicolon:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterQuestionMark2;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterQuestionMark;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterExclamationMark:\n switch (array[i]) {\n case 112:\n softTerminalReset();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterSpace:\n switch (array[i]) {\n case 64:\n shiftLeftColumns(params);\n state = State.TopLevelContent;\n break;\n case 113:\n setCursorStyle(params);\n state = State.TopLevelContent;\n break;\n case 116:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.Osc2;\n break;\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.Osc3;\n break;\n }\n i++;\n break;\n case State.Osc3:\n switch (array[i]) {\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n default:\n params.push(array[i]);\n }\n i++;\n }\n }\n};\nconst transformKey = (event) => {\n const modifiers = (event.shiftKey ? 1 : 0) | (event.altKey ? 2 : 0) | (event.ctrlKey ? 4 : 0) | (event.metaKey ? 8 : 0);\n switch (event.key) {\n case \"A\":\n case \"B\":\n case \"C\":\n case \"D\":\n case \"E\":\n case \"F\":\n case \"G\":\n case \"H\":\n case \"I\":\n case \"J\":\n case \"K\":\n case \"L\":\n case \"M\":\n case \"N\":\n case \"O\":\n case \"P\":\n case \"Q\":\n case \"R\":\n case \"S\":\n case \"T\":\n case \"U\":\n case \"V\":\n case \"W\":\n case \"X\":\n case \"Y\":\n case \"Z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 64);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"a\":\n case \"b\":\n case \"c\":\n case \"d\":\n case \"e\":\n case \"f\":\n case \"g\":\n case \"h\":\n case \"i\":\n case \"j\":\n case \"k\":\n case \"l\":\n case \"m\":\n case \"n\":\n case \"o\":\n case \"p\":\n case \"q\":\n case \"r\":\n case \"s\":\n case \"t\":\n case \"u\":\n case \"v\":\n case \"w\":\n case \"x\":\n case \"y\":\n case \"z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 96);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"F1\":\n return \"\u001BOP\";\n case \"F2\":\n return \"\u001BOQ\";\n case \"F3\":\n return \"\u001BOR\";\n case \"F4\":\n return \"\u001BOS\";\n case \"F5\":\n return \"\u001B[15~\";\n case \"F6\":\n return \"\u001B[17~\";\n case \"F7\":\n return \"\u001B[18~\";\n case \"F8\":\n return \"\u001B[19~\";\n case \"F9\":\n return \"\u001B[20~\";\n case \"F10\":\n return \"\u001B[21~\";\n case \"F11\":\n return \"\u001B[23~\";\n case \"F12\":\n return \"\u001B[24~\";\n case \"Home\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}H`;\n }\n return `\u001B[H`;\n case \"End\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}F`;\n }\n return `\u001B[F`;\n case \"Insert\":\n if (event.shiftKey || event.ctrlKey) {\n return \"\";\n }\n return \"\u001B[2~\";\n case \"Delete\":\n if (modifiers) {\n return `\u001B[3;${modifiers + 1}~`;\n }\n return \"\u001B[3~\";\n case \"ArrowUp\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}A`;\n }\n return \"\u001B[A\";\n case \"ArrowDown\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}B`;\n }\n return \"\u001B[B\";\n case \"ArrowRight\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}C`;\n }\n return \"\u001B[C\";\n case \"ArrowLeft\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}D`;\n }\n return \"\u001B[D\";\n case \"UIKeyInputUpArrow\":\n return \"\u001B[A\";\n case \"UIKeyInputDownArrow\":\n return \"\u001B[B\";\n case \"UIKeyInputRightArrow\":\n return \"\u001B[C\";\n case \"UIKeyInputLeftArrow\":\n return \"\u001B[D\";\n case \"Enter\":\n if (event.altKey) {\n return \"\u001B\\r\";\n }\n return \"\\n\";\n case \"PageUp\":\n if (event.ctrlKey) {\n return `\u001B[5;5~`;\n }\n return \"\u001B[5~\";\n case \"PageDown\":\n if (event.ctrlKey) {\n return `\u001B[6;5~`;\n }\n return `\u001B[6~`;\n case \"Backspace\":\n if (event.altKey) {\n return \"\u0017\";\n }\n if (event.shiftKey) {\n return \"\\b\";\n }\n return \"\\x7F\";\n case \"Tab\":\n if (event.shiftKey) {\n return \"\u001B[Z\";\n }\n return \"\t\";\n case \"Escape\":\n if (event.altKey) {\n return \"\u001B\u001B\";\n }\n return \"\u001B\";\n case \"/\":\n return \"/\";\n case \"?\":\n if (event.ctrlKey) {\n return \"\\x7F\";\n }\n if (event.altKey) {\n return `\u001B?`;\n }\n return event.key;\n case \"|\":\n if (event.ctrlKey) {\n return \"\u001C\";\n }\n if (event.altKey) {\n return `\u001B|`;\n }\n return event.key;\n case \"{\":\n if (event.ctrlKey) {\n return \"\u001B\";\n }\n if (event.altKey) {\n return `\u001B{`;\n }\n return event.key;\n case \"}\":\n if (event.ctrlKey) {\n return \"\u001D\";\n }\n if (event.altKey) {\n return `\u001B}`;\n }\n return event.key;\n case \"_\":\n if (event.ctrlKey) {\n return \"\u001F\";\n }\n if (event.altKey) {\n return `\u001B_`;\n }\n return event.key;\n case \"^\":\n if (event.ctrlKey) {\n return \"\u001E\";\n }\n if (event.altKey) {\n return `\u001B^`;\n }\n return event.key;\n case \"@\":\n if (event.ctrlKey) {\n return \"\\0\";\n }\n if (event.altKey) {\n return `\u001B@`;\n }\n return event.key;\n case \" \":\n return ` `;\n default:\n if (event.key.length > 1) {\n return \"\";\n }\n if (event.altKey) {\n return `\u001B${event.key}`;\n }\n return event.key;\n }\n};\nconst CHAR_WIDTH$2 = 13;\nconst CHAR_HEIGHT$2 = 15;\nconst BACKGROUND$2 = \"#000000\";\nconst FOREGROUND = \"#ffffff\";\nconst COLS = 80;\nconst ROWS = 25;\nconst BUFFER_LINES = 200;\nconst noop = () => {\n};\nconst createTerminal = (root, {handleInput, bell = noop, setWindowTitle = noop}) => {\n let focused = false;\n const handleKeyDown = (event) => {\n const transformedKey = transformKey(event);\n if (transformedKey) {\n handleInput(transformedKey);\n }\n };\n const handleBeforeInput = (event) => {\n event.preventDefault();\n };\n const blur = () => {\n focused = false;\n cursorStyle = 4;\n requestAnimationFrame(render);\n };\n const focus = () => {\n if (focused) {\n return;\n }\n focused = true;\n cursorStyle = 2;\n textarea.focus();\n requestAnimationFrame(render);\n };\n const canvasText = document.createElement(\"canvas\");\n canvasText.className = \"TerminalCanvasText\";\n const canvasCursor = document.createElement(\"canvas\");\n canvasCursor.className = \"TerminalCanvasCursor\";\n const $Layers = document.createElement(\"div\");\n $Layers.className = \"Layers\";\n const textarea = document.createElement(\"textarea\");\n textarea.className = \"TerminalTextArea\";\n $Layers.append(canvasText, canvasCursor);\n root.append(textarea, $Layers);\n textarea.onkeydown = handleKeyDown;\n textarea.addEventListener(\"beforeinput\", handleBeforeInput);\n root.onmousedown = (event) => {\n event.preventDefault();\n focus();\n };\n textarea.onblur = blur;\n const WIDTH = COLS * CHAR_WIDTH$2;\n const HEIGHT = ROWS * (CHAR_HEIGHT$2 + 10);\n canvasText.width = canvasCursor.width = WIDTH;\n canvasText.height = canvasCursor.height = HEIGHT;\n let bufferYEnd = ROWS;\n let cursorYRelative = -ROWS;\n let cursorXRelative = -COLS;\n let foreground = \"#ffffff\";\n let background = \"#000000\";\n let cursorVisible = true;\n let cursorStyle = 2;\n const dirty = {\n start: 0,\n end: 0\n };\n const lines = [];\n const offsets = new Uint8Array(BUFFER_LINES);\n let attributes = {};\n for (let y = 0; y < BUFFER_LINES; y++) {\n lines.push(new Uint8Array(300));\n }\n const textDecoder = new TextDecoder();\n const dirtyMark = (y) => {\n if (y < dirty.start) {\n dirty.start = y;\n } else if (y > dirty.end) {\n dirty.end = y;\n }\n };\n const dirtyClear = () => {\n dirty.start = dirty.end = bufferYEnd + cursorYRelative;\n };\n const callbackFns = {\n eraseInLine() {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n eraseInDisplay() {\n offsets.fill(0);\n cursorYRelative = -ROWS + 1;\n cursorXRelative = -COLS;\n bufferYEnd = ROWS;\n for (const key of Object.keys(attributes)) {\n delete attributes[key];\n }\n dirtyMark(0);\n dirtyMark(ROWS);\n },\n setCharAttributes(params) {\n if (params[1] === 7) {\n [foreground, background] = [background, foreground];\n } else if (params[1] === 35) {\n foreground = \"#8000ff\";\n } else if (params[1] === 32) {\n foreground = \"#09f900\";\n } else if (params[1] === 34) {\n foreground = \"#0090ff\";\n } else {\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n }\n const y = bufferYEnd + cursorYRelative;\n attributes[y] = attributes[y] || {};\n attributes[y][offsets[y]] = {\n foreground,\n background\n };\n },\n cursorUp() {\n console.log(\"cursor up\");\n },\n cursorDown() {\n },\n cursorRight() {\n cursorXRelative++;\n },\n cursorLeft() {\n console.log(\"cursor left\");\n },\n backspace() {\n cursorXRelative--;\n },\n deleteChars(numberOfChars) {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n bell,\n print(array, start, end) {\n const subArray = array.subarray(start, end);\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n lines[y].set(subArray, x);\n cursorXRelative += end - start;\n offsets[y] = COLS + cursorXRelative;\n dirtyMark(y);\n if (x >= COLS - 1) {\n callbackFns.lineFeed();\n }\n },\n lineFeed() {\n if (cursorYRelative === 0) {\n bufferYEnd = (bufferYEnd + 1) % BUFFER_LINES;\n offsets[bufferYEnd] = 0;\n delete attributes[bufferYEnd];\n } else {\n cursorYRelative++;\n }\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n },\n carriageReturn() {\n cursorXRelative = -COLS;\n },\n setWindowTitle,\n cursorPosition(params) {\n if (params.length === 2) {\n const row = params[0];\n const column = params[1];\n cursorYRelative = -ROWS + row;\n cursorXRelative = -COLS + column;\n }\n },\n cursorShow() {\n cursorVisible = true;\n },\n cursorHide() {\n cursorVisible = false;\n },\n insertLines() {\n },\n deleteLines() {\n },\n setTextParameters() {\n },\n privateModeSet() {\n },\n privateModeReset() {\n },\n eraseToEndOfLine() {\n },\n goToHome() {\n },\n setGLevel() {\n },\n saveCursor() {\n },\n restoreCursor() {\n },\n index() {\n },\n tabSet() {\n },\n reverseIndex() {\n },\n keypadApplicationMode() {\n },\n keypadNumericMode() {\n },\n fullReset() {\n },\n nextLine() {\n },\n deleteCharacters() {\n },\n softTerminalReset() {\n },\n cursorNextLine() {\n },\n cursorPrecedingLine() {\n },\n cursorCharacterAbsolute() {\n },\n cursorForwardTabulation() {\n },\n cursorBackwardTabulation() {\n },\n scrollUp() {\n },\n scrollDown() {\n },\n eraseCharacters() {\n },\n characterPositionAbsolute() {\n },\n characterPositionRelative() {\n },\n repeatPrecedingGraphicCharacter() {\n },\n sendDeviceAttributesPrimary() {\n },\n sendDeviceAttributesTertiary() {\n },\n linePositionAbsolute() {\n },\n linePositionRelative() {\n },\n horizontalAndVerticalPosition() {\n },\n tabClear() {\n },\n setMode() {\n },\n resetMode() {\n },\n setCursorStyle() {\n },\n shiftLeftColumns() {\n },\n insertBlankCharacters() {\n }\n };\n const drawLines = createDrawLines(canvasText, lines, BUFFER_LINES, offsets, attributes, ROWS, COLS);\n const drawCursor = createDrawCursor(canvasCursor);\n let scheduled = false;\n const render = () => {\n drawLines(dirty.start, dirty.end + 1, bufferYEnd);\n const y = ROWS + cursorYRelative;\n const x = COLS + cursorXRelative;\n drawCursor(x, y, cursorVisible, cursorStyle);\n scheduled = false;\n dirtyClear();\n };\n const write = (array) => {\n parse(array, callbackFns);\n if (!scheduled) {\n scheduled = true;\n requestAnimationFrame(render);\n }\n };\n const pasteText = (text) => {\n const fixedText = \"\\n\" + text.replaceAll(\"\\n\", \"\\r\\n\");\n const array = new TextEncoder().encode(fixedText);\n write(array);\n };\n return {\n write,\n focus,\n pasteText,\n writeText: pasteText,\n lines\n };\n};\nexport {createTerminal};\nexport default null;\n", "import { createTerminal } from '../../../static/js/termterm.js'\n\nexport const create = ({ $Element, handleInput }) => {\n const state = {\n terminal: createTerminal($Element, { handleInput }),\n }\n return state\n}\n\nexport const close = () => {}\n\n// export const\n\nexport const write = (state, text) => {\n state.terminal.write(text)\n}\n\nexport const wrapTerminalCommand = (id) => {}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Terminal from '../Terminal/Terminal.js'\n\n// TODO support multiple terminals\nlet globalTerminal\n\nexport const name = 'Terminal'\n\nconst handleInput = (input) => {\n RendererWorker.send(\n /* viewletSend */ 2133,\n /* viewletId */ 'Terminal',\n /* method */ 'write',\n /* input */ input\n )\n}\n\nconst handleFocus = () => {\n Focus.setFocus('terminal')\n}\n\nexport const create = (id) => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'Terminal'\n\n const terminal = Terminal.create({\n $Element: $Viewlet,\n handleInput,\n })\n\n $Viewlet.addEventListener('focusin', handleFocus)\n\n globalTerminal = terminal\n\n const state = {\n $Viewlet,\n handleUpdate() {\n // const width = $Viewlet.clientWidth\n // const height = $Viewlet.clientHeight\n // RendererWorker.send(\n // /* viewletSend */ 2133,\n // /* viewletId */ 'Terminal',\n // /* method */ 'resize',\n // /* width */ width,\n // /* height */ height,\n // )\n },\n }\n\n window.addEventListener('resize', state.handleUpdate, { passive: true })\n\n return state\n}\n\nexport const refresh = (state, context) => {\n // state.element.textContent = context.text\n}\n\nexport const dispose = (state) => {\n // TODO unregister callback\n // SharedProcess.unregisterChannel(channel )\n\n window.removeEventListener('resize', state.handleUpdate)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n if (!globalTerminal) {\n return\n }\n globalTerminal.terminal.focus()\n}\n\nexport const reduceFocus = (state, action) => {}\n\n// TODO what is this\nexport const reduceWrite = (state, action) => {\n if (!globalTerminal) {\n return\n }\n Terminal.write(globalTerminal, state)\n}\n\nexport const reduce = (state, action) => {\n switch (action.type) {\n case 'write':\n return reduceWrite(state, action)\n case 'focus':\n return reduceFocus(state, action)\n default:\n break\n }\n}\n\nexport const write = (data) => {\n if (!globalTerminal) {\n return\n }\n Terminal.write(globalTerminal, data)\n}\n\nexport const Commands = {\n 9922: write,\n}\n", "export const Close = '/icons/icon-close.svg'\nexport const PreviousMatch = '/icons/arrow-up.svg'\nexport const NextMatch = '/icons/arrow-down.svg'\nexport const ExtensionDefaultIcon = `/icons/extensionDefaultIcon.png`\n", "import * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as Icon from '../Icon/Icon.js'\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n RendererWorker.send(\n /* ViewletExtensions.handleScrollBarMouseMove */ 'Extensions.handleScrollBarMove',\n /* y */ clientY\n )\n}\n\nexport const handleScrollBarThumbPointerUp = () => {\n window.removeEventListener('pointermove', handleScrollBarThumbPointerMove)\n window.removeEventListener('pointerup', handleScrollBarThumbPointerUp)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n const $Target = event.target\n if ($Target.className === 'ScrollBarThumb') {\n window.addEventListener('pointermove', handleScrollBarThumbPointerMove)\n window.addEventListener('pointerup', handleScrollBarThumbPointerUp)\n } else {\n const y = event.clientY\n console.log({ y })\n RendererWorker.send(\n /* ViewletExtensions.handleScrollBarClick */ 'Extensions.handleScrollBarClick',\n /* y */ y\n )\n }\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('Extensions')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handlePointerDownExtension = ($Target) => {\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* Extensions.handleClick */ 'Extensions.handleClick',\n /* index */ index\n )\n}\n\nconst handlePointerDownExtensionDetail = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode)\n RendererWorker.send(\n /* Extensions.handleClick */ 'Extensions.handleClick',\n /* index */ index\n )\n}\n\nconst handlePointerDownExtensionAuthorName = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode.parentNode)\n RendererWorker.send(\n /* Extensions.handleClick */ 'Extensions.handleClick',\n /* index */ index\n )\n}\n\nexport const handlePointerDown = (event) => {\n const { target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n switch (target.className) {\n case 'ExtensionListItem':\n handlePointerDownExtension(target)\n break\n case 'ExtensionName':\n case 'ExtensionDescription':\n case 'ExtensionFooter':\n handlePointerDownExtensionDetail(target)\n break\n case 'ExtensionAuthorName':\n handlePointerDownExtensionAuthorName(target)\n break\n default:\n break\n }\n}\n\nconst handleContextMenuMouse = (event) => {\n const { clientX, clientY } = event\n RendererWorker.send(\n /* Extensions.handleContextMenu */ 'Extensions.handleContextMenu',\n /* x */ clientX,\n /* y */ clientY\n )\n}\n\nconst handleContextMenuKeyboard = (event) => {}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n switch (event.button) {\n case MouseEventType.Keyboard:\n return handleContextMenuKeyboard(event)\n default:\n return handleContextMenuMouse(event)\n }\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* ViewletExtensions.handleWheel */ 'Extensions.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* ViewletExtensions.handleWheel */ 'Extensions.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send(\n /* ViewletExtensions.handleInput */ 'Extensions.handleInput',\n /* value */ value\n )\n // TODO\n // TODO use beforeinput event to set value and extension list items at the same time\n // state.$Viewlet.ariaBusy = 'true'\n}\n\nexport const handleIconError = (event) => {\n const $Target = event.target\n if ($Target.src.endsWith(Icon.ExtensionDefaultIcon)) {\n return\n }\n $Target.src = Icon.ExtensionDefaultIcon\n}\n\nexport const handleScroll = (event) => {\n console.log(event)\n}\n\n/**\n *\n * @param {TouchList} touchList\n */\nconst toArray = (touchList) => {\n const touchArray = []\n // @ts-ignore\n for (const item of touchList) {\n touchArray.push({\n clientX: item.clientX,\n clientY: item.clientY,\n identifier: item.identifier,\n })\n }\n return touchArray\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchMove = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n RendererWorker.send(\n 'Extensions.handleTouchMove',\n timeStamp,\n changedTouchesArray\n )\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchStart = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n RendererWorker.send(\n 'Extensions.handleTouchStart',\n timeStamp,\n changedTouchesArray\n )\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchEnd = (event) => {\n const { changedTouches } = event\n const changedTouchesArray = toArray(changedTouches)\n RendererWorker.send('Extensions.handleTouchEnd', changedTouchesArray)\n}\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletExtensionsEvents from './ViewletExtensionsEvents.js'\n\nexport const name = 'Extensions'\n\nconst activeId = 'ExtensionActive'\n\n// TODO vscode uninstall behaviour is better -> more subtle uninstall -> no cta for uninstalling\n\nconst create$ExtensionSuggestions = () => {\n const $ExtensionSuggestions = document.createElement('div')\n $ExtensionSuggestions.className = 'ExtensionSuggestions'\n return $ExtensionSuggestions\n}\n\nconst create$ExtensionSuggestion = (item) => {}\n\nconst findIndex = ($Target) => {\n if ($Target.className.includes('ExtensionListItem')) {\n return FindIndex.findIndex($Target.parentNode, $Target)\n }\n if ($Target.classList.contains('Viewlet')) {\n return -1\n }\n return findIndex($Target.parentNode)\n // return -2\n}\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = 'search'\n $InputBox.placeholder = 'Search Extensions in Marketplace'\n $InputBox.oninput = ViewletExtensionsEvents.handleInput\n const $ExtensionHeader = document.createElement('div')\n $ExtensionHeader.className = 'ExtensionHeader'\n $ExtensionHeader.append($InputBox)\n // TODO handle error\n const $ExtensionList = document.createElement('div')\n $ExtensionList.className = 'ExtensionList'\n $ExtensionList.tabIndex = 0\n $ExtensionList.ariaLabel = 'Extensions'\n // @ts-ignore\n $ExtensionList.role = 'list'\n $ExtensionList.oncontextmenu = ViewletExtensionsEvents.handleContextMenu\n $ExtensionList.onpointerdown = ViewletExtensionsEvents.handlePointerDown\n $ExtensionList.onfocus = ViewletExtensionsEvents.handleFocus\n $ExtensionList.onscroll = ViewletExtensionsEvents.handleScroll\n $ExtensionList.addEventListener(\n 'touchstart',\n ViewletExtensionsEvents.handleTouchStart,\n {\n passive: true,\n }\n )\n $ExtensionList.addEventListener(\n 'touchmove',\n ViewletExtensionsEvents.handleTouchMove,\n {\n passive: true,\n }\n )\n $ExtensionList.addEventListener(\n 'touchend',\n ViewletExtensionsEvents.handleTouchEnd,\n {\n passive: true,\n }\n )\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.onpointerdown = ViewletExtensionsEvents.handleScrollBarPointerDown\n $ScrollBar.append($ScrollBarThumb)\n\n const $ExtensionListWrapper = document.createElement('div')\n $ExtensionListWrapper.className = 'ExtensionListWrapper'\n $ExtensionListWrapper.append($ExtensionList, $ScrollBar)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Extensions'\n $Viewlet.className = 'Viewlet'\n $Viewlet.ariaBusy = 'true'\n $Viewlet.ariaLive = 'polite'\n $Viewlet.append($ExtensionHeader, $ExtensionListWrapper)\n $Viewlet.addEventListener('wheel', ViewletExtensionsEvents.handleWheel, {\n passive: true,\n })\n\n return {\n $Viewlet,\n $ExtensionListWrapper,\n $ExtensionList,\n $InputBox,\n $ExtensionSuggestions: undefined,\n $ScrollBarThumb,\n }\n}\n\n// TODO possibly use aria active descendant instead\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n Assert.object(state)\n Assert.number(oldFocusedIndex)\n Assert.number(newFocusedIndex)\n const { $ExtensionList } = state\n const { length } = $ExtensionList.children\n if (oldFocusedIndex === -1) {\n $ExtensionList.classList.remove('FocusOutline')\n } else if (oldFocusedIndex >= 0 && oldFocusedIndex < length) {\n $ExtensionList.children[oldFocusedIndex].removeAttribute('id')\n }\n if (newFocusedIndex === -1) {\n $ExtensionList.removeAttribute('aria-activedescendant')\n $ExtensionList.classList.add('FocusOutline')\n } else if (newFocusedIndex >= 0 && newFocusedIndex < length) {\n $ExtensionList.children[newFocusedIndex].id = activeId\n $ExtensionList.setAttribute('aria-activedescendant', activeId)\n }\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$InputBox.focus()\n}\n\nexport const setExtensionState = (state, id, extensionState) => {\n // const index = state.extensions.findIndex((extension) => extension.id === id)\n // if (index === -1) {\n // return\n // }\n // state.extensions[index].state = extensionState\n // render(state)\n}\n\nexport const setError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n const $Message = document.createElement('div')\n $Message.className = 'ViewletExtensionMessage'\n $Message.textContent = error\n while (state.$ExtensionList.firstChild) {\n state.$ExtensionList.firstChild.remove()\n }\n state.$ExtensionList.append($Message)\n}\n\nconst render$Extension = ($Extension, extension) => {\n const $ExtensionDetailName = $Extension.children[1].children[0]\n const $ExtensionDetailDescription = $Extension.children[1].children[1]\n const $ExtensionAuthorName = $Extension.children[1].children[2].children[0]\n const $ExtensionIcon = $Extension.children[0]\n\n $Extension.ariaPosInSet = extension.posInSet\n $Extension.ariaSetSize = extension.setSize\n $Extension.dataset.state = extension.state\n $Extension.dataset.id = extension.id\n $Extension.style.top = `${extension.top}px`\n\n $ExtensionDetailName.firstChild.nodeValue = extension.name\n $ExtensionDetailDescription.firstChild.nodeValue = extension.description\n $ExtensionAuthorName.firstChild.nodeValue = extension.publisher\n $ExtensionIcon.src = extension.icon\n}\n\n// TODO test that rendering and recycling text nodes works\nconst create$Extension = () => {\n const $ExtensionDetailName = document.createElement('div')\n $ExtensionDetailName.className = 'ExtensionName'\n $ExtensionDetailName.append(document.createTextNode(''))\n const $ExtensionDetailDescription = document.createElement('div')\n $ExtensionDetailDescription.className = 'ExtensionDescription'\n $ExtensionDetailDescription.append(document.createTextNode(''))\n const $ExtensionActions = document.createElement('div')\n $ExtensionActions.className = 'ExtensionActions'\n const $ExtensionActionInstall = document.createElement('div')\n $ExtensionActionInstall.className = 'ExtensionActionInstall'\n $ExtensionActionInstall.textContent = 'Install'\n const $ExtensionActionManage = document.createElement('button')\n $ExtensionActionManage.className = 'ExtensionActionManage'\n $ExtensionActionManage.title = 'Manage'\n $ExtensionActionManage.ariaHasPopup = 'menu' // TODO also set this for global settings icon in activity bar\n const $ExtensionAuthorName = document.createElement('div')\n $ExtensionAuthorName.className = 'ExtensionAuthorName'\n $ExtensionAuthorName.append(document.createTextNode(''))\n\n const icon = document.createElement('img')\n icon.className = 'ExtensionIcon'\n icon.onerror = ViewletExtensionsEvents.handleIconError\n const buttonManage = document.createElement('button')\n buttonManage.className = 'ExtensionManage'\n // switch (extension.state) {\n // case 'uninstalled':\n // $ExtensionActionManage.remove()\n // $ExtensionActions.append($ExtensionActionInstall)\n // break\n // case 'uninstalling':\n // buttonManage.textContent = 'uninstalling'\n // break\n // case 'installing':\n // buttonManage.textContent = 'installing'\n // break\n // case 'installed':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // case 'disabled':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // default:\n // break\n // }\n const $ExtensionFooter = document.createElement('div')\n $ExtensionFooter.className = 'ExtensionFooter'\n $ExtensionFooter.append($ExtensionAuthorName, $ExtensionActions)\n const $ExtensionDetail = document.createElement('div')\n $ExtensionDetail.className = 'ExtensionDetail'\n $ExtensionDetail.append(\n $ExtensionDetailName,\n $ExtensionDetailDescription,\n $ExtensionFooter\n )\n const $ExtensionListItem = document.createElement('div')\n // @ts-ignore\n $ExtensionListItem.role = 'article'\n $ExtensionListItem.ariaRoleDescription = 'Extension'\n $ExtensionListItem.className = 'ExtensionListItem'\n // @ts-ignore\n $ExtensionListItem.role = 'listitem'\n $ExtensionListItem.append(icon, $ExtensionDetail)\n return $ExtensionListItem\n}\n\nconst render$ExtensionsLess = ($ExtensionList, extensions) => {\n for (let i = 0; i < $ExtensionList.children.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ExtensionList.children.length; i < extensions.length; i++) {\n const $Extension = create$Extension()\n render$Extension($Extension, extensions[i])\n fragment.append($Extension)\n }\n $ExtensionList.append(fragment)\n}\n\nconst render$ExtensionsEqual = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n}\n\nconst render$ExtensionsMore = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const diff = $ExtensionList.children.length - extensions.length\n for (let i = 0; i < diff; i++) {\n $ExtensionList.lastChild.remove()\n }\n}\n\nconst render$Extensions = ($ExtensionList, extensions) => {\n if ($ExtensionList.children.length < extensions.length) {\n // console.log('RENDER LESS')\n render$ExtensionsLess($ExtensionList, extensions)\n } else if ($ExtensionList.children.length === extensions.length) {\n // console.log('RENDER EQUAL')\n render$ExtensionsEqual($ExtensionList, extensions)\n } else {\n // console.log('RENDER MORE')\n render$ExtensionsMore($ExtensionList, extensions)\n }\n}\n\nexport const setNegativeMargin = (state, negativeMargin) => {\n const { $ExtensionList } = state\n $ExtensionList.style.top = `${negativeMargin}px`\n // Assert.number(negativeMargin)\n // const { $NegativeMargin } = state\n // $NegativeMargin.style.marginTop = `${negativeMargin}px`\n}\n\n// TODO a more efficient approach would be\nexport const setExtensions = (state, extensions) => {\n Assert.object(state)\n Assert.array(extensions)\n const { $Viewlet, $ExtensionList } = state\n $Viewlet.removeAttribute('aria-busy')\n if (extensions.length === 0) {\n const $Message = document.createElement('div')\n $Message.className = 'ViewletExtensionMessage'\n $Message.textContent = 'No extensions found.'\n while ($ExtensionList.firstChild) {\n $ExtensionList.firstChild.remove()\n }\n $ExtensionList.append($Message)\n } else {\n render$Extensions($ExtensionList, extensions)\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const openSuggest = (state) => {\n // TODO maybe cache getBoundingClientRect (though it is not a bottleneck right now)\n // TODO getBoundingClientRect should not be needed, all positions should be known already in renderer worker\n const rect = state.$InputBox.getBoundingClientRect()\n const x = rect.left\n const y = rect.top\n // const x = state.$InputBox.offsetLeft\n // const y = state.$InputBox.offsetTop\n state.$ExtensionSuggestions ||= create$ExtensionSuggestions()\n state.$ExtensionSuggestions.style.left = `${x}px`\n state.$ExtensionSuggestions.style.top = `${y}px`\n state.$ExtensionSuggestions.style.position = 'fixed'\n state.$ExtensionSuggestions.style.width = '100px'\n state.$ExtensionSuggestions.style.height = '100px'\n state.$ExtensionSuggestions.style.background = 'lime'\n // TODO check if already mounted\n // TODO don't append to body, have separate container for widgets (https://news.ycombinator.com/item?id=28230977)\n document.body.append(state.$ExtensionSuggestions)\n // console.log(state.$InputBox)\n // console.log({ x, y })\n // console.log(state)\n // console.log('open suggest in renderer')\n}\n\nexport const closeSuggest = (state) => {\n state.$ExtensionSuggestions.remove()\n}\n\nexport const setContentHeight = (state, height) => {\n const { $ExtensionList } = state\n $ExtensionList.style.height = `${height}px`\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n state.$ExtensionList.textContent = message\n}\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n const { $ScrollBarThumb } = state\n $ScrollBarThumb.style.top = `${scrollBarY}px`\n $ScrollBarThumb.style.height = `${scrollBarHeight}px`\n}\n", "export const name = 'Debug Console'\n\nexport const create = () => {\n const $Input = document.createElement('input')\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'DebugConsole'\n $Viewlet.className = 'Viewlet'\n $Viewlet.textContent = 'Debug Console'\n $Viewlet.append($Input)\n return {\n $Viewlet,\n $Input,\n }\n}\n\nexport const refresh = (state, context) => {\n const { $Viewlet } = state\n $Viewlet.textContent = 'Debug Console - Not implemented'\n}\n\nexport const focus = (state) => {\n const { $Input } = state\n $Input.focus()\n}\n\nexport const dispose = (state) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleChange = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send(\n /* viewletSend */ 'Viewlet.send',\n /* ViewletId */ 'Output',\n /* method */ 'setOutputChannel',\n /* option */ value\n )\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as ViewletOutputEvents from './ViewletOutputEvents.js'\n\nconst create$Option = (option) => {\n const $Option = document.createElement('option')\n $Option.value = option.file\n $Option.textContent = option.name\n return $Option\n}\n\n// TODO name export not necessary\nexport const name = 'Output'\n\nexport const create = () => {\n const $ViewletOutputSelect = document.createElement('select')\n $ViewletOutputSelect.className = 'ViewletOutputSelect'\n $ViewletOutputSelect.onchange = ViewletOutputEvents.handleChange\n $ViewletOutputSelect.ariaLabel = 'Select a log'\n const $ViewletOutputContent = document.createElement('div')\n $ViewletOutputContent.className = 'OutputContent'\n // @ts-ignore\n $ViewletOutputContent.role = 'log'\n $ViewletOutputContent.tabIndex = 0\n const $ViewletOutputWidgets = document.createElement('div')\n $ViewletOutputWidgets.className = 'OutputWidgets'\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Output'\n $Viewlet.className = 'Viewlet ViewletOutput'\n $Viewlet.tabIndex = 0\n $Viewlet.append(\n $ViewletOutputSelect,\n $ViewletOutputContent,\n $ViewletOutputWidgets\n )\n return {\n $Viewlet,\n select: $ViewletOutputSelect,\n $Select: $ViewletOutputSelect,\n content: $ViewletOutputContent,\n $Content: $ViewletOutputContent,\n $ViewletOutputContent,\n }\n}\n\nexport const setOptions = (state, options) => {\n state.$Select.append(...options.map(create$Option))\n}\n\nexport const append = (state, text) => {\n Assert.object(state)\n Assert.string(text)\n const $Line = document.createElement('div')\n $Line.textContent = text\n state.content.append($Line)\n}\n\nexport const clear = (state) => {\n Assert.object(state)\n state.content.textContent = ''\n}\n\nexport const handleError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n state.content.textContent = error\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n Focus.focus(state.$ViewletOutputContent, 'output')\n}\n\n// TODO handle case when output is opened -> find widget is opened -> output is disposed before find widget is ready\nexport const openFindWidget = (state) => {\n // Command.execute(findWidget.create)\n}\n\nexport const disposeFindWidget = (state) => {\n if (!state.findWidget) {\n return\n }\n\n // Command.execute(FindWidget.dispose, state.findWidget)\n state.findWidget\n}\n\nexport const dispose = (state) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleMouseDown = (event) => {\n event.preventDefault()\n RendererWorker.send(/* ViewletProblems.focusIndex */ 7550, /* index */ -1)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletProblemsEvents from './ViewletProblemsEvents.js'\n\nexport const name = 'Problems'\n\nexport const create = (problemsCount) => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Problems'\n $Viewlet.className = 'Viewlet'\n $Viewlet.tabIndex = 0\n $Viewlet.onmousedown = ViewletProblemsEvents.handleMouseDown\n return {\n $Viewlet,\n }\n}\n\nexport const setFocusedIndex = (state, focusedIndex) => {\n const { $Viewlet } = state\n if (focusedIndex === -1) {\n $Viewlet.classList.add('FocusOutline')\n $Viewlet.focus()\n }\n}\n\nexport const setProblems = (state, problems) => {\n Assert.object(state)\n Assert.array(problems)\n const { $Viewlet } = state\n if (problems.length === 0) {\n $Viewlet.ariaLabel = 'No problems have been detected in the workspace.'\n $Viewlet.textContent = 'No problems have been detected in the workspace.'\n } else {\n // TODO adjust aria-label\n $Viewlet.ariaLabel = 'No problems have been detected in the workspace.'\n $Viewlet.textContent = problems.join('\\n')\n }\n}\n\nexport const focus = (state) => {\n const { $Viewlet } = state\n $Viewlet.focus()\n}\n", "export const name = 'Empty'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewlet = 'Empty'\n $Viewlet.className = 'Viewlet'\n return {\n $Viewlet,\n }\n}\n\nexport const refresh = (state, context) => {}\n\nexport const focus = (state) => {}\n\nexport const dispose = (state) => {}\n", "export const InsertText = 'insertText'\n", "// TODO this enum should only be present in renderer worker\nexport const ActivityBar = 1\n\nexport const Edit = 2\n\nexport const Editor = 3\n\nexport const Explorer = 4\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", "export const Ctrl = 'ctrl'\n\nexport const Alt = 'alt'\n\nexport const None = ''\n", "// TODO so many things in this file\n\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputEventType from '../InputEventType/InputEventType.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as ModifierKey from '../ModifierKey/ModifierKey.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ clientX,\n /* y */ clientY,\n /* id */ MenuEntryId.Editor\n )\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('EditorText')\n}\n\nexport const handleBlur = (event) => {\n // needed for save on blur\n // also needed to close completions on blur\n RendererWorker.send(/* EditorBlur.editorBlur */ 'Editor.blur')\n}\n\n/**\n *\n * @param {InputEvent} event\n */\nexport const handleBeforeInput = (event) => {\n event.preventDefault()\n switch (event.inputType) {\n case InputEventType.InsertText:\n RendererWorker.send(\n /* Editor.type */ 'Editor.type',\n /* text */ event.data\n )\n break\n default:\n break\n }\n // if (!event.data) {\n // return\n // }\n}\n\n// TODO composition should be better supported,\n// for example\n// - gedit draws a line below the composed text\n// - codemirror 6 also draws that line\n// - codemirror 5 also draws that line\n// - vscode does not draw a line, but displays characters during composition\n\nexport const handleCompositionStart = (event) => {\n RendererWorker.send(\n /* Editor.compositionStart */ 'Editor.compositionStart',\n /* text */ event.data\n )\n}\n\nexport const handleCompositionUpdate = (event) => {\n RendererWorker.send(\n /* Editor.compositionUpdate */ 'Editor.compositionUpdate',\n /* text */ event.data\n )\n}\n\nexport const handleCompositionEnd = (event) => {\n RendererWorker.send(\n /* Editor.compositionEnd */ 'Editor.compositionEnd',\n /* text */ event.data\n )\n}\n\nexport const handleCut = (event) => {\n event.preventDefault()\n RendererWorker.send(/* Editor.cut */ 'Editor.cut')\n}\n\nexport const handleSelectionMove = (event) => {\n const x = event.clientX\n const y = event.clientY\n const totalOffset = getTotalOffset(event)\n if (event.altKey) {\n RendererWorker.send(\n /* Editor.moveRectangleSelectionPx */ 'Editor.moveRectangleSelectionPx',\n /* x */ x,\n /* y */ y,\n /* offset */ totalOffset\n )\n } else {\n RendererWorker.send(\n /* Editor.moveSelectionPx */ 'Editor.moveSelectionPx',\n /* x */ x,\n /* y */ y,\n /* offset */ totalOffset\n )\n }\n}\n\nexport const handleSelectionDone = (event) => {\n document.removeEventListener('mousemove', handleSelectionMove)\n document.removeEventListener('mouseup', handleSelectionDone)\n}\n\nconst getModifier = (event) => {\n if (event.ctrlKey) {\n return ModifierKey.Ctrl\n }\n if (event.altKey) {\n return ModifierKey.Alt\n }\n return ModifierKey.None\n}\n\nexport const handleSingleClick = (event, x, y, offset) => {\n const modifier = getModifier(event)\n RendererWorker.send(\n /* Editor.handleSingleClick */ 'Editor.handleSingleClick',\n /* modifier */ modifier,\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n const $Target = event.target\n // const $InputBox = $Target.closest('.Editor').firstElementChild\n // $InputBox.focus()\n // TODO this logic should be in renderer worker\n document.addEventListener('mousemove', handleSelectionMove, { passive: true })\n document.addEventListener('mouseup', handleSelectionDone)\n}\n\nexport const handleDoubleClick = (event, x, y, offset) => {\n RendererWorker.send(\n /* Editor.handleDoubleClick */ 'Editor.handleDoubleClick',\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n}\n\nexport const handleTripleClick = (event, x, y, offset) => {\n RendererWorker.send(\n /* Editor.handleTripleClick */ 'Editor.handleTripleClick',\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n}\n\nconst isRightClick = (event) => {\n return event.button === MouseEventType.RightClick\n}\n\nconst getTextNodeOffset = (textNode) => {\n let $Token = textNode.parentElement\n let offset = 0\n while ($Token.previousSibling) {\n $Token = $Token.previousSibling\n offset += $Token.textContent.length\n }\n return offset\n}\n\nconst getTotalOffset = (event) => {\n if (document.caretRangeFromPoint) {\n // chrome uses deprecated version\n const range = document.caretRangeFromPoint(event.clientX, event.clientY)\n if (!range) {\n return 0\n }\n const textNode = range.startContainer\n const textNodeOffset = getTextNodeOffset(textNode)\n const offset = range.startOffset\n const totalOffset = textNodeOffset + offset\n return totalOffset\n // @ts-ignore\n }\n // @ts-ignore\n if (document.caretPositionFromPoint) {\n // firefox uses new version\n // @ts-ignore\n const range = document.caretPositionFromPoint(event.clientX, event.clientY)\n if (!range) {\n return 0\n }\n const textNode = range.offsetNode\n const textNodeOffset = getTextNodeOffset(textNode)\n const offset = range.offset\n const totalOffset = textNodeOffset + offset\n return totalOffset\n }\n throw new Error('caret position is not supported')\n}\n\nexport const handleMouseDown = (event) => {\n if (isRightClick(event)) {\n return\n }\n event.preventDefault()\n const totalOffset = getTotalOffset(event)\n const x = event.clientX\n const y = event.clientY\n switch (event.detail) {\n case 1:\n handleSingleClick(event, x, y, totalOffset)\n break\n case 2:\n handleDoubleClick(event, x, y, totalOffset)\n break\n case 3:\n handleTripleClick(event, x, y, totalOffset)\n break\n default:\n break\n }\n}\n\n// TODO figure out whether it is possible to register hover provider without mousemove\n// mousemove handler is called very often and could slow down editor / drain battery\n\n// disabled for now because of constant cpu usage on mousemove\n// bad for performance\nexport const handlePointerMove = (event) => {\n const x = event.clientX\n const y = event.clientY\n if (event.altKey) {\n const offset = getTotalOffset(event)\n RendererWorker.send(\n /* Editor.handleMouseMoveWithAltKey */ 'Editor.handleMouseMoveWithAltKey',\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n }\n // console.log(event.altKey)\n // RendererWorker.send(/* Editor.handleMouseMove */ 389, /* x */ x, /* y */ y)\n}\n\n/**\n *\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n // event.preventDefault()\n // const state = EditorHelper.getStateFromEvent(event)\n // TODO send editor id\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* Editor.setDeltaY */ 'Editor.setDeltaY',\n /* value */ deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* Editor.setDeltaY */ 'Editor.setDeltaY',\n /* value */ deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handlePaste = (event) => {\n event.preventDefault()\n const text = event.clipboardData.getData('text')\n RendererWorker.send(/* Editor.paste */ 'Editor.paste', /* text */ text)\n}\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n RendererWorker.send(\n /* Editor.handleScrollBarMouseMove */ 'Editor.handleScrollBarMove',\n /* y */ clientY\n )\n}\n\nexport const handleScrollBarThumbPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener('pointermove', handleScrollBarThumbPointerMove)\n target.removeEventListener('pointerup', handleScrollBarThumbPointerUp)\n}\n\nexport const handleScrollBarThumbPointerDown = (event) => {\n const { target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener('pointermove', handleScrollBarThumbPointerMove, {\n passive: false,\n })\n target.addEventListener('pointerup', handleScrollBarThumbPointerUp)\n}\n\nexport const handleScrollBarMouseDown = (event) => {\n event.preventDefault()\n const y = event.clientY\n RendererWorker.send(\n /* EditorHandleScrollBarClick.editorHandleScrollBarClick */ 'Editor.handleScrollBarClick',\n /* y */ y\n )\n}\n\nexport const handleScrollBarContextMenu = (event) => {\n event.preventDefault()\n event.stopPropagation()\n}\n\nconst toSimpleTouch = (touch) => {\n return {\n x: touch.clientX,\n y: touch.clientY,\n }\n}\n\nconst toSimpleTouchEvent = (event) => {\n const touches = Array.from(event.touches).map(toSimpleTouch)\n const changedTouches = Array.from(event.changedTouches).map(toSimpleTouch)\n return {\n touches,\n changedTouches,\n }\n}\n\n// TODO add touch cancel handler\n\n// TODO use touch events for scrolling\n\nexport const handleTouchStart = (event) => {\n const touchEvent = toSimpleTouchEvent(event)\n RendererWorker.send(\n /* EditorHandleTouchStart.editorHandleTouchStart */ 'Editor.handleTouchStart',\n /* touchEvent */ touchEvent\n )\n}\n\nexport const handleTouchMove = (event) => {\n const touchEvent = toSimpleTouchEvent(event)\n RendererWorker.send(\n /* EditorHandleTouchMove.editorHandleTouchMove */ 'Editor.handleTouchMove',\n /* touchEvent */ touchEvent\n )\n}\n\nexport const handleTouchEnd = (event) => {\n if (event.cancelable) {\n event.preventDefault()\n }\n const touchEvent = toSimpleTouchEvent(event)\n RendererWorker.send(\n /* EditorHandleTouchEnd.editorHandleTouchEnd */ 'Editor.handleTouchEnd',\n /* touchEvent */ touchEvent\n )\n}\n\nconst getRangeFromSelection = (selection) => {\n if (!selection.anchorNode) {\n return undefined\n }\n const $StartToken = selection.anchorNode.parentNode\n const $EndToken = selection.focusNode.parentNode\n const $StartRow = $StartToken.parentNode\n const $EndRow = $EndToken.parentNode\n const $Rows = $StartRow.parentNode\n let startRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $StartRow) {\n startRowIndex = i\n break\n }\n }\n let startColumnIndex = 0\n for (let i = 0; i < $StartRow.children.length; i++) {\n if ($StartRow.children[i] === $StartToken) {\n break\n }\n startColumnIndex += $StartRow.children[i].textContent.length\n }\n startColumnIndex += selection.anchorOffset\n let endRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $EndRow) {\n endRowIndex = i\n break\n }\n }\n let endColumnIndex = 0\n for (let i = 0; i < $EndRow.children.length; i++) {\n if ($EndRow.children[i] === $EndToken) {\n break\n }\n endColumnIndex += $EndRow.children[i].textContent.length\n }\n endColumnIndex += selection.focusOffset\n return {\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex,\n }\n}\n\nexport const handleContentEditableBeforeInput = (event) => {\n const selection = document.getSelection()\n const range = getRangeFromSelection(selection)\n if (!range) {\n console.error('[Editor] cannot handle input event without selection')\n return\n }\n RendererWorker.send(\n /* EditorHandleBeforeInputFromContentEditable.editorHandleBeforeInputFromContentEditable */ 'Editor.handleBeforeInputFromContentEditable',\n /* data */ event.data || '',\n /* range */ range\n )\n}\n\nexport const handleNativeSelectionChange = (event) => {\n // if (state.shouldIgnoreSelectionChange) {\n // state.shouldIgnoreSelectionChange = false\n // return\n // }\n // const selection = document.getSelection()\n // const range = getRangeFromSelection(selection)\n // if (!range) {\n // return\n // }\n // RendererWorker.send(\n // /* EditorHandleNativeSelectionChange.editorHandleNativeSelectionChange */ 'Editor.handleNativeSelectionChange',\n // /* range */ range\n // )\n}\n", "const create$Cursor = () => {\n const $Cursor = document.createElement('div')\n $Cursor.className = 'EditorCursor'\n return $Cursor\n}\n\nconst render$Cursor = ($Cursor, $Texts, cursor) => {\n $Cursor.style.top = `${cursor.top}px`\n const range = document.createRange()\n if (cursor.leftIndex === -1) {\n console.warn('cursor left is negative')\n $Cursor.style.left = '0px' // TODO need to compute column width, this would only work for monospace fonts\n return\n }\n const $Row = $Texts.children[cursor.topIndex]\n if (!$Row) {\n console.warn('no row', cursor, $Row)\n return\n }\n const $Node = $Row.children[cursor.leftIndex]\n if (!$Node) {\n console.warn('no node', cursor, $Row)\n return\n }\n if (cursor.leftIndex === 0 && cursor.remainingOffset === 0) {\n $Cursor.style.left = '0px'\n } else {\n const $TextNode = $Node.firstChild\n range.setStart($TextNode, cursor.remainingOffset)\n range.setEnd($TextNode, cursor.remainingOffset)\n const rect = range.getBoundingClientRect()\n const left = Math.round(rect.left)\n $Cursor.style.left = `${left}px`\n }\n}\n\nconst render$CursorsLess = ($Cursors, $Texts, cursors) => {\n for (let i = 0; i < $Cursors.children.length; i++) {\n render$Cursor($Cursors.children[i], $Texts, cursors[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Cursors.children.length; i < cursors.length; i++) {\n const $Cursor = create$Cursor()\n render$Cursor($Cursor, $Texts, cursors[i])\n fragment.append($Cursor)\n }\n $Cursors.append(fragment)\n}\n\nconst render$CursorsEqual = ($Cursors, $Texts, cursors) => {\n for (let i = 0; i < cursors.length; i++) {\n render$Cursor($Cursors.children[i], $Texts, cursors[i])\n }\n}\n\nconst render$CursorsMore = ($Cursors, $Texts, cursors) => {\n for (let i = 0; i < cursors.length; i++) {\n render$Cursor($Cursors.children[i], $Texts, cursors[i])\n }\n const diff = $Cursors.children.length - cursors.length\n for (let i = 0; i < diff; i++) {\n $Cursors.lastChild.remove()\n }\n}\n\nconst render$Cursors = ($Cursors, $Texts, cursors) => {\n if ($Cursors.children.length < cursors.length) {\n render$CursorsLess($Cursors, $Texts, cursors)\n } else if ($Cursors.children.length === cursors.length) {\n render$CursorsEqual($Cursors, $Texts, cursors)\n } else {\n render$CursorsMore($Cursors, $Texts, cursors)\n }\n}\n\nconst renderCursorsNative = (state, cursors) => {\n if (cursors.length > 1) {\n console.warn('[editor] cannot render more than one native cursor')\n return\n }\n if (cursors.length === 0) {\n return\n }\n const cursor = cursors[0]\n const $Rows = state.$LayerText\n const $StartRow = $Rows.children[cursor.rowIndex]\n let startOffset = 0\n let $Anchor\n for (let i = 0; i < $StartRow.children.length; i++) {\n if (startOffset >= cursor.columnIndex) {\n console.log({ startOffset })\n $Anchor = $StartRow.children[i - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n break\n }\n startOffset += $StartRow.children[i].textContent.length\n }\n if (!$Anchor) {\n $Anchor = $StartRow.children[$StartRow.children.length - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n }\n const selection = document.getSelection()\n if (\n selection.anchorNode === $Anchor &&\n selection.focusNode === $Anchor &&\n selection.anchorOffset === startOffset &&\n selection.focusOffset === startOffset\n ) {\n return\n }\n state.shouldIgnoreSelectionChange = true\n const documentRange = document.createRange()\n documentRange.setStart($Anchor, startOffset)\n documentRange.setEnd($Anchor, startOffset)\n selection.removeAllRanges()\n selection.addRange(documentRange)\n}\n\nexport const setCursors = (state, cursors) => {\n render$Cursors(state.$LayerCursor, state.$LayerText, cursors)\n}\n", "const create$Diagnostic = () => {\n const $Diagnostic = document.createElement('div')\n $Diagnostic.className = 'EditorDiagnostic'\n return $Diagnostic\n}\n\nconst render$Diagnostic = ($Diagnostic, diagnostic) => {\n $Diagnostic.style.top = `${diagnostic.top}px`\n $Diagnostic.style.left = `${diagnostic.left}px`\n $Diagnostic.style.width = `${diagnostic.width}px`\n $Diagnostic.style.height = `${diagnostic.height}px`\n}\n\nconst render$DiagnosticsLess = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < $Diagnostics.children.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Diagnostics.children.length; i < diagnostics.length; i++) {\n const $Diagnostic = create$Diagnostic()\n render$Diagnostic($Diagnostic, diagnostics[i])\n fragment.append($Diagnostic)\n }\n $Diagnostics.append(fragment)\n}\n\nconst render$DiagnosticsEqual = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n}\n\nconst render$DiagnosticsMore = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const diff = $Diagnostics.children.length - diagnostics.length\n for (let i = 0; i < diff; i++) {\n $Diagnostics.lastChild.remove()\n }\n}\n\nconst render$Diagnostics = ($Diagnostics, diagnostics) => {\n if ($Diagnostics.children.length < diagnostics.length) {\n render$DiagnosticsLess($Diagnostics, diagnostics)\n } else if ($Diagnostics.children.length === diagnostics.length) {\n render$DiagnosticsEqual($Diagnostics, diagnostics)\n } else {\n render$DiagnosticsMore($Diagnostics, diagnostics)\n }\n}\n\nexport const setDiagnostics = (state, diagnostics) => {\n render$Diagnostics(state.$LayerDiagnostics, diagnostics)\n}\n", "export const setPosition = (state, scrollBarY, scrollBarHeight) => {\n state.$ScrollBarThumb.style.top = `${scrollBarY}px`\n state.$ScrollBarThumb.style.height = `${scrollBarHeight}px`\n}\n\n// TODO scrollbar decorations should be own layer maybe\nconst create$ScrollBarDiagnostic = () => {\n const $ScrollBarDiagnostic = document.createElement('div')\n $ScrollBarDiagnostic.className = 'ScrollBarDiagnostic'\n return $ScrollBarDiagnostic\n}\n\nconst render$ScrollBarDiagnostic = (\n $ScrollBarDiagnostic,\n scrollBarDiagnostic\n) => {\n $ScrollBarDiagnostic.style.top = `${scrollBarDiagnostic.top}px`\n}\n\nconst render$ScrollBarDiagnosticsLess = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n for (let i = 0; i < $ScrollBarDiagnostics.children.length; i++) {\n render$ScrollBarDiagnostic(\n $ScrollBarDiagnostics.children[i],\n scrollBarDiagnostics[i]\n )\n }\n const fragment = document.createDocumentFragment()\n for (\n let i = $ScrollBarDiagnostics.children.length;\n i < scrollBarDiagnostics.length;\n i++\n ) {\n const $ScrollBarDiagnostic = create$ScrollBarDiagnostic()\n render$ScrollBarDiagnostic($ScrollBarDiagnostic, scrollBarDiagnostics[i])\n fragment.append($ScrollBarDiagnostic)\n }\n $ScrollBarDiagnostics.append(fragment)\n}\n\nconst render$ScrollBarDiagnosticsEqual = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic(\n $ScrollBarDiagnostics.children[i],\n scrollBarDiagnostics[i]\n )\n }\n}\n\nconst render$ScrollBarDiagnosticsMore = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic(\n $ScrollBarDiagnostics.children[i],\n scrollBarDiagnostics[i]\n )\n }\n const diff =\n $ScrollBarDiagnostics.children.length - scrollBarDiagnostics.length\n for (let i = 0; i < diff; i++) {\n $ScrollBarDiagnostics.lastChild.remove()\n }\n}\n\nconst render$ScrollBarDiagnostics = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n if ($ScrollBarDiagnostics.children.length < scrollBarDiagnostics.length) {\n render$ScrollBarDiagnosticsLess($ScrollBarDiagnostics, scrollBarDiagnostics)\n } else if (\n $ScrollBarDiagnostics.children.length === scrollBarDiagnostics.length\n ) {\n render$ScrollBarDiagnosticsEqual(\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n )\n } else {\n render$ScrollBarDiagnosticsMore($ScrollBarDiagnostics, scrollBarDiagnostics)\n }\n}\n\nexport const setDiagnostics = (editor, scrollBarDiagnostics) => {\n render$ScrollBarDiagnostics(\n editor.$ScrollBarDiagnostics,\n scrollBarDiagnostics\n )\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as Assert from '../Assert/Assert.js'\n\nconst create$Selection = () => {\n const $Selection = document.createElement('div')\n $Selection.className = 'EditorSelection'\n return $Selection\n}\n\nconst render$Selection = ($Selection, selections, i) => {\n Assert.object($Selection)\n Assert.number(i)\n\n const top = selections[i * 4]\n const left = selections[i * 4 + 1]\n const width = selections[i * 4 + 2]\n const height = selections[i * 4 + 3]\n // TODO have many decorations per row\n // no absolute positioning\n $Selection.style.top = `${top}px`\n $Selection.style.left = `${left}px`\n $Selection.style.width = `${width}px`\n $Selection.style.height = `${height}px`\n}\n\nconst render$SelectionsLess = (\n $Selections,\n childCount,\n selections,\n selectionCount\n) => {\n for (let i = 0, j = 0; i < childCount; i++, j += 4) {\n render$Selection($Selections.children[i], selections, i)\n }\n const fragment = document.createDocumentFragment()\n for (let i = childCount; i < selectionCount; i++) {\n const $Selection = create$Selection()\n render$Selection($Selection, selections, i)\n fragment.append($Selection)\n }\n $Selections.append(fragment)\n}\n\nconst render$SelectionsEqual = (\n $Selections,\n childCount,\n selections,\n selectionCount\n) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n}\n\nconst render$SelectionsMore = (\n $Selections,\n childCount,\n selections,\n selectionCount\n) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n const diff = childCount - selectionCount\n for (let i = 0; i < diff; i++) {\n $Selections.lastChild.remove()\n }\n}\n\nconst render$Selections = ($Selections, selections) => {\n const selectionsCount = selections.length / 4\n const childCount = $Selections.children.length\n if (childCount < selectionsCount) {\n render$SelectionsLess($Selections, childCount, selections, selectionsCount)\n } else if (childCount === selectionsCount) {\n render$SelectionsEqual($Selections, childCount, selections, selectionsCount)\n } else {\n render$SelectionsMore($Selections, childCount, selections, selectionsCount)\n }\n}\n\nconst renderSelectionsNative = (state, selections) => {\n if (selections.length > 1) {\n console.warn('[editor] cannot render more than one native selection')\n }\n}\n\nexport const setSelections = (state, selections) => {\n render$Selections(state.$LayerSelections, selections)\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.className = 'EditorRow'\n return $Row\n}\n\nconst create$Token = () => {\n const $Token = document.createElement('span')\n $Token.className = 'Token'\n return $Token\n}\n\n// TODO maybe use createTextNode (codeMirror uses that)\n// This function seems to be a hot spot\nconst render$Token = ($Token, text, className) => {\n $Token.className = className\n if ($Token.firstChild) {\n // recycle text node\n $Token.firstChild.nodeValue = text\n } else {\n $Token.textContent = text\n }\n}\n\nconst render$LineLess = ($Line, lineInfo) => {\n let i = 0\n while (i < $Line.children.length * 2) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const fragment = document.createDocumentFragment()\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n const $Token = create$Token()\n render$Token($Token, text, className)\n fragment.append($Token)\n }\n $Line.append(fragment)\n}\n\nconst render$LineEqual = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n}\n\nconst render$LineMore = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const diff = $Line.children.length - lineInfo.length / 2\n for (let i = lineInfo.length; i < lineInfo.length + diff; i++) {\n $Line.lastChild.remove()\n }\n}\n\nconst render$Line = ($Line, lineInfo) => {\n if ($Line.children.length < lineInfo.length / 2) {\n render$LineLess($Line, lineInfo)\n } else if ($Line.children.length === lineInfo.length / 2) {\n render$LineEqual($Line, lineInfo)\n } else {\n render$LineMore($Line, lineInfo)\n }\n}\n\nconst render$LinesLess = ($Lines, lineInfos) => {\n for (let i = 0; i < $Lines.children.length; i++) {\n render$Line($Lines.children[i], lineInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Lines.children.length; i < lineInfos.length; i++) {\n const $Line = create$Row()\n render$Line($Line, lineInfos[i])\n fragment.append($Line)\n }\n $Lines.append(fragment)\n}\n\nconst render$LinesEqual = ($Lines, lineInfos) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i])\n }\n}\n\nconst render$LinesMore = ($Lines, lineInfos) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i])\n }\n const diff = $Lines.children.length - lineInfos.length\n for (let i = lineInfos.length; i < lineInfos.length + diff; i++) {\n $Lines.lastChild.remove()\n }\n}\n\nconst render$Lines = ($Lines, lineInfos) => {\n Assert.object($Lines)\n Assert.array(lineInfos)\n if ($Lines.children.length < lineInfos.length) {\n render$LinesLess($Lines, lineInfos)\n } else if ($Lines.children.length === lineInfos.length) {\n render$LinesEqual($Lines, lineInfos)\n } else {\n render$LinesMore($Lines, lineInfos)\n }\n}\n\nexport const setLineInfos = (state, lineInfos) => {\n render$Lines(state.$LayerText, lineInfos)\n}\n", "// TODO so many things in this file\n\nimport * as Assert from '../Assert/Assert.js'\nimport * as EditorEvents from './EditorEvents.js'\nimport * as LayerCursor from './LayerCursor.js'\nimport * as LayerDiagnostics from './LayerDiagnostics.js'\nimport * as LayerScrollBar from './LayerScrollBar.js'\nimport * as LayerSelections from './LayerSelections.js'\nimport * as LayerText3 from './LayerText.js'\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\n// TODO all create functions should have no arguments\n// and be split into two parts\n// 1. create -> only create dom elements\n// 2. render -> fill elements with attributes and data\n// that way all dom nodes can be recycled\nexport const create = () => {\n const $EditorInput = document.createElement('textarea')\n $EditorInput.className = 'EditorInput'\n $EditorInput.ariaAutoComplete = 'list'\n $EditorInput.ariaRoleDescription = 'editor'\n $EditorInput.ariaMultiLine = 'true'\n $EditorInput.setAttribute('autocomplete', 'off')\n $EditorInput.setAttribute('autocapitalize', 'off')\n $EditorInput.setAttribute('autocorrect', 'off')\n $EditorInput.setAttribute('wrap', 'off')\n $EditorInput.setAttribute('spellcheck', 'false')\n // @ts-ignore\n $EditorInput.role = 'textbox'\n $EditorInput.onpaste = EditorEvents.handlePaste\n // TODO where to best put listeners (side effects)\n $EditorInput.addEventListener('beforeinput', EditorEvents.handleBeforeInput)\n $EditorInput.addEventListener(\n 'compositionstart',\n EditorEvents.handleCompositionStart\n )\n $EditorInput.addEventListener(\n 'compositionupdate',\n EditorEvents.handleCompositionUpdate\n )\n $EditorInput.addEventListener(\n 'compositionend',\n EditorEvents.handleCompositionEnd\n )\n $EditorInput.onfocus = EditorEvents.handleFocus\n $EditorInput.onblur = EditorEvents.handleBlur\n $EditorInput.oncut = EditorEvents.handleCut\n\n const $LayerCursor = document.createElement('div')\n $LayerCursor.className = 'LayerCursor'\n\n const $LayerText = document.createElement('div')\n $LayerText.className = 'EditorRows'\n\n $LayerText.addEventListener('mousedown', EditorEvents.handleMouseDown)\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n $ScrollBarThumb.onpointerdown = EditorEvents.handleScrollBarThumbPointerDown\n\n // TODO only create $ScrollBarDiagnostics lazily when there are actually diagnostics\n const $ScrollBarDiagnostics = document.createElement('div')\n $ScrollBarDiagnostics.className = 'EditorScrollBarDiagnostics'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBar'\n $ScrollBar.onmousedown = EditorEvents.handleScrollBarMouseDown\n $ScrollBar.oncontextmenu = EditorEvents.handleScrollBarContextMenu\n $ScrollBar.append($ScrollBarThumb)\n\n // $EditorRows.addEventListener('mousemove', handleMouseMove, { passive: true })\n\n // TODO function should be hoisted (maybe -> one listener for all editors (definitely))\n // only problem is $EditorInput closure\n\n // TODO when mousedown on completions -> this shouldn't be called\n\n const $LayerSelections = document.createElement('div')\n $LayerSelections.className = 'Selections'\n\n // TODO maybe use css grid to position layers on top of each other\n // TODO maybe merge layerDiagnostics with LayerSelections\n // TODO maybe this should be more generic, e.g. LayerDecorations\n // where decoration = {top,left, width, height, type/className}\n const $LayerDiagnostics = document.createElement('div')\n $LayerDiagnostics.className = 'LayerDiagnostics'\n\n const $EditorLayers = document.createElement('div')\n $EditorLayers.className = 'EditorLayers'\n $EditorLayers.append(\n $LayerSelections,\n $LayerText,\n $LayerCursor,\n $LayerDiagnostics\n )\n\n const $Editor = document.createElement('div')\n $Editor.className = 'Viewlet Editor'\n $Editor.dataset.viewletId = 'EditorText'\n // @ts-ignore\n $Editor.role = 'code'\n $Editor.append($EditorInput, $EditorLayers, $ScrollBarDiagnostics, $ScrollBar)\n $Editor.addEventListener('contextmenu', EditorEvents.handleContextMenu)\n $Editor.addEventListener('wheel', EditorEvents.handleWheel, { passive: true })\n $Editor.addEventListener('mousemove', EditorEvents.handlePointerMove, {\n passive: true,\n })\n return {\n $LayerCursor,\n $LayerSelections,\n $LayerText,\n $EditorLayers,\n $Editor,\n $EditorInput,\n $ScrollBarThumb,\n $LayerDiagnostics,\n $ScrollBarDiagnostics,\n shouldIgnoreSelectionChange: false,\n $Viewlet: $Editor,\n }\n}\n\nexport const setText = (state, textInfos) => {\n LayerText3.setLineInfos(state, textInfos)\n}\n\nexport const setSettings = (state, fontSize, lineHeight, letterSpacing) => {\n // TODO many properties on <html> element in chrome devtools looks ugly\n // maybe put styles into a stylesheet instead of using inline styles?\n const root = document.documentElement\n root.style.setProperty('--EditorFontSize', `${fontSize}px`)\n root.style.setProperty('--EditorLineHeight', `${lineHeight}px`)\n root.style.setProperty('--EditorLetterSpacing', letterSpacing)\n}\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n}\n\nexport const renderCursors = (state, cursorInfos) => {\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const renderSelections = (state, selectionInfos) => {\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursors = (state, textInfos, cursorInfos) => {\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const setSelections = (state, cursorInfos, selectionInfos) => {\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursorsAndSelections = (\n state,\n scrollBarY,\n scrollBarHeight,\n textInfos,\n cursorInfos,\n selectionInfos\n) => {\n Assert.object(state)\n Assert.number(scrollBarY)\n Assert.number(scrollBarHeight)\n Assert.array(textInfos)\n Assert.array(cursorInfos)\n Assert.array(selectionInfos)\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\n// TODO this should be in editor\nconst getColumnWidth = () => {\n const testSpan = document.createElement('span')\n testSpan.textContent = 'a'\n testSpan.style.fontSize = '15px'\n testSpan.style.letterSpacing = '0.5px'\n testSpan.style.position = 'fixed'\n testSpan.style.fontFamily = \"'Fira Code'\"\n document.body.append(testSpan)\n const result = Number.parseFloat(getComputedStyle(testSpan).width) / 1\n testSpan.remove()\n return result\n}\n\nexport const mount = (state, $Parent) => {\n $Parent.append(state.$Editor)\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $EditorInput } = state\n if (!$EditorInput.isConnected) {\n console.warn('unmounted editor cannot be focused')\n }\n $EditorInput.focus()\n}\n\nexport const setLanguageId = async (state, languageId) => {\n // state.languageId = languageId\n // state.$Editor.dataset.languageId = languageId\n // loadTokenizer(languageId)\n}\n\nexport const renderDiagnostics = (state, diagnostics, scrollBarDiagnostics) => {\n LayerDiagnostics.setDiagnostics(state, diagnostics)\n LayerScrollBar.setDiagnostics(state, scrollBarDiagnostics)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Widget from '../Widget/Widget.js'\n\nexport const create = Editor.create\n\nexport const setText = Editor.setText\n\nexport const setSelections = Editor.setSelections\n\nexport const handleError = (state, error) => {\n state.$Viewlet.textContent = error\n}\n\nexport const setScrollBar = Editor.setScrollBar\n\nexport const highlightAsLink = (state, relativeY, tokenIndex) => {\n const $Row = state.$LayerText.children[relativeY]\n if (!$Row) {\n console.info('no row found')\n return\n }\n const $Token = $Row.children[tokenIndex + 1]\n console.log($Token)\n $Token.classList.add('EditorGoToDefinitionLink')\n // console.log({ state, tokenIndex, relativeY })\n}\n\nexport const showOverlayMessage = (state, x, y, content) => {\n const $OverLayMessage = document.createElement('div')\n $OverLayMessage.className = 'EditorOverlayMessage'\n $OverLayMessage.style.position = 'fixed'\n $OverLayMessage.textContent = content\n $OverLayMessage.style.top = `${y}px`\n $OverLayMessage.style.left = `${x}px`\n Widget.append($OverLayMessage)\n}\n\nexport const hideOverlayMessage = (state) => {\n // TODO pass id of the overlay message and remove widget by id\n for (const $Widget of Widget.state.widgetSet) {\n if ($Widget.className === 'EditorOverlayMessage') {\n Widget.remove($Widget)\n }\n }\n}\n\nexport const focus = Editor.focus\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerMove = (event) => {\n const { pointerId, clientX, clientY } = event\n RendererWorker.send(\n 'EditorImage.handlePointerMove',\n pointerId,\n clientX,\n clientY\n )\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerUp = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n // @ts-ignore\n target.releasePointerCapture(pointerId)\n RendererWorker.send(\n 'EditorImage.handlePointerUp',\n pointerId,\n clientX,\n clientY\n )\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerDown = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n // @ts-ignore\n target.setPointerCapture(pointerId)\n RendererWorker.send(\n 'EditorImage.handlePointerDown',\n pointerId,\n clientX,\n clientY\n )\n}\n\n/**\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { clientX, clientY, deltaX, deltaY } = event\n RendererWorker.send(\n 'EditorImage.handleWheel',\n clientX,\n clientY,\n deltaX,\n deltaY\n )\n}\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send('EditorImage.handleContextMenu', clientX, clientY)\n}\n", "import * as ViewletEditorImageEvents from './ViewletEditorImageEvents.js'\n\nexport const name = 'EditorImage'\n\nexport const create = () => {\n const $Image = document.createElement('img')\n $Image.className = 'ViewletImage'\n $Image.draggable = false\n\n const $ImageWrapper = document.createElement('div')\n $ImageWrapper.className = 'ImageWrapper'\n $ImageWrapper.append($Image)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'EditorImage'\n $Viewlet.append($ImageWrapper)\n $Viewlet.onpointerdown = ViewletEditorImageEvents.handlePointerDown\n $Viewlet.onpointerup = ViewletEditorImageEvents.handlePointerUp\n // TODO maybe set pointer move handle once pointer down is called\n // but that would require keeping track of how many pointers are down\n // and removing the listener when pointerDownCount === 0\n // TODO not sure whether this event listener should be passive or not\n // doesn't seem to make a difference\n $Viewlet.addEventListener(\n 'pointermove',\n ViewletEditorImageEvents.handlePointerMove,\n { passive: true }\n )\n $Viewlet.oncontextmenu = ViewletEditorImageEvents.handleContextMenu\n $Viewlet.addEventListener('wheel', ViewletEditorImageEvents.handleWheel, {\n passive: true,\n })\n return {\n $Viewlet,\n $Image,\n $ImageWrapper,\n }\n}\n\nexport const setTransform = (state, transform) => {\n const { $ImageWrapper } = state\n $ImageWrapper.style.transform = transform\n}\n\nexport const setSrc = (state, src) => {\n const { $Image } = state\n $Image.src = src\n}\n\nexport const setDragging = (state, isDragging) => {\n console.log('set dragging', isDragging)\n const { $Viewlet } = state\n $Viewlet.classList.toggle('Dragging', isDragging)\n}\n\nexport const dispose = (state) => {}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const name = 'Clock'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = name\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = () => {}\n\nexport const setTime = (state, time) => {\n Assert.object(state)\n Assert.string(time)\n state.$Viewlet.textContent = time\n}\n", "import * as Layout from '../Layout/Layout.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $SideBarTitleAreaTitle = document.createElement('h2')\n $SideBarTitleAreaTitle.id = 'SideBarTitleAreaTitle'\n\n const $SideBarTitleAreaButtons = document.createElement('div')\n $SideBarTitleAreaButtons.id = 'SideBarTitleAreaButtons'\n\n const $SideBarTitleArea = document.createElement('div')\n $SideBarTitleArea.id = 'SideBarTitleArea'\n $SideBarTitleArea.append($SideBarTitleAreaTitle, $SideBarTitleAreaButtons)\n\n // const $SideBarContent = document.createElement('div')\n // $SideBarContent.id = 'SideBarContent'\n\n const $SideBar = Layout.state.$SideBar\n $SideBar.role = 'complementary'\n $SideBar.ariaRoleDescription = 'Side Bar'\n $SideBar.append($SideBarTitleArea)\n\n return {\n $SideBar,\n $SideBarTitleArea,\n $SideBarTitleAreaButtons,\n $SideBarContent: undefined,\n $SideBarTitleAreaTitle,\n }\n}\n\nexport const dispose = (state) => {\n Assert.object(state)\n state.$SideBar.replaceChildren()\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n const $SideBarTitleAreaTitle = state.$SideBarTitleAreaTitle\n $SideBarTitleAreaTitle.title = name\n $SideBarTitleAreaTitle.textContent = name\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'SideBarContent'\n if (state.$SideBarContent) {\n state.$SideBarContent.replaceWith($Viewlet)\n } else {\n state.$SideBar.append($Viewlet)\n }\n state.$SideBarContent = $Viewlet\n}\n\nexport const focus = async () => {\n // await\n console.log('todo focus sidebar')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst create$PanelTab = (label, index) => {\n const $PanelTab = document.createElement('div')\n $PanelTab.className = 'PanelTab'\n // @ts-ignore\n $PanelTab.role = 'tab'\n $PanelTab.textContent = label\n $PanelTab.id = `PanelTab-${index + 1}`\n return $PanelTab\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst panelTabsHandleClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'PanelTab': {\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* Panel.selectIndex */ 'Panel.selectIndex',\n /* index */ index\n )\n break\n }\n default:\n break\n }\n}\n\nexport const create = () => {\n const $PanelTabs = document.createElement('div')\n $PanelTabs.id = 'PanelTabs'\n // @ts-ignore\n $PanelTabs.role = 'tablist'\n $PanelTabs.onmousedown = panelTabsHandleClick\n $PanelTabs.tabIndex = -1\n const $PanelHeader = document.createElement('div')\n $PanelHeader.id = 'PanelHeader'\n $PanelHeader.append($PanelTabs)\n // const $PanelContent = document.createElement('div')\n // $PanelContent.id = 'PanelContent'\n const $Panel = Layout.state.$Panel\n $Panel.append($PanelHeader)\n $Panel.ariaLabel = 'Panel'\n return {\n $Panel,\n $PanelTabs,\n $PanelHeader,\n $PanelContent: undefined,\n }\n // await openViewlet('Terminal')\n}\n\nexport const setTabs = (state, tabs) => {\n state.$PanelTabs.append(...tabs.map(create$PanelTab))\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n Assert.object($Viewlet)\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'PanelContent'\n if (state.$PanelContent) {\n state.$PanelContent.replaceWith($Viewlet)\n } else {\n state.$Panel.append($Viewlet)\n }\n state.$PanelContent = $Viewlet\n}\n\n// TODO add test for focus method\nexport const focus = (state) => {\n Assert.object(state)\n if (!state.currentViewlet) {\n return\n }\n state.currentViewlet.factory.focus(state.currentViewlet.state)\n}\n\nexport const dispose = (state) => {\n if (state.$PanelContent) {\n state.$PanelContent.remove()\n state.$PanelContent = undefined\n }\n if (state.$PanelTabs) {\n state.$PanelTabs.remove()\n state.$PanelTabs = undefined\n }\n if (state.$PanelHeader) {\n state.$PanelHeader.remove()\n state.$PanelHeader = undefined\n }\n}\n\nexport const setSelectedIndex = (state, oldIndex, newIndex) => {\n const { $PanelTabs } = state\n if (oldIndex !== -1) {\n const $PanelTab = $PanelTabs.children[oldIndex]\n $PanelTab.removeAttribute('aria-selected')\n }\n if (newIndex !== -1) {\n const $PanelTab = $PanelTabs.children[newIndex]\n $PanelTab.ariaSelected = true\n $PanelTabs.setAttribute('aria-activedescendant', $PanelTab.id)\n }\n}\n", "export const Tab = 1\n\nexport const Button = 2\n", "import * as Focus from '../Focus/Focus.js'\nimport * as MouseEventTypes from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst get$ItemFromEvent = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'ActivityBarItemIcon':\n return $Target.parentNode\n case 'ActivityBarItem':\n return $Target\n default:\n return undefined\n }\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nexport const handleMousedown = (event) => {\n if (event.button !== MouseEventTypes.LeftClick) {\n return\n }\n const $Item = get$ItemFromEvent(event)\n if (!$Item) {\n return\n }\n event.preventDefault()\n event.stopPropagation()\n const index = getNodeIndex($Item)\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* ActivityBar.handleClick */ 'ActivityBar.handleClick',\n /* index */ index,\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n // TODO also move side bar position command\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* activityBarHandleContextMenu */ 'ActivityBar.handleContextMenu',\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const handleBlur = () => {}\n\nexport const handleFocusIn = () => {\n Focus.setFocus('activityBar')\n}\n", "import * as ActivityBarItemFlags from '../ActivityBarItemFlags/ActvityBarItemFlags.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as ViewletActivityBarEvents from './ViewletActivityBarEvents.js'\n\n// TODO set aria-selected false when sidebar is collapsed\n\nconst create$ActivityBarItemIcon = (icon) => {\n const $ActivityBarItemIcon = document.createElement('div')\n $ActivityBarItemIcon.className = 'ActivityBarItemIcon'\n // @ts-ignore\n $ActivityBarItemIcon.style.maskImage = `url(${icon})`\n $ActivityBarItemIcon.style.webkitMaskImage = `url(${icon})`\n return $ActivityBarItemIcon\n}\n\n// TODO assetDir might not work with non-builtin extension icons\nconst create$ActivityBarItem = (item) => {\n const assetDir = Platform.getAssetDir()\n const $ActivityBarItemIcon = create$ActivityBarItemIcon(\n `${assetDir}${item.icon}`\n )\n const $ActivityBarItem = document.createElement('div')\n $ActivityBarItem.className = 'ActivityBarItem'\n $ActivityBarItem.ariaLabel = '' // aria-label is determined by content TODO is empty aria-label necessary or can it be left off?\n $ActivityBarItem.title = item.title\n $ActivityBarItem.tabIndex = -1\n $ActivityBarItem.dataset.viewletId = item.id\n if (item.keyShortcuts) {\n $ActivityBarItem.ariaKeyShortcuts = item.keyShortcuts\n }\n switch (item.flags) {\n case ActivityBarItemFlags.Tab:\n // @ts-ignore\n $ActivityBarItem.role = 'tab'\n $ActivityBarItem.ariaSelected = 'false'\n break\n case ActivityBarItemFlags.Button:\n // @ts-ignore\n $ActivityBarItem.role = 'button'\n $ActivityBarItem.ariaHasPopup = 'true'\n break\n default:\n console.warn(`unknown activity bar item flags ${item.flags}`)\n break\n }\n $ActivityBarItem.append($ActivityBarItemIcon)\n return $ActivityBarItem\n}\n\nexport const name = 'ActivityBar'\n\nexport const create = () => {\n const $ActivityBar = Layout.state.$ActivityBar\n $ActivityBar.role = 'toolbar'\n $ActivityBar.ariaRoleDescription = 'Activity Bar'\n $ActivityBar.ariaOrientation = 'vertical'\n // $ActivityBar.append(...activityBarItems.map(create$ActivityBarItem))\n $ActivityBar.onmousedown = ViewletActivityBarEvents.handleMousedown\n $ActivityBar.oncontextmenu = ViewletActivityBarEvents.handleContextMenu\n $ActivityBar.onblur = ViewletActivityBarEvents.handleBlur\n $ActivityBar.addEventListener(\n 'focusin',\n ViewletActivityBarEvents.handleFocusIn\n )\n // $ActivityBar.children[focusedIndex].tabIndex = 0\n return {\n $ActivityBar,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const setItems = (state, activityBarItems) => {\n Assert.object(state)\n Assert.array(activityBarItems)\n const $ActivityBar = state.$ActivityBar\n $ActivityBar.replaceChildren(...activityBarItems.map(create$ActivityBarItem))\n}\n\nexport const selectIndex = (state, oldIndex, newIndex) => {\n if (oldIndex !== -1) {\n const $OldItem = state.$ActivityBar.children[oldIndex]\n $OldItem.ariaSelected = 'false'\n if (newIndex !== -1) {\n $OldItem.tabIndex = -1\n }\n }\n if (newIndex !== -1) {\n const $NewItem = state.$ActivityBar.children[newIndex]\n $NewItem.ariaSelected = 'true'\n $NewItem.tabIndex = 0\n }\n}\n\nconst focus$Item = ($Item) => {\n Focus.focus($Item, 'activityBar')\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n const { $ActivityBar } = state\n if (oldIndex !== -1) {\n const $OldItem = $ActivityBar.children[oldIndex]\n $OldItem.tabIndex = -1\n $OldItem.classList.remove('FocusOutline')\n }\n if (newIndex !== -1) {\n const $NewItem = $ActivityBar.children[newIndex]\n $NewItem.tabIndex = 0\n $NewItem.classList.add('FocusOutline')\n focus$Item($NewItem)\n }\n}\n\nexport const setBadgeCount = (state, index, count) => {\n const { $ActivityBar } = state\n const $Item = $ActivityBar.children[index]\n const $Badge = document.createElement('div')\n $Badge.className = 'ActivityBarItemBadge'\n $Badge.textContent = `${count}`\n // @ts-ignore\n $Item.append($Badge)\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getTargetIndex = ($Target) => {\n switch ($Target.className) {\n case 'QuickPickItem':\n case 'QuickPickItem Focused':\n return getNodeIndex($Target)\n case 'QuickPickItemLabel':\n return getNodeIndex($Target.parentNode)\n default:\n return -1\n }\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* QuickPick.handleWheel */ 'QuickPick.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* QuickPick.handleWheel */ 'QuickPick.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handleMouseDown = (event) => {\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send(\n /* QuickPick.selectIndex */ 'QuickPick.handleClickAt',\n /* x */ clientX,\n /* y */ clientY\n )\n}\n\n// TODO beforeinput event should prevent input event maybe\n// const handleBeforeInput = (event) => {\n// if (!event.data) {\n// return\n// }\n// const value = event.target.value + event.data\n// RendererWorker.send(\n// /* quickPickHandleInput */ 'QuickPick.handleInput',\n// /* value */ value,\n// )\n// }\n\nexport const handleInput = (event) => {\n const $Target = event.target\n RendererWorker.send(\n /* quickPickHandleInput */ 'QuickPick.handleInput',\n /* value */ $Target.value\n )\n}\n\nexport const handleBlur = (event) => {\n RendererWorker.send(/* QuickPick.handleBlur */ 'QuickPick.handleBlur')\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const handleBeforeInput = (event) => {\n event.preventDefault()\n const { target, inputType, data } = event\n const { selectionStart, selectionEnd } = target\n RendererWorker.send(\n 'QuickPick.handleBeforeInput',\n /* inputType */ inputType,\n /* data */ data,\n /* selectionStart */ selectionStart,\n /* selectionEnd */ selectionEnd\n )\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletQuickPickEvents from './ViewletQuickPickEvents.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst activeId = 'QuickPickItemActive'\n\n// TODO forbidden:\n// 1. methods\n// 2. functions inside functions\n\n/**\n * @enum {string}\n */\nconst ClassNames = {\n Label: 'Label',\n QuickPickItem: 'QuickPickItem',\n Icon: 'Icon',\n QuickPickItemDescription: 'QuickPickItemDescription',\n QuickPickStatus: 'QuickPickStatus',\n}\n\n/**\n * @enum {string}\n */\nconst Ids = {\n QuickPickHeader: 'QuickPickHeader',\n QuickPickItems: 'QuickPickItems',\n QuickPick: 'QuickPick',\n}\n\n/**\n * @enum {string}\n */\nconst Roles = {\n ListBox: 'listbox',\n ComboBox: 'combobox',\n Option: 'option',\n}\n\nconst create$QuickPickItem = () => {\n // TODO many quickPick items may not have description -> avoid creating description dom nodes if there is no description\n const $QuickPickItemLabelText = document.createTextNode('')\n\n const $QuickPickItemLabel = document.createElement('div')\n $QuickPickItemLabel.className = ClassNames.Label\n $QuickPickItemLabel.append($QuickPickItemLabelText)\n\n const $QuickPickItemIcon = document.createElement('i')\n $QuickPickItemIcon.className = ClassNames.Icon\n const $QuickPickItem = document.createElement('div') // TODO ul/li would be better for structure but might be slower\n $QuickPickItem.className = ClassNames.QuickPickItem\n // @ts-ignore\n $QuickPickItem.role = Roles.Option\n $QuickPickItem.append($QuickPickItemIcon, $QuickPickItemLabel)\n return $QuickPickItem\n}\n\n// TODO add test with show and slicedItems length is 0\n\nconst create$QuickPickDescription = () => {\n const $QuickPickItemDescription = document.createElement('div')\n $QuickPickItemDescription.className = ClassNames.QuickPickItemDescription\n return $QuickPickItemDescription\n}\n\nconst render$QuickPickItemLess = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n const $QuickPickItemDescription = create$QuickPickDescription()\n // render$QuickPickItemDescription($QuickPickItemDescription, quickPickItem)\n\n $QuickPickItem.append($QuickPickItemDescription)\n}\n\nconst render$QuickPickItemLabel = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[1].firstChild.nodeValue = quickPickItem.label\n}\n\nconst render$QuickPickItemIcon = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[0].className = `Icon${quickPickItem.icon}`\n}\n\nconst render$QuickPickItemEqual = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem, quickPickItem)\n render$QuickPickItemIcon($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemMore = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n $QuickPickItem.lastChild.remove()\n}\n\nconst render$QuickPickItem = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.ariaPosInSet = `${quickPickItem.posInSet}` // TODO pass correct number as prop\n $QuickPickItem.ariaSetSize = `${quickPickItem.setSize}`\n $QuickPickItem.quickPickItem = quickPickItem\n render$QuickPickItemEqual($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemsLess = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < $QuickPickItems.children.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const fragment = document.createDocumentFragment()\n for (\n let i = $QuickPickItems.children.length;\n i < quickPickItems.length;\n i++\n ) {\n const $QuickPickItem = create$QuickPickItem()\n render$QuickPickItem($QuickPickItem, quickPickItems[i])\n fragment.append($QuickPickItem)\n }\n $QuickPickItems.append(fragment)\n}\n\nconst render$QuickPickItemsEqual = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n}\n\nconst render$QuickPickItemsMore = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const diff = $QuickPickItems.children.length - quickPickItems.length\n for (let i = 0; i < diff; i++) {\n $QuickPickItems.lastChild.remove()\n }\n}\n\nconst render$QuickPickItems = ($QuickPickItems, quickPickItems) => {\n if ($QuickPickItems.children.length < quickPickItems.length) {\n render$QuickPickItemsLess($QuickPickItems, quickPickItems)\n } else if ($QuickPickItems.children.length === quickPickItems.length) {\n render$QuickPickItemsEqual($QuickPickItems, quickPickItems)\n } else {\n render$QuickPickItemsMore($QuickPickItems, quickPickItems)\n }\n}\n\nexport const setVisiblePicks = (state, visiblePicks) => {\n if (state.$QuickPickStatus) {\n hideStatus(state)\n }\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $QuickPickItems, $QuickPickInput } = state\n if (oldFocusedIndex >= 0) {\n const $OldItem = $QuickPickItems.children[oldFocusedIndex]\n if ($OldItem) {\n $OldItem.removeAttribute('id')\n }\n }\n if (newFocusedIndex >= 0) {\n const $NewItem = $QuickPickItems.children[newFocusedIndex]\n if ($NewItem) {\n $NewItem.id = activeId\n $QuickPickInput.setAttribute('aria-activedescendant', activeId)\n }\n }\n}\n\nexport const focus = (state) => {\n const { $QuickPickInput } = state\n $QuickPickInput.focus()\n Focus.setFocus('quickPickInput')\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const create = () => {\n const $QuickPickInput = InputBox.create()\n $QuickPickInput.setAttribute('aria-controls', Ids.QuickPickItems) // TODO use idl once supported\n // @ts-ignore\n $QuickPickInput.role = Roles.ComboBox\n $QuickPickInput.ariaLabel = 'Type the name of a command to run.'\n $QuickPickInput.ariaAutoComplete = 'list'\n $QuickPickInput.onblur = ViewletQuickPickEvents.handleBlur\n $QuickPickInput.addEventListener(\n 'beforeinput',\n ViewletQuickPickEvents.handleBeforeInput\n )\n $QuickPickInput.ariaExpanded = 'true'\n\n const $QuickPickHeader = document.createElement('div')\n $QuickPickHeader.id = Ids.QuickPickHeader\n $QuickPickHeader.append($QuickPickInput)\n\n const $QuickPickItems = document.createElement('div')\n $QuickPickItems.id = Ids.QuickPickItems\n // @ts-ignore\n $QuickPickItems.role = Roles.ListBox\n $QuickPickItems.onmousedown = ViewletQuickPickEvents.handleMouseDown\n $QuickPickItems.addEventListener(\n 'wheel',\n ViewletQuickPickEvents.handleWheel,\n { passive: true }\n )\n\n // TODO this works well with nvda but not with windows narrator\n // probably a bug with windows narrator that doesn't support ariaRoleDescription\n $QuickPickItems.ariaRoleDescription = 'Quick Input'\n\n const $QuickPick = document.createElement('div')\n $QuickPick.id = Ids.QuickPick\n // $QuickPick.role= 'dialog'\n $QuickPick.append($QuickPickHeader, $QuickPickItems)\n // $QuickPick.setAttribute('aria-modal', 'false') // TODO why is this\n $QuickPick.ariaLabel = 'Quick open'\n\n return {\n $Viewlet: $QuickPick,\n $QuickPick,\n $QuickPickInput,\n $QuickPickItems,\n $QuickPickStatus: undefined,\n }\n}\n\nexport const setPicks = (state, visiblePicks) => {\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nconst create$QuickPickStatus = () => {\n const $QuickPickStatus = document.createElement('div')\n $QuickPickStatus.className = 'QuickPickStatus'\n // const te.$QuickPickStatus.role = 'status'\n // $QuickPickStatus.ariaLive = 'polite'\n // $QuickPickStatus.id = 'QuickPickStatus'\n return $QuickPickStatus\n}\n\nexport const hideStatus = (state) => {\n state.$QuickPickStatus.remove()\n state.$QuickPickStatus = undefined\n}\n\nexport const showNoResults = (state, noResults, unfocusIndex) => {\n setPicks(state, [])\n if (!state.$QuickPickStatus) {\n state.$QuickPickStatus = create$QuickPickStatus()\n state.$QuickPick.append(state.$QuickPickStatus)\n }\n state.$QuickPickStatus.textContent = 'No Results'\n\n // announce to screenreaders that there are no results\n AriaAlert.alert('No results')\n}\n\n// TODO QuickPick module is always loaded lazily -> can create $QuickPick eagerly (no state / less state laying around)\n\n// TODO remove from dom vs display none which should be used?\n\n// TODO have common widgets container for all widgets (this, notifications, context menu)\nexport const dispose = (state) => {\n state.$QuickPickInput.onblur = null\n}\n\nexport const setValue = (state, value) => {\n const { $QuickPickInput } = state\n $QuickPickInput.value = value\n}\n\nexport const setCursorOffset = (state, cursorOffset) => {\n const { $QuickPickInput } = state\n $QuickPickInput.selectionStart = cursorOffset\n $QuickPickInput.selectionEnd = cursorOffset\n}\n\nexport const setItemsHeight = (state, itemsHeight) => {\n const { $QuickPickItems } = state\n $QuickPickItems.style.height = `${itemsHeight}px`\n}\n", "import * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Assert from '../Assert/Assert.js'\n\nconst getIconClassName = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n return 'StatusBarIcon AnimationSpin'\n case '$(sync)':\n return 'StatusBarIcon'\n case '$(source-control)':\n return 'StatusBarIcon'\n default:\n console.warn(`unknown icon \"${icon}\"`)\n return ''\n }\n}\n\nconst getMaskImageUrl = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n case '$(sync)':\n return 'url(/icons/icon-sync.svg)'\n case '$(source-control)':\n return 'url(/icons/icon-source-control.svg)'\n default:\n return ''\n }\n}\n\nconst create$StatusBarItem = (item) => {\n const $StatusBarItem = document.createElement('li')\n $StatusBarItem.className = 'StatusBarItem'\n // @ts-ignore\n $StatusBarItem.role = 'button'\n $StatusBarItem.dataset.name = item.name\n $StatusBarItem.tabIndex = -1\n $StatusBarItem.textContent = item.text\n $StatusBarItem.dataset.command = item.command\n if (item.tooltip) {\n $StatusBarItem.title = item.tooltip\n }\n if (item.icon) {\n const $StatusBarItemIcon = document.createElement('span')\n $StatusBarItemIcon.className = getIconClassName(item.icon)\n // @ts-ignore\n $StatusBarItemIcon.style.maskImage = getMaskImageUrl(item.icon)\n $StatusBarItemIcon.style.webkitMaskImage = getMaskImageUrl(item.icon)\n $StatusBarItem.prepend($StatusBarItemIcon)\n }\n return $StatusBarItem\n}\n\nconst handleClick = (event) => {\n const $Target = event.target\n if ($Target.className !== 'StatusBarItem') {\n return\n }\n const command = Number.parseInt($Target.dataset.command, 10)\n RendererWorker.send(command)\n}\n\n// TODO get items from renderer worker\n// const statusBarItemsLeft = [\n// {\n// name: 'RunTests',\n// text: 'Run Tests',\n// tooltip: '',\n// command: 909021,\n// },\n// ]\n\n// const statusBarItemsRight = []\n\nexport const create = (statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = document.createElement('ul')\n $StatusBarItemsLeft.id = 'StatusBarItemsLeft'\n\n const $StatusBarItemsRight = document.createElement('ul')\n $StatusBarItemsRight.id = 'StatusBarItemsRight'\n\n const $StatusBar = Layout.state.$StatusBar\n $StatusBar.onclick = handleClick\n $StatusBar.tabIndex = 0\n $StatusBar.role = 'status'\n $StatusBar.ariaLive = 'off' // see https://github.com/microsoft/vscode/issues/94677\n $StatusBar.append($StatusBarItemsLeft, $StatusBarItemsRight)\n\n return {\n $StatusBar,\n $StatusBarItemsLeft,\n $StatusBarItemsRight,\n }\n}\n\nconst clearNode = (node) => {\n while (node.firstChild) {\n node.firstChild.remove()\n }\n}\n\nexport const setItems = (state, statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = state.$StatusBarItemsLeft\n const $StatusBarItemsRight = state.$StatusBarItemsRight\n clearNode($StatusBarItemsLeft)\n clearNode($StatusBarItemsRight)\n $StatusBarItemsLeft.append(...statusBarItemsLeft.map(create$StatusBarItem))\n $StatusBarItemsRight.append(...statusBarItemsRight.map(create$StatusBarItem))\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$StatusBar.focus()\n}\n", "import * as Layout from '../Layout/Layout.js'\n\nexport const create = () => {\n // TODO set aria label for title bar menu\n // TODO add tests for aria properties\n const $TitleBar = Layout.state.$TitleBar\n $TitleBar.ariaLabel = 'Title Bar'\n $TitleBar.role = 'contentinfo'\n return {\n $TitleBar,\n $Viewlet: $TitleBar,\n }\n}\n", "export const state = {\n editorStates: Object.create(null),\n}\n\nconst get$EditorFromEvent = (event) => {\n const $Target = event.target\n const $WantedTarget = $Target.closest('.Editor')\n return $WantedTarget\n}\n\nexport const getStateFromEvent = (event) => {\n const $Editor = get$EditorFromEvent(event)\n // TODO find more efficient way\n for (const [key, value] of Object.entries(state.editorStates)) {\n if (value.$Editor === $Editor) {\n return value\n }\n }\n return undefined\n}\n\nexport const getStateFromId = (id) => {\n return state.editorStates[id]\n}\n\nexport const setState = (id, editorState) => {\n state.editorStates[id] = editorState\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\n// TODO windows\nconst getFileName = (uri) => {\n return uri.slice(uri.lastIndexOf('/') + 1)\n}\n\nconst handleEditorTabsContextMenu = (event) => {\n event.preventDefault()\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* editorTabsHandleContextMenu */ 'Main.handleTabContextMenu',\n /* x */ x,\n /* y */ y\n )\n}\n\n/**\n * @param {MouseEvent} event\n */\nconst handleMouseDown = (event) => {\n event.preventDefault()\n const $Target = event.target\n console.log({ $Target })\n // TODO if middle click -> close tab\n // else if tab is not focused -> focus tab\n // else noop\n switch (event.button) {\n case MouseEventType.LeftClick:\n console.log('left click')\n break\n case MouseEventType.MiddleClick:\n RendererWorker.send(/* Main.closeEditor */ 'Main.closeFocusedEditor')\n break\n default:\n break\n }\n}\n\nexport const create = () => {\n const $EditorTabs = document.createElement('ul')\n $EditorTabs.className = 'EditorTabs'\n $EditorTabs.oncontextmenu = handleEditorTabsContextMenu\n $EditorTabs.onmousedown = handleMouseDown\n return $EditorTabs\n}\n\nconst create$Tab = () => {\n const $Tab = document.createElement('li')\n // @ts-ignore\n $Tab.role = 'tab'\n $Tab.className = 'EditorTab'\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n // Set aria-description to empty string so that screen readers don't read title as well\n // More details https://github.com/microsoft/vscode/issues/95378\n $Tab.setAttribute('aria-description', '')\n const $TabLabel = document.createElement('span')\n return $Tab\n}\n\nconst render$Tab = ($Tab, id, uri, languageId) => {\n const fileName = getFileName(uri)\n $Tab.textContent = fileName\n $Tab.title = uri\n $Tab.dataset.languageId = languageId\n $Tab.dataset.fileName = fileName\n}\n\n// const render$TabsLess = ($Tabs, tabs) => {\n// for (let i = 0; i < $Tabs.children.length; i++) {\n// render$Tab($Tabs.children[i], tabs[i])\n// }\n// const fragment = document.createDocumentFragment()\n// for (let i = $Tabs.children.length; i < tabs.length; i++) {\n// const $Tab = create$Tab()\n// render$Tab($Tab, tabs[i])\n// fragment.append($Tab)\n// }\n// $Tabs.append(fragment)\n// }\n\n// const render$TabsEqual = ($Tabs, tabs) => {\n// for (let i = 0; i < tabs.length; i++) {\n// render$Tab($Tabs.children[i], tabs[i])\n// }\n// }\n\n// const render$TabsMore = ($Tabs, tabs) => {\n// for (let i = 0; i < tabs.length; i++) {\n// render$Tab($Tabs.children[i], tabs[i])\n// }\n// const diff = $Tabs.children.length - tabs.length\n// for (let i = 0; i < diff; i++) {\n// $Tabs.lastChild.remove()\n// }\n// }\n\n// const render$Tabs = ($Tabs, tabs) => {\n// if ($Tabs.children.length < tabs.length) {\n// render$TabsLess($Tabs, tabs)\n// } else if ($Tabs.children.length === tabs.length) {\n// render$TabsEqual($Tabs, tabs)\n// } else {\n// render$TabsMore($Tabs, tabs)\n// }\n// }\n\n// export const setTabs = (state, tabs) => {\n// render$Tabs(state.$EditorTabs, tabs)\n// }\n\nexport const addOne = ($EditorTabs, id, uri, languageId) => {\n const $EditorTab = create$Tab()\n render$Tab($EditorTab, id, uri, languageId)\n $EditorTabs.append($EditorTab)\n}\n\n// TODO should pass index as well\nexport const replaceOne = ($EditorTabs, id, uri, languageId) => {\n render$Tab($EditorTabs.firstChild, id, uri, languageId)\n}\n\nexport const removeOne = ($EditorTabs, index) => {\n $EditorTabs.firstChild.remove()\n // const $EditorTab = $EditorTabs.children[index]\n // $EditorTab.remove()\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorHelper from '../Editor/EditorHelper.js'\nimport * as EditorTabs from '../EditorTab/EditorTab.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleEditorTabsContextMenu = (event) => {\n event.preventDefault()\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* editorTabsHandleContextMenu */ 'Main.handleTabContextMenu',\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const create = () => {\n const $EditorTabs = EditorTabs.create()\n\n const $Editors = document.createElement('div')\n $Editors.className = 'Editors'\n\n // TODO create should not have side effect of mounting\n // TODO this causes 2 times layout (when also calling add after)\n Layout.state.$Main.append($EditorTabs, $Editors)\n return {\n $EditorTabs,\n $Editors,\n }\n}\n\nexport const addOne = (state, id, uri, languageId) => {\n EditorTabs.addOne(state.$EditorTabs, id, uri, languageId)\n // const $Editor = EditorController.create(id)\n // const $EditorTab = EditorTabsController.create(id, uri, languageId)\n // TODO should call addOne as well\n const editorState = Editor.create()\n EditorHelper.setState(id, editorState)\n Editor.mount(editorState, state.$Editors)\n return editorState\n}\n\nexport const replaceOne = (state, id, uri, languageId) => {\n console.log('replace one')\n EditorTabs.addOne(state.$EditorTabs, id, uri, languageId)\n}\n\n// TODO remove single tab\nexport const removeOne = (state, index) => {\n // EditorTabs.removeOne(state.$EditorTabs, index)\n // Editor.removeOne(state.$Editors, index)\n state.$Editors.remove()\n state.$EditorTabs.remove()\n}\n", "import * as EditorGroup from '../EditorGroup/EditorGroup.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\nexport const handleDragOver = (event) => {\n event.preventDefault()\n Layout.state.$Main.classList.add('DropTarget')\n}\n\nexport const handleDrop = async (event) => {\n console.log('[main] drop')\n event.preventDefault()\n Layout.state.$Main.classList.remove('DropTarget')\n RendererWorker.send(/* handleDrop */ 'Main.handleDrop')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'EditorTabCloseButton':\n return getNodeIndex($Target.parentNode)\n case 'MainTab':\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleTabCloseButtonMouseDown = (event, index) => {\n RendererWorker.send(\n /* Main.closeEditor */ 'Main.closeEditor',\n /* index */ index\n )\n}\n\nexport const handleTabMouseDown = (event, index) => {\n switch (event.button) {\n case MouseEventType.LeftClick:\n RendererWorker.send(\n /* Main.handleTabClick */ 'Main.handleTabClick',\n /* index */ index\n )\n break\n case MouseEventType.MiddleClick:\n RendererWorker.send(\n /* Main.closeEditor */ 'Main.closeEditor',\n /* index */ index\n )\n break\n case MouseEventType.RightClick:\n break\n default:\n break\n }\n}\n\nexport const handleTabsMouseDown = (event) => {\n const $Target = event.target\n const index = getIndex($Target)\n if (index === -1) {\n return\n }\n event.preventDefault()\n switch ($Target.className) {\n case 'EditorTabCloseButton':\n handleTabCloseButtonMouseDown(event, index)\n break\n case 'MainTab':\n handleTabMouseDown(event, index)\n break\n default:\n break\n }\n}\n\nexport const handleTabsContextMenu = (event) => {\n const $Target = event.target\n const index = getIndex($Target)\n if (index === -1) {\n return\n }\n event.preventDefault()\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Main.handleTabContextMenu */ 'Main.handleTabContextMenu',\n /* index */ index,\n /* x */ x,\n /* y */ y\n )\n}\n", "import * as EditorGroup from '../EditorGroup/EditorGroup.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as ViewletMainEvents from './ViewletMainEvents.js'\n\nconst create$MainTabs = () => {\n const $MainTabs = document.createElement('div')\n $MainTabs.className = 'MainTabs'\n // @ts-ignore\n $MainTabs.role = 'tablist'\n $MainTabs.onmousedown = ViewletMainEvents.handleTabsMouseDown\n $MainTabs.oncontextmenu = ViewletMainEvents.handleTabsContextMenu\n // TODO race condition: what if tab has already been closed?\n return $MainTabs\n}\n\n// TODO Main should not be bound to Editor -> Lazy load Editor\nexport const create = () => {\n const $Main = Layout.state.$Main\n $Main.ondrop = ViewletMainEvents.handleDrop\n $Main.ondragover = ViewletMainEvents.handleDragOver\n\n // const $MainContent = document.createElement('div')\n // $MainContent.id = 'MainContent'\n\n // const $MainTabs = document.createElement('div')\n // $MainTabs.className = 'MainTabs'\n // $MainTabs.onmousedown = handleTabsMouseDown\n // $MainTabs.oncontextmenu = handleTabsContextMenu\n // // TODO race condition: what if tab has already been closed?\n // $Main.append($MainTabs, $MainContent)\n\n return {\n $Viewlet: $Main,\n $Main,\n $MainContent: undefined,\n $MainTabs: undefined,\n }\n}\n\nexport const dispose = (state) => {\n console.log(state)\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const replaceEditor = (state, id, uri, languageId) => {\n EditorGroup.replaceOne(state.editorGroup, id, uri, languageId)\n}\n\nexport const addEditor = (state, id, uri, languageId) => {\n EditorGroup.addOne(state.editorGroup, id, uri, languageId)\n}\n\n// TODO there are 3 cases\n// 1. no editor group and no editor\n// 2. editor group exists and new editor should be added\n// 3. editor group exists and editor should be replaced\nexport const openEditor = async (state, id, uri, languageId) => {\n console.log('open editor', id, uri, languageId)\n state.editorGroup = EditorGroup.create()\n state.activeEditorState = EditorGroup.addOne(\n state.editorGroup,\n id,\n uri,\n languageId\n )\n}\n\nexport const closeAllViewlets = (state) => {\n const $Main = Layout.state.$Main\n while ($Main.firstChild) {\n $Main.firstChild.remove()\n }\n state.$MainContent = undefined\n state.$MainTabs = undefined\n}\n\nexport const closeViewletAndTab = (state, index) => {\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const focus = () => {\n console.log('todo focus main')\n}\n\nexport const openViewlet = (state, tabLabel, tabTitle, oldActiveIndex) => {\n const $Tab = document.createElement('div')\n $Tab.className = 'MainTab'\n $Tab.textContent = tabLabel\n $Tab.title = tabTitle\n $Tab.ariaSelected = 'true'\n // @ts-ignore\n $Tab.role = 'tab'\n\n const $TabCloseButton = document.createElement('button')\n $TabCloseButton.className = 'EditorTabCloseButton'\n $TabCloseButton.ariaLabel = 'Close'\n $TabCloseButton.title = ''\n $Tab.append($TabCloseButton)\n\n if (oldActiveIndex !== -1 && state.$MainTabs) {\n const $OldTab = state.$MainTabs.children[oldActiveIndex]\n if ($OldTab) {\n $OldTab.ariaSelected = 'false'\n }\n }\n\n if (!state.$MainTabs) {\n state.$MainTabs = create$MainTabs()\n state.$Main.append(state.$MainTabs)\n }\n\n state.$MainTabs.append($Tab)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\nconst create$MainContent = () => {\n const $MainContent = document.createElement('div')\n $MainContent.id = 'MainContent'\n return $MainContent\n}\n\nexport const appendViewlet = (state, childName, $Child) => {\n if (!state.$MainContent) {\n state.$MainContent = create$MainContent()\n state.$Main.append(state.$MainContent)\n }\n // TODO should bring back old optimization of reusing existing editor dom nodes if possible\n while (state.$MainContent.firstChild) {\n state.$MainContent.firstChild.remove()\n }\n state.$MainContent.append($Child)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\n// TODO when there is not enough space available, only show tab close button\n// for focused tab (that's how chrome and firefox do it)\nexport const openAnotherTab = async (\n state,\n tabLabel,\n tabTitle,\n unFocusIndex\n) => {\n const $Tab = document.createElement('div')\n $Tab.className = 'MainTab'\n $Tab.textContent = tabLabel\n $Tab.title = tabTitle\n $Tab.ariaSelected = 'true'\n // @ts-ignore\n $Tab.role = 'tab'\n $Tab.tabIndex = 0\n const $TabCloseButton = document.createElement('button')\n $TabCloseButton.className = 'EditorTabCloseButton'\n $TabCloseButton.ariaLabel = 'Close'\n $Tab.append($TabCloseButton)\n state.$MainTabs.children[unFocusIndex].ariaSelected = 'false'\n state.$MainTabs.append($Tab)\n}\n\nexport const closeOneTab = (state, closeIndex, focusIndex) => {\n state.$MainTabs.children[closeIndex].remove()\n state.$MainTabs.children[focusIndex].ariaSelected = 'true'\n}\n\nexport const closeOneTabOnly = (state, closeIndex) => {\n state.$MainTabs.children[closeIndex].remove()\n}\n\nexport const focusAnotherTab = (state, unFocusIndex, focusIndex) => {\n state.$MainTabs.children[unFocusIndex].ariaSelected = 'false'\n state.$MainTabs.children[focusIndex].ariaSelected = 'true'\n}\n\nexport const closeOthers = (state, keepIndex, focusIndex) => {\n for (let i = state.$MainTabs.children.length - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n if (i === keepIndex) {\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n } else {\n $Tab.remove()\n }\n }\n}\n\nexport const closeTabsRight = (state, index) => {\n for (let i = state.$MainTabs.children.length - 1; i > index; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[index]\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n}\n\nexport const closeTabsLeft = (state, index) => {\n for (let i = index - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[0]\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n if ($Target.classList.contains('EditorCompletionItem')) {\n return getNodeIndex($Target)\n }\n return -1\n}\n\nexport const handleMousedown = (event) => {\n event.preventDefault()\n const $Target = event.target\n const index = getIndex($Target)\n if (index === -1) {\n return\n }\n RendererWorker.send(\n /* ViewletEditorCompletion.selectIndex */ 'EditorCompletion.selectIndex',\n /* index */ index\n )\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* EditorCompletion.handleWheel */ 'EditorCompletion.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* EditorCompletion.handleWheel */ 'EditorCompletion.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n", "import * as Focus from '../Focus/Focus.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as ViewletEditorCompletionEvents from './ViewletEditorCompletionEvents.js'\n\nexport const name = 'EditorCompletion'\n\nconst create$CompletionItem = (item, index) => {\n const $CompletionItemText = document.createElement('div')\n $CompletionItemText.className = 'Label'\n $CompletionItemText.textContent = item.label\n\n const $Icon = document.createElement('div')\n $Icon.className = 'ColoredMaskIcon'\n $Icon.style.webkitMaskImage = `url('${item.icon}')`\n\n const $CompletionItem = document.createElement('div')\n // @ts-ignore\n $CompletionItem.role = 'option'\n $CompletionItem.id = `CompletionItem-${index}`\n $CompletionItem.className = `EditorCompletionItem`\n $CompletionItem.append($Icon, $CompletionItemText)\n return $CompletionItem\n}\n\nexport const create = () => {\n // TODO recycle nodes\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = name\n $Viewlet.id = 'Completions'\n // @ts-ignore\n $Viewlet.role = 'listbox'\n $Viewlet.ariaLabel = 'Suggest'\n $Viewlet.onmousedown = ViewletEditorCompletionEvents.handleMousedown\n $Viewlet.addEventListener(\n 'wheel',\n ViewletEditorCompletionEvents.handleWheel,\n {\n passive: true,\n }\n )\n return {\n $Viewlet,\n }\n}\n\n// TODO show should be passed active cursor position\n// this would make this function easier to test as it would avoid dependency on globals of other files\n\nexport const setItems = (state, items, reason, focusedIndex) => {\n console.log('COMPLETION SHOW', items)\n const { $Viewlet } = state\n Focus.setAdditionalFocus('editorCompletions')\n if (items.length === 0) {\n if (reason === /* automatically */ 0) {\n return\n }\n $Viewlet.textContent = 'No Results'\n Widget.append($Viewlet)\n return\n }\n // TODO recycle nodes\n $Viewlet.replaceChildren(...items.map(create$CompletionItem))\n Widget.append($Viewlet)\n setFocusedIndex(state, 0, 0)\n // TODO set right aria attributes on $EditorInput\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$Viewlet)\n // state.$EditorInput.removeAttribute('aria-activedescendant')\n Focus.removeAdditionalFocus('editorCompletions')\n}\n\n// TODO should pass maybe oldIndex to be removed\n// but keeping $ActiveItem in state also works\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n const $Viewlet = state.$Viewlet\n if (oldIndex !== -1) {\n const $OldItem = $Viewlet.children[oldIndex]\n $OldItem.classList.remove('Focused')\n }\n if (newIndex !== -1) {\n const $NewItem = $Viewlet.children[newIndex]\n $NewItem.classList.add('Focused')\n }\n Focus.setAdditionalFocus('editorCompletions')\n // state.$EditorInput.setAttribute('aria-activedescendant', $NewItem.id) // TODO use idl once supported\n}\n\nexport const showLoading = (state, x, y) => {\n const { $Viewlet } = state\n $Viewlet.style.transform = `translate(${x}px, ${y}px)`\n const $Loading = document.createElement('div')\n $Loading.textContent = 'Loading'\n $Viewlet.append($Loading)\n Widget.append($Viewlet)\n Focus.setAdditionalFocus('editorCompletions')\n}\n\nexport const handleError = (state, error) => {\n const { $Viewlet } = state\n $Viewlet.textContent = `${error}`\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\nexport const name = 'Locations'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handleLocationsMouseDown = (event) => {\n if (event.button !== MouseEventType.LeftClick) {\n return\n }\n const $Target = event.target\n if ($Target.classList.contains('TreeItem')) {\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* ViewletLocations.selectIndex */ 'Locations.selectIndex',\n /* index */ index\n )\n } else if ($Target.classList.contains('LocationList')) {\n RendererWorker.send(\n /* ViewletLocations.focusIndex */ 'Locations.focusIndex',\n /* index */ -1\n )\n }\n}\n\nexport const create = () => {\n const $Message = document.createElement('div')\n $Message.className = 'LocationsMessage'\n $Message.id = 'LocationsMessage'\n // @ts-ignore\n $Message.role = 'status'\n const $Locations = document.createElement('div')\n $Locations.className = 'LocationList'\n // @ts-ignore\n $Locations.role = 'tree'\n $Locations.ariaLabel = 'Locations'\n $Locations.tabIndex = 0\n $Locations.onmousedown = handleLocationsMouseDown\n $Locations.setAttribute('aria-described-by', 'LocationsMessage')\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'Locations' // TODO\n $Viewlet.append($Message, $Locations)\n return {\n $Viewlet,\n $Message,\n $Locations,\n }\n}\n\nconst create$Location = () => {\n // TODO reuse logic from tree view\n const $Location = document.createElement('div')\n $Location.className = 'TreeItem'\n // @ts-ignore\n $Location.role = 'treeitem'\n return $Location\n}\n\nconst render$Location = ($Location, location) => {\n console.log({ reference: location })\n switch (location.type) {\n case 'leaf':\n $Location.className = 'TreeItem'\n $Location.textContent = location.lineText || '(empty line)'\n $Location.ariaExpanded = undefined\n $Location.id = `Reference-${location.index}`\n break\n case 'collapsed':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.textContent = location.name\n $Location.ariaExpanded = false\n $Location.id = `Reference-${location.index}`\n case 'expanded':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.ariaExpanded = true\n $Location.textContent = location.name\n $Location.id = `Reference-${location.index}`\n default:\n break\n }\n\n // TODO\n}\n\nconst render$Locations = ($Locations, locations) => {\n $Locations.textContent = ''\n const fragment = document.createDocumentFragment()\n for (const location of locations) {\n const $Location = create$Location()\n render$Location($Location, location)\n fragment.append($Location)\n }\n $Locations.append(fragment)\n}\n\nexport const setLocations = (state, locations) => {\n const { $Locations } = state\n render$Locations($Locations, locations)\n}\n\nexport const setMessage = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $Locations } = state\n if (oldFocusedIndex === -1) {\n $Locations.classList.remove('FocusOutline')\n } else {\n $Locations.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex === -1) {\n $Locations.classList.add('FocusOutline')\n } else {\n $Locations.setAttribute(\n 'aria-activedescendant',\n `Reference-${newFocusedIndex}`\n )\n $Locations.children[newFocusedIndex].classList.add('Focused')\n }\n}\n\nexport const handleError = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const focus = (state) => {\n const { $Locations } = state\n $Locations.classList.add('FocusOutline')\n $Locations.focus()\n Focus.setFocus('locationList')\n}\n", "export * from '../ViewletLocations/ViewletLocations.js'\n\nexport const name = 'References'\n", "export * from '../ViewletLocations/ViewletLocations.js'\n\nexport const name = 'Implementations'\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const name = 'EditorPlainText'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'EditorText'\n $Viewlet.textContent = 'loading...'\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n Assert.string(context.content)\n state.$Viewlet.textContent = context.content\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send('KeyBindings.handleInput', value)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* ViewletKeyBindings.handleWheel */ 'KeyBindings.handleWheel',\n /* deltaY */ deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* ViewletKeyBindings.handleWheel */ 'KeyBindings.handleWheel',\n /* deltaY */ deltaY\n )\n break\n default:\n break\n }\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", "export const H1 = 'h1'\nexport const Div = 'div'\nexport const Kbd = 'kbd'\nexport const Table = 'table'\nexport const TBody = 'tbody'\nexport const THead = 'thead'\nexport const Td = 'td'\nexport const Th = 'th'\nexport const Tr = 'tr'\nexport const Input = 'input'\n", "import * as ElementTag from '../ElementTags/ElementTags.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nexport const getElementTag = (type) => {\n switch (type) {\n case VirtualDomElements.H1:\n return ElementTag.H1\n case VirtualDomElements.Div:\n return ElementTag.Div\n case VirtualDomElements.Kbd:\n return ElementTag.Kbd\n case VirtualDomElements.Table:\n return ElementTag.Table\n case VirtualDomElements.TBody:\n return ElementTag.TBody\n case VirtualDomElements.Th:\n return ElementTag.Th\n case VirtualDomElements.Td:\n return ElementTag.Td\n case VirtualDomElements.THead:\n return ElementTag.THead\n case VirtualDomElements.Tr:\n return ElementTag.Tr\n case VirtualDomElements.Input:\n return ElementTag.Input\n default:\n throw new Error(`element tag not found ${type}`)\n }\n}\n", "import * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\nimport * as ElementTagMap from '../ElementTagMap/ElementTagMap.js'\n\nconst renderDomTextNode = (element) => {\n return document.createTextNode(element.props.text)\n}\n\nconst setProps = ($Element, props) => {\n for (const key in props) {\n $Element[key] = props[key]\n }\n}\n\nconst renderDomElement = (element) => {\n const { type, props } = element\n const tag = ElementTagMap.getElementTag(type)\n const $Element = document.createElement(tag)\n setProps($Element, props)\n return $Element\n}\n\nexport const render = (element) => {\n switch (element.type) {\n case VirtualDomElements.Text:\n return renderDomTextNode(element)\n default:\n return renderDomElement(element)\n }\n}\n", "import * as VirtualDomElement from '../VirtualDomElement/VirtualDomElement.js'\n\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const renderInternal = ($Parent, elements) => {\n const max = elements.length - 1\n let stack = []\n for (let i = max; i >= 0; i--) {\n const element = elements[i]\n const $Element = VirtualDomElement.render(element)\n if (element.childCount > 0) {\n $Element.append(...stack.slice(0, element.childCount))\n stack = stack.slice(element.childCount)\n }\n stack.unshift($Element)\n }\n $Parent.append(...stack)\n}\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const render = (elements) => {\n const $Root = document.createElement('div')\n renderInternal($Root, elements)\n return $Root\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletkeyBindingsEvents from './ViewletKeyBindingsEvents.js'\nimport * as VirtualDom from '../VirtualDom/VirtualDom.js'\n\nexport const name = 'KeyBindings'\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = 'search'\n $InputBox.placeholder = 'Search Key Bindings' // TODO placeholder string should come from renderer worker\n // @ts-ignore\n $InputBox.ariaDescription = 'Results will update as you type'\n $InputBox.oninput = ViewletkeyBindingsEvents.handleInput\n\n const $KeyBindingsHeader = document.createElement('div')\n $KeyBindingsHeader.className = 'KeyBindingsHeader'\n $KeyBindingsHeader.append($InputBox)\n\n const $KeyBindingsTableWrapper = document.createElement('div')\n $KeyBindingsTableWrapper.className = 'KeyBindingsTableWrapper'\n $KeyBindingsTableWrapper.addEventListener(\n 'wheel',\n ViewletkeyBindingsEvents.handleWheel,\n { passive: true }\n )\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'KeyBindings'\n $Viewlet.append($KeyBindingsHeader, $KeyBindingsTableWrapper)\n\n return {\n $Viewlet,\n $InputBox,\n $KeyBindingsHeader,\n $KeyBindingsTableWrapper,\n }\n}\n\nexport const setTableDom = (state, dom) => {\n const { $KeyBindingsTableWrapper } = state\n // console.log(dom)\n const $Root = VirtualDom.render(dom)\n $KeyBindingsTableWrapper.replaceChildren($Root.firstChild)\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n RendererWorker.send('EditorFindWidget.handleInput', value)\n}\n\nconst handleClickClose = (event) => {\n event.preventDefault()\n RendererWorker.send('Viewlet.closeWidget', 'EditorFindWidget')\n}\n\nconst handleClickPreviousMatch = (event) => {\n event.preventDefault()\n RendererWorker.send('EditorFindWidget.focusPrevious')\n}\n\nconst handleClickNextMatch = (event) => {\n event.preventDefault()\n RendererWorker.send('EditorFindWidget.focusNext')\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n const { title } = target\n switch (title) {\n case 'Close':\n handleClickClose(event)\n break\n case 'Previous Match':\n handleClickPreviousMatch(event)\n break\n case 'Next Match':\n handleClickNextMatch(event)\n break\n default:\n break\n }\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletEditorFindWidgetEvents from './ViewletEditorFindWidgetEvents.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\n\nexport const name = 'EditorFindWidget'\n\nconst UiStrings = {\n Close: 'Close',\n PreviousMatch: 'Previous Match',\n NextMatch: 'Next Match',\n}\n\nconst create$Button = (label, icon) => {\n const $Icon = document.createElement('div')\n $Icon.className = 'MaskIcon'\n $Icon.style.webkitMaskImage = `url('${icon}')`\n // @ts-ignore\n $Icon.role = 'none'\n\n const $Button = document.createElement('div')\n // @ts-ignore\n $Button.role = 'button'\n $Button.ariaLabel = label\n $Button.title = label\n $Button.tabIndex = 0\n $Button.className = `EditorFindWidgetButton`\n $Button.append($Icon)\n return $Button\n}\n\nexport const create = () => {\n // TODO recycle nodes\n const $InputBox = InputBox.create()\n $InputBox.oninput = ViewletEditorFindWidgetEvents.handleInput\n $InputBox.ariaLabel = 'Find'\n\n const $MatchCountText = document.createTextNode('')\n const $MatchCount = document.createElement('div')\n $MatchCount.className = 'EditorFindWidgetMatchCount'\n $MatchCount.append($MatchCountText)\n\n const $ButtonFocusNext = create$Button(UiStrings.NextMatch, Icon.NextMatch)\n const $ButtonFocusPrevious = create$Button(\n UiStrings.PreviousMatch,\n Icon.PreviousMatch\n )\n const $ButtonClose = create$Button(UiStrings.Close, Icon.Close)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.onclick = ViewletEditorFindWidgetEvents.handleClick\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'EditorFindWidget'\n $Viewlet.append(\n $InputBox,\n $MatchCount,\n $ButtonFocusPrevious,\n $ButtonFocusNext,\n $ButtonClose\n )\n return {\n $Viewlet,\n $InputBox,\n $MatchCount,\n $MatchCountText,\n $ButtonClose,\n $ButtonFocusNext,\n $ButtonFocusPrevious,\n }\n}\n\nexport const focus = (state) => {\n const { $InputBox } = state\n $InputBox.focus()\n Focus.setFocus('EditorFindWidget')\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n\nexport const setMatchCountText = (state, value) => {\n const { $MatchCountText } = state\n $MatchCountText.nodeValue = value\n}\n\nexport const dispose = () => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleIconError = (event) => {\n RendererWorker.send('ExtensionDetail.handleIconError')\n}\n", "import * as ViewletExtensionDetailEvents from './ViewletExtensionDetailEvents.js'\n\nexport const name = 'ExtensionDetail'\n\nexport const create = () => {\n const $NameText = document.createTextNode('')\n\n const $ReadmeHtml = document.createElement('div')\n $ReadmeHtml.className = 'Markdown'\n // @ts-ignore\n $ReadmeHtml.role = 'document'\n\n const $ExtensionDetailIcon = document.createElement('img')\n $ExtensionDetailIcon.className = 'ExtensionDetailIcon'\n $ExtensionDetailIcon.alt = ''\n $ExtensionDetailIcon.draggable = false\n $ExtensionDetailIcon.onerror = ViewletExtensionDetailEvents.handleIconError\n\n const $Name = document.createElement('h3')\n $Name.className = 'ExtensionDetailName'\n $Name.append($NameText)\n\n const $Description = document.createElement('div')\n $Description.className = 'ExtensionDetailDescription'\n\n const $ExtensionDetailHeaderDetails = document.createElement('div')\n $ExtensionDetailHeaderDetails.className = 'ExtensionDetailHeaderDetails'\n $ExtensionDetailHeaderDetails.append($Name, $Description)\n\n const $ExtensionDetailHeader = document.createElement('div')\n $ExtensionDetailHeader.className = 'ExtensionDetailHeader'\n $ExtensionDetailHeader.append(\n $ExtensionDetailIcon,\n $ExtensionDetailHeaderDetails\n )\n\n const $ExtensionDetailMain = document.createElement('div')\n $ExtensionDetailMain.className = 'ExtensionDetailMain'\n $ExtensionDetailMain.append($ExtensionDetailHeader, $ReadmeHtml)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'ExtensionDetail'\n $Viewlet.append($ExtensionDetailMain)\n return {\n $Viewlet,\n $Name,\n $NameText,\n $ReadmeHtml,\n $ExtensionDetailIcon,\n $Description,\n }\n}\n\nexport const setName = (state, name) => {\n const { $NameText } = state\n $NameText.nodeValue = name\n}\n\nexport const setReadmeHtml = (state, sanitizedHtml) => {\n const { $ReadmeHtml } = state\n $ReadmeHtml.innerHTML = sanitizedHtml\n}\n\nexport const setIconSrc = (state, src) => {\n const { $ExtensionDetailIcon } = state\n // TODO handle error and load fallback icon\n $ExtensionDetailIcon.src = src\n}\n\nexport const setDescription = (state, description) => {\n const { $Description } = state\n $Description.textContent = description\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleClickMinmize = () => {\n RendererWorker.send('TitleBarButtons.handleClickMinimize')\n}\n\nconst handleClickToggleMaximize = () => {\n RendererWorker.send('TitleBarButtons.handleClickToggleMaximize')\n}\n\nconst handleClickClose = () => {\n RendererWorker.send('TitleBarButtons.handleClickClose')\n}\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleTitleBarButtonsClick = (event) => {\n const { target } = event\n // @ts-ignore\n const { id } = target\n switch (id) {\n case 'TitleBarButtonMinimize':\n handleClickMinmize()\n break\n case 'TitleBarButtonToggleMaximize':\n handleClickToggleMaximize()\n break\n case 'TitleBarButtonClose':\n handleClickClose()\n break\n default:\n break\n }\n}\n", "import * as ViewletTitleBarButtonEvents from './ViewletTitleBarButtonsEvents.js'\n\nexport const name = 'TitleBarButtons'\n\nconst create$TitleBarButton = (id, icon, label) => {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon${icon}`\n\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${id}`\n $TitleBarButton.ariaLabel = label\n $TitleBarButton.append($Icon)\n return $TitleBarButton\n}\n\nexport const create = () => {\n const $ButtonMinimize = create$TitleBarButton(\n 'Minimize',\n 'Minimize',\n 'Minimize'\n )\n const $ButtonToggleMaximize = create$TitleBarButton(\n 'ToggleMaximize',\n 'ToggleMaximize',\n 'Toggle Maximize'\n )\n const $ButtonClose = create$TitleBarButton('Close', 'Close', 'Close')\n\n const $TitleBarButtons = document.createElement('div')\n $TitleBarButtons.id = 'TitleBarButtons'\n $TitleBarButtons.onmousedown =\n ViewletTitleBarButtonEvents.handleTitleBarButtonsClick\n $TitleBarButtons.append($ButtonMinimize, $ButtonToggleMaximize, $ButtonClose)\n return {\n $TitleBarButtons,\n $Viewlet: $TitleBarButtons,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const setButtons = (state, buttons) => {\n const { $TitleBarButtons } = state\n for (const button of buttons) {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon${button.icon}`\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${button.id}`\n $TitleBarButton.ariaLabel = button.label\n $TitleBarButton.append($Icon)\n $TitleBarButtons.append($TitleBarButton)\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as MouseEventTypes from '../MouseEventType/MouseEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as FindIndex from '../../shared/findIndex.js'\n\nconst isInsideTitleBarMenu = ($Element) => {\n return (\n $Element.classList.contains('MenuItem') ||\n $Element.classList.contains('Menu') ||\n $Element.classList.contains('TitleBarTopLevelEntry')\n )\n}\n\nexport const handleFocusOut = (event) => {\n const $ActiveElement = event.relatedTarget\n if ($ActiveElement && isInsideTitleBarMenu($ActiveElement)) {\n return\n }\n RendererWorker.send(\n /* TitleBarMenuBar.closeMenu */ 'TitleBarMenuBar.closeMenu',\n /* keepFocus */ false\n )\n}\n\nexport const handleMouseOver = (event) => {\n const { target, clientX, clientY } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n RendererWorker.send(\n /* TitleBarMenuBar.focusIndex */ 'TitleBarMenuBar.handleMouseOver',\n /* index */ index,\n /* enterX */ clientX,\n /* enterY */ clientY\n )\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TitleBarTopLevelEntry':\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n const { button, target } = event\n if (button !== MouseEventTypes.LeftClick) {\n return\n }\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n // event.preventDefault()\n RendererWorker.send(\n /* TitleBarMenuBar.toggleIndex */ 'TitleBarMenuBar.toggleIndex',\n /* index */ index\n )\n}\n\nconst getLevelAndIndex = (event) => {\n const { target } = event\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n const { id } = $Menu\n const level = parseInt(id.slice(5))\n return {\n level,\n index,\n }\n}\n\nexport const handleMenuMouseOver = (event) => {\n const { level, index } = getLevelAndIndex(event)\n RendererWorker.send(\n /* TitleBarMenuBar.handleMenuMouseOver */ 'TitleBarMenuBar.handleMenuMouseOver',\n /* level */ level,\n /* index */ index\n )\n}\n\nexport const handleMenuMouseDown = (event) => {\n const { level, index } = getLevelAndIndex(event)\n RendererWorker.send(\n /* TitleBarMenuBar.handleMenuMouseDown */ 'TitleBarMenuBar.handleMenuMouseDown',\n /* level */ level,\n /* index */ index\n )\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('TitleBarMenuBar')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletTitleBarMenuBarEvents from './ViewletTitleBarMenuBarEvents.js'\nimport * as Menu from '../OldMenu/Menu.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\n\nconst activeId = 'TitleBarEntryActive'\n\nexport const create = () => {\n const $TitleBarMenuBar = document.createElement('div')\n $TitleBarMenuBar.id = 'TitleBarMenuBar'\n // @ts-ignore\n $TitleBarMenuBar.role = 'menubar'\n $TitleBarMenuBar.tabIndex = 0\n $TitleBarMenuBar.onmousedown = ViewletTitleBarMenuBarEvents.handleClick\n $TitleBarMenuBar.addEventListener(\n 'focusout',\n ViewletTitleBarMenuBarEvents.handleFocusOut\n )\n $TitleBarMenuBar.addEventListener(\n 'focusin',\n ViewletTitleBarMenuBarEvents.handleFocus\n )\n $TitleBarMenuBar.onmouseover = ViewletTitleBarMenuBarEvents.handleMouseOver\n\n return {\n $Viewlet: $TitleBarMenuBar,\n $TitleBarMenuBar,\n $$Menus: [],\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.firstChild.focus()\n}\n\n// TODO set proper tabIndex 0 to focused item https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-1/menubar-1.html\n\n// TODO screenreader doesn't read top level label\n// when menu is open,\n// first item is selected,\n// right is clicked it just reads\n// \"Expanded\" instead of \"Selection Expanded\"\n\n// TODO sometimes screenreader reads too much (e.g. \"File, expanded, opens menu, expanded\")\n\n// TODO don't focus on separators\n\n// TODO don't focus on hover\n// only focus on hover when it has already focus or the menu has focus\n\n// TODO title bar menu bar is very inefficient:\n\n// before: 5 times recalculate style\n// 1.37ms Recalculate style\n// 83us Update Layer tree\n// 0.34ms paint\n// 0.79ms composite layer\n// 0.23ms Hit test\n// 1.42ms Recalculate style\n// 1.44ms Recalculate style\n// 2.08ms Recalculate style\n// 0.44ms Recalculate style\n// 0.52ms Layout\n// 0.16ms Update Layer Tree\n// 48us hit test\n// 16us Update Layer Tree\n// 0.36ms paint\n// 0.33ms composite layer\n\n// now: 2 recalculate styles\n// 0.43ms recalculate style\n// 0.53ms recalculate style\n// 0.19ms layout\n// 0.16ms update layer tree\n// 30us hit test\n// 17us update layer tree\n// 0.17ms paint\n// 0.19ms composite layers\n\nconst create$TopLevelEntry = (item) => {\n const $TitleBarTopLevelEntry = document.createElement('div')\n $TitleBarTopLevelEntry.className = 'TitleBarTopLevelEntry'\n $TitleBarTopLevelEntry.ariaHasPopup = 'true'\n $TitleBarTopLevelEntry.ariaExpanded = 'false'\n // @ts-ignore\n $TitleBarTopLevelEntry.role = 'menuitem'\n if (item.keyboardShortCut) {\n $TitleBarTopLevelEntry.ariaKeyShortcuts = item.keyboardShortCut\n }\n $TitleBarTopLevelEntry.textContent = item.name\n return $TitleBarTopLevelEntry\n}\n\nexport const getMenuEntryBounds = (state, index) => {\n const { $TitleBarMenuBar } = state\n const $MenuEntry = $TitleBarMenuBar.children[index]\n const rect = $MenuEntry.getBoundingClientRect()\n return {\n left: rect.left,\n bottom: rect.bottom,\n }\n}\n\nexport const setFocusedIndex = (\n state,\n unFocusIndex,\n focusIndex,\n oldIsMenuOpen,\n newIsMenuOpen\n) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(focusIndex)\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[unFocusIndex]\n $Child.ariaExpanded = 'false'\n $Child.removeAttribute('aria-owns')\n $Child.removeAttribute('id')\n }\n if (focusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[focusIndex]\n $Child.id = activeId\n $TitleBarMenuBar.focus()\n $TitleBarMenuBar.setAttribute('aria-activedescendant', activeId)\n if (newIsMenuOpen) {\n $Child.setAttribute('aria-owns', 'Menu-0')\n $Child.ariaExpanded = 'true'\n }\n }\n}\n\n// TODO the focus variable is confusing: false means keep focus in menubar, true means focus the menu\nexport const openMenu = (\n state,\n unFocusIndex,\n index,\n level,\n menuItems,\n menuFocusedIndex,\n focus,\n x,\n y,\n width,\n height\n) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(index)\n Assert.number(level)\n Assert.array(menuItems)\n Assert.number(menuFocusedIndex)\n Assert.boolean(focus)\n Assert.number(x)\n Assert.number(y)\n Assert.number(width)\n Assert.number(height)\n const { $TitleBarMenuBar } = state\n // TODO this code is very unclean\n $TitleBarMenuBar.addEventListener(\n 'mouseenter',\n ViewletTitleBarMenuBarEvents.handleMouseOver,\n {\n capture: true,\n }\n )\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = 'false'\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute('aria-owns')\n }\n $TitleBarMenuBar.children[index].ariaExpanded = 'true'\n const $$Menus = Menu.state.$$Menus\n Menu.state.$$Menus = []\n Menu.showControlled({\n x,\n y,\n width,\n height,\n items: menuItems,\n handleFocusOut: ViewletTitleBarMenuBarEvents.handleFocusOut,\n $Parent: $TitleBarMenuBar.children[index],\n level,\n })\n if (menuFocusedIndex !== -1) {\n Menu.focusIndex(0, -1, menuFocusedIndex)\n }\n for (const $Menu of $$Menus) {\n Widget.remove($Menu)\n }\n}\n\n// TODO there need to be two variants of closeMenu: one just closes menu, another close menu and focuses top level entry\nexport const closeMenu = (state, unFocusIndex, index) => {\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = 'false'\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute('aria-owns')\n }\n if (index !== -1) {\n $TitleBarMenuBar.children[index].focus()\n }\n Menu.hide(/* restoreFocus */ false)\n $TitleBarMenuBar.removeEventListener(\n 'mouseenter',\n ViewletTitleBarMenuBarEvents.handleMouseOver,\n {\n capture: true,\n }\n )\n}\n\nexport const setEntries = (state, titleBarEntries) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.append(...titleBarEntries.map(create$TopLevelEntry))\n}\n\nconst create$Menu = () => {\n const $Menu = document.createElement('div')\n $Menu.className = 'Menu'\n // @ts-ignore\n $Menu.role = 'menu'\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n // $Menu.addEventListener('mousedown', handleMouseDown)\n // $Menu.addEventListener('mouseenter', handleMouseEnter, {\n // capture: true,\n // })\n // $Menu.addEventListener('mouseleave', handleMouseLeave, {\n // capture: true,\n // })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n // $Menu.onkeydown = handleKeyDown\n // $Menu.addEventListener('focusout', handleFocusOut)\n // $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\n// TODO recycle menus\nexport const setMenus = (state, changes) => {\n const { $$Menus } = state\n for (const change of changes) {\n const type = change[0]\n if (type === 'addMenu') {\n const menu = change[1]\n const $Menu = create$Menu()\n $Menu.onmouseover = ViewletTitleBarMenuBarEvents.handleMenuMouseOver\n $Menu.onmousedown = ViewletTitleBarMenuBarEvents.handleMenuMouseDown\n const { top, left, width, height, level, focusedIndex } = menu\n $Menu.style.width = `${width}px`\n $Menu.style.height = `${height}px`\n $Menu.style.top = `${top}px`\n $Menu.style.left = `${left}px`\n $Menu.append(...menu.items.map(MenuItem.create$MenuItem))\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n if (focusedIndex !== -1) {\n const $Child = $Menu.children[focusedIndex]\n $Child.classList.add('Focused')\n // @ts-ignore\n $Child.focus()\n }\n $$Menus.push($Menu)\n } else if (type === 'updateMenu') {\n const menu = change[1]\n const newLength = change[2]\n const replaceItems = change[3]\n const { level, top, left, width, height, focusedIndex, items, expanded } =\n menu\n const $Menu = $$Menus[level]\n $Menu.style.width = `${width}px`\n $Menu.style.height = `${height}px`\n $Menu.style.top = `${top}px`\n $Menu.style.left = `${left}px`\n // TODO recycle menu item nodes\n const $$Children = items.map(MenuItem.create$MenuItem)\n if (focusedIndex !== -1) {\n const $Child = $$Children[focusedIndex]\n $Child.classList.add('Focused')\n if (expanded) {\n $Child.ariaExpanded = true\n $Child.setAttribute('aria-owns', `Menu-${level + 1}`)\n }\n }\n $Menu.replaceChildren(...$$Children)\n if (level === newLength - 1) {\n if (focusedIndex === -1) {\n $Menu.focus()\n } else {\n const $Child = $Menu.children[focusedIndex]\n $Child.focus()\n }\n }\n } else if (type === 'closeMenus') {\n const keepCount = change[1]\n const $$ToDispose = $$Menus.slice(keepCount)\n for (const $ToDispose of $$ToDispose) {\n Widget.remove($ToDispose)\n }\n $$Menus.length = keepCount\n }\n }\n}\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.js')\n case ViewletModuleId.RunAndDebug:\n return import('../ViewletRunAndDebug/ViewletRunAndDebug.js')\n case ViewletModuleId.Search:\n return import('../ViewletSearch/ViewletSearch.js')\n case ViewletModuleId.SourceControl:\n return import('../ViewletSourceControl/ViewletSourceControl.js')\n case ViewletModuleId.Terminal:\n return import('../ViewletTerminal/ViewletTerminal.js')\n case ViewletModuleId.Extensions:\n return import('../ViewletExtensions/ViewletExtensions.js')\n case ViewletModuleId.DebugConsole:\n return import('../ViewletDebugConsole/ViewletDebugConsole.js')\n case ViewletModuleId.Output:\n return import('../ViewletOutput/ViewletOutput.js')\n case ViewletModuleId.Problems:\n return import('../ViewletProblems/ViewletProblems.js')\n case ViewletModuleId.Empty:\n return import('../ViewletEmpty/ViewletEmpty.js')\n case ViewletModuleId.EditorText:\n return import('../ViewletEditorText/ViewletEditorText.js')\n case ViewletModuleId.EditorImage:\n return import('../ViewletEditorImage/ViewletEditorImage.js')\n case ViewletModuleId.Clock:\n return import('../ViewletClock/ViewletClock.js')\n case ViewletModuleId.SideBar:\n return import('../ViewletSideBar/ViewletSideBar.js')\n case ViewletModuleId.Panel:\n return import('../ViewletPanel/ViewletPanel.js')\n case ViewletModuleId.ActivityBar:\n return import('../ViewletActivityBar/ViewletActivityBar.js')\n case ViewletModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.js')\n case ViewletModuleId.QuickPick:\n return import('../ViewletQuickPick/ViewletQuickPick.js')\n case ViewletModuleId.StatusBar:\n return import('../ViewletStatusBar/ViewletStatusBar.js')\n case ViewletModuleId.TitleBar:\n return import('../ViewletTitleBar/ViewletTitleBar.js')\n case ViewletModuleId.Main:\n return import('../ViewletMain/ViewletMain.js')\n case ViewletModuleId.EditorCompletion:\n return import('../ViewletEditorCompletion/ViewletEditorCompletion.js')\n case ViewletModuleId.References:\n return import('../ViewletReferences/ViewletReferences.js')\n case ViewletModuleId.Implementations:\n return import('../ViewletImplementations/ViewletImplementations.js')\n case ViewletModuleId.EditorPlainText:\n return import('../ViewletEditorPlainText/ViewletEditorPlainText.js')\n case ViewletModuleId.KeyBindings:\n return import('../ViewletKeyBindings/ViewletKeyBindings.js')\n case ViewletModuleId.EditorFindWidget:\n return import('../ViewletEditorFindWidget/ViewletEditorFindWidget.js')\n case ViewletModuleId.ExtensionDetail:\n return import('../ViewletExtensionDetail/ViewletExtensionDetail.js')\n case ViewletModuleId.TitleBarButtons:\n return import('../ViewletTitleBarButtons/ViewletTitleBarButtons.js')\n case ViewletModuleId.TitleBarMenuBar:\n return import('../ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js')\n default:\n throw new Error('unknown module')\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\n\nexport const state = {\n instances: Object.create(null),\n currentSideBarView: undefined,\n currentPanelView: undefined,\n modules: Object.create(null),\n}\n\nexport const mount = ($Parent, state) => {\n $Parent.replaceChildren(state.$Viewlet)\n}\n\nexport const load = async (id, ...args) => {\n const module = await ViewletModule.load(id)\n state.modules[id] = module\n state.instances[id] = {\n state: module.create(...args),\n factory: module,\n }\n}\n\nexport const create = (id) => {\n const module = state.modules[id]\n state.instances[id] = {\n state: module.create(),\n factory: module,\n }\n}\n\nexport const loadModule = async (id) => {\n const module = await ViewletModule.load(id)\n state.modules[id] = module\n}\n\nexport const invoke = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (!instance) {\n console.warn(`viewlet instance ${viewletId} not found`)\n return\n }\n if (typeof instance.factory[method] !== 'function') {\n console.warn(`method ${method} in ${viewletId} not implemented`)\n return\n }\n return instance.factory[method](instance.state, ...args)\n}\n\nexport const focus = (viewletId) => {\n const instance = state.instances[viewletId]\n if (instance && instance.factory && instance.factory.focus) {\n instance.factory.focus(instance.state)\n } else {\n // TODO push focusContext\n }\n}\n\n/**\n * @deprecated\n */\nexport const refresh = (viewletId, viewletContext) => {\n console.log('REFRESH', viewletId)\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory.refresh(instance.state, viewletContext)\n } else {\n // console.warn('no instance yet of ' + viewletId)\n state.refreshContext[viewletId] = viewletContext\n }\n}\n\n// TODO handle error when viewlet creation fails\n\n// TODO remove send -> use invoke instead\nexport const send = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory[method](...args)\n } else {\n // TODO\n console.warn('instance not present')\n }\n}\n\n// TODO this code is bad\nexport const sendMultiple = (commands) => {\n for (const command of commands) {\n const [_, viewletId, method, ...args] = command\n if (_ === 'Viewlet.ariaAnnounce') {\n ariaAnnounce(viewletId)\n } else if (_ === 'Viewlet.setBounds') {\n setBounds(viewletId, method, ...args)\n } else if (_ === 'Viewlet.create') {\n create(viewletId)\n } else if (_ === 'Viewlet.append') {\n append(viewletId, method)\n } else {\n invoke(viewletId, method, ...args)\n }\n }\n}\n\n/**\n * @deprecated\n */\nexport const dispose = (id) => {\n Assert.string(id)\n const instance = state.instances[id]\n if (!instance) {\n console.warn(`viewlet instance ${id} not found and cannot be disposed`)\n return\n }\n try {\n instance.factory.dispose(instance.state)\n if (instance.state.$Viewlet && instance.state.$Viewlet.isConnected) {\n instance.state.$Viewlet.remove()\n }\n } catch (error) {\n console.error(error)\n }\n delete state.instances[id]\n}\n\n/**\n * @deprecated\n */\nexport const replace = () => {\n // TODO maybe check if viewlet can be recycled\n}\n\nexport const handleError = (id, parentId, message) => {\n console.log(`[viewlet-error] ${id}: ${message}`)\n const instance = state.instances[id]\n if (instance && instance.factory && instance.factory.handleError) {\n instance.factory.handleError(instance.state, message)\n return\n }\n // TODO error should bubble up to until highest possible component\n const parentInstance = state.instances[parentId]\n if (\n parentInstance &&\n parentInstance.factory &&\n parentInstance.factory.handleError\n ) {\n parentInstance.factory.handleError(instance.state, message)\n console.log('parent instance', parentInstance)\n return\n }\n if (\n instance &&\n instance.state.$Viewlet &&\n instance.state.$Viewlet.isConnected\n ) {\n instance.state.$Viewlet.textContent = `${message}`\n }\n}\n\n/**\n * @deprecated\n */\nexport const hydrate = (id, ...args) => {\n const module = state.modules[id]\n const instanceState = module.create(...args)\n state.instances[id] = { state: instanceState, factory: module }\n}\n\n/**\n * @deprecated\n */\nexport const appendViewlet = (parentId, childId, focus) => {\n if (parentId === 'Widget') {\n // TODO\n return\n }\n const parentInstanceState = state.instances[parentId] // TODO must ensure that parent is already created\n const parentModule = parentInstanceState.factory\n const childInstance = state.instances[childId]\n if (!childInstance) {\n throw new Error('child instance must be defined to be appended to parent')\n }\n parentModule.appendViewlet(\n parentInstanceState.state,\n childInstance.factory.name,\n childInstance.state.$Viewlet\n )\n if (focus && childInstance.factory.focus) {\n childInstance.factory.focus(childInstance.state)\n }\n}\n\nconst ariaAnnounce = async (message) => {\n const AriaAlert = await import('../AriaAlert/AriaAlert.js')\n AriaAlert.alert(message)\n}\n\nconst append = (parentId, childId) => {\n const parentInstance = state.instances[parentId]\n const $Parent = parentInstance.state.$Viewlet\n const childInstance = state.instances[childId]\n const $Child = childInstance.state.$Viewlet\n $Parent.append($Child)\n}\n\nexport const executeCommands = (commands) => {\n for (const [command, ...args] of commands) {\n switch (command) {\n case 'Viewlet.create':\n create(...args)\n break\n case 'Viewlet.send':\n invoke(...args)\n break\n case 'Viewlet.show':\n show(...args)\n break\n case 'Viewlet.dispose':\n dispose(...args)\n break\n case 'Viewlet.setBounds':\n setBounds(...args)\n break\n case 'Viewlet.ariaAnnounce':\n ariaAnnounce(...args)\n break\n case 'Viewlet.append':\n append(...args)\n break\n default:\n throw new Error(`unknown command ${command}`)\n }\n }\n}\n\nexport const show = (id) => {\n const instance = state.instances[id]\n const $Viewlet = instance.state.$Viewlet\n const $Workbench = document.getElementById('Workbench')\n $Workbench.append($Viewlet)\n if (instance.factory.focus) {\n instance.factory.focus(instance.state)\n }\n}\n\nexport const setBounds = (id, left, top, width, height) => {\n const instance = state.instances[id]\n const $Viewlet = instance.state.$Viewlet\n $Viewlet.style.left = `${left}px`\n $Viewlet.style.top = `${top}px`\n $Viewlet.style.width = `${width}px`\n $Viewlet.style.height = `${height}px`\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\n\nexport const Commands = {\n 'Viewlet.appendViewlet': Viewlet.appendViewlet,\n 'Viewlet.dispose': Viewlet.dispose,\n 'Viewlet.executeCommands': Viewlet.executeCommands,\n 'Viewlet.focus': Viewlet.focus,\n 'Viewlet.handleError': Viewlet.handleError,\n 'Viewlet.invoke': Viewlet.invoke,\n 'Viewlet.load': Viewlet.load,\n 'Viewlet.loadModule': Viewlet.loadModule,\n 'Viewlet.refresh': Viewlet.refresh,\n 'Viewlet.send': Viewlet.invoke,\n 'Viewlet.sendMultiple': Viewlet.sendMultiple,\n 'Viewlet.setBounds': Viewlet.setBounds,\n 'Viewlet.show': Viewlet.show,\n}\n", "export const LocalStorage = 1\n\nexport const SessionStorage = 2\n", "import * as WebStorageType from '../WebStorageType/WebStorageType.js'\n\nconst getStorage = (storageType) => {\n switch (storageType) {\n case WebStorageType.LocalStorage:\n return localStorage\n case WebStorageType.SessionStorage:\n return sessionStorage\n default:\n throw new Error(`unsupported storage type ${storageType}`)\n }\n}\n\nexport const getItem = (storageType, key) => {\n const storage = getStorage(storageType)\n return storage.getItem(key) || undefined\n}\n\nexport const setItem = (storageType, key, value) => {\n const storage = getStorage(storageType)\n storage.setItem(key, value)\n}\n\nexport const clear = (storageType) => {\n const storage = getStorage(storageType)\n storage.clear()\n}\n", "import * as WebStorage from './WebStorage.js'\n\nexport const Commands = {\n 'WebStorage.clear': WebStorage.clear,\n 'WebStorage.getItem': WebStorage.getItem,\n 'WebStorage.setItem': WebStorage.setItem,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const reload = () => {\n location.reload()\n}\n\nexport const minimize = () => {}\n\nexport const maximize = () => {}\n\nexport const unmaximize = () => {}\n\nexport const close = () => {\n // window.close()\n}\n\nexport const setTitle = (title) => {\n document.title = title\n}\n\nconst sendVisibilityChangeHint = () => {\n RendererWorker.send(\n /* SaveState.handleVisibilityChange */ 'SaveState.handleVisibilityChange',\n /* visibilityState */ 'hidden'\n )\n}\n\nconst handleBeforeUnload = () => {\n sendVisibilityChangeHint()\n}\nconst handlePointerLeave = () => {\n sendVisibilityChangeHint()\n}\n\n// cannot use visibilty change event because worker cannot process events when page closes\n// https://stackoverflow.com/questions/20084348/what-happens-to-a-web-worker-if-i-close-the-page-that-created-this-web-worker/20105455#20105455\n// beforeunload event has the same problem, pointerleave event sometimes works\nexport const onVisibilityChange = () => {\n window.addEventListener('beforeunload', handleBeforeUnload)\n document.addEventListener('pointerleave', handlePointerLeave)\n}\n", "import * as Window from './Window.js'\n\nexport const Commands = {\n 'Window.close': Window.close,\n 'Window.maximize': Window.maximize,\n 'Window.minimize': Window.minimize,\n 'Window.onVisibilityChange': Window.onVisibilityChange,\n 'Window.reload': Window.reload,\n 'Window.setTitle': Window.setTitle,\n 'Window.unmaximize': Window.unmaximize,\n}\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ModuleId.Audio:\n return import('../Audio/Audio.ipc.js')\n case ModuleId.ClipBoard:\n return import('../ClipBoard/ClipBoard.ipc.js')\n case ModuleId.Css:\n return import('../Css/Css.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.EditorError:\n return import('../EditorError/EditorError.ipc.js')\n case ModuleId.EditorHover:\n return import('../EditorHover/EditorHover.ipc.js')\n case ModuleId.EditorRename:\n return import('../EditorRename/EditorRename.ipc.js')\n case ModuleId.Eval:\n return import('../Eval/Eval.ipc.js')\n case ModuleId.FilePicker:\n return import('../FilePicker/FilePicker.ipc.js')\n case ModuleId.FileSystemHandle:\n return import('../FileSystemHandle/FileSystemHandle.ipc.js')\n case ModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.ipc.js')\n case ModuleId.InitData:\n return import('../InitData/InitData.ipc.js')\n case ModuleId.KeyBindings:\n return import('../KeyBindings/KeyBindings.ipc.js')\n case ModuleId.Layout:\n return import('../Layout/Layout.ipc.js')\n case ModuleId.Location:\n return import('../Location/Location.ipc.js')\n case ModuleId.Meta:\n return import('../Meta/Meta.ipc.js')\n case ModuleId.Notification:\n return import('../Notification/Notification.ipc.js')\n case ModuleId.Menu:\n return import('../OldMenu/Menu.ipc.js')\n case ModuleId.Open:\n return import('../Open/Open.ipc.js')\n case ModuleId.Performance:\n return import('../Performance/Performance.ipc.js')\n case ModuleId.SanitizeHtml:\n return import('../SanitizeHtml/SanitizeHtml.ipc.js')\n case ModuleId.ServiceWorker:\n return import('../ServiceWorker/ServiceWorker.ipc.js')\n case ModuleId.TestFrameWork:\n return import('../TestFrameWork/TestFrameWork.ipc.js')\n case ModuleId.Viewlet:\n return import('../Viewlet/Viewlet.ipc.js')\n case ModuleId.WebStorage:\n return import('../WebStorage/WebStorage.ipc.js')\n case ModuleId.Window:\n return import('../Window/Window.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 case 'Audio.play':\n return ModuleId.Audio\n case 'ClipBoard.readText':\n case 'ClipBoard.writeImage':\n case 'ClipBoard.writeText':\n return ModuleId.ClipBoard\n case 'Css.setInlineStyle':\n return ModuleId.Css\n case 'Developer.getMemoryUsage':\n case 'Developer.showState':\n return ModuleId.Developer\n case 'Dialog.alert':\n case 'Dialog.close':\n case 'Dialog.prompt':\n case 'Dialog.showErrorDialogWithOptions':\n return ModuleId.Dialog\n case 'Download.downloadFile':\n return ModuleId.Download\n case 764:\n case 765:\n case 766:\n case 767:\n case 768:\n case 769:\n case 770:\n case 771:\n case 772:\n case 773:\n case 774:\n case 775:\n case 776:\n case 777:\n return ModuleId.EditorController\n case 'EditorError.create':\n return ModuleId.EditorError\n case 'EditorHover.create':\n return ModuleId.EditorHover\n case 'EditorRename.create':\n case 'EditorRename.dispose':\n case 'EditorRename.finish':\n return ModuleId.EditorRename\n case 'Eval.evalCode':\n return ModuleId.Eval\n case 'FilePicker.showDirectoryPicker':\n case 'FilePicker.showFilePicker':\n case 'FilePicker.showSaveFilePicker':\n return ModuleId.FilePicker\n case 'FileSystemHandle.requestPermission':\n return ModuleId.FileSystemHandle\n case 'FindWidget.create':\n case 'FindWidget.dispose':\n case 'FindWidget.setResults':\n return ModuleId.FindWidget\n case 'ImagePreview.create':\n case 'ImagePreview.dispose':\n case 'ImagePreview.showError':\n case 'ImagePreview.update':\n return ModuleId.ImagePreview\n case 'InitData.getInitData':\n return ModuleId.InitData\n case 'KeyBindings.hydrate':\n return ModuleId.KeyBindings\n case 'Layout.getBounds':\n case 'Layout.hide':\n case 'Layout.hydrate':\n case 'Layout.show':\n case 'Layout.update':\n return ModuleId.Layout\n case 'Location.getHref':\n case 'Location.getPathName':\n case 'Location.hydrate':\n case 'Location.setPathName':\n return ModuleId.Location\n case 'Menu.focusIndex':\n case 'Menu.hide':\n case 'Menu.hideSubMenu':\n case 'Menu.show':\n case 'Menu.showContextMenu':\n case 'Menu.showControlled':\n case 'Menu.showMenu':\n case 'Menu.showSubMenu':\n return ModuleId.Menu\n case 'Meta.setThemeColor':\n return ModuleId.Meta\n case 'Notification.create':\n case 'Notification.createWithOptions':\n case 'Notification.dispose':\n return ModuleId.Notification\n case 'Open.openUrl':\n return ModuleId.Open\n case 6661:\n case 6662:\n case 6663:\n case 6664:\n return ModuleId.Panel\n case 'Performance.getMemory':\n case 'Performance.measureUserAgentSpecificMemory':\n return ModuleId.Performance\n case 'SanitizeHtml.sanitizeHtml':\n return ModuleId.SanitizeHtml\n case 'ServiceWorker.register':\n case 'ServiceWorker.uninstall':\n return ModuleId.ServiceWorker\n case 'TestFrameWork.checkMultiElementCondition':\n case 'TestFrameWork.checkSingleElementCondition':\n case 'TestFrameWork.performAction':\n case 'TestFrameWork.performKeyBoardAction':\n case 'TestFrameWork.showOverlay':\n return ModuleId.TestFrameWork\n case 549:\n case 550:\n case 551:\n return ModuleId.ViewService\n case 'Viewlet.appendViewlet':\n case 'Viewlet.dispose':\n case 'Viewlet.focus':\n case 'Viewlet.handleError':\n case 'Viewlet.invoke':\n case 'Viewlet.load':\n case 'Viewlet.refresh':\n case 'Viewlet.send':\n case 'Viewlet.sendMultiple':\n case 'Viewlet.setBounds':\n return ModuleId.Viewlet\n case 'WebStorage.clear':\n case 'WebStorage.getItem':\n case 'WebStorage.setItem':\n return ModuleId.WebStorage\n case 'Window.close':\n case 'Window.maximize':\n case 'Window.minimize':\n case 'Window.onVisibilityChange':\n case 'Window.reload':\n case 'Window.setTitle':\n case 'Window.unmaximize':\n return ModuleId.Window\n case 33111:\n return ModuleId.Workbench\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 register(key, value)\n }\n return\n }\n throw new Error(`module ${module.name} is missing commands`)\n}\n\nconst getOrLoadModule = (moduleId) => {\n if (!state.pendingModules[moduleId]) {\n const importPromise = Module.load(moduleId)\n state.pendingModules[moduleId] = importPromise\n .then(initializeModule)\n .catch((error) => {\n console.error(error)\n })\n }\n return state.pendingModules[moduleId]\n}\n\nconst loadCommand = async (command) => {\n await getOrLoadModule(ModuleMap.getModuleId(command))\n}\n\nexport const register = (commandId, listener) => {\n state.commands[commandId] = listener\n}\n\nconst hasThrown = new Set()\n\nconst executeCommandAsync = async (command, ...args) => {\n try {\n await loadCommand(command)\n } catch (error) {\n // @ts-ignore\n throw new Error(`Failed to load command ${command}`, {\n cause: error,\n })\n }\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\nexport const execute = (command, ...args) => {\n if (command in state.commands) {\n return state.commands[command](...args)\n }\n return executeCommandAsync(command, ...args)\n}\n", "export class JsonRpcError extends Error {\n constructor(message) {\n super(message)\n this.name = 'JsonRpcError'\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 return port\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 renderer 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 return worker\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 return referencePort\n}\n", "/* istanbul ignore file */\n\nexport const Methods = {\n MessagePort: 1,\n ModuleWorker: 2,\n ReferencePort: 3,\n}\n\n/**\n * @type {number}\n */\nconst METHOD_PREFERRED = Methods.ModuleWorker\n\nconst getModule = () => {\n switch (METHOD_PREFERRED) {\n case Methods.ModuleWorker:\n return import('./IpcParentWithModuleWorker.js')\n case Methods.MessagePort:\n return import('./IpcParentWithMessagePort.js')\n case Methods.ReferencePort:\n return import('./IpcParentWithReferencePort.js')\n default:\n throw new Error('unknown method')\n }\n}\n\nexport const create = async ({ method, ...options }) => {\n const module = await getModule()\n // @ts-ignore\n return module.create(options)\n}\n", "import * as Callback from '../Callback/Callback.js'\nimport * as Command from '../Command/Command.js'\nimport { JsonRpcError } from '../Errors/JsonRpcError.js'\nimport * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// const URL_RENDERER_WORKER =\n// '/packages/renderer-worker/distmin/rendererWorkerMain-0ead0bed.js'\n\nexport const state = {\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nclass NonError extends Error {\n name = 'NonError'\n\n constructor(message) {\n super(message)\n }\n}\n\n// ensureError based on https://github.com/sindresorhus/ensure-error/blob/main/index.js (License MIT)\nconst ensureError = (input) => {\n if (!(input instanceof Error)) {\n return new NonError(input)\n }\n return input\n}\n\nconst serializeError = (error) => {\n error = ensureError(error)\n return {\n stack: error.stack,\n message: error.message,\n }\n}\n\nconst handleMessageFromRendererWorker = async (event) => {\n const message = event.data\n if ('id' in message) {\n if ('method' in message) {\n try {\n const result = await Command.execute(message.method, ...message.params)\n state.ipc.send({\n jsonrpc: '2.0',\n id: message.id,\n result,\n })\n return\n } catch (error) {\n const serializedError = serializeError(error)\n state.ipc.send({\n jsonrpc: '2.0',\n id: message.id,\n error: {\n message: serializedError.message,\n stack: serializedError.stack,\n },\n })\n }\n return\n }\n Callback.resolve(message.id, message)\n return\n }\n if (message.method === 'get-port') {\n const type = message.params[0]\n const port = await getPort(type)\n console.log({ port })\n state.ipc.sendAndTransfer('port', [port])\n return\n }\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nconst getIpc = async () => {\n const rendererWorker = await IpcParent.create({\n method: IpcParent.Methods.ModuleWorker,\n url: Platform.getRendererWorkerUrl(),\n name: 'Renderer Worker',\n })\n return {\n send(message) {\n rendererWorker.postMessage(message)\n },\n sendAndTransfer(message, transferables) {\n rendererWorker.postMessage(message, transferables)\n },\n get onmessage() {\n return rendererWorker.onmessage\n },\n set onmessage(listener) {\n rendererWorker.onmessage = listener\n },\n }\n}\n\nconst getPort = (type) => {\n return new Promise((resolve, reject) => {\n const handleMessageFromWindow = (event) => {\n const port = event.ports[0]\n resolve(port)\n }\n\n // @ts-ignore\n window.addEventListener('message', handleMessageFromWindow, {\n once: true,\n })\n // @ts-ignore\n window.myApi.ipcConnect(type)\n })\n}\n\nexport const hydrate = async (config) => {\n const ipc = await getIpc()\n\n // setup electron message port\n if (Platform.isElectron()) {\n const event = await new Promise((resolve, reject) => {\n const handleIpcMessage = async (event) => {\n resolve(event)\n }\n ipc.onmessage = handleIpcMessage\n })\n if (event.data.method !== 'get-port') {\n throw new Error('unexpected message from renderer worker')\n }\n const type = event.data.params[0]\n const port = await getPort(type)\n ipc.sendAndTransfer('port', [port])\n }\n ipc.onmessage = handleMessageFromRendererWorker\n state.ipc = ipc\n}\n\n// TODO needed?\nexport const dispose = () => {\n if (state.rendererWorker) {\n state.rendererWorker.terminate()\n }\n}\n\nexport const send = (method, ...params) => {\n state.ipc.send({\n jsonrpc: '2.0',\n method,\n params,\n })\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 RendererWorkerError 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, ...params) => {\n const responseMessage = await new Promise((resolve, reject) => {\n const callbackId = Callback.register(resolve, reject)\n state.ipc.send({\n jsonrpc: '2.0',\n method,\n params,\n id: callbackId,\n })\n })\n if ('error' in responseMessage) {\n throw new RendererWorkerError(responseMessage.error)\n }\n if ('result' in responseMessage) {\n return responseMessage.result\n }\n\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nexport const sendAndTransfer = (message, transfer) => {\n state.ipc.sendAndTransfer(message, transfer)\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $ActivityBar: undefined,\n $StatusBar: undefined,\n $TitleBar: undefined,\n $Main: undefined,\n $SideBar: undefined,\n $Panel: undefined,\n $Workbench: undefined,\n $SashSideBar: undefined,\n $SashPanel: undefined,\n}\n\n// TODO when nodes are not visible, they are still kept in memory as detached dom nodes\n// maybe it doesn't matter but maybe they should be garbage collected\n\nexport const update = (points) => {\n const $ActivityBar = state.$ActivityBar\n const $Main = state.$Main\n const $TitleBar = state.$TitleBar\n const $SideBar = state.$SideBar\n const $StatusBar = state.$StatusBar\n const $Panel = state.$Panel\n const $SashSideBar = state.$SashSideBar\n const $SashPanel = state.$SashPanel\n\n if (points.activityBarVisible) {\n $ActivityBar.style.top = `${points.activityBarTop}px`\n $ActivityBar.style.left = `${points.activityBarLeft}px`\n $ActivityBar.style.width = `${points.activityBarWidth}px`\n $ActivityBar.style.height = `${points.activityBarHeight}px`\n $ActivityBar.style.display = ''\n } else {\n $ActivityBar.style.display = 'none'\n }\n if (points.mainVisible) {\n $Main.style.top = `${points.mainTop}px`\n $Main.style.left = `${points.mainLeft}px`\n $Main.style.width = `${points.mainWidth}px`\n $Main.style.height = `${points.mainHeight}px`\n $Main.style.display = ''\n } else {\n $Main.style.display = 'none'\n }\n if (points.panelVisible) {\n $Panel.style.top = `${points.panelTop}px`\n $Panel.style.left = `${points.panelLeft}px`\n $Panel.style.width = `${points.panelWidth}px`\n $Panel.style.height = `${points.panelHeight}px`\n $Panel.style.display = ''\n\n $SashPanel.style.top = `${points.panelTop}px`\n $SashPanel.style.left = `${points.panelLeft}px`\n $SashPanel.style.width = `${points.panelWidth}px`\n } else {\n $Panel.style.display = 'none'\n }\n if (points.sideBarVisible) {\n $SideBar.style.top = `${points.sideBarTop}px`\n $SideBar.style.left = `${points.sideBarLeft}px`\n $SideBar.style.width = `${points.sideBarWidth}px`\n $SideBar.style.height = `${points.sideBarHeight}px`\n $SideBar.style.display = ''\n\n $SashSideBar.style.left = `${points.sideBarLeft}px`\n $SashSideBar.style.top = `${points.sideBarTop}px`\n $SashSideBar.style.height = `${points.sideBarHeight}px`\n } else {\n $SideBar.style.display = 'none'\n }\n if (points.statusBarVisible) {\n $StatusBar.style.top = `${points.statusBarTop}px`\n $StatusBar.style.left = `${points.statusBarLeft}px`\n $StatusBar.style.width = `${points.statusBarWidth}px`\n $StatusBar.style.height = `${points.statusBarHeight}px`\n $StatusBar.style.display = ''\n } else {\n $StatusBar.style.display = 'none'\n }\n if (points.titleBarVisible) {\n $TitleBar.style.top = `${points.titleBarTop}px`\n $TitleBar.style.left = `${points.titleBarLeft}px`\n $TitleBar.style.width = `${points.titleBarWidth}px`\n $TitleBar.style.height = `${points.titleBarHeight}px`\n $TitleBar.style.display = ''\n } else {\n // TODO remove elements from dom instead of hiding them\n $TitleBar.style.display = 'none'\n }\n}\n\n// export const get$ActivityBar = () => {\n// return state.$ActivityBar\n// }\n\n// export const get$SideBar = () => {\n// return state.$SideBar\n// }\n\n// export const get$Panel = () => {\n// return state.$Panel\n// }\n\n// export const get$TitleBar = () => {\n// return state.$TitleBar\n// }\n\n// export const get$Main = () => {\n// return state.$Main\n// }\n\nconst getTitleBarHeight = () => {\n if (\n // @ts-ignore\n navigator.windowControlsOverlay &&\n // @ts-ignore\n navigator.windowControlsOverlay.getTitlebarAreaRect\n ) {\n // @ts-ignore\n const titleBarRect = navigator.windowControlsOverlay.getTitlebarAreaRect()\n return titleBarRect.height\n }\n return 0\n}\n\nexport const getBounds = () => {\n return {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n titleBarHeight: getTitleBarHeight(),\n }\n}\n\nconst handleResize = (event) => {\n RendererWorker.send(\n /* Layout.handleResize */ 'Layout.handleResize',\n /* bounds */ getBounds()\n )\n}\n\nconst getSashId = ($Target) => {\n console.log({ $Target })\n if ($Target.id === 'SashPanel') {\n return 'Panel'\n }\n if ($Target.id === 'SashSideBar') {\n return 'SideBar'\n }\n return ''\n}\n\nconst handleSashPointerMove = (event) => {\n const { clientX, clientY } = event\n RendererWorker.send(\n /* Layout.handleSashPointerMove */ 'Layout.handleSashPointerMove',\n /* x */ clientX,\n /* y */ clientY\n )\n}\n\nconst handleSashPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener('pointermove', handleSashPointerMove)\n target.removeEventListener('pointerup', handleSashPointerUp)\n}\n\nconst handleSashPointerDown = (event) => {\n const { target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener('pointermove', handleSashPointerMove)\n target.addEventListener('pointerup', handleSashPointerUp)\n const $Target = event.target\n const id = getSashId($Target)\n RendererWorker.send(\n /* Layout.handleSashPointerDown */ 'Layout.handleSashPointerDown',\n /* id */ id\n )\n}\n\nexport const show = (points) => {\n const $ActivityBar = document.createElement('div')\n $ActivityBar.id = 'ActivityBar'\n\n const $StatusBar = document.createElement('div')\n $StatusBar.id = 'StatusBar'\n\n const $TitleBar = document.createElement('div')\n $TitleBar.id = 'TitleBar'\n\n const $Main = document.createElement('main')\n $Main.id = 'Main'\n\n const $SideBar = document.createElement('div')\n $SideBar.id = 'SideBar'\n\n const $Panel = document.createElement('div')\n $Panel.id = 'Panel'\n\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashSideBar = document.createElement('div')\n $SashSideBar.className = 'SashVertical'\n $SashSideBar.id = 'SashSideBar'\n\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashPanel = document.createElement('div')\n $SashPanel.className = 'SashHorizontal'\n $SashPanel.id = 'SashPanel'\n\n const $Workbench = document.createElement('div')\n $Workbench.id = 'Workbench'\n $Workbench.append(\n $TitleBar,\n $Main,\n $SideBar,\n $ActivityBar,\n $Panel,\n $StatusBar,\n $SashSideBar,\n $SashPanel\n )\n // TODO don't like the random side effects here\n state.$ActivityBar = $ActivityBar\n state.$Main = $Main\n state.$Panel = $Panel\n state.$SideBar = $SideBar\n state.$StatusBar = $StatusBar\n state.$TitleBar = $TitleBar\n state.$Workbench = $Workbench\n state.$SashPanel = $SashPanel\n state.$SashSideBar = $SashSideBar\n update(points)\n // document.body.role= 'application' // TODO this doesn't seem to work\n // @ts-ignore\n $Workbench.role = 'application'\n document.body.append($Workbench)\n window.addEventListener('resize', handleResize, { passive: true })\n $SashSideBar.addEventListener('pointerdown', handleSashPointerDown)\n $SashPanel.addEventListener('pointerdown', handleSashPointerDown)\n}\n\nexport const hide = () => {\n state.$Workbench.remove()\n window.removeEventListener('resize', handleResize)\n}\n", "import * as Layout from './Layout.js'\n\nexport const Commands = {\n 'Layout.getBounds': Layout.getBounds,\n 'Layout.hide': Layout.hide,\n 'Layout.show': Layout.show,\n 'Layout.update': Layout.update,\n // Command.register(1101, Layout.hideSideBar)\n // Command.register(1102, Layout.toggleSideBar)\n // Command.register(1103, Layout.showPanel)\n // Command.register(1104, Layout.hidePanel)\n // Command.register(1105, Layout.togglePanel)\n // Command.register(1106, Layout.showActivityBar)\n // Command.register(1107, Layout.hideActivityBar)\n // Command.register(1108, Layout.toggleActivityBar)\n}\n", "// files that should be in initial chunk\nimport * as M1 from '../src/parts/Css/Css.ipc.js'\nimport * as M2 from '../src/parts/Layout/Layout.ipc.js'\nimport * as M4 from '../src/parts/Editor/Editor.js'\nimport * as M5 from '../src/parts/Focus/Focus.js'\nimport * as M6 from '../src/parts/Viewlet/Viewlet.ipc.js'\nimport * as M7 from '../src/parts/KeyBindings/KeyBindings.ipc.js'\nimport * as M14 from '../src/parts/Widget/Widget.js'\nimport * as M18 from '../src/parts/Platform/Platform.js'\nimport * as M22 from '../src/parts/ServiceWorker/ServiceWorker.ipc.js'\nimport * as M26 from '../src/parts/Location/Location.ipc.js'\nimport * as M13 from './parts/OldMenu/Menu.js'\nimport * as M27 from './parts/ViewletActivityBar/ViewletActivityBar.js'\nimport * as M28 from './parts/ViewletStatusBar/ViewletStatusBar.js'\nimport * as M29 from './parts/ViewletTitleBar/ViewletTitleBar.js'\nimport * as M30 from './parts/Window/Window.ipc.js'\nimport * as RendererWorker from './parts/RendererWorker/RendererWorker.js'\nimport * as Platform from './parts/Platform/Platform.js'\nimport * as PlatformType from './parts/PlatformType/PlatformType.js'\n\n// hack so that rollup doesn't tree-shake out these modules\nglobalThis.M = [\n M1,\n M2,\n M4,\n M5,\n M6,\n M7,\n M13,\n M14,\n M18,\n M22,\n M26,\n M27,\n M28,\n M29,\n M30,\n]\n\nconst handleError = (error) => {\n console.info(`[renderer-process] Unhandled Error: ${error}`)\n alert(error)\n}\n\nconst handleUnhandledRejection = (event) => {\n console.info(`[renderer-process] Unhandled Rejection: ${event.reason}`)\n alert(event.reason)\n}\n\nconst main = async () => {\n onerror = handleError\n onunhandledrejection = handleUnhandledRejection\n\n if (Platform.platform === PlatformType.Web) {\n // disable prompt to download app as pwa\n // @ts-ignore\n window.onbeforeinstallprompt = (event) => {\n event.preventDefault()\n }\n }\n // TODO this is discovered very late\n await RendererWorker.hydrate()\n dispatchEvent(new CustomEvent('code/ready'))\n // TODO avoid creating global variables\n globalThis.__codeLoaded = true\n}\n\nmain()\n\n// 1. invoke shared process to read file\n// 2. display file\n// 3. optimize\n\n// DEBUG\n\n// globalThis.Panel = Panel\n// globalThis.Context = Context\n// globalThis.StatusBar = StatusBar\n// globalThis.ViewService = ViewService\n// globalThis.SideBar = SideBar\n// globalThis.FileSystem = FileSystem\n\nexport const send = RendererWorker.send\n"],
5
- "mappings": "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,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA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,KAAK;AAAA,QACL,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;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;AACH,iBAAgB;AAAA,QAClB,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,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;AACH,iBAAgB;AAAA,QAClB,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;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;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;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;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;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,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;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB;AACE,gBAAM,IAAI,MAAM,WAAW,qBAAqB;AAAA,MACpD;AAAA,IACF;AAAA;AAAA;;;ACjJA,IAGaC,SAKP,kBAUA,iBAYA,aAIOC,WAIP,WAEA,qBAmBO;AA3Db;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,UAAAC,UAAS,KAAK,KAAK;AAAA,QACrB;AACA;AAAA,MACF;AACA,YAAM,IAAI,MAAM,UAAU,OAAO,0BAA0B;AAAA,IAC7D;AAEA,IAAM,kBAAkB,CAAC,aAAa;AACpC,UAAI,CAACD,QAAM,eAAe,WAAW;AACnC,cAAM,gBAAuBE,MAAK,QAAQ;AAC1C,QAAAF,QAAM,eAAe,YAAY,cAC9B,KAAK,gBAAgB,EACrB,MAAM,CAAC,UAAU;AAChB,kBAAQ,MAAM,KAAK;AAAA,QACrB,CAAC;AAAA,MACL;AACA,aAAOA,QAAM,eAAe;AAAA,IAC9B;AAEA,IAAM,cAAc,OAAO,YAAY;AACrC,YAAM,gBAA0B,YAAY,OAAO,CAAC;AAAA,IACtD;AAEO,IAAMC,YAAW,CAAC,WAAW,aAAa;AAC/C,MAAAD,QAAM,SAAS,aAAa;AAAA,IAC9B;AAEA,IAAM,YAAY,oBAAI,IAAI;AAE1B,IAAM,sBAAsB,OAAO,YAAY,SAAS;AACtD,UAAI;AACF,cAAM,YAAY,OAAO;AAAA,MAC3B,SAAS,OAAP;AAEA,cAAM,IAAI,MAAM,0BAA0B,WAAW;AAAA,UACnD,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,UAAI,EAAE,WAAWA,QAAM,WAAW;AAChC,YAAI,UAAU,IAAI,OAAO,GAAG;AAC1B;AAAA,QACF;AACA,kBAAU,IAAI,OAAO;AACrB,cAAM,IAAI,MAAM,6BAA6B,UAAU;AAAA,MACzD;AACA,aAAO,QAAQ,SAAS,GAAG,IAAI;AAAA,IACjC;AAEO,IAAM,UAAU,CAAC,YAAY,SAAS;AAC3C,UAAI,WAAWA,QAAM,UAAU;AAC7B,eAAOA,QAAM,SAAS,SAAS,GAAG,IAAI;AAAA,MACxC;AACA,aAAO,oBAAoB,SAAS,GAAG,IAAI;AAAA,IAC7C;AAAA;AAAA;;;AChEA,IAAa;AAAb;AAAA;AAAA;AAAO,IAAM,eAAN,cAA2B,MAAM;AAAA,MACtC,YAAY,SAAS;AACnB,cAAM,OAAO;AACb,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA;AAAA;;;ACLA;AAAA;AAAA,gBAAAG;AAAA;AAAA,IAEaA;AAFb;AAAA;AAAA;AAAA;AAEO,IAAMA,WAAS,OAAO,EAAE,IAAI,MAAM;AACvC,MAAO,OAAO,GAAG;AACjB,YAAM,OAAO,MAAM,IAAI,QAAQ,CAACC,aAAY;AAC1C,mBAAW,aAAaA;AACxB,eAAO;AAAA,MACT,CAAC;AACD,aAAO,WAAW;AAClB,aAAO;AAAA,IACT;AAAA;AAAA;;;ACVA;AAAA;AAAA,gBAAAC;AAAA;AAAA,IAAM,gBAUA,4BA2BA,gBAOOA;AA5Cb;AAAA;AAAA;AAAA,IAAM,iBAAiB,CAACC,WAAS;AAC/B,UAAI,CAACA,QAAM;AACT,eAAO;AAAA,MACT;AACA,UAAIA,OAAK,SAAS,QAAQ,GAAG;AAC3B,eAAOA,OAAK,YAAY;AAAA,MAC1B;AACA,aAAO,GAAGA;AAAA,IACZ;AAEA,IAAM,6BAA6B,OAAO,EAAE,KAAK,MAAAA,OAAK,MAAM;AAC1D,YAAM,cAAc,eAAeA,MAAI;AACvC,UAAI;AACF,cAAM,OAAO;AACb,eAAO,mBAAmB;AAAA,MAC5B,SAAS,OAAP;AACA,YACE,SACA,iBAAiB,SACjB,MAAM,QAAQ,WAAW,6CAA6C,GACtE;AACA,cAAI;AACF,kBAAM,WAAW,MAAM,MAAM,GAAG;AAChC,oBAAQ,SAAS,QAAQ;AAAA,cACvB,KAAK;AACH,uBAAO,mBAAmB;AAAA,cAC5B;AACE,uBAAO,mBAAmB;AAAA,YAC9B;AAAA,UACF,QAAE;AACA,mBAAO,mBAAmB;AAAA,UAC5B;AAAA,QACF;AACA,eAAO,mBAAmB,gBAAgB;AAAA,MAC5C;AAAA,IACF;AAEA,IAAM,iBAAiB,CAAC,YAAY;AAClC,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF,EAAE,SAAS,OAAO;AAAA,IACpB;AAEO,IAAMD,WAAS,OAAO,EAAE,KAAK,MAAAC,OAAK,MAAM;AAC7C,UAAI;AACF,cAAM,SAAS,IAAI,OAAO,KAAK;AAAA,UAC7B,MAAM;AAAA,UACN,MAAAA;AAAA,QACF,CAAC;AACD,cAAM,IAAI,QAAQ,CAACC,UAAS,WAAW;AACrC,gBAAM,UAAU,MAAM;AACpB,mBAAO,YAAY;AACnB,mBAAO,UAAU;AAAA,UACnB;AACA,gBAAM,qBAAqB,CAAC,UAAU;AACpC,oBAAQ;AACR,gBAAI,MAAM,SAAS,SAAS;AAC1B,cAAAA,SAAQ,MAAS;AAAA,YACnB,OAAO;AACL,qBAAO,IAAI,MAAM,+CAA+C,CAAC;AAAA,YACnE;AAAA,UACF;AACA,gBAAM,mBAAmB,OAAO,UAAU;AACxC,oBAAQ;AACR,gBAAI,eAAe,MAAM,OAAO,GAAG;AACjC,oBAAM,eAAe;AACrB,qBAAO,IAAI,MAAM,6CAA6C,CAAC;AAAA,YACjE,OAAO;AACL,oBAAM,qBAAqB,MAAM,2BAA2B;AAAA,gBAC1D;AAAA,gBACA,MAAAD;AAAA,cACF,CAAC;AACD,qBAAO,IAAI,MAAM,kBAAkB,CAAC;AAAA,YACtC;AAAA,UACF;AACA,iBAAO,YAAY;AACnB,iBAAO,UAAU;AAAA,QACnB,CAAC;AACD,eAAO;AAAA,MACT,SAAS,OAAP;AACA,YACE,SACA,iBAAiB,SACjB,MAAM,YAAY,+CAClB;AACA,gBAAM,2BAA2B,MAAM;AAGvC,iBAAO,yBAAyB,OAAO,EAAE,IAAI,CAAC;AAAA,QAChD;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA;;;AC7FA;AAAA;AAAA,gBAAAE;AAAA;AAAA,IAAaA;AAAb;AAAA;AAAA;AAAO,IAAMA,WAAS,OAAO,QAAQ;AACnC,YAAM,gBAAgB,MAAM,IAAI,QAAQ,CAACC,aAAY;AACnD,mBAAW,sBAAsBA;AACjC,eAAO;AAAA,MACT,CAAC;AACD,aAAO,WAAW;AAClB,aAAO;AAAA,IACT;AAAA;AAAA;;;ACPA,IAEa,SASP,kBAEA,WAaOC;AA1Bb;AAAA;AAAA;AAEO,IAAM,UAAU;AAAA,MACrB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAe;AAAA,IACjB;AAKA,IAAM,mBAAmB,QAAQ;AAEjC,IAAM,YAAY,MAAM;AACtB,cAAQ,kBAAkB;AAAA,QACxB,KAAK,QAAQ;AACX,iBAAO;AAAA,QACT,KAAK,QAAQ;AACX,iBAAO;AAAA,QACT,KAAK,QAAQ;AACX,iBAAO;AAAA,QACT;AACE,gBAAM,IAAI,MAAM,gBAAgB;AAAA,MACpC;AAAA,IACF;AAEO,IAAMA,WAAS,OAAO,EAAE,WAAW,QAAQ,MAAM;AACtD,YAAM,SAAS,MAAM,UAAU;AAE/B,aAAO,OAAO,OAAO,OAAO;AAAA,IAC9B;AAAA;AAAA;;;AC9BA,IASaC,SAOP,UASA,aAOA,gBAQA,iCAsCA,QAsBA,SAgBOC,UA6BA;AAjJb;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAKO,IAAMD,UAAQ;AAAA,MAInB,KAAK;AAAA,IACP;AAEA,IAAM,WAAN,cAAuB,MAAM;AAAA,MAC3B,OAAO;AAAA,MAEP,YAAY,SAAS;AACnB,cAAM,OAAO;AAAA,MACf;AAAA,IACF;AAGA,IAAM,cAAc,CAAC,UAAU;AAC7B,UAAI,EAAE,iBAAiB,QAAQ;AAC7B,eAAO,IAAI,SAAS,KAAK;AAAA,MAC3B;AACA,aAAO;AAAA,IACT;AAEA,IAAM,iBAAiB,CAAC,UAAU;AAChC,cAAQ,YAAY,KAAK;AACzB,aAAO;AAAA,QACL,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACjB;AAAA,IACF;AAEA,IAAM,kCAAkC,OAAO,UAAU;AACvD,YAAM,UAAU,MAAM;AACtB,UAAI,QAAQ,SAAS;AACnB,YAAI,YAAY,SAAS;AACvB,cAAI;AACF,kBAAM,SAAS,MAAc,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,MAAM;AACtE,YAAAA,QAAM,IAAI,KAAK;AAAA,cACb,SAAS;AAAA,cACT,IAAI,QAAQ;AAAA,cACZ;AAAA,YACF,CAAC;AACD;AAAA,UACF,SAAS,OAAP;AACA,kBAAM,kBAAkB,eAAe,KAAK;AAC5C,YAAAA,QAAM,IAAI,KAAK;AAAA,cACb,SAAS;AAAA,cACT,IAAI,QAAQ;AAAA,cACZ,OAAO;AAAA,gBACL,SAAS,gBAAgB;AAAA,gBACzB,OAAO,gBAAgB;AAAA,cACzB;AAAA,YACF,CAAC;AAAA,UACH;AACA;AAAA,QACF;AACA,QAAS,QAAQ,QAAQ,IAAI,OAAO;AACpC;AAAA,MACF;AACA,UAAI,QAAQ,WAAW,YAAY;AACjC,cAAME,QAAO,QAAQ,OAAO;AAC5B,cAAM,OAAO,MAAM,QAAQA,KAAI;AAC/B,gBAAQ,IAAI,EAAE,KAAK,CAAC;AACpB,QAAAF,QAAM,IAAI,gBAAgB,QAAQ,CAAC,IAAI,CAAC;AACxC;AAAA,MACF;AACA,YAAM,IAAI,aAAa,yCAAyC;AAAA,IAClE;AAEA,IAAM,SAAS,YAAY;AACzB,YAAM,iBAAiB,MAAgBG,SAAO;AAAA,QAC5C,QAAkB,QAAQ;AAAA,QAC1B,KAAc,qBAAqB;AAAA,QACnC,MAAM;AAAA,MACR,CAAC;AACD,aAAO;AAAA,QACL,KAAK,SAAS;AACZ,yBAAe,YAAY,OAAO;AAAA,QACpC;AAAA,QACA,gBAAgB,SAAS,eAAe;AACtC,yBAAe,YAAY,SAAS,aAAa;AAAA,QACnD;AAAA,QACA,IAAI,YAAY;AACd,iBAAO,eAAe;AAAA,QACxB;AAAA,QACA,IAAI,UAAU,UAAU;AACtB,yBAAe,YAAY;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAEA,IAAM,UAAU,CAACD,UAAS;AACxB,aAAO,IAAI,QAAQ,CAACE,UAAS,WAAW;AACtC,cAAM,0BAA0B,CAAC,UAAU;AACzC,gBAAM,OAAO,MAAM,MAAM;AACzB,UAAAA,SAAQ,IAAI;AAAA,QACd;AAGA,eAAO,iBAAiB,WAAW,yBAAyB;AAAA,UAC1D,MAAM;AAAA,QACR,CAAC;AAED,eAAO,MAAM,WAAWF,KAAI;AAAA,MAC9B,CAAC;AAAA,IACH;AAEO,IAAMD,WAAU,OAAO,WAAW;AACvC,YAAM,MAAM,MAAM,OAAO;AAGzB,UAAa,WAAW,GAAG;AACzB,cAAM,QAAQ,MAAM,IAAI,QAAQ,CAACG,UAAS,WAAW;AACnD,gBAAM,mBAAmB,OAAOC,WAAU;AACxC,YAAAD,SAAQC,MAAK;AAAA,UACf;AACA,cAAI,YAAY;AAAA,QAClB,CAAC;AACD,YAAI,MAAM,KAAK,WAAW,YAAY;AACpC,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC3D;AACA,cAAMH,QAAO,MAAM,KAAK,OAAO;AAC/B,cAAM,OAAO,MAAM,QAAQA,KAAI;AAC/B,YAAI,gBAAgB,QAAQ,CAAC,IAAI,CAAC;AAAA,MACpC;AACA,UAAI,YAAY;AAChB,MAAAF,QAAM,MAAM;AAAA,IACd;AASO,IAAM,OAAO,CAAC,WAAW,WAAW;AACzC,MAAAA,QAAM,IAAI,KAAK;AAAA,QACb,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;;;ACvJA,IAEaM,QAeAC,SA+FP,mBAcO,WAQP,cAOA,WAWA,uBASA,qBAOA,uBAaOC,OA6DAC;AAlPb;AAAA;AAAA;AAAA;AAEO,IAAMH,SAAQ;AAAA,MACnB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,IACd;AAKO,IAAMC,UAAS,CAAC,WAAW;AAChC,YAAM,eAAeD,OAAM;AAC3B,YAAM,QAAQA,OAAM;AACpB,YAAM,YAAYA,OAAM;AACxB,YAAM,WAAWA,OAAM;AACvB,YAAM,aAAaA,OAAM;AACzB,YAAM,SAASA,OAAM;AACrB,YAAM,eAAeA,OAAM;AAC3B,YAAM,aAAaA,OAAM;AAEzB,UAAI,OAAO,oBAAoB;AAC7B,qBAAa,MAAM,MAAM,GAAG,OAAO;AACnC,qBAAa,MAAM,OAAO,GAAG,OAAO;AACpC,qBAAa,MAAM,QAAQ,GAAG,OAAO;AACrC,qBAAa,MAAM,SAAS,GAAG,OAAO;AACtC,qBAAa,MAAM,UAAU;AAAA,MAC/B,OAAO;AACL,qBAAa,MAAM,UAAU;AAAA,MAC/B;AACA,UAAI,OAAO,aAAa;AACtB,cAAM,MAAM,MAAM,GAAG,OAAO;AAC5B,cAAM,MAAM,OAAO,GAAG,OAAO;AAC7B,cAAM,MAAM,QAAQ,GAAG,OAAO;AAC9B,cAAM,MAAM,SAAS,GAAG,OAAO;AAC/B,cAAM,MAAM,UAAU;AAAA,MACxB,OAAO;AACL,cAAM,MAAM,UAAU;AAAA,MACxB;AACA,UAAI,OAAO,cAAc;AACvB,eAAO,MAAM,MAAM,GAAG,OAAO;AAC7B,eAAO,MAAM,OAAO,GAAG,OAAO;AAC9B,eAAO,MAAM,QAAQ,GAAG,OAAO;AAC/B,eAAO,MAAM,SAAS,GAAG,OAAO;AAChC,eAAO,MAAM,UAAU;AAEvB,mBAAW,MAAM,MAAM,GAAG,OAAO;AACjC,mBAAW,MAAM,OAAO,GAAG,OAAO;AAClC,mBAAW,MAAM,QAAQ,GAAG,OAAO;AAAA,MACrC,OAAO;AACL,eAAO,MAAM,UAAU;AAAA,MACzB;AACA,UAAI,OAAO,gBAAgB;AACzB,iBAAS,MAAM,MAAM,GAAG,OAAO;AAC/B,iBAAS,MAAM,OAAO,GAAG,OAAO;AAChC,iBAAS,MAAM,QAAQ,GAAG,OAAO;AACjC,iBAAS,MAAM,SAAS,GAAG,OAAO;AAClC,iBAAS,MAAM,UAAU;AAEzB,qBAAa,MAAM,OAAO,GAAG,OAAO;AACpC,qBAAa,MAAM,MAAM,GAAG,OAAO;AACnC,qBAAa,MAAM,SAAS,GAAG,OAAO;AAAA,MACxC,OAAO;AACL,iBAAS,MAAM,UAAU;AAAA,MAC3B;AACA,UAAI,OAAO,kBAAkB;AAC3B,mBAAW,MAAM,MAAM,GAAG,OAAO;AACjC,mBAAW,MAAM,OAAO,GAAG,OAAO;AAClC,mBAAW,MAAM,QAAQ,GAAG,OAAO;AACnC,mBAAW,MAAM,SAAS,GAAG,OAAO;AACpC,mBAAW,MAAM,UAAU;AAAA,MAC7B,OAAO;AACL,mBAAW,MAAM,UAAU;AAAA,MAC7B;AACA,UAAI,OAAO,iBAAiB;AAC1B,kBAAU,MAAM,MAAM,GAAG,OAAO;AAChC,kBAAU,MAAM,OAAO,GAAG,OAAO;AACjC,kBAAU,MAAM,QAAQ,GAAG,OAAO;AAClC,kBAAU,MAAM,SAAS,GAAG,OAAO;AACnC,kBAAU,MAAM,UAAU;AAAA,MAC5B,OAAO;AAEL,kBAAU,MAAM,UAAU;AAAA,MAC5B;AAAA,IACF;AAsBA,IAAM,oBAAoB,MAAM;AAC9B,UAEE,UAAU,yBAEV,UAAU,sBAAsB,qBAChC;AAEA,cAAM,eAAe,UAAU,sBAAsB,oBAAoB;AACzE,eAAO,aAAa;AAAA,MACtB;AACA,aAAO;AAAA,IACT;AAEO,IAAM,YAAY,MAAM;AAC7B,aAAO;AAAA,QACL,aAAa,OAAO;AAAA,QACpB,cAAc,OAAO;AAAA,QACrB,gBAAgB,kBAAkB;AAAA,MACpC;AAAA,IACF;AAEA,IAAM,eAAe,CAAC,UAAU;AAC9B,MAAe;AAAA,QACa;AAAA,QACb,UAAU;AAAA,MACzB;AAAA,IACF;AAEA,IAAM,YAAY,CAAC,YAAY;AAC7B,cAAQ,IAAI,EAAE,QAAQ,CAAC;AACvB,UAAI,QAAQ,OAAO,aAAa;AAC9B,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,OAAO,eAAe;AAChC,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAEA,IAAM,wBAAwB,CAAC,UAAU;AACvC,YAAM,EAAE,SAAS,QAAQ,IAAI;AAC7B,MAAe;AAAA,QACsB;AAAA,QAC3B;AAAA,QACA;AAAA,MACV;AAAA,IACF;AAEA,IAAM,sBAAsB,CAAC,UAAU;AACrC,YAAM,EAAE,QAAQ,UAAU,IAAI;AAC9B,aAAO,sBAAsB,SAAS;AACtC,aAAO,oBAAoB,eAAe,qBAAqB;AAC/D,aAAO,oBAAoB,aAAa,mBAAmB;AAAA,IAC7D;AAEA,IAAM,wBAAwB,CAAC,UAAU;AACvC,YAAM,EAAE,QAAQ,UAAU,IAAI;AAC9B,aAAO,kBAAkB,SAAS;AAClC,aAAO,iBAAiB,eAAe,qBAAqB;AAC5D,aAAO,iBAAiB,aAAa,mBAAmB;AACxD,YAAM,UAAU,MAAM;AACtB,YAAM,KAAK,UAAU,OAAO;AAC5B,MAAe;AAAA,QACsB;AAAA,QAC1B;AAAA,MACX;AAAA,IACF;AAEO,IAAME,QAAO,CAAC,WAAW;AAC9B,YAAM,eAAe,SAAS,cAAc,KAAK;AACjD,mBAAa,KAAK;AAElB,YAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,iBAAW,KAAK;AAEhB,YAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,gBAAU,KAAK;AAEf,YAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,YAAM,KAAK;AAEX,YAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,eAAS,KAAK;AAEd,YAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,aAAO,KAAK;AAGZ,YAAM,eAAe,SAAS,cAAc,KAAK;AACjD,mBAAa,YAAY;AACzB,mBAAa,KAAK;AAGlB,YAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,iBAAW,YAAY;AACvB,iBAAW,KAAK;AAEhB,YAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,iBAAW,KAAK;AAChB,iBAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,MAAAF,OAAM,eAAe;AACrB,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,aAAa;AACnB,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,aAAa;AACnB,MAAAA,OAAM,aAAa;AACnB,MAAAA,OAAM,eAAe;AACrB,MAAAC,QAAO,MAAM;AAGb,iBAAW,OAAO;AAClB,eAAS,KAAK,OAAO,UAAU;AAC/B,aAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,KAAK,CAAC;AACjE,mBAAa,iBAAiB,eAAe,qBAAqB;AAClE,iBAAW,iBAAiB,eAAe,qBAAqB;AAAA,IAClE;AAEO,IAAME,QAAO,MAAM;AACxB,MAAAH,OAAM,WAAW,OAAO;AACxB,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA;AAAA;;;ACrPA;AAAA;AAAA,kBAAAI;AAAA;AAAA,IAEaA;AAFb;AAAA;AAAA;AAAA;AAEO,IAAMA,aAAW;AAAA,MACtB,oBAA2B;AAAA,MAC3B,eAAsBC;AAAA,MACtB,eAAsBC;AAAA,MACtB,iBAAwBC;AAAA,IAS1B;AAAA;AAAA;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,WAAW,IAAI;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAMC,eAAc,CAAC,UAAU;AAC7B,UAAQ,KAAK,uCAAuC,OAAO;AAC3D,QAAM,KAAK;AACb;AAEA,IAAM,2BAA2B,CAAC,UAAU;AAC1C,UAAQ,KAAK,2CAA2C,MAAM,QAAQ;AACtE,QAAM,MAAM,MAAM;AACpB;AAEA,IAAM,OAAO,YAAY;AACvB,YAAUA;AACV,yBAAuB;AAEvB,MAAa,aAA0B,KAAK;AAG1C,WAAO,wBAAwB,CAAC,UAAU;AACxC,YAAM,eAAe;AAAA,IACvB;AAAA,EACF;AAEA,QAAqBC,SAAQ;AAC7B,gBAAc,IAAI,YAAY,YAAY,CAAC;AAE3C,aAAW,eAAe;AAC5B;AAEA,KAAK;AAeE,IAAMC,QAAsB;",
4
+ "sourcesContent": ["export const setInlineStyle = (id, css) => {\n const $ExistingStyle = document.getElementById(id)\n if ($ExistingStyle) {\n $ExistingStyle.textContent = css\n } else {\n const $Style = document.createElement('style')\n $Style.id = id\n $Style.textContent = css\n document.head.append($Style)\n }\n}\n", "import * as Css from './Css.js'\n\nexport const Commands = {\n 'Css.setInlineStyle': Css.setInlineStyle,\n}\n", "const callbacks = Object.create(null)\n\nexport const state = {\n id: 0,\n}\n\nexport const register = (resolve, reject) => {\n callbacks[++state.id] = { resolve, reject }\n return state.id\n}\n\nexport const unregister = (id) => {\n delete callbacks[id]\n}\n\nexport const resolve = (id, result) => {\n if (!(id in callbacks)) {\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].resolve(result)\n}\n\nexport const reject = (id, error) => {\n if (!(id in callbacks)) {\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n callbacks[id].reject(error)\n}\n", "export const Audio = 1\nexport const ClipBoard = 2\nexport const Css = 3\nexport const Developer = 4\nexport const Dialog = 5\nexport const Download = 6\nexport const EditorController = 7\nexport const EditorError = 8\nexport const EditorHover = 9\nexport const EditorRename = 10\nexport const ImagePreview = 11\nexport const InitData = 12\nexport const KeyBindings = 13\nexport const Layout = 14\nexport const Location = 15\nexport const Main = 16\nexport const Menu = 17\nexport const Meta = 18\nexport const Notification = 19\nexport const Open = 20\nexport const Panel = 21\nexport const ServiceWorker = 22\nexport const Test = 23\nexport const TestFrameWork = 24\nexport const Viewlet = 25\nexport const ViewService = 26\nexport const WebStorage = 27\nexport const Window = 28\nexport const Workbench = 29\nexport const Performance = 30\nexport const Eval = 31\nexport const FilePicker = 32\nexport const FileSystemHandle = 33\nexport const SanitizeHtml = 34\n", "export const play = async (src) => {\n const audio = new Audio(src)\n await audio.play()\n}\n", "import * as Audio from './Audio.js'\n\nexport const Commands = {\n 'Audio.play': Audio.play,\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 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}\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", "import * as Assert from '../Assert/Assert.js'\n\nexport const readText = async () => {\n return navigator.clipboard.readText()\n}\n\nexport const writeText = async (text) => {\n Assert.string(text)\n await navigator.clipboard.writeText(text)\n}\n\nexport const writeImage = async (blob) => {\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })])\n}\n", "import * as ClipBoard from './ClipBoard.js'\n\nexport const Commands = {\n 'ClipBoard.readText': ClipBoard.readText,\n 'ClipBoard.writeImage': ClipBoard.writeImage,\n 'ClipBoard.writeText': ClipBoard.writeText,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst modules = [\n 'ActivityBar',\n 'Ajax',\n 'Allocator',\n 'Callback',\n 'Command',\n 'Context',\n 'ContextMenu',\n 'Delay',\n 'Developer',\n 'DomPool',\n 'Editor',\n 'EditorGroup',\n 'Exec',\n 'ExtensionHost',\n 'FileSystem',\n 'KeyBindings',\n 'Layout',\n 'Main',\n 'Notification',\n 'Panel',\n 'Parts',\n 'QuickPick',\n 'Renderer',\n 'RendererWorker',\n 'Search',\n 'SharedProcess',\n 'SideBar',\n 'StatusBar',\n 'TitleBar',\n 'Viewlet',\n 'ViewletController',\n 'ViewService',\n 'Vscode',\n 'Window',\n 'Workbench',\n 'Worker',\n 'Workspace',\n]\n\n// TODO send to renderer worker -> renderer worker has all state\nexport const showState = async () => {\n const state = Object.create(null)\n for (const module of modules) {\n let imported\n try {\n imported = await import(`../${module}/${module}.js`)\n } catch {}\n if (imported && imported.state) {\n state[module] = imported.state\n }\n }\n console.info(state)\n}\n", "import * as Developer from './Developer.js'\n\nexport const Commands = {\n 'Developer.getMemoryUsage': Developer.getMemoryUsage,\n 'Developer.showState': Developer.showState,\n}\n", "// TODO this file is not needed when all elements are position fixed\nexport const state = {\n isInDom: false,\n $PreviousFocusElement: undefined,\n widgetSet: new Set(),\n $Widgets: undefined,\n}\n\nconst create$Widgets = () => {\n const $Widgets = document.createElement('div')\n $Widgets.id = 'Widgets'\n return $Widgets\n}\n\nexport const append = ($Element) => {\n // TODO should not call append in the first place if it is already in dom\n if (state.widgetSet.has($Element)) {\n return\n }\n state.widgetSet.add($Element)\n if (state.$Widgets) {\n state.$Widgets.append($Element)\n } else {\n state.$Widgets = create$Widgets()\n state.$Widgets.append($Element)\n document.body.append(state.$Widgets)\n }\n}\n\nexport const find = (id) => {\n for (const $Widget of state.widgetSet) {\n if ($Widget.dataset.id === id) {\n return $Widget\n }\n }\n return undefined\n}\n\nexport const remove = ($Element) => {\n if (!$Element) {\n // TODO $Element should always be defined\n return\n }\n state.widgetSet.delete($Element)\n $Element.remove()\n // TODO state.$Widgets should always be defined at this point\n if (state.widgetSet.size === 0 && state.$Widgets) {\n state.$Widgets.remove()\n state.$Widgets = undefined\n }\n}\n", "export const state = {\n // contexts: Object.create(null),\n contexts: {},\n}\n\n// TODO all context keys should be numeric\n// comparing numbers is faster and more efficient than comparing strings every time\n// e.g. map 'focus.editor' -> 1\n// e.g. map 'focus.explorer' -> 2\n// Context.get(1), Context.get(2)\n\nexport const get = (key) => {\n return state.contexts[key]\n}\n\nexport const getAll = () => {\n return state.contexts\n}\n\nexport const set = (key, value) => {\n state.contexts[key] = value\n}\n\nexport const remove = (key) => {\n delete state.contexts[key]\n}\n", "import * as Context from '../Context/Context.js'\n\n// TODO not sure if its worth to have a separate module for this or keep it inside Context.js\n// export const setFocus = (item) => {\n// if (Context.state.currentFocus) {\n// Context.remove(Context.state.currentFocus)\n// }\n// Context.set(`focus.${item}`, true)\n// }\n\nexport const state = {\n $PreviousFocusElement: undefined,\n currentFocus: '',\n}\n\nexport const setFocus = (key) => {\n if (state.currentFocus) {\n Context.remove(state.currentFocus)\n }\n // TODO could make focus key numeric enum which would be more efficient\n state.currentFocus = `focus.${key}`\n Context.set(state.currentFocus, true)\n}\n\nexport const setAdditionalFocus = (key) => {\n // TODO key should be numeric\n Context.set(`focus.${key}`, true)\n}\n\nexport const removeAdditionalFocus = (key) => {\n Context.remove(`focus.${key}`)\n}\n\nexport const focus = ($Element, key) => {\n if ($Element === document.activeElement) {\n return\n }\n state.$PreviousFocusElement = document.activeElement\n $Element.focus({ preventScroll: true })\n setFocus(key)\n}\n\nexport const focusPrevious = () => {\n if (state.$PreviousFocusElement) {\n console.log(state.$PreviousFocusElement)\n state.$PreviousFocusElement.focus()\n }\n}\n", "export const Web = 'web'\n\nexport const Electron = 'electron'\n\nexport const Remote = 'remote'\n", "import * as PlatformType from '../PlatformType/PlatformType.js'\n/* istanbul ignore file */\n\n// TODO this should always be completely tree shaken out during build\n\n/**\n * @returns {'electron'|'remote'|'web'}\n */\nconst getPlatform = () => {\n // @ts-ignore\n if (typeof 'remote' !== 'undefined') {\n // @ts-ignore\n return 'remote'\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return PlatformType.Remote\n }\n // @ts-ignore\n if (typeof myApi !== 'undefined') {\n return PlatformType.Electron\n }\n return PlatformType.Remote\n}\n\nexport const platform = getPlatform()\n\n// TODO treeshake this function out when targeting electron\n\nexport const state = {\n getAssetDir() {\n // @ts-ignore\n if (typeof '/0e8e702' !== 'undefined') {\n // @ts-ignore\n return '/0e8e702'\n }\n if (platform === 'electron') {\n return '../../../../..'\n }\n return ''\n },\n supportsHtml5Dialog() {\n const $Dialog = document.createElement('dialog')\n // @ts-ignore\n return typeof $Dialog.showModal === 'function'\n },\n isElectron() {\n return (\n // @ts-ignore\n window.myApi &&\n // @ts-ignore\n window.myApi.ipcConnect &&\n // @ts-ignore\n typeof window.myApi.ipcConnect === 'function'\n )\n },\n}\n\n// TODO if necessary support more browser detection\nexport const getBrowser = () => {\n if (platform === 'electron') {\n return 'electron'\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData) {\n for (const brand of userAgentData.brands) {\n const actualBrand = brand.brand.toLowerCase()\n switch (actualBrand) {\n case 'firefox':\n return 'firefox'\n case 'chromium':\n return 'chromium'\n default:\n break\n }\n }\n }\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.includes('firefox')) {\n return 'firefox'\n }\n if (userAgent.includes('Electron')) {\n return 'electron'\n }\n return 'chromium'\n}\n\nexport const getAssetDir = () => {\n return state.getAssetDir()\n}\n\nexport const supportsHtml5Dialog = () => {\n return state.supportsHtml5Dialog()\n}\n\nexport const isElectron = () => {\n return state.isElectron()\n}\n\nconst getQueryParams = () => {\n if (isElectron()) {\n if (location.search) {\n return location.search + '&platform=electron'\n }\n return '?platform=electron'\n }\n return location.search\n}\n\nexport const getRendererWorkerUrl = () => {\n const assetDir = getAssetDir()\n const queryParams = getQueryParams()\n const urlRendererWorker = `${assetDir}/packages/renderer-worker/dist/rendererWorkerMain.js${queryParams}`\n return urlRendererWorker\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $Dialog: undefined,\n}\n\n// TODO in the future, new file creation should be in explorer like in vscode\n// workaround for electron bug https://github.com/electron/electron/issues/472\nconst showDialogInsteadOfPrompt = true\n\nexport const prompt = async (message) => {\n if (showDialogInsteadOfPrompt) {\n const $Dialog = document.createElement('dialog')\n $Dialog.id = 'Dialog'\n const $DialogTitle = document.createElement('h1')\n const $DialogInput = document.createElement('input')\n const $DialogButtonOk = document.createElement('button')\n $DialogButtonOk.textContent = 'ok'\n const $DialogButtonCancel = document.createElement('button')\n $DialogButtonCancel.textContent = 'Cancel'\n $Dialog.append(\n $DialogTitle,\n $DialogInput,\n $DialogButtonCancel,\n $DialogButtonOk\n )\n $DialogTitle.textContent = message\n Widget.append($Dialog)\n // @ts-ignore\n $Dialog.showModal()\n Focus.setFocus('dialog')\n state.$Dialog = $Dialog\n // TODO what if there is an error inside the body of the promise function?\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n $DialogButtonOk.onclick = undefined\n $DialogButtonCancel.onclick = undefined\n $Dialog.remove()\n }\n const handleOk = () => {\n console.log('ok clicked')\n cleanup()\n resolve($DialogInput.value)\n }\n const handleCancel = () => {\n console.log('cancel clicked')\n cleanup()\n resolve(undefined)\n }\n $DialogButtonOk.onclick = handleOk\n $DialogButtonCancel.onclick = handleCancel\n // TODO support escape key to close modal and cancel\n })\n }\n const result = window.prompt(message)\n return result\n}\n\nexport const alert = (message) => {\n console.log('actual alert', message)\n window.alert(message)\n // globalThis.alert(`message ${message}`)\n // globalThis.alert('odijdiej')\n}\n\nexport const close = () => {\n console.log('dialog removed')\n Widget.remove(state.$Dialog)\n state.$Dialog = undefined\n Focus.focusPrevious()\n}\n\nconst RE_STACK_1 = /\\((.*):(\\d+):(\\d+)\\)$/\nconst RE_STACK_2 = /at (.*):(\\d+):(\\d+)$/\n\nconst create$ErrorStack = (stack) => {\n const $DialogBodyErrorStack = document.createElement('div')\n $DialogBodyErrorStack.id = 'DialogBodyErrorStack'\n $DialogBodyErrorStack.textContent = stack\n\n // TODO chrome doesn't allow local file links,\n // should probably open editor with that file in new tab?\n // let match = stackLine.match(RE_STACK_1)\n // if (!match) {\n // match = stackLine.match(RE_STACK_2)\n // }\n // if (match) {\n // const [_, path, line, column] = match\n // console.log({ match })\n // const $Line = document.createElement('div')\n // const $Link = document.createElement('a')\n // $Link.setAttribute('target', 'noopener noreferrer')\n // $Link.setAttribute('target', 'blank')\n // $Link.textContent = path\n // $Link.href = path\n // $Line.append($Link)\n // $Lines.append($Line)\n // } else {\n // const $Line = document.createElement('div')\n // $Line.className = 'StackLine'\n // $Line.textContent = stackLine\n // $Lines.append($Line)\n // }\n // }\n return $DialogBodyErrorStack\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handleDialogOptionClick = (event) => {\n const $Target = event.target\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* Dialog.handleClick */ 'Dialog.handleClick',\n /* index */ index\n )\n}\n\n// TODO this show be a viewlet\nexport const showErrorDialogWithOptions = (error, options) => {\n if (!Platform.supportsHtml5Dialog()) {\n console.info('the dialog api is not available on this browser')\n alert(error) // TODO in electron this will do nothing, but electron always supports dialogs\n return\n }\n options ||= [] // TODO options should always be defined\n\n const $DialogTitle = document.createElement('h2')\n $DialogTitle.id = 'DialogTitle'\n $DialogTitle.textContent = error.category || 'Extension Error'\n\n const $DialogBodyErrorMessage = document.createElement('p')\n $DialogBodyErrorMessage.id = 'DialogBodyErrorMessage'\n $DialogBodyErrorMessage.textContent =\n typeof error === 'string' ? error : error.message\n\n const $DialogBodyErrorCodeFrame = document.createElement('code')\n $DialogBodyErrorCodeFrame.id = 'DialogBodyErrorCodeFrame'\n $DialogBodyErrorCodeFrame.textContent = error.codeFrame\n $DialogBodyErrorCodeFrame.ariaLabel = 'Code Frame'\n\n const $DialogBodyErrorStack = create$ErrorStack(error.stack)\n\n const $DialogBodyOptions = document.createElement('div')\n $DialogBodyOptions.id = 'DialogBodyOptions'\n\n for (const option of options) {\n const $DialogOption = document.createElement('button')\n $DialogOption.className = 'DialogOption'\n $DialogOption.textContent = option\n $DialogOption.onclick = handleDialogOptionClick\n $DialogBodyOptions.append($DialogOption)\n }\n const $DialogBody = document.createElement('div')\n $DialogBody.id = 'DialogBody'\n $DialogBody.append(\n $DialogBodyErrorMessage,\n $DialogBodyErrorCodeFrame,\n $DialogBodyErrorStack,\n $DialogBodyOptions\n )\n // TODO screen reader switches to browse mode for dialog and\n // reads dialog title and error message multiple times\n const $Dialog = document.createElement('dialog')\n $Dialog.id = 'Dialog'\n $Dialog.setAttribute('aria-labelledby', 'DialogTitle')\n $Dialog.setAttribute('aria-describedby', 'DialogBodyErrorMessage')\n $Dialog.append($DialogTitle, $DialogBody)\n Widget.append($Dialog)\n // @ts-ignore\n $Dialog.showModal()\n Focus.setFocus('dialog')\n state.$Dialog = $Dialog\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Dialog from './Dialog.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Dialog.alert': Dialog.alert,\n 'Dialog.close': Dialog.close,\n 'Dialog.prompt': Dialog.prompt,\n 'Dialog.showErrorDialogWithOptions': Dialog.showErrorDialogWithOptions,\n}\n", "export const downloadFile = (fileName, url) => {\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n a.click()\n}\n", "import * as Download from './Download.js'\n\nexport const Commands = {\n 'Download.downloadFile': Download.downloadFile,\n}\n", "export const state = {\n $AriaAlert1: undefined,\n $AriaAlert2: undefined,\n $AriaMessages: undefined,\n}\n\nconst create$AriaAlert = () => {\n const $AriaAlert = document.createElement('div')\n $AriaAlert.className = 'AriaAlert'\n // @ts-ignore\n $AriaAlert.role = 'alert' // TODO use idl once supported in chrome\n $AriaAlert.ariaAtomic = 'true'\n return $AriaAlert\n}\n\nconst setMessage = ($Old, $New, message) => {\n $Old.textContent = String(Math.random())\n $Old.ariaHidden = 'true'\n $New.removeAttribute('aria-hidden')\n $New.textContent = message\n}\n\nexport const alert = (message) => {\n if (!message) {\n return\n }\n if (!state.$AriaMessages) {\n state.$AriaAlert1 = create$AriaAlert()\n state.$AriaAlert2 = create$AriaAlert()\n // TODO find better name, for example AriaMessages, AriaOutlet, AriaContainer, ScreenReaderMessages\n state.$AriaMessages = document.createElement('div')\n state.$AriaMessages.className = 'monaco-aria-container'\n state.$AriaMessages.append(state.$AriaAlert1, state.$AriaAlert2)\n document.body.append(state.$AriaMessages)\n }\n const $AriaAlert1 = state.$AriaAlert1\n const $AriaAlert2 = state.$AriaAlert2\n if ($AriaAlert1.textContent === message) {\n setMessage($AriaAlert1, $AriaAlert2, message)\n } else {\n setMessage($AriaAlert2, $AriaAlert1, message)\n }\n}\n", "import * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as Widget from '../Widget/Widget.js'\n\n// TODO not sure whether created dom node\n// should stay in state or be removed\n// one option would result in less memory usage\n// the other option would result in less garbage collection\n\n// probably should optimize for less memory usage by default\n// unless the element is very likely to be used again soon (<30s)\n// but that's difficult to know\n\n// TODO hide widget after timeout or mousemove\nexport const create = (message, x, y) => {\n const $EditorError = document.createElement('div')\n $EditorError.className = 'EditorWidgetError'\n $EditorError.textContent = message\n $EditorError.style.left = `${x}px`\n $EditorError.style.top = `${y}px`\n AriaAlert.alert(message)\n Widget.append($EditorError)\n\n return {\n $EditorError,\n }\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorError from './EditorError.js'\n\nexport const Commands = {\n 'EditorError.create': EditorError.create,\n}\n", "import * as Widget from '../Widget/Widget.js'\n\nexport const create = (x, y, hover) => {\n const $Hover = document.createElement('div')\n $Hover.id = 'EditorHover'\n $Hover.textContent = hover.label\n $Hover.style.left = `${x}px`\n $Hover.style.top = `${y}px`\n Widget.append($Hover)\n return {\n $Hover,\n }\n}\n\nexport const update = (state, x, y, hover) => {\n const $Hover = state.$Hover\n $Hover.textContent = hover.label\n $Hover.style.left = `${x}px`\n $Hover.style.top = `${y}px`\n}\n\nexport const dispose = (state) => {}\n", "import * as EditorHover from './EditorHover.js'\n\nexport const Commands = {\n 'EditorHover.create': EditorHover.create,\n}\n", "export const create = () => {\n const $InputBox = document.createElement('input')\n $InputBox.className = 'InputBox'\n $InputBox.spellcheck = false\n $InputBox.autocapitalize = 'off'\n // $InputBox.autocomplete = 'off' // TODO needed?\n $InputBox.type = 'text'\n $InputBox.setAttribute('autocorrect', 'off') // for ios\n return $InputBox\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleBlur = () => {\n RendererWorker.send(/* EditorRename.abort */ 'EditorRename.abort')\n}\n\nexport const create = (x, y) => {\n const $RenameWidgetInputBox = InputBox.create()\n $RenameWidgetInputBox.className = 'RenameWidgetInputBox'\n $RenameWidgetInputBox.onblur = handleBlur\n const $RenameWidget = document.createElement('div')\n $RenameWidget.className = 'RenameWidget'\n $RenameWidget.append($RenameWidgetInputBox)\n $RenameWidget.style.left = `${x}px`\n $RenameWidget.style.top = `${y}px`\n Widget.append($RenameWidget)\n Focus.focus($RenameWidgetInputBox, 'editorRename')\n return {\n $RenameWidget,\n $RenameWidgetInputBox,\n }\n}\n\nexport const dispose = (state) => {\n // TODO focus editor\n Widget.remove(state.$RenameWidget)\n}\n\n// TODO could also be event based\n// finish -> finish -> finishWithValue\n\nexport const finish = (state) => {\n const value = state.$RenameWidgetInputBox.value\n // TODO don't like side effect here\n return value\n}\n", "import * as EditorRename from './EditorRename.js'\n\nexport const Commands = {\n 'EditorRename.create': EditorRename.create,\n 'EditorRename.dispose': EditorRename.dispose,\n 'EditorRename.finish': EditorRename.finish,\n}\n", "/*\n * should only be used for testing\n */\nexport const evalCode = (code) => {\n window.eval(code)\n}\n", "import * as Eval from './Eval.js'\n\nexport const Commands = {\n 'Eval.evalCode': Eval.evalCode,\n}\n", "export const showDirectoryPicker = (options) => {\n // @ts-ignore\n return window.showDirectoryPicker(options)\n}\n\nexport const showFilePicker = (options) => {\n // @ts-ignore\n return window.showFilePicker(options)\n}\n\nexport const showSaveFilePicker = (options) => {\n // @ts-ignore\n return window.showSaveFilePicker(options)\n}\n", "import * as FilePicker from './FilePicker.js'\n\nexport const Commands = {\n 'FilePicker.showDirectoryPicker': FilePicker.showDirectoryPicker,\n 'FilePicker.showFilePicker': FilePicker.showFilePicker,\n 'FilePicker.showSaveFilePicker': FilePicker.showSaveFilePicker,\n}\n", "export const requestPermission = (handle, options) => {\n return handle.requestPermission(options)\n}\n", "import * as FileSystemHandle from './FileSystemHandle.js'\n\nexport const Commands = {\n 'FileSystemHandle.requestPermission': FileSystemHandle.requestPermission,\n}\n", "import * as Widget from '../Widget/Widget.js'\n\nconst handleImageLoad = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n const width = $ImagePreviewImage.naturalWidth\n const height = $ImagePreviewImage.naturalHeight\n $ImagePreviewCaption.textContent = `${width} \u00D7 ${height}`\n}\n\nconst handleImageError = (event) => {\n const $ImagePreviewImage = event.target\n const $ImagePreviewCaption = $ImagePreviewImage.nextSibling\n $ImagePreviewCaption.textContent = 'Image could not be loaded'\n}\n\n// TODO duplicate code with below\n\nexport const showError = (message, top, left) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n $ImagePreviewCaption.textContent = message\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n $ImagePreview.style.top = `${top}px`\n $ImagePreview.style.left = `${left}px`\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const create = (uri, top, left) => {\n const $ImagePreviewImage = document.createElement('img')\n $ImagePreviewImage.className = 'ImagePreviewImage'\n $ImagePreviewImage.src = uri\n $ImagePreviewImage.alt = ''\n const $ImagePreviewCaption = document.createElement('figcaption')\n $ImagePreviewCaption.className = 'ImagePreviewCaption'\n const $ImagePreview = document.createElement('figure')\n $ImagePreview.className = 'ImagePreview'\n $ImagePreview.append($ImagePreviewImage, $ImagePreviewCaption)\n $ImagePreviewImage.onload = handleImageLoad\n $ImagePreviewImage.onerror = handleImageError\n $ImagePreview.style.top = `${top}px`\n $ImagePreview.style.left = `${left}px`\n $ImagePreview.style.display = 'none'\n Widget.append($ImagePreview)\n return {\n $ImagePreview,\n $ImagePreviewCaption,\n $ImagePreviewImage,\n }\n}\n\nexport const update = (state, uri) => {\n state.$ImagePreviewImage.uri = uri\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$ImagePreview)\n}\n", "import * as ImagePreview from './ImagePreview.js'\n\nexport const Commands = {\n 'ImagePreview.create': ImagePreview.create,\n 'ImagePreview.dispose': ImagePreview.dispose,\n 'ImagePreview.showError': ImagePreview.showError,\n 'ImagePreview.update': ImagePreview.update,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const getPathName = () => {\n return location.pathname\n}\n\nexport const getHref = () => {\n return location.href\n}\n\n// TODO should do nothing if it is already at this path\nexport const setPathName = (pathName) => {\n const currentPathName = getPathName()\n if (currentPathName === pathName) {\n return\n }\n history.pushState(null, null, pathName)\n}\n\nconst handlePopState = (event) => {\n RendererWorker.send(/* Workspace.hydrate */ 'Workspace.hydrate')\n}\n\nexport const hydrate = () => {\n addEventListener('popstate', handlePopState)\n}\n", "import * as Location from '../Location/Location.js'\nimport * as Layout from '../Layout/Layout.js'\n\nexport const getInitData = () => {\n const initData = {\n Location: {\n href: Location.getHref(),\n },\n Layout: {\n bounds: Layout.getBounds(),\n },\n LocalStorage: {\n savedState: localStorage.getItem('stateToSave'),\n layout: localStorage.getItem('layout'),\n },\n }\n return initData\n}\n", "import * as InitData from './InitData.js'\n\nexport const Commands = {\n 'InitData.getInitData': InitData.getInitData,\n}\n", "import * as Context from '../Context/Context.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Platform from '../Platform/Platform.js'\n\nconst RE_ASCII = /[\\p{ASCII}]+/u\n\nexport const state = {\n keyBindings: [],\n modifier: '',\n modifierTimeout: -1,\n}\n\nconst isAscii = (key) => {\n return RE_ASCII.test(key)\n}\n\nconst getIdentifier = (event) => {\n let identifier = ''\n if (event.ctrlKey) {\n identifier += 'ctrl+'\n }\n if (event.shiftKey) {\n identifier += 'shift+'\n }\n if (event.altKey) {\n identifier += 'alt+'\n }\n let key = event.key\n if (key === ' ') {\n key = 'Space'\n }\n if (key.length === 1) {\n key = key.toLowerCase()\n }\n identifier += key\n return identifier\n}\n\n// TODO store keybindings as json somewhere\n\n// TODO sort keybindings by `when` priority -> focus.editorCompletions: 10, focus.editor:9 etc.\n\n// TODO does it make sense to have all of these configurable?\n// could remove some context logic and have less user configuration when these are default\n// e.g. arrow down focuses next, arrow up always focuses previous item (like in aria spec)\n\n// TODO ui should only have keys -> commands get resolved inside renderer worker\n// TODO should toggle terminal, not only open\n\nconst matchesContext = (keybinding) => {\n if (!keybinding.when) {\n return true\n }\n return Context.get(keybinding.when)\n}\n\nconst getMatchingKeyBinding = (identifier) => {\n // TODO this could be more efficient in O(N) instead of O(2N)\n const matchesIdentifier = (keyBinding) => {\n return keyBinding.key === identifier\n }\n const matchingKeyBindings = state.keyBindings.filter(matchesIdentifier)\n const matchingKeyBinding = matchingKeyBindings.find(matchesContext)\n return matchingKeyBinding\n}\n\nconst getModifier = (event) => {\n switch (event.key) {\n case 'Control':\n return 'ctrl'\n case 'Shift':\n return 'shift'\n case 'Alt':\n return 'alt'\n }\n return ''\n}\n\nconst clearModifier = () => {\n if (!state.modifier) {\n return\n }\n if (state.modifierTimeout !== -1) {\n clearTimeout(state.modifierTimeout)\n state.modifier = ''\n state.modifierTimeout = -1\n }\n}\n\nconst handleMatchingKeyBinding = (matchingKeyBinding) => {\n // TODO execute command directly or -> executeCommand -> keybindings -> executeCommand\n // better directly\n // TODO always should be number\n // when launching keybindings -> map string command to number\n // TODO should args always be defined? (probably yes -> monomorphism & simpler code since all objects are the same)\n\n // TODO matchingKeyBinding.command should always be number\n RendererWorker.send(\n /* KeyBindings.handleKeyBinding */ 'KeyBindings.handleKeyBinding',\n /* keyBinding */ matchingKeyBinding\n )\n}\n\nconst handleKeyDown = (event) => {\n const identifier = getIdentifier(event)\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (!matchingKeyBinding) {\n return\n }\n event.preventDefault()\n handleMatchingKeyBinding(matchingKeyBinding)\n}\n\nconst handleKeyUp = (event) => {\n const modifier = getModifier(event)\n if (!modifier) {\n clearModifier()\n return\n }\n if (state.modifier === modifier) {\n clearModifier()\n const identifier = `${modifier} ${modifier}`\n const matchingKeyBinding = getMatchingKeyBinding(identifier)\n if (matchingKeyBinding) {\n handleMatchingKeyBinding(matchingKeyBinding)\n }\n return\n }\n\n state.modifier = modifier\n // @ts-ignore\n state.modifierTimeout = setTimeout(clearModifier, 300)\n}\n\nexport const hydrate = async (keyBindings) => {\n // TODO is this the right place for browser context ?\n // maybe in env file / env service\n const browser = Platform.getBrowser()\n Context.set(`browser.${browser}`, true)\n state.keyBindings = keyBindings\n window.addEventListener('keydown', handleKeyDown)\n // TODO only need keyup listener if keybindings include double modifier key (e.g \"shift shift\")\n window.addEventListener('keyup', handleKeyUp)\n}\n\n// TODO should be in renderer worker\nexport const lookupKeyBinding = (commandId) => {\n switch (commandId) {\n case 'scm.acceptInput':\n return 'Ctrl+Enter'\n default:\n return ''\n }\n}\n", "import * as KeyBindings from './KeyBindings.js'\n\nexport const Commands = {\n 'KeyBindings.hydrate': KeyBindings.hydrate,\n // Command.register(756, KeyBindings.setKeyBindings)\n}\n", "import * as Location from './Location.js'\n\nexport const Commands = {\n 'Location.getHref': Location.getHref,\n 'Location.getPathName': Location.getPathName,\n 'Location.hydrate': Location.hydrate,\n 'Location.setPathName': Location.setPathName,\n}\n", "export const setThemeColor = (color) => {\n const meta = document.querySelector('meta[name=\"theme-color\"]')\n if (!meta) {\n return\n }\n // @ts-ignore\n meta.content = color\n}\n", "import * as Meta from './Meta.js'\n\nexport const Commands = {\n 'Meta.setThemeColor': Meta.setThemeColor,\n}\n", "import * as Widget from '../Widget/Widget.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $Notifications: undefined,\n}\n\nconst create$Notifications = () => {\n const $Notifications = document.createElement('div')\n $Notifications.id = 'Notifications'\n return $Notifications\n}\n\nconst create$Notification = (message) => {\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.textContent = message\n return $Notification\n}\n\nexport const create = (type, message) => {\n // TODO this pattern might be also useful for activitybar, sidebar etc., creating elements as late as possible, only when actually needed\n const $Notification = create$Notification(message)\n Widget.append($Notification)\n}\n\nconst findIndex = ($Child) => {\n const $Parent = $Child.parentNode\n for (let i = 0; i < $Parent.children.length; i++) {\n if ($Parent.children[i] === $Child) {\n return i\n }\n }\n return -1\n}\n\nconst handleNotificationClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'NotificationOption':\n const index = findIndex($Target)\n RendererWorker.send(\n /* Notification.handleClick */ 'Notification.handleClick',\n /* index */ index\n )\n break\n default:\n break\n }\n console.log('notification clicked')\n}\n\nconst create$NotificationWithOptions = (message, options) => {\n const $NotificationMessage = document.createElement('p')\n $NotificationMessage.className = 'NotificationMessage'\n $NotificationMessage.textContent = message\n const $NotificationOptions = document.createElement('div')\n $NotificationOptions.className = 'NotificationOptions'\n for (const option of options) {\n const $NotificationOption = document.createElement('button')\n $NotificationOption.className = 'NotificationOption'\n $NotificationOption.textContent = option\n $NotificationOptions.append($NotificationOption)\n }\n const $Notification = document.createElement('div')\n $Notification.className = 'Notification'\n $Notification.append($NotificationMessage, $NotificationOptions)\n $Notification.onclick = handleNotificationClick\n return $Notification\n}\n\nexport const createWithOptions = (type, message, options) => {\n const $Notification = create$NotificationWithOptions(message, options)\n Widget.append($Notification)\n}\n\nexport const dispose = (id) => {\n // const $Notification = state.$Notifications\n}\n", "import * as Notification from './Notification.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Notification.create': Notification.create,\n 'Notification.createWithOptions': Notification.createWithOptions,\n 'Notification.dispose': Notification.dispose,\n}\n", "// TODO this module should be called dom or dom utils\n\n// TODO this module makes for weird code splitting chunks,\n// maybe duplicate the code per file for better chunks\n\nexport const findIndex = ($Container, $Target) => {\n while ($Target && $Target.parentNode !== $Container) {\n $Target = $Target.parentNode\n }\n if (!$Target) {\n // console.log('no target to find', $Target, event.target)\n return -1\n }\n for (let i = 0; i < $Container.children.length; i++) {\n if ($Container.children[i] === $Target) {\n return i\n }\n }\n return -1\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", "import * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nconst getLabel = (item) => {\n if (!item || !item.label) {\n console.warn('menu item has missing label', item)\n return 'n/a'\n }\n return item.label\n}\n\nexport const create$MenuItem = (item) => {\n const $MenuItem = document.createElement('div')\n switch (item.flags) {\n case MenuItemFlags.None:\n case MenuItemFlags.RestoreFocus:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Separator:\n $MenuItem.className = 'MenuItemSeparator'\n // @ts-ignore\n $MenuItem.role = 'separator'\n break\n case MenuItemFlags.Checked:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitemcheckbox'\n $MenuItem.ariaChecked = 'true'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.Unchecked:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitemcheckbox'\n $MenuItem.ariaChecked = 'false'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n break\n case MenuItemFlags.SubMenu:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.ariaHasPopup = 'true'\n $MenuItem.ariaExpanded = 'false'\n break\n case MenuItemFlags.Disabled:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n $MenuItem.setAttribute('disabled', 'true')\n break\n default:\n $MenuItem.className = 'MenuItem'\n // @ts-ignore\n $MenuItem.role = 'menuitem'\n $MenuItem.textContent = getLabel(item)\n $MenuItem.tabIndex = -1\n console.warn('invalid menu item flags:', item)\n break\n }\n return $MenuItem\n}\n", "export const create$BackDrop = () => {\n const $BackDrop = document.createElement('div')\n $BackDrop.id = 'BackDrop'\n return $BackDrop\n}\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\nimport * as BackDrop from '../BackDrop/BackDrop.js'\nimport * as Focus from '../Focus/Focus.js'\n\n// TODO when pressing tab -> focus next element in tab order and close menu\n\n// TODO menu and contextmenu should have own keybinding logic\n// seems not possible to do with just one keybinding listener\n\n// TODO similar to context menu, show sub menu entries\n// there can be multiple instances (parent -> child -> child) submenus\n\n// TODO using .style.top, .style.left causes chrome devtools to show many layout shift -> maybe use transform instead\n\n// TODO when cycling through items, recalculate style is much slower\n// than in vscode (1.49ms vs 0.33ms)\n// paint is also faster in vscode (0.32ms vs 0.14ms)\n\n// TODO focus on menu is not announced to screenreader\n\n// TODO recalculate style and paint is slow when cycling through items:\n// 0.59ms recalculate style\n// 36us update layer tree\n// 0.35ms paint\n// 0.20ms composite layer\n\n// const contextMenuWidth = 150\n// const contextMenuHeight = 150 + /* padding */ 8 * 4\n\n// TODO keyboard handling\n\nexport const state = {\n handleKeyDown(event) {},\n handleFocusOut(event) {},\n $$Menus: [],\n anchorX: 0,\n anchorY: 0,\n anchorTime: -1,\n $BackDrop: undefined,\n}\n\nconst getLevel = ($Menu) => {\n return state.$$Menus.indexOf($Menu)\n}\n\nconst handleMouseDown = (event) => {\n const $Target = event.target\n const $Menu = $Target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, $Target)\n if (index === -1) {\n console.log('index is negative one')\n return\n }\n event.preventDefault()\n const level = getLevel($Menu)\n RendererWorker.send(\n /* Menu.handleClick */ 'Menu.selectIndex',\n /* level */ level,\n /* index */ index\n )\n}\n\n// const handleKeyDown = (event) => {\n// console.log({ key: event.key })\n// switch (event.key) {\n// case 'ArrowUp':\n// RendererWorker.send( /* Menu.focusPrevious */ 7405)\n// break\n// case 'ArrowLeft':\n// // TODO collapse menu maybe\n// break\n// case 'ArrowDown':\n// RendererWorker.send( /* Menu.focusNext */ 7404)\n// break\n// case 'ArrowRight':\n// // TODO expand sub menu maybe\n// break\n// case 'Home':\n// RendererWorker.send( /* Menu.focusFirst */ 7406)\n// break\n// case 'End':\n// RendererWorker.send( /* Menu.focusLast */ 7407)\n// break\n// default:\n// break\n// }\n// }\n\nconst MOUSE_LOCS_TRACKED = 3\n\n/**\n *\n * @param {MouseEvent} event\n */\nconst handleMouseEnter = (event) => {\n const { target, clientX, clientY, timeStamp } = event\n // @ts-ignore\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n if (index === -1) {\n return\n }\n const level = getLevel($Menu)\n RendererWorker.send(\n /* Menu.handleMouseEnter */ 'Menu.handleMouseEnter',\n /* level */ level,\n /* index */ index,\n /* x */ clientX,\n /* y */ clientY,\n /* timeStamp */ timeStamp\n )\n}\n\nconst handleMouseMove = (event) => {\n // const x = event.clientX\n // const y = event.clientY\n // console.log('move', { x, y })\n}\n\nconst handleMouseLeave = (event) => {\n const $RelatedTarget = event.relatedTarget\n if ($RelatedTarget.classList.contains('MenuItem')) {\n return\n }\n RendererWorker.send(/* Menu.handleMouseLeave */ 'Menu.handleMouseLeave')\n}\n\n// const handleBlur = (event) => {}\nconst handleKeyDown = (event) => {\n state.handleKeyDown(event)\n}\n\nconst handleFocusOut = (event) => {\n state.handleFocusOut(event)\n}\n\nconst create$Menu = () => {\n // TODO set aria label on menu (e.g. File, Edit, Selection)\n const $Menu = document.createElement('ul')\n $Menu.className = 'Menu'\n // @ts-ignore\n $Menu.role = 'menu'\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n $Menu.addEventListener('mousedown', handleMouseDown)\n $Menu.addEventListener('mouseenter', handleMouseEnter, {\n capture: true,\n })\n $Menu.addEventListener('mouseleave', handleMouseLeave, {\n capture: true,\n })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n $Menu.onkeydown = handleKeyDown\n $Menu.addEventListener('focusout', handleFocusOut)\n $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\nexport const focusIndex = (level, oldFocusedIndex, newFocusedIndex) => {\n const $Menu = state.$$Menus[level]\n if (oldFocusedIndex !== -1) {\n $Menu.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex !== -1) {\n $Menu.children[newFocusedIndex].classList.add('Focused')\n $Menu.children[newFocusedIndex].focus()\n }\n}\n\n// TODO replace function that recycles menu dom nodes\n\nconst handleBackDropMouseDown = (event) => {\n event.preventDefault()\n event.stopPropagation()\n RendererWorker.send(/* Menu.hide */ 'Menu.hide')\n}\n\nconst handleContextMenu = (event) => {\n event.preventDefault()\n}\n\nexport const showMenu = (\n x,\n y,\n width,\n height,\n items,\n level,\n parentIndex = -1,\n mouseBlocking = false\n) => {\n if (mouseBlocking) {\n const $BackDrop = BackDrop.create$BackDrop()\n $BackDrop.onmousedown = handleBackDropMouseDown\n $BackDrop.oncontextmenu = handleContextMenu\n state.$BackDrop = $BackDrop\n Widget.append($BackDrop)\n }\n\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n $Menu.style.left = `${x}px`\n $Menu.style.top = `${y}px`\n $Menu.id = `Menu-${level}`\n\n if (parentIndex !== -1) {\n const $ParentMenu = state.$$Menus[level - 1]\n const $ParentMenuItem = $ParentMenu.children[parentIndex]\n $ParentMenuItem.ariaExpanded = 'true'\n $ParentMenuItem.setAttribute('aria-owns', $Menu.id)\n }\n\n state.$$Menus.push($Menu)\n Widget.append($Menu)\n\n if (level === 0) {\n Focus.focus($Menu, 'menu')\n }\n}\n\nexport const showContextMenu = (x, y, width, height, level, items) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n while (state.$$Menus.length > 0) {\n state.$$Menus[0].remove()\n }\n const $Menu = create$Menu()\n $Menu.append(...items.map(MenuItem.create$MenuItem))\n $Menu.style.left = `${x}px`\n $Menu.style.top = `${y}px`\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n state.$$Menus.push($Menu)\n // TODO create backdrop\n}\n\nexport const closeSubMenu = () => {\n const $SubMenu = state.$$Menus.pop()\n const $ParentMenu = state.$$Menus.at(-1)\n Widget.remove($SubMenu)\n}\n\nexport const hideSubMenu = (level) => {\n const $$ChildMenus = state.$$Menus.slice(level)\n for (const $ChildMenu of $$ChildMenus) {\n Widget.remove($ChildMenu)\n }\n}\n\n// export const showSubMenu = (level, items, parentIndex) => {\n// const $$ChildMenus = state.$$Menus.slice(level)\n// for (const $ChildMenu of $$ChildMenus) {\n// Widget.remove($ChildMenu)\n// }\n// state.$$Menus = state.$$Menus.slice(0, level)\n// const $ParentMenu = state.$$Menus[level - 1]\n// const $ParentMenuItem = $ParentMenu.children[parentIndex]\n// const rect = $ParentMenuItem.getBoundingClientRect()\n// const x = rect.right\n// const y = rect.top\n// showMenu(x, y, items, level)\n// // TODO remove aria-owns when sub-menu is closed\n// $ParentMenuItem.setAttribute('aria-owns', 'Menu')\n// }\n\n// TODO implement focusIndex like this\n// const focusIndex2=(id, index)=>{\n// const $Menu = state.menus[id]\n// $Menu.children[index].focus()\n// }\n\n// TODO support nested menus / submenus\nexport const showControlled = ({\n x,\n y,\n items,\n handleKeyDown,\n handleFocusOut,\n $Parent,\n level,\n width,\n height,\n}) => {\n showMenu(x, y, width, height, items, level)\n // TODO menu should not necessarily know about parent (titleBarMenuBar)\n // it should be the other way around\n state.$Parent = $Parent\n state.handleFocusOut = handleFocusOut\n state.handleKeyDown = handleKeyDown\n if ($Parent) {\n // state.$Menu.ariaLabel=''\n // state.$Menu.ariaLabelledBy =$Parent.id\n $Parent.setAttribute('aria-owns', 'Menu')\n } else {\n // state.$Menu.removeAttribute('aria-labelledby')\n }\n // Context.setFocus('menu') // TODO overlapping focus: titleBarMenuBar has focus (kinda) but also menu at the same time\n}\n\n// TODO have function to show submenu\n\nexport const hide = (restoreFocus = true) => {\n for (const $Menu of state.$$Menus) {\n Widget.remove($Menu)\n }\n state.$$Menus = []\n if (state.$BackDrop) {\n Widget.remove(state.$BackDrop)\n state.$BackDrop = undefined\n }\n // TODO focus previous item\n if (restoreFocus) {\n Focus.focusPrevious()\n }\n}\n\nexport const contains = ($Element) => {\n for (const $Menu of state.$$Menus) {\n if ($Menu.contains($Element)) {\n return true\n }\n }\n return false\n}\n", "import * as Menu from './Menu.js'\n\nexport const Commands = {\n 'Menu.focusIndex': Menu.focusIndex,\n 'Menu.hide': Menu.hide,\n 'Menu.hideSubMenu': Menu.hideSubMenu,\n 'Menu.showContextMenu': Menu.showContextMenu,\n 'Menu.showControlled': Menu.showControlled,\n 'Menu.showMenu': Menu.showMenu,\n 'Menu.showSubMenu': Menu.showSubMenu,\n}\n", "export const openUrl = (url) => {\n open(url)\n}\n", "import * as Open from './Open.js'\n\nexport const Commands = {\n 'Open.openUrl': Open.openUrl,\n}\n", "export const measureUserAgentSpecificMemory = async () => {\n // @ts-ignore\n if (performance && performance.measureUserAgentSpecificMemory) {\n console.time('mem')\n // @ts-ignore\n const memory = await performance.measureUserAgentSpecificMemory()\n console.timeEnd('mem')\n return memory\n }\n return undefined\n}\n\nexport const getMemory = () => {\n // @ts-ignore\n const memory = performance.memory\n if (!memory) {\n return undefined\n }\n return {\n jsHeapSizeLimit: memory.jsHeapSizeLimit,\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize,\n }\n}\n", "import * as Performance from './Performance.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Performance.getMemory': Performance.getMemory,\n 'Performance.measureUserAgentSpecificMemory': Performance.measureUserAgentSpecificMemory,\n}\n", "/*! @license DOMPurify 2.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.0/LICENSE */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n return _typeof = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(obj2) {\n return typeof obj2;\n } : function(obj2) {\n return obj2 && typeof Symbol == \"function\" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? \"symbol\" : typeof obj2;\n }, _typeof(obj);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct)\n return false;\n if (Reflect.construct.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct2(Parent2, args2, Class2) {\n var a = [null];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2)\n _setPrototypeOf(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr))\n return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++)\n arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar hasOwnProperty = Object.hasOwnProperty, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze, seal = Object.seal, create = Object.create;\nvar _ref = typeof Reflect !== \"undefined\" && Reflect, apply = _ref.apply, construct = _ref.construct;\nif (!apply) {\n apply = function apply2(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!freeze) {\n freeze = function freeze2(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal2(x) {\n return x;\n };\n}\nif (!construct) {\n construct = function construct2(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function(thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n if (setPrototypeOf) {\n setPrototypeOf(set, null);\n }\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === \"string\") {\n var lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\nfunction clone(object) {\n var newObject = create(null);\n var property;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n return newObject;\n}\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === \"function\") {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue(element) {\n console.warn(\"fallback value for\", element);\n return null;\n }\n return fallbackValue;\n}\nvar html$1 = freeze([\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"bdi\", \"bdo\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"decorator\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"element\", \"em\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meter\", \"nav\", \"nobr\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"shadow\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"]);\nvar svg$1 = freeze([\"svg\", \"a\", \"altglyph\", \"altglyphdef\", \"altglyphitem\", \"animatecolor\", \"animatemotion\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"desc\", \"ellipse\", \"filter\", \"font\", \"g\", \"glyph\", \"glyphref\", \"hkern\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"style\", \"switch\", \"symbol\", \"text\", \"textpath\", \"title\", \"tref\", \"tspan\", \"view\", \"vkern\"]);\nvar svgFilters = freeze([\"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\"]);\nvar svgDisallowed = freeze([\"animate\", \"color-profile\", \"cursor\", \"discard\", \"fedropshadow\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignobject\", \"hatch\", \"hatchpath\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"missing-glyph\", \"script\", \"set\", \"solidcolor\", \"unknown\", \"use\"]);\nvar mathMl$1 = freeze([\"math\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mglyph\", \"mi\", \"mlabeledtr\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msup\", \"msubsup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\"]);\nvar mathMlDisallowed = freeze([\"maction\", \"maligngroup\", \"malignmark\", \"mlongdiv\", \"mscarries\", \"mscarry\", \"msgroup\", \"mstack\", \"msline\", \"msrow\", \"semantics\", \"annotation\", \"annotation-xml\", \"mprescripts\", \"none\"]);\nvar text = freeze([\"#text\"]);\nvar html = freeze([\"accept\", \"action\", \"align\", \"alt\", \"autocapitalize\", \"autocomplete\", \"autopictureinpicture\", \"autoplay\", \"background\", \"bgcolor\", \"border\", \"capture\", \"cellpadding\", \"cellspacing\", \"checked\", \"cite\", \"class\", \"clear\", \"color\", \"cols\", \"colspan\", \"controls\", \"controlslist\", \"coords\", \"crossorigin\", \"datetime\", \"decoding\", \"default\", \"dir\", \"disabled\", \"disablepictureinpicture\", \"disableremoteplayback\", \"download\", \"draggable\", \"enctype\", \"enterkeyhint\", \"face\", \"for\", \"headers\", \"height\", \"hidden\", \"high\", \"href\", \"hreflang\", \"id\", \"inputmode\", \"integrity\", \"ismap\", \"kind\", \"label\", \"lang\", \"list\", \"loading\", \"loop\", \"low\", \"max\", \"maxlength\", \"media\", \"method\", \"min\", \"minlength\", \"multiple\", \"muted\", \"name\", \"nonce\", \"noshade\", \"novalidate\", \"nowrap\", \"open\", \"optimum\", \"pattern\", \"placeholder\", \"playsinline\", \"poster\", \"preload\", \"pubdate\", \"radiogroup\", \"readonly\", \"rel\", \"required\", \"rev\", \"reversed\", \"role\", \"rows\", \"rowspan\", \"spellcheck\", \"scope\", \"selected\", \"shape\", \"size\", \"sizes\", \"span\", \"srclang\", \"start\", \"src\", \"srcset\", \"step\", \"style\", \"summary\", \"tabindex\", \"title\", \"translate\", \"type\", \"usemap\", \"valign\", \"value\", \"width\", \"xmlns\", \"slot\"]);\nvar svg = freeze([\"accent-height\", \"accumulate\", \"additive\", \"alignment-baseline\", \"ascent\", \"attributename\", \"attributetype\", \"azimuth\", \"basefrequency\", \"baseline-shift\", \"begin\", \"bias\", \"by\", \"class\", \"clip\", \"clippathunits\", \"clip-path\", \"clip-rule\", \"color\", \"color-interpolation\", \"color-interpolation-filters\", \"color-profile\", \"color-rendering\", \"cx\", \"cy\", \"d\", \"dx\", \"dy\", \"diffuseconstant\", \"direction\", \"display\", \"divisor\", \"dur\", \"edgemode\", \"elevation\", \"end\", \"fill\", \"fill-opacity\", \"fill-rule\", \"filter\", \"filterunits\", \"flood-color\", \"flood-opacity\", \"font-family\", \"font-size\", \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-variant\", \"font-weight\", \"fx\", \"fy\", \"g1\", \"g2\", \"glyph-name\", \"glyphref\", \"gradientunits\", \"gradienttransform\", \"height\", \"href\", \"id\", \"image-rendering\", \"in\", \"in2\", \"k\", \"k1\", \"k2\", \"k3\", \"k4\", \"kerning\", \"keypoints\", \"keysplines\", \"keytimes\", \"lang\", \"lengthadjust\", \"letter-spacing\", \"kernelmatrix\", \"kernelunitlength\", \"lighting-color\", \"local\", \"marker-end\", \"marker-mid\", \"marker-start\", \"markerheight\", \"markerunits\", \"markerwidth\", \"maskcontentunits\", \"maskunits\", \"max\", \"mask\", \"media\", \"method\", \"mode\", \"min\", \"name\", \"numoctaves\", \"offset\", \"operator\", \"opacity\", \"order\", \"orient\", \"orientation\", \"origin\", \"overflow\", \"paint-order\", \"path\", \"pathlength\", \"patterncontentunits\", \"patterntransform\", \"patternunits\", \"points\", \"preservealpha\", \"preserveaspectratio\", \"primitiveunits\", \"r\", \"rx\", \"ry\", \"radius\", \"refx\", \"refy\", \"repeatcount\", \"repeatdur\", \"restart\", \"result\", \"rotate\", \"scale\", \"seed\", \"shape-rendering\", \"specularconstant\", \"specularexponent\", \"spreadmethod\", \"startoffset\", \"stddeviation\", \"stitchtiles\", \"stop-color\", \"stop-opacity\", \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-miterlimit\", \"stroke-opacity\", \"stroke\", \"stroke-width\", \"style\", \"surfacescale\", \"systemlanguage\", \"tabindex\", \"targetx\", \"targety\", \"transform\", \"transform-origin\", \"text-anchor\", \"text-decoration\", \"text-rendering\", \"textlength\", \"type\", \"u1\", \"u2\", \"unicode\", \"values\", \"viewbox\", \"visibility\", \"version\", \"vert-adv-y\", \"vert-origin-x\", \"vert-origin-y\", \"width\", \"word-spacing\", \"wrap\", \"writing-mode\", \"xchannelselector\", \"ychannelselector\", \"x\", \"x1\", \"x2\", \"xmlns\", \"y\", \"y1\", \"y2\", \"z\", \"zoomandpan\"]);\nvar mathMl = freeze([\"accent\", \"accentunder\", \"align\", \"bevelled\", \"close\", \"columnsalign\", \"columnlines\", \"columnspan\", \"denomalign\", \"depth\", \"dir\", \"display\", \"displaystyle\", \"encoding\", \"fence\", \"frame\", \"height\", \"href\", \"id\", \"largeop\", \"length\", \"linethickness\", \"lspace\", \"lquote\", \"mathbackground\", \"mathcolor\", \"mathsize\", \"mathvariant\", \"maxsize\", \"minsize\", \"movablelimits\", \"notation\", \"numalign\", \"open\", \"rowalign\", \"rowlines\", \"rowspacing\", \"rowspan\", \"rspace\", \"rquote\", \"scriptlevel\", \"scriptminsize\", \"scriptsizemultiplier\", \"selection\", \"separator\", \"separators\", \"stretchy\", \"subscriptshift\", \"supscriptshift\", \"symmetric\", \"voffset\", \"width\", \"xmlns\"]);\nvar xml = freeze([\"xlink:href\", \"xml:id\", \"xlink:title\", \"xml:space\", \"xmlns:xlink\"]);\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm);\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/);\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nvar DOCTYPE_NAME = seal(/^html$/i);\nvar getGlobal = function getGlobal2() {\n return typeof window === \"undefined\" ? null : window;\n};\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document) {\n if (_typeof(trustedTypes) !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") {\n return null;\n }\n var suffix = null;\n var ATTR_NAME = \"data-tt-policy-suffix\";\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n var policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html2) {\n return html2;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n console.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n return null;\n }\n};\nfunction createDOMPurify() {\n var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n var DOMPurify = function DOMPurify2(root) {\n return createDOMPurify(root);\n };\n DOMPurify.version = \"2.4.0\";\n DOMPurify.removed = [];\n if (!window2 || !window2.document || window2.document.nodeType !== 9) {\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n var originalDocument = window2.document;\n var document = window2.document;\n var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n var getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n var getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n var getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n if (typeof HTMLTemplateElement === \"function\") {\n var template = document.createElement(\"template\");\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(\"\") : \"\";\n var _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {\n }\n var hooks = {};\n DOMPurify.isSupported = typeof getParentNode === \"function\" && implementation && typeof implementation.createHTMLDocument !== \"undefined\" && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n var FORBID_TAGS = null;\n var FORBID_ATTR = null;\n var ALLOW_ARIA_ATTR = true;\n var ALLOW_DATA_ATTR = true;\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n var SAFE_FOR_TEMPLATES = false;\n var WHOLE_DOCUMENT = false;\n var SET_CONFIG = false;\n var FORCE_BODY = false;\n var RETURN_DOM = false;\n var RETURN_DOM_FRAGMENT = false;\n var RETURN_TRUSTED_TYPE = false;\n var SANITIZE_DOM = true;\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n var KEEP_CONTENT = true;\n var IN_PLACE = false;\n var USE_PROFILES = {};\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, [\"annotation-xml\", \"audio\", \"colgroup\", \"desc\", \"foreignobject\", \"head\", \"iframe\", \"math\", \"mi\", \"mn\", \"mo\", \"ms\", \"mtext\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"svg\", \"template\", \"thead\", \"title\", \"video\", \"xmp\"]);\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, [\"audio\", \"video\", \"img\", \"source\", \"image\", \"track\"]);\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\"alt\", \"class\", \"for\", \"id\", \"label\", \"name\", \"pattern\", \"placeholder\", \"role\", \"summary\", \"title\", \"value\", \"style\", \"xmlns\"]);\n var MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n var SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n var HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n var DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n var transformCaseFunc;\n var CONFIG = null;\n var formElement = document.createElement(\"form\");\n var isRegexOrFunction = function isRegexOrFunction2(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n var _parseConfig = function _parseConfig2(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n if (!cfg || _typeof(cfg) !== \"object\") {\n cfg = {};\n }\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n transformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? function(x) {\n return x;\n } : stringToLowerCase;\n ALLOWED_TAGS = \"ALLOWED_TAGS\" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = \"ALLOWED_ATTR\" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = \"ADD_URI_SAFE_ATTR\" in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = \"ADD_DATA_URI_TAGS\" in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = \"FORBID_CONTENTS\" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = \"FORBID_TAGS\" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = \"FORBID_ATTR\" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = \"USE_PROFILES\" in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n RETURN_DOM = cfg.RETURN_DOM || false;\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n FORCE_BODY = cfg.FORCE_BODY || false;\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n IN_PLACE = cfg.IN_PLACE || false;\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === \"boolean\") {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (KEEP_CONTENT) {\n ALLOWED_TAGS[\"#text\"] = true;\n }\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, [\"html\", \"head\", \"body\"]);\n }\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, [\"tbody\"]);\n delete FORBID_TAGS.tbody;\n }\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]);\n var HTML_INTEGRATION_POINTS = addToSet({}, [\"foreignobject\", \"desc\", \"title\", \"annotation-xml\"]);\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\"title\", \"style\", \"font\", \"a\", \"script\"]);\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n var _checkValidNamespace = function _checkValidNamespace2(element) {\n var parent = getParentNode(element);\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: \"template\"\n };\n }\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n if (element.namespaceURI === SVG_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"svg\";\n }\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === \"math\";\n }\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n }\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n return false;\n };\n var _forceRemove = function _forceRemove2(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_2) {\n node.remove();\n }\n }\n };\n var _removeAttribute = function _removeAttribute2(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n if (name === \"is\" && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {\n }\n } else {\n try {\n node.setAttribute(name, \"\");\n } catch (_) {\n }\n }\n }\n };\n var _initDocument = function _initDocument2(dirty) {\n var doc;\n var leadingWhitespace;\n if (FORCE_BODY) {\n dirty = \"<remove></remove>\" + dirty;\n } else {\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === \"application/xhtml+xml\") {\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + \"</body></html>\";\n }\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {\n }\n }\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, \"template\", null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? \"\" : dirtyPayload;\n } catch (_) {\n }\n }\n var body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n var _createIterator = function _createIterator2(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n var _isClobbered = function _isClobbered2(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== \"string\" || typeof elm.textContent !== \"string\" || typeof elm.removeChild !== \"function\" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== \"function\" || typeof elm.setAttribute !== \"function\" || typeof elm.namespaceURI !== \"string\" || typeof elm.insertBefore !== \"function\");\n };\n var _isNode = function _isNode2(object) {\n return _typeof(Node) === \"object\" ? object instanceof Node : object && _typeof(object) === \"object\" && typeof object.nodeType === \"number\" && typeof object.nodeName === \"string\";\n };\n var _executeHook = function _executeHook2(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n arrayForEach(hooks[entryPoint], function(hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n var _sanitizeElements = function _sanitizeElements2(currentNode) {\n var content;\n _executeHook(\"beforeSanitizeElements\", currentNode, null);\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n return true;\n }\n var tagName = transformCaseFunc(currentNode.nodeName);\n _executeHook(\"uponSanitizeElement\", currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n if (tagName === \"select\" && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))\n return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName))\n return false;\n }\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n if ((tagName === \"noscript\" || tagName === \"noembed\") && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, \" \");\n content = stringReplace(content, ERB_EXPR$1, \" \");\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n _executeHook(\"afterSanitizeElements\", currentNode, null);\n return false;\n };\n var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {\n if (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) {\n return false;\n }\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName))\n ;\n else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName))\n ;\n else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (_basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value)))\n ;\n else {\n return false;\n }\n } else if (URI_SAFE_ATTRIBUTES[lcName])\n ;\n else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag])\n ;\n else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\")))\n ;\n else if (!value)\n ;\n else {\n return false;\n }\n return true;\n };\n var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {\n return tagName.indexOf(\"-\") > 0;\n };\n var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n _executeHook(\"beforeSanitizeAttributes\", currentNode, null);\n var attributes = currentNode.attributes;\n if (!attributes) {\n return;\n }\n var hookEvent = {\n attrName: \"\",\n attrValue: \"\",\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n while (l--) {\n attr = attributes[l];\n var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;\n value = name === \"value\" ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = void 0;\n _executeHook(\"uponSanitizeAttribute\", currentNode, hookEvent);\n value = hookEvent.attrValue;\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n _removeAttribute(name, currentNode);\n if (!hookEvent.keepAttr) {\n continue;\n }\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n value = stringReplace(value, ERB_EXPR$1, \" \");\n }\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n if (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\")) {\n _removeAttribute(name, currentNode);\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n if (trustedTypesPolicy && _typeof(trustedTypes) === \"object\" && typeof trustedTypes.getAttributeType === \"function\") {\n if (namespaceURI)\n ;\n else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case \"TrustedHTML\":\n value = trustedTypesPolicy.createHTML(value);\n break;\n case \"TrustedScriptURL\":\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n currentNode.setAttribute(name, value);\n }\n arrayPop(DOMPurify.removed);\n } catch (_) {\n }\n }\n _executeHook(\"afterSanitizeAttributes\", currentNode, null);\n };\n var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {\n var shadowNode;\n var shadowIterator = _createIterator(fragment);\n _executeHook(\"beforeSanitizeShadowDOM\", fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n _executeHook(\"uponSanitizeShadowNode\", shadowNode, null);\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM2(shadowNode.content);\n }\n _sanitizeAttributes(shadowNode);\n }\n _executeHook(\"afterSanitizeShadowDOM\", fragment, null);\n };\n DOMPurify.sanitize = function(dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var oldNode;\n var returnNode;\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = \"<!-->\";\n }\n if (typeof dirty !== \"string\" && !_isNode(dirty)) {\n if (typeof dirty.toString !== \"function\") {\n throw typeErrorCreate(\"toString is not a function\");\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== \"string\") {\n throw typeErrorCreate(\"dirty is not a string, aborting\");\n }\n }\n }\n if (!DOMPurify.isSupported) {\n if (_typeof(window2.toStaticHTML) === \"object\" || typeof window2.toStaticHTML === \"function\") {\n if (typeof dirty === \"string\") {\n return window2.toStaticHTML(dirty);\n }\n if (_isNode(dirty)) {\n return window2.toStaticHTML(dirty.outerHTML);\n }\n }\n return dirty;\n }\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n DOMPurify.removed = [];\n if (typeof dirty === \"string\") {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n }\n }\n } else if (dirty instanceof Node) {\n body = _initDocument(\"<!---->\");\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === \"BODY\") {\n body = importedNode;\n } else if (importedNode.nodeName === \"HTML\") {\n body = importedNode;\n } else {\n body.appendChild(importedNode);\n }\n } else {\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n body = _initDocument(dirty);\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n }\n }\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n while (currentNode = nodeIterator.nextNode()) {\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n _sanitizeAttributes(currentNode);\n oldNode = currentNode;\n }\n oldNode = null;\n if (IN_PLACE) {\n return dirty;\n }\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot) {\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n if (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n }\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, \" \");\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, \" \");\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function(cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function() {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function(tag, attr, value) {\n if (!CONFIG) {\n _parseConfig({});\n }\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function(entryPoint, hookFunction) {\n if (typeof hookFunction !== \"function\") {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function(entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n DOMPurify.removeHooks = function(entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n DOMPurify.removeAllHooks = function() {\n hooks = {};\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\nexport default purify;\n", "import DomPurify from '../../../static/js/dompurify.js'\n\nexport const sanitizeHtml = (html) => {\n return DomPurify.sanitize(html)\n}\n", "import * as SanitizeHtml from './SanitizeHtml.js'\n\nexport const Commands = {\n 'SanitizeHtml.sanitizeHtml': SanitizeHtml.sanitizeHtml,\n}\n", "const supportsServiceWorker = () => {\n return 'serviceWorker' in navigator\n}\n\nconst handleUpdateFound = () => {\n // console.info('[service-worker] update found')\n}\n\nconst handleControllerChange = () => {\n // console.info('[service-worker] controller changed - reloading page')\n location.reload()\n}\n\nexport const register = async (url) => {\n if (!supportsServiceWorker()) {\n return\n }\n const registration = await navigator.serviceWorker.register(url, {\n scope: '/',\n type: 'module',\n })\n registration.onupdatefound = handleUpdateFound\n navigator.serviceWorker.oncontrollerchange = handleControllerChange\n}\n\nconst uninstallRegistration = async (registration) => {\n await registration.unregister()\n}\n\nexport const uninstall = async () => {\n if (!supportsServiceWorker()) {\n return\n }\n const registrations = await navigator.serviceWorker.getRegistrations()\n await Promise.all(registrations.map(uninstallRegistration))\n}\n", "import * as ServiceWorker from './ServiceWorker.js'\n\nexport const Commands = {\n 'ServiceWorker.register': ServiceWorker.register,\n 'ServiceWorker.uninstall': ServiceWorker.uninstall,\n}\n", "export const mouseEvent = (element, eventType, options) => {\n const event = new MouseEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const mouseDown = (element, options) => {\n mouseEvent(element, 'mousedown', options)\n}\n\nexport const mouseUp = (element, options) => {\n mouseEvent(element, 'mouseup', options)\n}\n\nexport const contextMenu = (element, options) => {\n mouseEvent(element, 'contextmenu', options)\n}\n\nexport const click = (element, options) => {\n mouseDown(element, options)\n mouseEvent(element, 'click', options)\n mouseUp(element, options)\n if (options.button === 2 /* right */) {\n contextMenu(element, options)\n }\n}\n\nexport const hover = (element, options) => {\n mouseEvent(element, 'mouseenter', options)\n}\n\nexport const type = (element, options) => {\n element.value = options.text\n}\n\nexport const keyboardEvent = (element, eventType, options) => {\n const event = new KeyboardEvent(eventType, options)\n element.dispatchEvent(event)\n}\n\nexport const keyDown = (element, options) => {\n keyboardEvent(element, 'keydown', options)\n}\n\nexport const keyUp = (element, options) => {\n keyboardEvent(element, 'keyup', options)\n}\n\nconst getEventClass = (eventType) => {\n switch (eventType) {\n case 'wheel':\n return WheelEvent\n case 'pointerdown':\n case 'pointerup':\n case 'pointermove':\n return PointerEvent\n default:\n return Event\n }\n}\n\nexport const dispatchEvent = (element, options) => {\n const eventClass = getEventClass(options.type)\n const event = new eventClass(options.type, options.init)\n element.dispatchEvent(event)\n}\n", "export const htmlElements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdo',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'command',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'map',\n 'mark',\n 'menu',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]\n", "import { htmlElements } from './HtmlElements.js'\n\nconst querySelectorByText = (root, text) => {\n let node\n const elements = []\n const walk = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null)\n while ((node = walk.nextNode())) {\n // @ts-ignore\n if (node.nodeValue === text) {\n elements.push(node.parentNode)\n }\n }\n return elements\n}\n\nconst querySelectorByCss = (selector) => {\n return Array.from(document.querySelectorAll(selector))\n}\n\nconst isElement = (selector) => {\n return htmlElements.includes(selector)\n}\n\nexport const querySelector = (selector) => {\n if (typeof selector !== 'string') {\n throw new Error('selector must be of type string')\n }\n if (selector.startsWith('text=')) {\n return querySelectorByText(document.body, selector.slice('text='.length))\n }\n if (selector.includes('text=')) {\n const index = selector.indexOf('text=')\n const elements = querySelectorByCss(selector.slice(0, index))\n const text = selector.slice(index + 'text='.length)\n return elements.flatMap((element) => {\n return querySelectorByText(element, text)\n })\n // for(const element of elements)\n }\n if (selector.startsWith('.')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('#')) {\n return querySelectorByCss(selector)\n }\n if (selector.startsWith('[data')) {\n return querySelectorByCss(selector)\n }\n if (isElement(selector)) {\n return querySelectorByCss(selector)\n }\n throw new Error(`unsupported selector: ${selector}`)\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\nexport const querySelectorWithOptions = (\n selector,\n { nth = -1, hasText = '' } = {}\n) => {\n let elements = querySelector(selector)\n if (hasText) {\n elements = elements.filter((element) => element.textContent === hasText)\n }\n if (elements.length === 0) {\n return undefined\n }\n if (elements.length === 1) {\n const element = elements[0]\n return element\n }\n if (nth === -1) {\n throw new Error(\n `too many matching elements for ${selector}, matching ${elements.length}`\n )\n }\n const element = elements[nth]\n if (!element) {\n throw new Error(`selector not found: ${selector}`)\n }\n return element\n}\n", "export const toBeVisible = (element) => {\n if (typeof element.isVisible === 'function') {\n return element.isVisible()\n }\n return element.isConnected\n}\n\nexport const toHaveValue = (element, { value }) => {\n return element.value === value\n}\n\nexport const toHaveText = (element, { text }) => {\n return element.textContent === text\n}\n\nexport const toHaveAttribute = (element, { key, value }) => {\n const attribute = element.getAttribute(key)\n return attribute === value\n}\n\nexport const toBeFocused = (element) => {\n return element === document.activeElement\n}\n\nexport const toHaveClass = (element, { className }) => {\n return element.classList.contains(className)\n}\n\nexport const toHaveId = (element, { id }) => {\n return element.id === id\n}\n\nexport const toHaveCss = (element, { key, value }) => {\n const style = getComputedStyle(element)\n return style[key] === value\n}\n", "export const toHaveCount = (elements, { count }) => {\n return elements.length === count\n}\n\nexport const toBeHidden = (elements) => {\n return elements.length === 0\n}\n", "import * as QuerySelector from './QuerySelector.js'\n\nexport const toBeVisible = (locator) => {\n return `expected selector to be visible ${locator._selector}`\n}\n\nexport const toHaveValue = (locator, { value }) => {\n return `expected selector ${locator._selector} to have value ${value}`\n}\n\nconst printLocator = (locator) => {\n if (locator._nth !== -1) {\n return `${locator._selector}:nth(${locator._nth})`\n }\n if (locator._hasText) {\n return `${locator._selector} \"${locator._hasText}\"`\n }\n return `${locator._selector}`\n}\n\nexport const toHaveText = (locator, { text }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected selector ${locatorString} to have text \"${text}\" element was not found`\n }\n return `expected selector ${locatorString} to have text \"${text}\" but was \"${element.textContent}\"`\n}\n\nexport const toHaveAttribute = (locator, { key, value }) => {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n nth: locator._nth,\n hasText: locator._hasText,\n })\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have attribute ${key} ${value} but element was not found`\n }\n const actual = element.getAttribute(key)\n return `expected ${locatorString} to have attribute ${key} ${value} but was ${actual}`\n}\n\nexport const toHaveCount = (locator, { count }) => {\n const locatorString = printLocator(locator)\n return `expected ${locatorString} to have count ${count}`\n}\n\nconst stringifyElement = (element) => {\n if (element.id) {\n return `#${element.id}`\n }\n if (element.className) {\n return `.${element.className}`\n }\n if (element === document.body) {\n return 'document.body'\n }\n return element.tagName\n}\n\nexport const toBeFocused = (locator) => {\n const locatorString = printLocator(locator)\n const activeElement = document.activeElement\n const stringifiedActiveElement = stringifyElement(activeElement)\n return `expected ${locatorString} to be focused but active element is ${stringifiedActiveElement}`\n}\n\nexport const toHaveClass = (locator, { className }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have class ${className} but element was not found`\n }\n return `expected ${locatorString} to have class ${className}`\n}\n\nexport const toHaveId = (locator, { id }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have id ${id} but element was not found`\n }\n return `expected ${locatorString} to have id ${id}`\n}\n\nexport const toBeHidden = (locator) => {\n const locatorString = printLocator(locator)\n return `expected ${locatorString} to be hidden`\n}\n\nexport const toHaveCss = (locator, { key, value }) => {\n const [element] = QuerySelector.querySelector(locator._selector)\n const locatorString = printLocator(locator)\n if (!element) {\n return `expected ${locatorString} to have css ${key} ${value}`\n }\n const style = getComputedStyle(element)\n const actual = style[key]\n return `expected ${locatorString} to have css ${key} ${value} but was ${actual}`\n}\n", "import * as ElementActions from './ElementActions.js'\n\nexport const press = (options) => {\n const element = document.activeElement\n\n ElementActions.keyDown(element, options)\n ElementActions.keyUp(element, options)\n}\n", "import * as ElementActions from './ElementActions.js'\nimport * as QuerySelector from './QuerySelector.js'\nimport * as SingleElementConditions from './SingleElementConditions.js'\nimport * as MultiElementConditions from './MultiElementConditions.js'\nimport * as ConditionErrors from './ConditionErrors.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as KeyBoardActions from './KeyBoardActions.js'\n\nconst create$Overlay = () => {\n const $TestOverlay = document.createElement('div')\n $TestOverlay.id = 'TestOverlay'\n $TestOverlay.style.position = 'fixed'\n $TestOverlay.style.bottom = '0px'\n $TestOverlay.style.left = '0px'\n $TestOverlay.style.right = '0px'\n $TestOverlay.style.height = '20px'\n $TestOverlay.style.whiteSpace = 'nowrap'\n $TestOverlay.style.contain = 'strict'\n $TestOverlay.style.userSelect = 'text'\n return $TestOverlay\n}\n\nexport const showOverlay = (state, background, text) => {\n const $TestOverlay = create$Overlay()\n $TestOverlay.dataset.state = state\n $TestOverlay.style.background = background\n $TestOverlay.textContent = text\n document.body.append($TestOverlay)\n}\n\nconst Time = {\n getTimeStamp() {\n return performance.now()\n },\n}\n\nconst maxTimeout = 2000\n\nconst Timeout = {\n async short() {\n await new Promise((resolve) => setTimeout(resolve, 1000))\n },\n async waitForMutation(maxDelay) {\n const disposables = []\n await Promise.race([\n new Promise((resolve) => {\n const timeout = setTimeout(resolve, maxDelay)\n disposables.push(() => {\n clearTimeout(timeout)\n })\n }),\n new Promise((resolve) => {\n const callback = (mutations) => {\n resolve(undefined)\n }\n const observer = new MutationObserver(callback)\n observer.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n attributeOldValue: true,\n characterDataOldValue: true,\n })\n disposables.push(() => {\n observer.disconnect()\n })\n }),\n ])\n for (const disposable of disposables) {\n disposable()\n }\n },\n}\n\nexport const performAction = async (locator, fnName, options) => {\n Assert.object(locator)\n Assert.string(fnName)\n Assert.object(options)\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = ElementActions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n fn(element, options)\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n}\n\nexport const performKeyBoardAction = (fnName, options) => {\n const fn = KeyBoardActions[fnName]\n fn(options)\n}\n\nclass AssertionError extends Error {\n constructor(message) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n\nexport const checkSingleElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = SingleElementConditions[fnName]\n while (currentTime < endTime) {\n const element = QuerySelector.querySelectorWithOptions(locator._selector, {\n hasText: locator._hasText,\n nth: locator._nth,\n })\n if (element) {\n const successful = fn(element, options)\n if (successful) {\n return\n }\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const message = ConditionErrors[fn.name](locator, options)\n throw new AssertionError(message)\n}\n\nexport const checkMultiElementCondition = async (locator, fnName, options) => {\n const startTime = Time.getTimeStamp()\n const endTime = startTime + maxTimeout\n let currentTime = startTime\n const fn = MultiElementConditions[fnName]\n while (currentTime < endTime) {\n const elements = QuerySelector.querySelector(locator._selector)\n const successful = fn(elements, options)\n if (successful) {\n return\n }\n await Timeout.waitForMutation(100)\n currentTime = Time.getTimeStamp()\n }\n const message = ConditionErrors[fn.name](locator, options)\n throw new AssertionError(message)\n}\n", "import * as TestFrameWork from './TestFrameWork.js'\n\n// prettier-ignore\nexport const Commands = {\n 'TestFrameWork.checkMultiElementCondition': TestFrameWork.checkMultiElementCondition,\n 'TestFrameWork.checkSingleElementCondition': TestFrameWork.checkSingleElementCondition,\n 'TestFrameWork.performAction': TestFrameWork.performAction,\n 'TestFrameWork.performKeyBoardAction': TestFrameWork.performKeyBoardAction,\n 'TestFrameWork.showOverlay': TestFrameWork.showOverlay,\n}\n", "export const ActivityBar = 'ActivityBar'\n\nexport const Clock = 'Clock'\n\nexport const DebugConsole = 'Debug Console'\n\nexport const EditorCompletion = 'EditorCompletion'\n\nexport const EditorFindWidget = 'EditorFindWidget'\n\nexport const EditorImage = 'EditorImage'\n\nexport const EditorPlainText = 'EditorPlainText'\n\nexport const EditorText = 'EditorText'\n\nexport const Empty = 'Empty'\n\nexport const Explorer = 'Explorer'\n\nexport const ExtensionDetail = 'ExtensionDetail'\n\nexport const Extensions = 'Extensions'\n\nexport const ImagePreview = 'ImagePreview'\n\nexport const Implementations = 'Implementations'\n\nexport const KeyBindings = 'KeyBindings'\n\nexport const Main = 'Main'\n\nexport const Output = 'Output'\n\nexport const Panel = 'Panel'\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 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", "export const File = 'file'\n\nexport const Directory = 'directory'\n\nexport const DirectoryExpanding = 'directory-expanding'\n\nexport const DirectoryExpanded = 'directory-expanded'\n\nexport const Symlink = 'symlink'\n\nexport const Socket = 'socket'\n\nexport const BlockDevice = 'block-device'\n\nexport const CharacterDevice = 'character-device'\n\nexport const Unknown = 'unknown'\n", "export const Keyboard = -1\n\nexport const LeftClick = 0\n\nexport const MiddleClick = 1\n\nexport const RightClick = 2\n", "export const DomDeltaLine = WheelEvent.DOM_DELTA_LINE\n\nexport const DomDeltaPixel = WheelEvent.DOM_DELTA_PIXEL\n\nexport const DomDeltaPage = WheelEvent.DOM_DELTA_PAGE\n", "import * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// TODO put drop into separate module and use executeCommand to call it\n\n// TODO drag and drop should be loaded on demand\nconst getAllEntries = async (dataTransfer) => {\n const topLevelEntries = Array.from(dataTransfer.items).map((item) =>\n item.webkitGetAsEntry()\n )\n const allEntries = await new Promise((resolve, reject) => {\n const result = []\n let finished = 0\n let total = 0\n\n const fileCallback = (file) => {\n finished++\n result.push({\n type: 1,\n // path: entry.fullPath,\n file,\n })\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryFile = (entry) => {\n entry.file(fileCallback)\n }\n\n const entriesCallback = (childEntries) => {\n handleEntries(childEntries)\n finished++\n if (finished === total) {\n resolve(result)\n }\n }\n\n const handleEntryDirectory = (entry) => {\n result.push({\n type: 2,\n path: entry.fullPath,\n })\n const dirReader = entry.createReader()\n dirReader.readEntries(entriesCallback)\n }\n\n const handleEntries = (entries) => {\n total += entries.length\n for (const entry of entries) {\n if (entry.isFile) {\n handleEntryFile(entry)\n } else if (entry.isDirectory) {\n handleEntryDirectory(entry)\n } else {\n }\n }\n }\n\n handleEntries(topLevelEntries)\n })\n return allEntries\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('Explorer')\n const $Target = event.target\n if ($Target.className === 'InputBox') {\n return\n }\n event.preventDefault()\n RendererWorker.send(/* Explorer.focus */ 'Explorer.focus')\n}\n\nexport const handleBlur = (event) => {\n RendererWorker.send(/* Explorer.handleBlur */ 'Explorer.handleBlur')\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDragOver = (event) => {\n event.dataTransfer.effectAllowed = 'copyMove'\n // console.log('dragover', event)\n event.dataTransfer.dropEffect = 'copy'\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send('Explorer.handleDragOver', clientX, clientY)\n // state.element.classList.add('DropTarget')\n}\n\n/**\n * @param {DragEvent} event\n */\nexport const handleDragStart = (event) => {\n event.dataTransfer.effectAllowed = 'copyMove'\n // event.dataTransfer.setData('DownloadURL', '/tmp/some-file.txt')\n // event.preventDefault()\n event.dataTransfer.setData('text/uri-list', 'https://example.com/foobar')\n // event.dataTransfer.setData('x-special/nautilus-clipboard', 'hello-world')\n // event.dataTransfer.setData('text/plain', 'abc')\n}\n\nconst getHandle = async (item) => {\n const entry = await item.getAsFileSystemHandle()\n return entry\n}\n\nconst getHandles = async (items) => {\n const itemsArray = [...items]\n const handles = await Promise.all(itemsArray.map(getHandle))\n return handles\n}\n\n/**\n *\n * @param {DragEvent} event\n */\nexport const handleDrop = async (event) => {\n event.preventDefault()\n event.stopPropagation()\n const { files, dropEffect, items } = event.dataTransfer\n const { clientX, clientY } = event\n if (Platform.isElectron()) {\n RendererWorker.send('Explorer.handleDrop', clientX, clientY, files)\n } else {\n // unfortunately, DataTransferItem cannot be transferred to web worker\n // therefore the file system handles are sent to the web worker\n const handles = await getHandles(items)\n RendererWorker.send('Explorer.handleDrop', clientX, clientY, handles)\n }\n}\n\nconst handleContextMenuMouse = (event) => {\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Explorer.handleContextMenuMouseAt */ 'Explorer.handleContextMenuMouseAt',\n /* x */ x,\n /* y */ y\n )\n}\n\nconst handleContextMenuKeyboard = (event) => {\n RendererWorker.send(\n /* Explorer.handleContextMenuKeyboard */ 'Explorer.handleContextMenuKeyboard'\n )\n}\n\n// TODO maybe use aria active descendant instead\nconst getFocusedIndexFromFocusOutline = ($Viewlet) => {\n for (let i = 0; i < $Viewlet.children.length; i++) {\n const $Child = $Viewlet.children[i]\n if ($Child.classList.contains('FocusOutline')) {\n return i\n }\n }\n return -1\n}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n switch (event.button) {\n case MouseEventType.Keyboard:\n return handleContextMenuKeyboard(event)\n default:\n return handleContextMenuMouse(event)\n }\n}\n\nexport const handleMouseDown = (event) => {\n if (event.button !== MouseEventType.LeftClick) {\n return\n }\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Explorer.handleClickAt */ 'Explorer.handleClickAt',\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* Explorer.handleWheel */ 'Explorer.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* Explorer.handleWheel */ 'Explorer.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handleMouseEnter = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseEnter */ 'Explorer.handleMouseEnter',\n // /* index */ index\n // )\n}\n\nexport const handleMouseLeave = (event) => {\n // const $Target = event.target\n // const index = findIndex($Target)\n // if (index === -1) {\n // return\n // }\n // RendererWorker.send(\n // /* Explorer.handleMouseLeave */ 'Explorer.handleMouseLeave',\n // /* index */ index\n // )\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as Focus from '../Focus/Focus.js' // TODO focus is never needed at start -> use command.execute which lazy-loads focus module\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletExplorerEvents from './ViewletExplorerEvents.js'\n\nexport const name = 'Explorer'\n\nconst activeId = 'TreeItemActive'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.tabIndex = 0\n $Viewlet.dataset.viewletId = 'Explorer'\n // @ts-ignore\n $Viewlet.role = 'tree'\n $Viewlet.ariaLabel = 'Files Explorer'\n $Viewlet.onmousedown = ViewletExplorerEvents.handleMouseDown\n $Viewlet.oncontextmenu = ViewletExplorerEvents.handleContextMenu\n // TODO use the other mouse events that capture automatically\n $Viewlet.addEventListener(\n 'mouseenter',\n ViewletExplorerEvents.handleMouseEnter,\n { capture: true }\n )\n $Viewlet.addEventListener(\n 'mouseleave',\n ViewletExplorerEvents.handleMouseLeave,\n { capture: true }\n )\n $Viewlet.addEventListener('wheel', ViewletExplorerEvents.handleWheel, {\n passive: true,\n })\n $Viewlet.onblur = ViewletExplorerEvents.handleBlur\n $Viewlet.ondragstart = ViewletExplorerEvents.handleDragStart\n $Viewlet.ondragover = ViewletExplorerEvents.handleDragOver\n $Viewlet.ondrop = ViewletExplorerEvents.handleDrop\n return {\n $Viewlet,\n }\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n // @ts-ignore\n $Row.role = 'treeitem'\n $Row.className = 'TreeItem'\n $Row.draggable = true\n const $LabelText = document.createTextNode('')\n const $Label = document.createElement('div')\n $Label.className = 'Label'\n $Label.append($LabelText)\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO rename to renderDirent\nconst render$Row = ($Row, rowInfo) => {\n const $Icon = $Row.childNodes[0]\n const $LabelText = $Row.childNodes[1].childNodes[0]\n $Icon.className = `Icon${rowInfo.icon}`\n $LabelText.data = rowInfo.name\n $Row.title = rowInfo.path\n $Row.ariaSetSize = `${rowInfo.setSize}`\n // TODO bug with windows narrator\n // windows narrator reads heading level 1\n $Row.ariaLevel = `${rowInfo.depth}`\n $Row.ariaPosInSet = `${rowInfo.posInSet}`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n switch (rowInfo.type) {\n // TODO decide on directory vs folder\n case DirentType.Directory:\n $Row.ariaExpanded = 'false'\n break\n case DirentType.DirectoryExpanding:\n $Row.ariaExpanded = 'true' // TODO tree should be aria-busy then\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = 'true'\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i])\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos)\n } else {\n render$RowsMore($Rows, rowInfos)\n }\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n state.$Viewlet.textContent = message\n}\n\nexport const updateDirents = (state, dirents) => {\n Assert.object(state)\n Assert.array(dirents)\n render$Rows(state.$Viewlet, dirents)\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n const { $Viewlet } = state\n switch (oldIndex) {\n case -2:\n break\n case -1:\n $Viewlet.classList.remove('FocusOutline')\n break\n default:\n const $Dirent = $Viewlet.children[oldIndex]\n if ($Dirent) {\n $Dirent.removeAttribute('id')\n }\n break\n }\n switch (newIndex) {\n case -2:\n $Viewlet.classList.remove('FocusOutline')\n $Viewlet.removeAttribute('aria-activedescendant')\n break\n case -1:\n $Viewlet.classList.add('FocusOutline')\n $Viewlet.removeAttribute('aria-activedescendant')\n $Viewlet.focus()\n Focus.setFocus('Explorer')\n break\n default:\n const $Dirent = $Viewlet.children[newIndex]\n $Dirent.id = activeId\n $Viewlet.focus()\n $Viewlet.setAttribute('aria-activedescendant', activeId)\n Focus.setFocus('Explorer')\n break\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const hoverIndex = (state, oldIndex, newIndex) => {\n Assert.object(state)\n Assert.number(oldIndex)\n Assert.number(newIndex)\n if (oldIndex !== -1) {\n const $OldItem = state.$Viewlet.children[oldIndex]\n $OldItem.classList.remove('Hover')\n }\n const $NewItem = state.$Viewlet.children[newIndex]\n $NewItem.classList.add('Hover')\n}\n\nexport const showCreateFileInputBox = (state, index) => {\n const { $Viewlet } = state\n const $InputBox = InputBox.create()\n if (index === -1) {\n $Viewlet.append($InputBox)\n } else {\n const $Dirent = $Viewlet.children[index]\n // TODO this should never happen\n if (!$Dirent) {\n throw new Error(`dirent at index ${index} should be defined`)\n }\n $Dirent.before($InputBox)\n }\n $InputBox.focus()\n Focus.setFocus('ExplorerCreateFile')\n}\n\nexport const hideCreateFileInputBox = (state, index) => {\n const { $Viewlet } = state\n if (index === -1) {\n const $InputBox = $Viewlet.lastChild\n $InputBox.remove()\n return $InputBox.value\n }\n const $InputBox = $Viewlet.children[index]\n $InputBox.remove()\n return $InputBox.value\n}\n\nexport const showRenameInputBox = (state, index, name) => {\n const $InputBox = InputBox.create()\n $InputBox.value = name\n const $Dirent = state.$Viewlet.children[index]\n $Dirent.replaceWith($InputBox)\n $InputBox.select()\n $InputBox.setSelectionRange(0, $InputBox.value.length)\n Focus.setFocus('ExplorerRename')\n}\n\nexport const hideRenameBox = (state, index, dirent) => {\n const $InputBox = state.$Viewlet.children[index]\n const $Dirent = create$Row()\n render$Row($Dirent, dirent)\n $InputBox.replaceWith($Dirent)\n // $Dirent.focus()\n return $InputBox.value\n}\n\nexport const setDropTargets = (state, oldDropTargets, newDropTargets) => {\n const { $Viewlet } = state\n for (const oldIndex of oldDropTargets) {\n if (oldIndex === -1) {\n $Viewlet.classList.remove('DropTarget')\n } else {\n $Viewlet.children[oldIndex].classList.remove('DropTarget')\n }\n }\n for (const newIndex of newDropTargets) {\n if (newIndex === -1) {\n $Viewlet.classList.add('DropTarget')\n } else {\n $Viewlet.children[newIndex].classList.add('DropTarget')\n }\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\n// TODO is name export necessary? (probably not)\nexport const name = 'Run and Debug'\n\nconst handleMousedown = (event) => {\n // Highlight.highlightStart(state.$Viewlet)\n}\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'RunAndDebug'\n $Viewlet.className = 'Viewlet'\n $Viewlet.textContent = 'run and debug'\n $Viewlet.tabIndex = 0\n $Viewlet.addEventListener('mousedown', handleMousedown)\n return {\n $Viewlet,\n }\n}\n\nexport const refresh = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n state.$Viewlet.textContent = 'Run And Debug - Not implemented'\n}\n\nexport const focus = (state) => {\n // state.$Viewlet.classList.add('Focus')\n // requestAnimationFrame(() => {\n // state.$Viewlet.classList.add('FocusFaded')\n // setTimeout(() => {\n // state.$Viewlet.classList.remove('FocusFaded')\n // }, 1000)\n // })\n state.$Viewlet.focus()\n}\n\nexport const dispose = () => {}\n", "import * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send(\n /* ViewletSearch.handleInput */ 'Search.handleInput',\n /* value */ value\n )\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndexTreeItem = ($Target) => {\n return getNodeIndex($Target)\n}\n\nconst getIndexTreeItemLabel = ($Target) => {\n return getNodeIndex($Target.parentNode)\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TreeItem':\n return getIndexTreeItem($Target)\n case 'TreeItemLabel':\n return getIndexTreeItemLabel($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n if (event.button === MouseEventType.RightClick) {\n return\n }\n const $Target = event.target\n const index = getIndex($Target)\n RendererWorker.send(\n /* Search.handleClick */ 'Search.handleClick',\n /* index */ index\n )\n}\n\nconst handleContextMenuMouse = (event) => {\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Search.handleContextMenuMouseAt */ 'Search.handleContextMenuMouseAt',\n /* x */ x,\n /* y */ y\n )\n}\n\nconst handleContextMenuKeyboard = (event) => {\n RendererWorker.send(\n /* Search.handleContextMenuKeyboard */ 'Search.handleContextMenuKeyboard'\n )\n}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n switch (event.button) {\n case MouseEventType.Keyboard:\n return handleContextMenuKeyboard(event)\n default:\n return handleContextMenuMouse(event)\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletSearchEvents from './ViewletSearchEvents.js'\n\n// TODO name export not necessary\nexport const name = 'Search'\n\nexport const create = () => {\n const $ViewletSearchInput = InputBox.create()\n $ViewletSearchInput.placeholder = 'Search'\n $ViewletSearchInput.oninput = ViewletSearchEvents.handleInput\n\n const $SearchStatus = document.createElement('div')\n // @ts-ignore\n $SearchStatus.role = 'status'\n $SearchStatus.className = 'ViewletSearchMessage'\n\n const $SearchHeader = document.createElement('div')\n $SearchHeader.className = 'SearchHeader'\n $SearchHeader.append($ViewletSearchInput, $SearchStatus)\n\n const $SearchResults = document.createElement('div')\n $SearchResults.className = 'SearchResults'\n // TODO onclick vs onmousedown, should be consistent in whole application\n $SearchResults.onmousedown = ViewletSearchEvents.handleClick\n $SearchResults.oncontextmenu = ViewletSearchEvents.handleContextMenu\n\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Search'\n $Viewlet.className = 'Viewlet'\n $Viewlet.append($SearchHeader, $SearchResults)\n\n return {\n $Viewlet,\n $ViewletSearchInput,\n $SearchResults,\n $SearchStatus,\n }\n}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$ViewletSearchInput.focus()\n}\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n // @ts-ignore\n $Row.role = 'treeitem'\n $Row.className = 'TreeItem'\n const $LabelText = document.createTextNode('')\n const $Label = document.createElement('div')\n $Label.className = 'TreeItemLabel'\n $Label.append($LabelText)\n const $Icon = document.createElement('i')\n $Row.append($Icon, $Label)\n return $Row\n}\n\n// TODO much duplication with explorer\nconst render$Row = ($Row, rowInfo) => {\n const $Icon = $Row.childNodes[0]\n const $LabelText = $Row.childNodes[1].childNodes[0]\n $Icon.className = `Icon${rowInfo.icon}`\n $LabelText.data = rowInfo.text\n $Row.title = rowInfo.title\n $Row.ariaSetSize = `${rowInfo.setSize}`\n $Row.ariaLevel = `${rowInfo.depth}`\n $Row.ariaPosInSet = `${rowInfo.posInSet}`\n $Row.ariaLabel = rowInfo.name\n $Row.ariaDescription = ''\n switch (rowInfo.type) {\n // TODO type should be a number for efficiency\n case DirentType.Directory:\n $Row.ariaExpanded = 'false'\n break\n case DirentType.DirectoryExpanded:\n $Row.ariaExpanded = 'true'\n break\n case DirentType.File:\n $Row.ariaExpanded = undefined\n break\n default:\n break\n }\n}\n\nconst render$RowsLess = ($Rows, rowInfos) => {\n for (let i = 0; i < $Rows.children.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Rows.children.length; i < rowInfos.length; i++) {\n const $Row = create$Row()\n render$Row($Row, rowInfos[i])\n fragment.append($Row)\n }\n $Rows.append(fragment)\n}\n\nconst render$RowsEqual = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n}\n\nconst render$RowsMore = ($Rows, rowInfos) => {\n for (let i = 0; i < rowInfos.length; i++) {\n render$Row($Rows.children[i], rowInfos[i])\n }\n const diff = $Rows.children.length - rowInfos.length\n for (let i = 0; i < diff; i++) {\n $Rows.lastChild.remove()\n }\n}\n\nconst render$Rows = ($Rows, rowInfos) => {\n if ($Rows.children.length < rowInfos.length) {\n render$RowsLess($Rows, rowInfos)\n } else if ($Rows.children.length === rowInfos.length) {\n render$RowsEqual($Rows, rowInfos)\n } else {\n render$RowsMore($Rows, rowInfos)\n }\n}\n\nexport const setResults = (state, results) => {\n Assert.object(state)\n Assert.array(results)\n // TODO should recycle nodes when rendering only search results\n // maybe could also recycle node from noResults and vice versa\n render$Rows(state.$SearchResults, results)\n}\n\nexport const setMessage = (state, message) => {\n const { $SearchStatus } = state\n // TODO recycle text node\n $SearchStatus.textContent = message\n}\n\nexport const setValue = (state, value) => {\n const { $ViewletSearchInput } = state\n $ViewletSearchInput.value = value\n}\n\nexport const dispose = () => {}\n", "import { findIndex } from '../../shared/findIndex.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const name = 'Source Control'\n\nconst getFileName = (file) => {\n return file.slice(file.lastIndexOf('/') + 1)\n}\n\nconst create$Item = (item) => {\n const $Item = document.createElement('li')\n $Item.className = 'TreeItem'\n $Item.textContent = getFileName(item.file)\n $Item.title = `${item.file}`\n // TODO use same virtual list as for explorer\n $Item.style.position = 'relative'\n return $Item\n}\n\nconst handleFocus = () => {\n Focus.setFocus('sourceControlInput')\n}\n\nconst handleClick = (event) => {\n const $Target = event.target\n const $Parent = $Target.closest('.ViewletTree')\n const index = findIndex($Parent, $Target)\n // TODO ignore when index === -1\n RendererWorker.send(\n /* viewletCommand */ 2133,\n /* viewletId */ 'Source Control',\n /* type */ 'handleClick',\n /* index */ index\n )\n}\n\nconst getPlaceHolderText = () => {\n return `Message (${KeyBindings.lookupKeyBinding(\n 'scm.acceptInput'\n )} to commit on 'master'`\n}\n\nexport const create = () => {\n const $ViewSourceControlInput = InputBox.create()\n $ViewSourceControlInput.placeholder = getPlaceHolderText()\n $ViewSourceControlInput.onfocus = handleFocus\n $ViewSourceControlInput.ariaLabel = 'Source Control Input'\n const $ViewletTree = document.createElement('ul')\n $ViewletTree.className = 'ViewletTree'\n $ViewletTree.onclick = handleClick\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'SourceControl'\n $Viewlet.className = 'Viewlet'\n $Viewlet.tabIndex = 0\n $Viewlet.append($ViewSourceControlInput, $ViewletTree)\n return {\n $Viewlet,\n $ViewletTree,\n $ViewSourceControlInput,\n }\n}\n\nexport const dispose = () => {}\n\nexport const setChangedFiles = (state, workingTree) => {\n Assert.object(state)\n Assert.array(workingTree)\n const $$Entries = workingTree.map(create$Item)\n state.$ViewletTree.append(...$$Entries)\n}\n\nexport const setError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n const $Error = document.createElement('div')\n $Error.className = 'Error'\n $Error.textContent = error\n state.$ViewletTree.append($Error)\n}\n\nexport const setInputValue = (state, value) => {\n const { $ViewSourceControlInput } = state\n $ViewSourceControlInput.value = value\n}\n\nexport const focus = (state) => {\n state.$ViewSourceControlInput.focus()\n}\n", "const BACKGROUND = \"#c00ccc\";\nconst CHAR_WIDTH = 12;\nconst CHAR_HEIGHT = 15;\nconst createDrawCursor = (canvas) => {\n const ctx = canvas.getContext(\"2d\");\n let previousX = -1;\n let previousY = -1;\n let previousCursorStyle = -1;\n const drawCursor = (x, y, cursorVisible, cursorStyle) => {\n if (cursorVisible) {\n if (previousX === x && previousY === y && previousCursorStyle === cursorStyle) {\n return;\n }\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n switch (cursorStyle) {\n case 1:\n break;\n case 2:\n ctx.fillStyle = BACKGROUND;\n ctx.fillRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n case 3:\n break;\n case 4:\n ctx.strokeStyle = BACKGROUND;\n ctx.strokeRect(x * CHAR_WIDTH, y * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n break;\n }\n previousX = x;\n previousY = y;\n } else {\n ctx.clearRect(previousX * CHAR_WIDTH, previousY * CHAR_HEIGHT, CHAR_WIDTH, CHAR_HEIGHT);\n }\n };\n return drawCursor;\n};\nconst CHAR_WIDTH$1 = 12;\nconst CHAR_HEIGHT$1 = 15;\nconst BACKGROUND$1 = \"#000000\";\nconst supportsOffscreenCanvas = (() => {\n try {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n return true;\n } catch {\n return false;\n }\n})();\nconst supportsTransferToImageBitMap = (() => {\n try {\n supportsOffscreenCanvas ? (() => {\n const canvas = new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1);\n canvas.getContext(\"2d\");\n canvas.transferToImageBitmap();\n })() : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n canvas.transferToImageBitmap();\n })();\n return true;\n } catch {\n return false;\n }\n})();\nself.supportsTransferToImageBitMap = supportsTransferToImageBitMap;\nconst tmpCanvas = supportsOffscreenCanvas ? new OffscreenCanvas(CHAR_WIDTH$1, CHAR_HEIGHT$1) : (() => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = CHAR_WIDTH$1;\n canvas.height = CHAR_HEIGHT$1;\n return canvas;\n})();\nconst tmpCtx = tmpCanvas.getContext(\"2d\", {\n alpha: false\n});\nconst bitmapCache = Object.create(null);\nconst createDrawLines = (canvas, lines, bufferLines, offsets, attributes, rows, cols) => {\n const ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n ctx.fillStyle = BACKGROUND$1;\n const drawChar = (char, x, y, background, foreground) => {\n if (char === \" \" && background === \"#000000\") {\n return;\n }\n const cacheKey = `${char}${background}${foreground}`;\n if (!(cacheKey in bitmapCache)) {\n tmpCtx.fillStyle = background;\n tmpCtx.fillRect(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n tmpCtx.font = `${CHAR_HEIGHT$1}px monospace`;\n tmpCtx.fillStyle = foreground;\n tmpCtx.fillText(char, 0, CHAR_HEIGHT$1);\n bitmapCache[cacheKey] = supportsTransferToImageBitMap ? tmpCanvas.transferToImageBitmap() : tmpCtx.getImageData(0, 0, CHAR_WIDTH$1, CHAR_HEIGHT$1);\n }\n supportsTransferToImageBitMap ? ctx.drawImage(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1) : ctx.putImageData(bitmapCache[cacheKey], x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1);\n };\n const getChars = (y) => {\n const text = new TextDecoder().decode(lines[y].subarray(0, offsets[y]));\n const chars = [...text];\n return chars;\n };\n const drawLine = (bufferY, positionY) => {\n let x = -1;\n const chars = getChars(bufferY);\n const attributesOnLine = attributes[bufferY] || {};\n let currentAttributes = {\n foreground: \"#ffffff\",\n background: \"#000000\"\n };\n while (++x < chars.length) {\n currentAttributes = attributesOnLine[x] || currentAttributes;\n const char = chars[x];\n const background = currentAttributes.background || \"#000000\";\n const foreground = currentAttributes.foreground || \"#ffffff\";\n drawChar(char, x, positionY, background, foreground);\n }\n };\n const clearLines = (x, y, width, height) => {\n ctx.fillRect(x * CHAR_WIDTH$1, y * CHAR_HEIGHT$1, width * CHAR_WIDTH$1, height * CHAR_HEIGHT$1);\n };\n const drawLines = (start, end, bufferYEnd) => {\n clearLines(0, start, cols, end - start);\n if (bufferYEnd < rows) {\n for (let i = 0; i < rows - bufferYEnd; i++) {\n drawLine(bufferLines - i - 1, rows - i);\n }\n for (let i = 0; i < bufferYEnd + 1; i++) {\n drawLine(i, rows - (bufferYEnd - i));\n }\n } else {\n for (let i = 0; i < rows; i++) {\n drawLine(bufferYEnd - i, rows - i);\n }\n }\n };\n return drawLines;\n};\nconst State = {\n TopLevelContent: 1,\n Escaped: 2,\n Csi: 3,\n AfterEscape3: 4,\n Charset: 5,\n AfterEscape3AfterSemicolon: 6,\n Osc: 8,\n Dcs: 9,\n AfterQuestionMark: 10,\n AfterQuestionMark2: 11,\n AfterExclamationMark: 12,\n AfterExclamationMark2: 13,\n AfterSpace: 14,\n AfterSpace2: 15,\n Osc2: 16,\n Osc3: 17\n};\nconst parse = (array, {\n eraseInDisplay,\n eraseToEndOfLine,\n goToHome,\n setCharAttributes,\n bell,\n cursorUp,\n cursorDown,\n cursorRight,\n cursorLeft,\n backspace,\n print,\n setGLevel,\n saveCursor,\n restoreCursor,\n index,\n tabSet,\n reverseIndex,\n keypadApplicationMode,\n keypadNumericMode,\n fullReset,\n nextLine,\n carriageReturn,\n deleteCharacters,\n setWindowTitle,\n cursorPosition,\n softTerminalReset,\n cursorNextLine,\n cursorPrecedingLine,\n cursorCharacterAbsolute,\n cursorForwardTabulation,\n cursorBackwardTabulation,\n insertLines,\n deleteLines,\n scrollUp,\n scrollDown,\n eraseCharacters,\n characterPositionAbsolute,\n characterPositionRelative,\n repeatPrecedingGraphicCharacter,\n sendDeviceAttributesPrimary,\n sendDeviceAttributesTertiary,\n linePositionAbsolute,\n eraseInLine,\n linePositionRelative,\n horizontalAndVerticalPosition,\n tabClear,\n setMode,\n resetMode,\n lineFeed,\n privateModeSet,\n privateModeReset,\n setCursorStyle,\n shiftLeftColumns,\n insertBlankCharacters,\n setTextParameters\n}) => {\n if (!(array instanceof Uint8Array)) {\n throw new Error(\"invalid data, must be of type Uint8Array\");\n }\n let state = State.TopLevelContent;\n let i = 0;\n let currentParam = 0;\n let params = [];\n let printStartIndex = -1;\n while (i < array.length) {\n switch (state) {\n case State.TopLevelContent:\n middle:\n switch (array[i]) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n i++;\n break;\n case 7:\n bell();\n i++;\n break;\n case 8:\n backspace();\n i++;\n break;\n case 9:\n i++;\n break;\n case 10:\n lineFeed();\n i++;\n break;\n case 11:\n case 12:\n i++;\n break;\n case 13:\n carriageReturn();\n i++;\n break;\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n case 25:\n case 26:\n i++;\n break;\n case 27:\n state = State.Escaped;\n i++;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n i++;\n break;\n case 32:\n case 33:\n case 34:\n case 35:\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n case 41:\n case 42:\n case 43:\n case 44:\n case 45:\n case 46:\n case 47:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 58:\n case 59:\n case 60:\n case 61:\n case 62:\n case 63:\n case 64:\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n case 123:\n case 124:\n case 125:\n case 126:\n case 127:\n printStartIndex = i++;\n while (i < array.length) {\n const element = array[i];\n if (element >= 32 && element < 126) {\n i++;\n continue;\n }\n switch (element) {\n case 27:\n print(array, printStartIndex, i);\n state = State.Escaped;\n i++;\n break middle;\n case 7:\n print(array, printStartIndex, i);\n bell();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 8:\n print(array, printStartIndex, i);\n backspace();\n i++;\n state = State.TopLevelContent;\n break middle;\n case 13:\n print(array, printStartIndex, i);\n carriageReturn();\n i++;\n state = State.TopLevelContent;\n break middle;\n default:\n i++;\n break;\n }\n }\n print(array, printStartIndex, i);\n break;\n default:\n throw new Error(\"no\");\n }\n break;\n case State.Escaped:\n switch (array[i]) {\n case 40:\n state = State.Charset;\n break;\n case 91:\n params = [];\n state = State.Csi;\n break;\n case 93:\n state = State.Osc;\n break;\n case 80:\n state = State.Dcs;\n break;\n case 95:\n break;\n case 94:\n break;\n case 99:\n break;\n case 69:\n nextLine();\n case 68:\n index();\n break;\n case 55:\n saveCursor();\n state = State.TopLevelContent;\n break;\n case 56:\n backspace();\n state = State.TopLevelContent;\n break;\n case 72:\n tabSet();\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Charset:\n i++;\n break;\n case State.Csi:\n switch (array[i]) {\n case 32:\n state = State.AfterSpace;\n break;\n case 33:\n state = State.AfterExclamationMark;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n case 63:\n state = State.AfterQuestionMark;\n break;\n case 64:\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n case 117:\n restoreCursor();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3:\n switch (array[i]) {\n case 32:\n params.push(currentParam);\n state = State.AfterSpace;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterEscape3AfterSemicolon;\n break;\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 64:\n params.push(currentParam);\n insertBlankCharacters(params);\n state = State.TopLevelContent;\n break;\n case 65:\n params.push(currentParam);\n cursorUp(params);\n state = State.TopLevelContent;\n break;\n case 66:\n params.push(currentParam);\n cursorDown(params);\n state = State.TopLevelContent;\n break;\n case 67:\n params.push(currentParam);\n cursorRight(params);\n state = State.TopLevelContent;\n break;\n case 68:\n params.push(currentParam);\n cursorLeft(params);\n state = State.TopLevelContent;\n break;\n case 69:\n params.push(currentParam);\n cursorNextLine(params);\n state = State.TopLevelContent;\n break;\n case 70:\n params.push(currentParam);\n cursorPrecedingLine(params);\n state = State.TopLevelContent;\n break;\n case 71:\n params.push(currentParam);\n cursorCharacterAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 72:\n params.push(currentParam);\n cursorPosition(params);\n state = State.TopLevelContent;\n break;\n case 73:\n params.push(currentParam);\n cursorForwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 76:\n params.push(currentParam);\n insertLines(params);\n state = State.TopLevelContent;\n break;\n case 77:\n params.push(currentParam);\n deleteLines(params);\n state = State.TopLevelContent;\n break;\n case 80:\n params.push(currentParam);\n deleteCharacters(params);\n state = State.TopLevelContent;\n break;\n case 83:\n params.push(currentParam);\n scrollUp(params);\n state = State.TopLevelContent;\n break;\n case 84:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 88:\n params.push(currentParam);\n eraseCharacters(params);\n state = State.TopLevelContent;\n break;\n case 90:\n params.push(currentParam);\n cursorBackwardTabulation(params);\n state = State.TopLevelContent;\n break;\n case 94:\n params.push(currentParam);\n scrollDown(params);\n state = State.TopLevelContent;\n break;\n case 96:\n params.push(currentParam);\n characterPositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 97:\n params.push(currentParam);\n characterPositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 98:\n params.push(currentParam);\n repeatPrecedingGraphicCharacter(params);\n state = State.TopLevelContent;\n break;\n case 100:\n params.push(currentParam);\n linePositionAbsolute(params);\n state = State.TopLevelContent;\n break;\n case 101:\n params.push(currentParam);\n linePositionRelative(params);\n state = State.TopLevelContent;\n break;\n case 102:\n params.push(currentParam);\n horizontalAndVerticalPosition(params);\n state = State.TopLevelContent;\n break;\n case 103:\n params.push(currentParam);\n tabClear(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n setMode(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n resetMode(params);\n state = State.TopLevelContent;\n break;\n case 109:\n params.push(currentParam);\n setCharAttributes(params);\n state = State.TopLevelContent;\n break;\n default:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterEscape3AfterSemicolon:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterEscape3;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.AfterQuestionMark2;\n break;\n case 74:\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterQuestionMark2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.AfterQuestionMark;\n break;\n case 74:\n params.push(currentParam);\n eraseInDisplay(params);\n state = State.TopLevelContent;\n break;\n case 75:\n params.push(currentParam);\n eraseInLine(params);\n state = State.TopLevelContent;\n break;\n case 104:\n params.push(currentParam);\n privateModeSet(params);\n state = State.TopLevelContent;\n break;\n case 108:\n params.push(currentParam);\n privateModeReset(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterExclamationMark:\n switch (array[i]) {\n case 112:\n softTerminalReset();\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.AfterSpace:\n switch (array[i]) {\n case 64:\n shiftLeftColumns(params);\n state = State.TopLevelContent;\n break;\n case 113:\n setCursorStyle(params);\n state = State.TopLevelContent;\n break;\n case 116:\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = array[i] - 48;\n state = State.Osc2;\n break;\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n }\n i++;\n break;\n case State.Osc2:\n switch (array[i]) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n currentParam = currentParam * 10 + array[i] - 48;\n break;\n case 59:\n params.push(currentParam);\n state = State.Osc3;\n break;\n }\n i++;\n break;\n case State.Osc3:\n switch (array[i]) {\n case 7:\n setTextParameters(params);\n state = State.TopLevelContent;\n break;\n default:\n params.push(array[i]);\n }\n i++;\n }\n }\n};\nconst transformKey = (event) => {\n const modifiers = (event.shiftKey ? 1 : 0) | (event.altKey ? 2 : 0) | (event.ctrlKey ? 4 : 0) | (event.metaKey ? 8 : 0);\n switch (event.key) {\n case \"A\":\n case \"B\":\n case \"C\":\n case \"D\":\n case \"E\":\n case \"F\":\n case \"G\":\n case \"H\":\n case \"I\":\n case \"J\":\n case \"K\":\n case \"L\":\n case \"M\":\n case \"N\":\n case \"O\":\n case \"P\":\n case \"Q\":\n case \"R\":\n case \"S\":\n case \"T\":\n case \"U\":\n case \"V\":\n case \"W\":\n case \"X\":\n case \"Y\":\n case \"Z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 64);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"a\":\n case \"b\":\n case \"c\":\n case \"d\":\n case \"e\":\n case \"f\":\n case \"g\":\n case \"h\":\n case \"i\":\n case \"j\":\n case \"k\":\n case \"l\":\n case \"m\":\n case \"n\":\n case \"o\":\n case \"p\":\n case \"q\":\n case \"r\":\n case \"s\":\n case \"t\":\n case \"u\":\n case \"v\":\n case \"w\":\n case \"x\":\n case \"y\":\n case \"z\":\n if (event.ctrlKey) {\n const char = String.fromCharCode(event.key.charCodeAt() - 96);\n if (event.altKey) {\n return `\u001B${char}`;\n }\n return char;\n }\n return event.key;\n case \"F1\":\n return \"\u001BOP\";\n case \"F2\":\n return \"\u001BOQ\";\n case \"F3\":\n return \"\u001BOR\";\n case \"F4\":\n return \"\u001BOS\";\n case \"F5\":\n return \"\u001B[15~\";\n case \"F6\":\n return \"\u001B[17~\";\n case \"F7\":\n return \"\u001B[18~\";\n case \"F8\":\n return \"\u001B[19~\";\n case \"F9\":\n return \"\u001B[20~\";\n case \"F10\":\n return \"\u001B[21~\";\n case \"F11\":\n return \"\u001B[23~\";\n case \"F12\":\n return \"\u001B[24~\";\n case \"Home\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}H`;\n }\n return `\u001B[H`;\n case \"End\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}F`;\n }\n return `\u001B[F`;\n case \"Insert\":\n if (event.shiftKey || event.ctrlKey) {\n return \"\";\n }\n return \"\u001B[2~\";\n case \"Delete\":\n if (modifiers) {\n return `\u001B[3;${modifiers + 1}~`;\n }\n return \"\u001B[3~\";\n case \"ArrowUp\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}A`;\n }\n return \"\u001B[A\";\n case \"ArrowDown\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}B`;\n }\n return \"\u001B[B\";\n case \"ArrowRight\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}C`;\n }\n return \"\u001B[C\";\n case \"ArrowLeft\":\n if (modifiers) {\n return `\u001B[1;${modifiers + 1}D`;\n }\n return \"\u001B[D\";\n case \"UIKeyInputUpArrow\":\n return \"\u001B[A\";\n case \"UIKeyInputDownArrow\":\n return \"\u001B[B\";\n case \"UIKeyInputRightArrow\":\n return \"\u001B[C\";\n case \"UIKeyInputLeftArrow\":\n return \"\u001B[D\";\n case \"Enter\":\n if (event.altKey) {\n return \"\u001B\\r\";\n }\n return \"\\n\";\n case \"PageUp\":\n if (event.ctrlKey) {\n return `\u001B[5;5~`;\n }\n return \"\u001B[5~\";\n case \"PageDown\":\n if (event.ctrlKey) {\n return `\u001B[6;5~`;\n }\n return `\u001B[6~`;\n case \"Backspace\":\n if (event.altKey) {\n return \"\u0017\";\n }\n if (event.shiftKey) {\n return \"\\b\";\n }\n return \"\\x7F\";\n case \"Tab\":\n if (event.shiftKey) {\n return \"\u001B[Z\";\n }\n return \"\t\";\n case \"Escape\":\n if (event.altKey) {\n return \"\u001B\u001B\";\n }\n return \"\u001B\";\n case \"/\":\n return \"/\";\n case \"?\":\n if (event.ctrlKey) {\n return \"\\x7F\";\n }\n if (event.altKey) {\n return `\u001B?`;\n }\n return event.key;\n case \"|\":\n if (event.ctrlKey) {\n return \"\u001C\";\n }\n if (event.altKey) {\n return `\u001B|`;\n }\n return event.key;\n case \"{\":\n if (event.ctrlKey) {\n return \"\u001B\";\n }\n if (event.altKey) {\n return `\u001B{`;\n }\n return event.key;\n case \"}\":\n if (event.ctrlKey) {\n return \"\u001D\";\n }\n if (event.altKey) {\n return `\u001B}`;\n }\n return event.key;\n case \"_\":\n if (event.ctrlKey) {\n return \"\u001F\";\n }\n if (event.altKey) {\n return `\u001B_`;\n }\n return event.key;\n case \"^\":\n if (event.ctrlKey) {\n return \"\u001E\";\n }\n if (event.altKey) {\n return `\u001B^`;\n }\n return event.key;\n case \"@\":\n if (event.ctrlKey) {\n return \"\\0\";\n }\n if (event.altKey) {\n return `\u001B@`;\n }\n return event.key;\n case \" \":\n return ` `;\n default:\n if (event.key.length > 1) {\n return \"\";\n }\n if (event.altKey) {\n return `\u001B${event.key}`;\n }\n return event.key;\n }\n};\nconst CHAR_WIDTH$2 = 13;\nconst CHAR_HEIGHT$2 = 15;\nconst BACKGROUND$2 = \"#000000\";\nconst FOREGROUND = \"#ffffff\";\nconst COLS = 80;\nconst ROWS = 25;\nconst BUFFER_LINES = 200;\nconst noop = () => {\n};\nconst createTerminal = (root, {handleInput, bell = noop, setWindowTitle = noop}) => {\n let focused = false;\n const handleKeyDown = (event) => {\n const transformedKey = transformKey(event);\n if (transformedKey) {\n handleInput(transformedKey);\n }\n };\n const handleBeforeInput = (event) => {\n event.preventDefault();\n };\n const blur = () => {\n focused = false;\n cursorStyle = 4;\n requestAnimationFrame(render);\n };\n const focus = () => {\n if (focused) {\n return;\n }\n focused = true;\n cursorStyle = 2;\n textarea.focus();\n requestAnimationFrame(render);\n };\n const canvasText = document.createElement(\"canvas\");\n canvasText.className = \"TerminalCanvasText\";\n const canvasCursor = document.createElement(\"canvas\");\n canvasCursor.className = \"TerminalCanvasCursor\";\n const $Layers = document.createElement(\"div\");\n $Layers.className = \"Layers\";\n const textarea = document.createElement(\"textarea\");\n textarea.className = \"TerminalTextArea\";\n $Layers.append(canvasText, canvasCursor);\n root.append(textarea, $Layers);\n textarea.onkeydown = handleKeyDown;\n textarea.addEventListener(\"beforeinput\", handleBeforeInput);\n root.onmousedown = (event) => {\n event.preventDefault();\n focus();\n };\n textarea.onblur = blur;\n const WIDTH = COLS * CHAR_WIDTH$2;\n const HEIGHT = ROWS * (CHAR_HEIGHT$2 + 10);\n canvasText.width = canvasCursor.width = WIDTH;\n canvasText.height = canvasCursor.height = HEIGHT;\n let bufferYEnd = ROWS;\n let cursorYRelative = -ROWS;\n let cursorXRelative = -COLS;\n let foreground = \"#ffffff\";\n let background = \"#000000\";\n let cursorVisible = true;\n let cursorStyle = 2;\n const dirty = {\n start: 0,\n end: 0\n };\n const lines = [];\n const offsets = new Uint8Array(BUFFER_LINES);\n let attributes = {};\n for (let y = 0; y < BUFFER_LINES; y++) {\n lines.push(new Uint8Array(300));\n }\n const textDecoder = new TextDecoder();\n const dirtyMark = (y) => {\n if (y < dirty.start) {\n dirty.start = y;\n } else if (y > dirty.end) {\n dirty.end = y;\n }\n };\n const dirtyClear = () => {\n dirty.start = dirty.end = bufferYEnd + cursorYRelative;\n };\n const callbackFns = {\n eraseInLine() {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n eraseInDisplay() {\n offsets.fill(0);\n cursorYRelative = -ROWS + 1;\n cursorXRelative = -COLS;\n bufferYEnd = ROWS;\n for (const key of Object.keys(attributes)) {\n delete attributes[key];\n }\n dirtyMark(0);\n dirtyMark(ROWS);\n },\n setCharAttributes(params) {\n if (params[1] === 7) {\n [foreground, background] = [background, foreground];\n } else if (params[1] === 35) {\n foreground = \"#8000ff\";\n } else if (params[1] === 32) {\n foreground = \"#09f900\";\n } else if (params[1] === 34) {\n foreground = \"#0090ff\";\n } else {\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n }\n const y = bufferYEnd + cursorYRelative;\n attributes[y] = attributes[y] || {};\n attributes[y][offsets[y]] = {\n foreground,\n background\n };\n },\n cursorUp() {\n console.log(\"cursor up\");\n },\n cursorDown() {\n },\n cursorRight() {\n cursorXRelative++;\n },\n cursorLeft() {\n console.log(\"cursor left\");\n },\n backspace() {\n cursorXRelative--;\n },\n deleteChars(numberOfChars) {\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n offsets[y] = x;\n },\n bell,\n print(array, start, end) {\n const subArray = array.subarray(start, end);\n const y = bufferYEnd + cursorYRelative;\n const x = COLS + cursorXRelative;\n lines[y].set(subArray, x);\n cursorXRelative += end - start;\n offsets[y] = COLS + cursorXRelative;\n dirtyMark(y);\n if (x >= COLS - 1) {\n callbackFns.lineFeed();\n }\n },\n lineFeed() {\n if (cursorYRelative === 0) {\n bufferYEnd = (bufferYEnd + 1) % BUFFER_LINES;\n offsets[bufferYEnd] = 0;\n delete attributes[bufferYEnd];\n } else {\n cursorYRelative++;\n }\n foreground = FOREGROUND;\n background = BACKGROUND$2;\n },\n carriageReturn() {\n cursorXRelative = -COLS;\n },\n setWindowTitle,\n cursorPosition(params) {\n if (params.length === 2) {\n const row = params[0];\n const column = params[1];\n cursorYRelative = -ROWS + row;\n cursorXRelative = -COLS + column;\n }\n },\n cursorShow() {\n cursorVisible = true;\n },\n cursorHide() {\n cursorVisible = false;\n },\n insertLines() {\n },\n deleteLines() {\n },\n setTextParameters() {\n },\n privateModeSet() {\n },\n privateModeReset() {\n },\n eraseToEndOfLine() {\n },\n goToHome() {\n },\n setGLevel() {\n },\n saveCursor() {\n },\n restoreCursor() {\n },\n index() {\n },\n tabSet() {\n },\n reverseIndex() {\n },\n keypadApplicationMode() {\n },\n keypadNumericMode() {\n },\n fullReset() {\n },\n nextLine() {\n },\n deleteCharacters() {\n },\n softTerminalReset() {\n },\n cursorNextLine() {\n },\n cursorPrecedingLine() {\n },\n cursorCharacterAbsolute() {\n },\n cursorForwardTabulation() {\n },\n cursorBackwardTabulation() {\n },\n scrollUp() {\n },\n scrollDown() {\n },\n eraseCharacters() {\n },\n characterPositionAbsolute() {\n },\n characterPositionRelative() {\n },\n repeatPrecedingGraphicCharacter() {\n },\n sendDeviceAttributesPrimary() {\n },\n sendDeviceAttributesTertiary() {\n },\n linePositionAbsolute() {\n },\n linePositionRelative() {\n },\n horizontalAndVerticalPosition() {\n },\n tabClear() {\n },\n setMode() {\n },\n resetMode() {\n },\n setCursorStyle() {\n },\n shiftLeftColumns() {\n },\n insertBlankCharacters() {\n }\n };\n const drawLines = createDrawLines(canvasText, lines, BUFFER_LINES, offsets, attributes, ROWS, COLS);\n const drawCursor = createDrawCursor(canvasCursor);\n let scheduled = false;\n const render = () => {\n drawLines(dirty.start, dirty.end + 1, bufferYEnd);\n const y = ROWS + cursorYRelative;\n const x = COLS + cursorXRelative;\n drawCursor(x, y, cursorVisible, cursorStyle);\n scheduled = false;\n dirtyClear();\n };\n const write = (array) => {\n parse(array, callbackFns);\n if (!scheduled) {\n scheduled = true;\n requestAnimationFrame(render);\n }\n };\n const pasteText = (text) => {\n const fixedText = \"\\n\" + text.replaceAll(\"\\n\", \"\\r\\n\");\n const array = new TextEncoder().encode(fixedText);\n write(array);\n };\n return {\n write,\n focus,\n pasteText,\n writeText: pasteText,\n lines\n };\n};\nexport {createTerminal};\nexport default null;\n", "import { createTerminal } from '../../../static/js/termterm.js'\n\nexport const create = ({ $Element, handleInput }) => {\n const state = {\n terminal: createTerminal($Element, { handleInput }),\n }\n return state\n}\n\nexport const close = () => {}\n\n// export const\n\nexport const write = (state, text) => {\n state.terminal.write(text)\n}\n\nexport const wrapTerminalCommand = (id) => {}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Terminal from '../Terminal/Terminal.js'\n\n// TODO support multiple terminals\nlet globalTerminal\n\nexport const name = 'Terminal'\n\nconst handleInput = (input) => {\n RendererWorker.send(\n /* viewletSend */ 2133,\n /* viewletId */ 'Terminal',\n /* method */ 'write',\n /* input */ input\n )\n}\n\nconst handleFocus = () => {\n Focus.setFocus('terminal')\n}\n\nexport const create = (id) => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'Terminal'\n\n const terminal = Terminal.create({\n $Element: $Viewlet,\n handleInput,\n })\n\n $Viewlet.addEventListener('focusin', handleFocus)\n\n globalTerminal = terminal\n\n const state = {\n $Viewlet,\n handleUpdate() {\n // const width = $Viewlet.clientWidth\n // const height = $Viewlet.clientHeight\n // RendererWorker.send(\n // /* viewletSend */ 2133,\n // /* viewletId */ 'Terminal',\n // /* method */ 'resize',\n // /* width */ width,\n // /* height */ height,\n // )\n },\n }\n\n window.addEventListener('resize', state.handleUpdate, { passive: true })\n\n return state\n}\n\nexport const refresh = (state, context) => {\n // state.element.textContent = context.text\n}\n\nexport const dispose = (state) => {\n // TODO unregister callback\n // SharedProcess.unregisterChannel(channel )\n\n window.removeEventListener('resize', state.handleUpdate)\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n if (!globalTerminal) {\n return\n }\n globalTerminal.terminal.focus()\n}\n\nexport const reduceFocus = (state, action) => {}\n\n// TODO what is this\nexport const reduceWrite = (state, action) => {\n if (!globalTerminal) {\n return\n }\n Terminal.write(globalTerminal, state)\n}\n\nexport const reduce = (state, action) => {\n switch (action.type) {\n case 'write':\n return reduceWrite(state, action)\n case 'focus':\n return reduceFocus(state, action)\n default:\n break\n }\n}\n\nexport const write = (data) => {\n if (!globalTerminal) {\n return\n }\n Terminal.write(globalTerminal, data)\n}\n\nexport const Commands = {\n 9922: write,\n}\n", "export const Close = '/icons/icon-close.svg'\nexport const PreviousMatch = '/icons/arrow-up.svg'\nexport const NextMatch = '/icons/arrow-down.svg'\nexport const ExtensionDefaultIcon = `/icons/extensionDefaultIcon.png`\n", "import * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\nimport * as Icon from '../Icon/Icon.js'\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n RendererWorker.send(\n /* ViewletExtensions.handleScrollBarMouseMove */ 'Extensions.handleScrollBarMove',\n /* y */ clientY\n )\n}\n\nexport const handleScrollBarThumbPointerUp = () => {\n window.removeEventListener('pointermove', handleScrollBarThumbPointerMove)\n window.removeEventListener('pointerup', handleScrollBarThumbPointerUp)\n}\n\nexport const handleScrollBarPointerDown = (event) => {\n const $Target = event.target\n if ($Target.className === 'ScrollBarThumb') {\n window.addEventListener('pointermove', handleScrollBarThumbPointerMove)\n window.addEventListener('pointerup', handleScrollBarThumbPointerUp)\n } else {\n const y = event.clientY\n console.log({ y })\n RendererWorker.send(\n /* ViewletExtensions.handleScrollBarClick */ 'Extensions.handleScrollBarClick',\n /* y */ y\n )\n }\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('Extensions')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handlePointerDownExtension = ($Target) => {\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* Extensions.handleClick */ 'Extensions.handleClick',\n /* index */ index\n )\n}\n\nconst handlePointerDownExtensionDetail = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode)\n RendererWorker.send(\n /* Extensions.handleClick */ 'Extensions.handleClick',\n /* index */ index\n )\n}\n\nconst handlePointerDownExtensionAuthorName = ($Target) => {\n const index = getNodeIndex($Target.parentNode.parentNode.parentNode)\n RendererWorker.send(\n /* Extensions.handleClick */ 'Extensions.handleClick',\n /* index */ index\n )\n}\n\nexport const handlePointerDown = (event) => {\n const { target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n switch (target.className) {\n case 'ExtensionListItem':\n handlePointerDownExtension(target)\n break\n case 'ExtensionName':\n case 'ExtensionDescription':\n case 'ExtensionFooter':\n handlePointerDownExtensionDetail(target)\n break\n case 'ExtensionAuthorName':\n handlePointerDownExtensionAuthorName(target)\n break\n default:\n break\n }\n}\n\nconst handleContextMenuMouse = (event) => {\n const { clientX, clientY } = event\n RendererWorker.send(\n /* Extensions.handleContextMenu */ 'Extensions.handleContextMenu',\n /* x */ clientX,\n /* y */ clientY\n )\n}\n\nconst handleContextMenuKeyboard = (event) => {}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n switch (event.button) {\n case MouseEventType.Keyboard:\n return handleContextMenuKeyboard(event)\n default:\n return handleContextMenuMouse(event)\n }\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* ViewletExtensions.handleWheel */ 'Extensions.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* ViewletExtensions.handleWheel */ 'Extensions.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send(\n /* ViewletExtensions.handleInput */ 'Extensions.handleInput',\n /* value */ value\n )\n // TODO\n // TODO use beforeinput event to set value and extension list items at the same time\n // state.$Viewlet.ariaBusy = 'true'\n}\n\nexport const handleIconError = (event) => {\n const $Target = event.target\n if ($Target.src.endsWith(Icon.ExtensionDefaultIcon)) {\n return\n }\n $Target.src = Icon.ExtensionDefaultIcon\n}\n\nexport const handleScroll = (event) => {\n console.log(event)\n}\n\n/**\n *\n * @param {TouchList} touchList\n */\nconst toArray = (touchList) => {\n const touchArray = []\n // @ts-ignore\n for (const item of touchList) {\n touchArray.push({\n clientX: item.clientX,\n clientY: item.clientY,\n identifier: item.identifier,\n })\n }\n return touchArray\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchMove = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n RendererWorker.send(\n 'Extensions.handleTouchMove',\n timeStamp,\n changedTouchesArray\n )\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchStart = (event) => {\n const { changedTouches, timeStamp } = event\n const changedTouchesArray = toArray(changedTouches)\n RendererWorker.send(\n 'Extensions.handleTouchStart',\n timeStamp,\n changedTouchesArray\n )\n}\n\n/**\n * @param {TouchEvent} event\n */\nexport const handleTouchEnd = (event) => {\n const { changedTouches } = event\n const changedTouchesArray = toArray(changedTouches)\n RendererWorker.send('Extensions.handleTouchEnd', changedTouchesArray)\n}\n", "import * as FindIndex from '../../shared/findIndex.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletExtensionsEvents from './ViewletExtensionsEvents.js'\n\nexport const name = 'Extensions'\n\nconst activeId = 'ExtensionActive'\n\n// TODO vscode uninstall behaviour is better -> more subtle uninstall -> no cta for uninstalling\n\nconst create$ExtensionSuggestions = () => {\n const $ExtensionSuggestions = document.createElement('div')\n $ExtensionSuggestions.className = 'ExtensionSuggestions'\n return $ExtensionSuggestions\n}\n\nconst create$ExtensionSuggestion = (item) => {}\n\nconst findIndex = ($Target) => {\n if ($Target.className.includes('ExtensionListItem')) {\n return FindIndex.findIndex($Target.parentNode, $Target)\n }\n if ($Target.classList.contains('Viewlet')) {\n return -1\n }\n return findIndex($Target.parentNode)\n // return -2\n}\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = 'search'\n $InputBox.placeholder = 'Search Extensions in Marketplace'\n $InputBox.oninput = ViewletExtensionsEvents.handleInput\n const $ExtensionHeader = document.createElement('div')\n $ExtensionHeader.className = 'ExtensionHeader'\n $ExtensionHeader.append($InputBox)\n // TODO handle error\n const $ExtensionList = document.createElement('div')\n $ExtensionList.className = 'ExtensionList'\n $ExtensionList.tabIndex = 0\n $ExtensionList.ariaLabel = 'Extensions'\n // @ts-ignore\n $ExtensionList.role = 'list'\n $ExtensionList.oncontextmenu = ViewletExtensionsEvents.handleContextMenu\n $ExtensionList.onpointerdown = ViewletExtensionsEvents.handlePointerDown\n $ExtensionList.onfocus = ViewletExtensionsEvents.handleFocus\n $ExtensionList.onscroll = ViewletExtensionsEvents.handleScroll\n $ExtensionList.addEventListener(\n 'touchstart',\n ViewletExtensionsEvents.handleTouchStart,\n {\n passive: true,\n }\n )\n $ExtensionList.addEventListener(\n 'touchmove',\n ViewletExtensionsEvents.handleTouchMove,\n {\n passive: true,\n }\n )\n $ExtensionList.addEventListener(\n 'touchend',\n ViewletExtensionsEvents.handleTouchEnd,\n {\n passive: true,\n }\n )\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBarSmall'\n $ScrollBar.onpointerdown = ViewletExtensionsEvents.handleScrollBarPointerDown\n $ScrollBar.append($ScrollBarThumb)\n\n const $ExtensionListWrapper = document.createElement('div')\n $ExtensionListWrapper.className = 'ExtensionListWrapper'\n $ExtensionListWrapper.append($ExtensionList, $ScrollBar)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Extensions'\n $Viewlet.className = 'Viewlet'\n $Viewlet.ariaBusy = 'true'\n $Viewlet.ariaLive = 'polite'\n $Viewlet.append($ExtensionHeader, $ExtensionListWrapper)\n $Viewlet.addEventListener('wheel', ViewletExtensionsEvents.handleWheel, {\n passive: true,\n })\n\n return {\n $Viewlet,\n $ExtensionListWrapper,\n $ExtensionList,\n $InputBox,\n $ExtensionSuggestions: undefined,\n $ScrollBarThumb,\n }\n}\n\n// TODO possibly use aria active descendant instead\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n Assert.object(state)\n Assert.number(oldFocusedIndex)\n Assert.number(newFocusedIndex)\n const { $ExtensionList } = state\n const { length } = $ExtensionList.children\n if (oldFocusedIndex === -1) {\n $ExtensionList.classList.remove('FocusOutline')\n } else if (oldFocusedIndex >= 0 && oldFocusedIndex < length) {\n $ExtensionList.children[oldFocusedIndex].removeAttribute('id')\n }\n if (newFocusedIndex === -1) {\n $ExtensionList.removeAttribute('aria-activedescendant')\n $ExtensionList.classList.add('FocusOutline')\n } else if (newFocusedIndex >= 0 && newFocusedIndex < length) {\n $ExtensionList.children[newFocusedIndex].id = activeId\n $ExtensionList.setAttribute('aria-activedescendant', activeId)\n }\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$InputBox.focus()\n}\n\nexport const setExtensionState = (state, id, extensionState) => {\n // const index = state.extensions.findIndex((extension) => extension.id === id)\n // if (index === -1) {\n // return\n // }\n // state.extensions[index].state = extensionState\n // render(state)\n}\n\nexport const setError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n const $Message = document.createElement('div')\n $Message.className = 'ViewletExtensionMessage'\n $Message.textContent = error\n while (state.$ExtensionList.firstChild) {\n state.$ExtensionList.firstChild.remove()\n }\n state.$ExtensionList.append($Message)\n}\n\nconst render$Extension = ($Extension, extension) => {\n const $ExtensionDetailName = $Extension.children[1].children[0]\n const $ExtensionDetailDescription = $Extension.children[1].children[1]\n const $ExtensionAuthorName = $Extension.children[1].children[2].children[0]\n const $ExtensionIcon = $Extension.children[0]\n\n $Extension.ariaPosInSet = extension.posInSet\n $Extension.ariaSetSize = extension.setSize\n $Extension.dataset.state = extension.state\n $Extension.dataset.id = extension.id\n $Extension.style.top = `${extension.top}px`\n\n $ExtensionDetailName.firstChild.nodeValue = extension.name\n $ExtensionDetailDescription.firstChild.nodeValue = extension.description\n $ExtensionAuthorName.firstChild.nodeValue = extension.publisher\n $ExtensionIcon.src = extension.icon\n}\n\n// TODO test that rendering and recycling text nodes works\nconst create$Extension = () => {\n const $ExtensionDetailName = document.createElement('div')\n $ExtensionDetailName.className = 'ExtensionName'\n $ExtensionDetailName.append(document.createTextNode(''))\n const $ExtensionDetailDescription = document.createElement('div')\n $ExtensionDetailDescription.className = 'ExtensionDescription'\n $ExtensionDetailDescription.append(document.createTextNode(''))\n const $ExtensionActions = document.createElement('div')\n $ExtensionActions.className = 'ExtensionActions'\n const $ExtensionActionInstall = document.createElement('div')\n $ExtensionActionInstall.className = 'ExtensionActionInstall'\n $ExtensionActionInstall.textContent = 'Install'\n const $ExtensionActionManage = document.createElement('button')\n $ExtensionActionManage.className = 'ExtensionActionManage'\n $ExtensionActionManage.title = 'Manage'\n $ExtensionActionManage.ariaHasPopup = 'menu' // TODO also set this for global settings icon in activity bar\n const $ExtensionAuthorName = document.createElement('div')\n $ExtensionAuthorName.className = 'ExtensionAuthorName'\n $ExtensionAuthorName.append(document.createTextNode(''))\n\n const icon = document.createElement('img')\n icon.className = 'ExtensionIcon'\n icon.onerror = ViewletExtensionsEvents.handleIconError\n const buttonManage = document.createElement('button')\n buttonManage.className = 'ExtensionManage'\n // switch (extension.state) {\n // case 'uninstalled':\n // $ExtensionActionManage.remove()\n // $ExtensionActions.append($ExtensionActionInstall)\n // break\n // case 'uninstalling':\n // buttonManage.textContent = 'uninstalling'\n // break\n // case 'installing':\n // buttonManage.textContent = 'installing'\n // break\n // case 'installed':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // case 'disabled':\n // $ExtensionActions.append($ExtensionActionManage)\n // break\n // default:\n // break\n // }\n const $ExtensionFooter = document.createElement('div')\n $ExtensionFooter.className = 'ExtensionFooter'\n $ExtensionFooter.append($ExtensionAuthorName, $ExtensionActions)\n const $ExtensionDetail = document.createElement('div')\n $ExtensionDetail.className = 'ExtensionDetail'\n $ExtensionDetail.append(\n $ExtensionDetailName,\n $ExtensionDetailDescription,\n $ExtensionFooter\n )\n const $ExtensionListItem = document.createElement('div')\n // @ts-ignore\n $ExtensionListItem.role = 'article'\n $ExtensionListItem.ariaRoleDescription = 'Extension'\n $ExtensionListItem.className = 'ExtensionListItem'\n // @ts-ignore\n $ExtensionListItem.role = 'listitem'\n $ExtensionListItem.append(icon, $ExtensionDetail)\n return $ExtensionListItem\n}\n\nconst render$ExtensionsLess = ($ExtensionList, extensions) => {\n for (let i = 0; i < $ExtensionList.children.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $ExtensionList.children.length; i < extensions.length; i++) {\n const $Extension = create$Extension()\n render$Extension($Extension, extensions[i])\n fragment.append($Extension)\n }\n $ExtensionList.append(fragment)\n}\n\nconst render$ExtensionsEqual = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n}\n\nconst render$ExtensionsMore = ($ExtensionList, extensions) => {\n for (let i = 0; i < extensions.length; i++) {\n render$Extension($ExtensionList.children[i], extensions[i])\n }\n const diff = $ExtensionList.children.length - extensions.length\n for (let i = 0; i < diff; i++) {\n $ExtensionList.lastChild.remove()\n }\n}\n\nconst render$Extensions = ($ExtensionList, extensions) => {\n if ($ExtensionList.children.length < extensions.length) {\n // console.log('RENDER LESS')\n render$ExtensionsLess($ExtensionList, extensions)\n } else if ($ExtensionList.children.length === extensions.length) {\n // console.log('RENDER EQUAL')\n render$ExtensionsEqual($ExtensionList, extensions)\n } else {\n // console.log('RENDER MORE')\n render$ExtensionsMore($ExtensionList, extensions)\n }\n}\n\nexport const setNegativeMargin = (state, negativeMargin) => {\n const { $ExtensionList } = state\n $ExtensionList.style.top = `${negativeMargin}px`\n // Assert.number(negativeMargin)\n // const { $NegativeMargin } = state\n // $NegativeMargin.style.marginTop = `${negativeMargin}px`\n}\n\n// TODO a more efficient approach would be\nexport const setExtensions = (state, extensions) => {\n Assert.object(state)\n Assert.array(extensions)\n const { $Viewlet, $ExtensionList } = state\n $Viewlet.removeAttribute('aria-busy')\n if (extensions.length === 0) {\n const $Message = document.createElement('div')\n $Message.className = 'ViewletExtensionMessage'\n $Message.textContent = 'No extensions found.'\n while ($ExtensionList.firstChild) {\n $ExtensionList.firstChild.remove()\n }\n $ExtensionList.append($Message)\n } else {\n render$Extensions($ExtensionList, extensions)\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const openSuggest = (state) => {\n // TODO maybe cache getBoundingClientRect (though it is not a bottleneck right now)\n // TODO getBoundingClientRect should not be needed, all positions should be known already in renderer worker\n const rect = state.$InputBox.getBoundingClientRect()\n const x = rect.left\n const y = rect.top\n // const x = state.$InputBox.offsetLeft\n // const y = state.$InputBox.offsetTop\n state.$ExtensionSuggestions ||= create$ExtensionSuggestions()\n state.$ExtensionSuggestions.style.left = `${x}px`\n state.$ExtensionSuggestions.style.top = `${y}px`\n state.$ExtensionSuggestions.style.position = 'fixed'\n state.$ExtensionSuggestions.style.width = '100px'\n state.$ExtensionSuggestions.style.height = '100px'\n state.$ExtensionSuggestions.style.background = 'lime'\n // TODO check if already mounted\n // TODO don't append to body, have separate container for widgets (https://news.ycombinator.com/item?id=28230977)\n document.body.append(state.$ExtensionSuggestions)\n // console.log(state.$InputBox)\n // console.log({ x, y })\n // console.log(state)\n // console.log('open suggest in renderer')\n}\n\nexport const closeSuggest = (state) => {\n state.$ExtensionSuggestions.remove()\n}\n\nexport const setContentHeight = (state, height) => {\n const { $ExtensionList } = state\n $ExtensionList.style.height = `${height}px`\n}\n\nexport const handleError = (state, message) => {\n Assert.object(state)\n Assert.string(message)\n state.$ExtensionList.textContent = message\n}\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n const { $ScrollBarThumb } = state\n $ScrollBarThumb.style.top = `${scrollBarY}px`\n $ScrollBarThumb.style.height = `${scrollBarHeight}px`\n}\n", "export const name = 'Debug Console'\n\nexport const create = () => {\n const $Input = document.createElement('input')\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'DebugConsole'\n $Viewlet.className = 'Viewlet'\n $Viewlet.textContent = 'Debug Console'\n $Viewlet.append($Input)\n return {\n $Viewlet,\n $Input,\n }\n}\n\nexport const refresh = (state, context) => {\n const { $Viewlet } = state\n $Viewlet.textContent = 'Debug Console - Not implemented'\n}\n\nexport const focus = (state) => {\n const { $Input } = state\n $Input.focus()\n}\n\nexport const dispose = (state) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleChange = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send(\n /* viewletSend */ 'Viewlet.send',\n /* ViewletId */ 'Output',\n /* method */ 'setOutputChannel',\n /* option */ value\n )\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as ViewletOutputEvents from './ViewletOutputEvents.js'\n\nconst create$Option = (option) => {\n const $Option = document.createElement('option')\n $Option.value = option.file\n $Option.textContent = option.name\n return $Option\n}\n\n// TODO name export not necessary\nexport const name = 'Output'\n\nexport const create = () => {\n const $ViewletOutputSelect = document.createElement('select')\n $ViewletOutputSelect.className = 'ViewletOutputSelect'\n $ViewletOutputSelect.onchange = ViewletOutputEvents.handleChange\n $ViewletOutputSelect.ariaLabel = 'Select a log'\n const $ViewletOutputContent = document.createElement('div')\n $ViewletOutputContent.className = 'OutputContent'\n // @ts-ignore\n $ViewletOutputContent.role = 'log'\n $ViewletOutputContent.tabIndex = 0\n const $ViewletOutputWidgets = document.createElement('div')\n $ViewletOutputWidgets.className = 'OutputWidgets'\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Output'\n $Viewlet.className = 'Viewlet ViewletOutput'\n $Viewlet.tabIndex = 0\n $Viewlet.append(\n $ViewletOutputSelect,\n $ViewletOutputContent,\n $ViewletOutputWidgets\n )\n return {\n $Viewlet,\n select: $ViewletOutputSelect,\n $Select: $ViewletOutputSelect,\n content: $ViewletOutputContent,\n $Content: $ViewletOutputContent,\n $ViewletOutputContent,\n }\n}\n\nexport const setOptions = (state, options) => {\n state.$Select.append(...options.map(create$Option))\n}\n\nexport const append = (state, text) => {\n Assert.object(state)\n Assert.string(text)\n const $Line = document.createElement('div')\n $Line.textContent = text\n state.content.append($Line)\n}\n\nexport const clear = (state) => {\n Assert.object(state)\n state.content.textContent = ''\n}\n\nexport const handleError = (state, error) => {\n Assert.object(state)\n Assert.string(error)\n state.content.textContent = error\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n Focus.focus(state.$ViewletOutputContent, 'output')\n}\n\n// TODO handle case when output is opened -> find widget is opened -> output is disposed before find widget is ready\nexport const openFindWidget = (state) => {\n // Command.execute(findWidget.create)\n}\n\nexport const disposeFindWidget = (state) => {\n if (!state.findWidget) {\n return\n }\n\n // Command.execute(FindWidget.dispose, state.findWidget)\n state.findWidget\n}\n\nexport const dispose = (state) => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleMouseDown = (event) => {\n event.preventDefault()\n RendererWorker.send(/* ViewletProblems.focusIndex */ 7550, /* index */ -1)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletProblemsEvents from './ViewletProblemsEvents.js'\n\nexport const name = 'Problems'\n\nexport const create = (problemsCount) => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewletId = 'Problems'\n $Viewlet.className = 'Viewlet'\n $Viewlet.tabIndex = 0\n $Viewlet.onmousedown = ViewletProblemsEvents.handleMouseDown\n return {\n $Viewlet,\n }\n}\n\nexport const setFocusedIndex = (state, focusedIndex) => {\n const { $Viewlet } = state\n if (focusedIndex === -1) {\n $Viewlet.classList.add('FocusOutline')\n $Viewlet.focus()\n }\n}\n\nexport const setProblems = (state, problems) => {\n Assert.object(state)\n Assert.array(problems)\n const { $Viewlet } = state\n if (problems.length === 0) {\n $Viewlet.ariaLabel = 'No problems have been detected in the workspace.'\n $Viewlet.textContent = 'No problems have been detected in the workspace.'\n } else {\n // TODO adjust aria-label\n $Viewlet.ariaLabel = 'No problems have been detected in the workspace.'\n $Viewlet.textContent = problems.join('\\n')\n }\n}\n\nexport const focus = (state) => {\n const { $Viewlet } = state\n $Viewlet.focus()\n}\n", "export const name = 'Empty'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.dataset.viewlet = 'Empty'\n $Viewlet.className = 'Viewlet'\n return {\n $Viewlet,\n }\n}\n\nexport const refresh = (state, context) => {}\n\nexport const focus = (state) => {}\n\nexport const dispose = (state) => {}\n", "export const InsertText = 'insertText'\n", "// TODO this enum should only be present in renderer worker\nexport const ActivityBar = 1\n\nexport const Edit = 2\n\nexport const Editor = 3\n\nexport const Explorer = 4\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", "export const Ctrl = 'ctrl'\n\nexport const Alt = 'alt'\n\nexport const None = ''\n", "// TODO so many things in this file\n\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputEventType from '../InputEventType/InputEventType.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as ModifierKey from '../ModifierKey/ModifierKey.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ clientX,\n /* y */ clientY,\n /* id */ MenuEntryId.Editor\n )\n}\n\nexport const handleFocus = (event) => {\n Focus.setFocus('EditorText')\n}\n\nexport const handleBlur = (event) => {\n // needed for save on blur\n // also needed to close completions on blur\n RendererWorker.send(/* EditorBlur.editorBlur */ 'Editor.blur')\n}\n\n/**\n *\n * @param {InputEvent} event\n */\nexport const handleBeforeInput = (event) => {\n event.preventDefault()\n switch (event.inputType) {\n case InputEventType.InsertText:\n RendererWorker.send(\n /* Editor.type */ 'Editor.type',\n /* text */ event.data\n )\n break\n default:\n break\n }\n // if (!event.data) {\n // return\n // }\n}\n\n// TODO composition should be better supported,\n// for example\n// - gedit draws a line below the composed text\n// - codemirror 6 also draws that line\n// - codemirror 5 also draws that line\n// - vscode does not draw a line, but displays characters during composition\n\nexport const handleCompositionStart = (event) => {\n RendererWorker.send(\n /* Editor.compositionStart */ 'Editor.compositionStart',\n /* text */ event.data\n )\n}\n\nexport const handleCompositionUpdate = (event) => {\n RendererWorker.send(\n /* Editor.compositionUpdate */ 'Editor.compositionUpdate',\n /* text */ event.data\n )\n}\n\nexport const handleCompositionEnd = (event) => {\n RendererWorker.send(\n /* Editor.compositionEnd */ 'Editor.compositionEnd',\n /* text */ event.data\n )\n}\n\nexport const handleCut = (event) => {\n event.preventDefault()\n RendererWorker.send(/* Editor.cut */ 'Editor.cut')\n}\n\nexport const handleSelectionMove = (event) => {\n const x = event.clientX\n const y = event.clientY\n const totalOffset = getTotalOffset(event)\n if (event.altKey) {\n RendererWorker.send(\n /* Editor.moveRectangleSelectionPx */ 'Editor.moveRectangleSelectionPx',\n /* x */ x,\n /* y */ y,\n /* offset */ totalOffset\n )\n } else {\n RendererWorker.send(\n /* Editor.moveSelectionPx */ 'Editor.moveSelectionPx',\n /* x */ x,\n /* y */ y,\n /* offset */ totalOffset\n )\n }\n}\n\nexport const handleSelectionDone = (event) => {\n document.removeEventListener('mousemove', handleSelectionMove)\n document.removeEventListener('mouseup', handleSelectionDone)\n}\n\nconst getModifier = (event) => {\n if (event.ctrlKey) {\n return ModifierKey.Ctrl\n }\n if (event.altKey) {\n return ModifierKey.Alt\n }\n return ModifierKey.None\n}\n\nexport const handleSingleClick = (event, x, y, offset) => {\n const modifier = getModifier(event)\n RendererWorker.send(\n /* Editor.handleSingleClick */ 'Editor.handleSingleClick',\n /* modifier */ modifier,\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n const $Target = event.target\n // const $InputBox = $Target.closest('.Editor').firstElementChild\n // $InputBox.focus()\n // TODO this logic should be in renderer worker\n document.addEventListener('mousemove', handleSelectionMove, { passive: true })\n document.addEventListener('mouseup', handleSelectionDone)\n}\n\nexport const handleDoubleClick = (event, x, y, offset) => {\n RendererWorker.send(\n /* Editor.handleDoubleClick */ 'Editor.handleDoubleClick',\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n}\n\nexport const handleTripleClick = (event, x, y, offset) => {\n RendererWorker.send(\n /* Editor.handleTripleClick */ 'Editor.handleTripleClick',\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n}\n\nconst isRightClick = (event) => {\n return event.button === MouseEventType.RightClick\n}\n\nconst getTextNodeOffset = (textNode) => {\n let $Token = textNode.parentElement\n let offset = 0\n while ($Token.previousSibling) {\n $Token = $Token.previousSibling\n offset += $Token.textContent.length\n }\n return offset\n}\n\nconst getTotalOffset = (event) => {\n if (document.caretRangeFromPoint) {\n // chrome uses deprecated version\n const range = document.caretRangeFromPoint(event.clientX, event.clientY)\n if (!range) {\n return 0\n }\n const textNode = range.startContainer\n const textNodeOffset = getTextNodeOffset(textNode)\n const offset = range.startOffset\n const totalOffset = textNodeOffset + offset\n return totalOffset\n // @ts-ignore\n }\n // @ts-ignore\n if (document.caretPositionFromPoint) {\n // firefox uses new version\n // @ts-ignore\n const range = document.caretPositionFromPoint(event.clientX, event.clientY)\n if (!range) {\n return 0\n }\n const textNode = range.offsetNode\n const textNodeOffset = getTextNodeOffset(textNode)\n const offset = range.offset\n const totalOffset = textNodeOffset + offset\n return totalOffset\n }\n throw new Error('caret position is not supported')\n}\n\nexport const handleMouseDown = (event) => {\n if (isRightClick(event)) {\n return\n }\n event.preventDefault()\n const totalOffset = getTotalOffset(event)\n const x = event.clientX\n const y = event.clientY\n switch (event.detail) {\n case 1:\n handleSingleClick(event, x, y, totalOffset)\n break\n case 2:\n handleDoubleClick(event, x, y, totalOffset)\n break\n case 3:\n handleTripleClick(event, x, y, totalOffset)\n break\n default:\n break\n }\n}\n\n// TODO figure out whether it is possible to register hover provider without mousemove\n// mousemove handler is called very often and could slow down editor / drain battery\n\n// disabled for now because of constant cpu usage on mousemove\n// bad for performance\nexport const handlePointerMove = (event) => {\n const x = event.clientX\n const y = event.clientY\n if (event.altKey) {\n const offset = getTotalOffset(event)\n RendererWorker.send(\n /* Editor.handleMouseMoveWithAltKey */ 'Editor.handleMouseMoveWithAltKey',\n /* x */ x,\n /* y */ y,\n /* offset */ offset\n )\n }\n // console.log(event.altKey)\n // RendererWorker.send(/* Editor.handleMouseMove */ 389, /* x */ x, /* y */ y)\n}\n\n/**\n *\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n // event.preventDefault()\n // const state = EditorHelper.getStateFromEvent(event)\n // TODO send editor id\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* Editor.setDeltaY */ 'Editor.setDeltaY',\n /* value */ deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* Editor.setDeltaY */ 'Editor.setDeltaY',\n /* value */ deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handlePaste = (event) => {\n event.preventDefault()\n const text = event.clipboardData.getData('text')\n RendererWorker.send(/* Editor.paste */ 'Editor.paste', /* text */ text)\n}\n\nexport const handleScrollBarThumbPointerMove = (event) => {\n const { clientY } = event\n RendererWorker.send(\n /* Editor.handleScrollBarMouseMove */ 'Editor.handleScrollBarMove',\n /* y */ clientY\n )\n}\n\nexport const handleScrollBarThumbPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener('pointermove', handleScrollBarThumbPointerMove)\n target.removeEventListener('pointerup', handleScrollBarThumbPointerUp)\n}\n\nexport const handleScrollBarThumbPointerDown = (event) => {\n const { target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener('pointermove', handleScrollBarThumbPointerMove, {\n passive: false,\n })\n target.addEventListener('pointerup', handleScrollBarThumbPointerUp)\n}\n\nexport const handleScrollBarMouseDown = (event) => {\n event.preventDefault()\n const y = event.clientY\n RendererWorker.send(\n /* EditorHandleScrollBarClick.editorHandleScrollBarClick */ 'Editor.handleScrollBarClick',\n /* y */ y\n )\n}\n\nexport const handleScrollBarContextMenu = (event) => {\n event.preventDefault()\n event.stopPropagation()\n}\n\nconst toSimpleTouch = (touch) => {\n return {\n x: touch.clientX,\n y: touch.clientY,\n }\n}\n\nconst toSimpleTouchEvent = (event) => {\n const touches = Array.from(event.touches).map(toSimpleTouch)\n const changedTouches = Array.from(event.changedTouches).map(toSimpleTouch)\n return {\n touches,\n changedTouches,\n }\n}\n\n// TODO add touch cancel handler\n\n// TODO use touch events for scrolling\n\nexport const handleTouchStart = (event) => {\n const touchEvent = toSimpleTouchEvent(event)\n RendererWorker.send(\n /* EditorHandleTouchStart.editorHandleTouchStart */ 'Editor.handleTouchStart',\n /* touchEvent */ touchEvent\n )\n}\n\nexport const handleTouchMove = (event) => {\n const touchEvent = toSimpleTouchEvent(event)\n RendererWorker.send(\n /* EditorHandleTouchMove.editorHandleTouchMove */ 'Editor.handleTouchMove',\n /* touchEvent */ touchEvent\n )\n}\n\nexport const handleTouchEnd = (event) => {\n if (event.cancelable) {\n event.preventDefault()\n }\n const touchEvent = toSimpleTouchEvent(event)\n RendererWorker.send(\n /* EditorHandleTouchEnd.editorHandleTouchEnd */ 'Editor.handleTouchEnd',\n /* touchEvent */ touchEvent\n )\n}\n\nconst getRangeFromSelection = (selection) => {\n if (!selection.anchorNode) {\n return undefined\n }\n const $StartToken = selection.anchorNode.parentNode\n const $EndToken = selection.focusNode.parentNode\n const $StartRow = $StartToken.parentNode\n const $EndRow = $EndToken.parentNode\n const $Rows = $StartRow.parentNode\n let startRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $StartRow) {\n startRowIndex = i\n break\n }\n }\n let startColumnIndex = 0\n for (let i = 0; i < $StartRow.children.length; i++) {\n if ($StartRow.children[i] === $StartToken) {\n break\n }\n startColumnIndex += $StartRow.children[i].textContent.length\n }\n startColumnIndex += selection.anchorOffset\n let endRowIndex = 0\n for (let i = 0; i < $Rows.children.length; i++) {\n if ($Rows.children[i] === $EndRow) {\n endRowIndex = i\n break\n }\n }\n let endColumnIndex = 0\n for (let i = 0; i < $EndRow.children.length; i++) {\n if ($EndRow.children[i] === $EndToken) {\n break\n }\n endColumnIndex += $EndRow.children[i].textContent.length\n }\n endColumnIndex += selection.focusOffset\n return {\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex,\n }\n}\n\nexport const handleContentEditableBeforeInput = (event) => {\n const selection = document.getSelection()\n const range = getRangeFromSelection(selection)\n if (!range) {\n console.error('[Editor] cannot handle input event without selection')\n return\n }\n RendererWorker.send(\n /* EditorHandleBeforeInputFromContentEditable.editorHandleBeforeInputFromContentEditable */ 'Editor.handleBeforeInputFromContentEditable',\n /* data */ event.data || '',\n /* range */ range\n )\n}\n\nexport const handleNativeSelectionChange = (event) => {\n // if (state.shouldIgnoreSelectionChange) {\n // state.shouldIgnoreSelectionChange = false\n // return\n // }\n // const selection = document.getSelection()\n // const range = getRangeFromSelection(selection)\n // if (!range) {\n // return\n // }\n // RendererWorker.send(\n // /* EditorHandleNativeSelectionChange.editorHandleNativeSelectionChange */ 'Editor.handleNativeSelectionChange',\n // /* range */ range\n // )\n}\n", "const create$Cursor = () => {\n const $Cursor = document.createElement('div')\n $Cursor.className = 'EditorCursor'\n return $Cursor\n}\n\nconst render$Cursor = ($Cursor, $Texts, cursor) => {\n $Cursor.style.top = `${cursor.top}px`\n const range = document.createRange()\n if (cursor.leftIndex === -1) {\n console.warn('cursor left is negative')\n $Cursor.style.left = '0px' // TODO need to compute column width, this would only work for monospace fonts\n return\n }\n const $Row = $Texts.children[cursor.topIndex]\n if (!$Row) {\n console.warn('no row', cursor, $Row)\n return\n }\n const $Node = $Row.children[cursor.leftIndex]\n if (!$Node) {\n console.warn('no node', cursor, $Row)\n return\n }\n if (cursor.leftIndex === 0 && cursor.remainingOffset === 0) {\n $Cursor.style.left = '0px'\n } else {\n const $TextNode = $Node.firstChild\n range.setStart($TextNode, cursor.remainingOffset)\n range.setEnd($TextNode, cursor.remainingOffset)\n const rect = range.getBoundingClientRect()\n const left = Math.round(rect.left)\n $Cursor.style.left = `${left}px`\n }\n}\n\nconst render$CursorsLess = ($Cursors, $Texts, cursors) => {\n for (let i = 0; i < $Cursors.children.length; i++) {\n render$Cursor($Cursors.children[i], $Texts, cursors[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Cursors.children.length; i < cursors.length; i++) {\n const $Cursor = create$Cursor()\n render$Cursor($Cursor, $Texts, cursors[i])\n fragment.append($Cursor)\n }\n $Cursors.append(fragment)\n}\n\nconst render$CursorsEqual = ($Cursors, $Texts, cursors) => {\n for (let i = 0; i < cursors.length; i++) {\n render$Cursor($Cursors.children[i], $Texts, cursors[i])\n }\n}\n\nconst render$CursorsMore = ($Cursors, $Texts, cursors) => {\n for (let i = 0; i < cursors.length; i++) {\n render$Cursor($Cursors.children[i], $Texts, cursors[i])\n }\n const diff = $Cursors.children.length - cursors.length\n for (let i = 0; i < diff; i++) {\n $Cursors.lastChild.remove()\n }\n}\n\nconst render$Cursors = ($Cursors, $Texts, cursors) => {\n if ($Cursors.children.length < cursors.length) {\n render$CursorsLess($Cursors, $Texts, cursors)\n } else if ($Cursors.children.length === cursors.length) {\n render$CursorsEqual($Cursors, $Texts, cursors)\n } else {\n render$CursorsMore($Cursors, $Texts, cursors)\n }\n}\n\nconst renderCursorsNative = (state, cursors) => {\n if (cursors.length > 1) {\n console.warn('[editor] cannot render more than one native cursor')\n return\n }\n if (cursors.length === 0) {\n return\n }\n const cursor = cursors[0]\n const $Rows = state.$LayerText\n const $StartRow = $Rows.children[cursor.rowIndex]\n let startOffset = 0\n let $Anchor\n for (let i = 0; i < $StartRow.children.length; i++) {\n if (startOffset >= cursor.columnIndex) {\n console.log({ startOffset })\n $Anchor = $StartRow.children[i - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n break\n }\n startOffset += $StartRow.children[i].textContent.length\n }\n if (!$Anchor) {\n $Anchor = $StartRow.children[$StartRow.children.length - 1].firstChild\n startOffset -= $Anchor.textContent.length\n startOffset = cursor.columnIndex - startOffset\n }\n const selection = document.getSelection()\n if (\n selection.anchorNode === $Anchor &&\n selection.focusNode === $Anchor &&\n selection.anchorOffset === startOffset &&\n selection.focusOffset === startOffset\n ) {\n return\n }\n state.shouldIgnoreSelectionChange = true\n const documentRange = document.createRange()\n documentRange.setStart($Anchor, startOffset)\n documentRange.setEnd($Anchor, startOffset)\n selection.removeAllRanges()\n selection.addRange(documentRange)\n}\n\nexport const setCursors = (state, cursors) => {\n render$Cursors(state.$LayerCursor, state.$LayerText, cursors)\n}\n", "const create$Diagnostic = () => {\n const $Diagnostic = document.createElement('div')\n $Diagnostic.className = 'EditorDiagnostic'\n return $Diagnostic\n}\n\nconst render$Diagnostic = ($Diagnostic, diagnostic) => {\n $Diagnostic.style.top = `${diagnostic.top}px`\n $Diagnostic.style.left = `${diagnostic.left}px`\n $Diagnostic.style.width = `${diagnostic.width}px`\n $Diagnostic.style.height = `${diagnostic.height}px`\n}\n\nconst render$DiagnosticsLess = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < $Diagnostics.children.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Diagnostics.children.length; i < diagnostics.length; i++) {\n const $Diagnostic = create$Diagnostic()\n render$Diagnostic($Diagnostic, diagnostics[i])\n fragment.append($Diagnostic)\n }\n $Diagnostics.append(fragment)\n}\n\nconst render$DiagnosticsEqual = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n}\n\nconst render$DiagnosticsMore = ($Diagnostics, diagnostics) => {\n for (let i = 0; i < diagnostics.length; i++) {\n render$Diagnostic($Diagnostics.children[i], diagnostics[i])\n }\n const diff = $Diagnostics.children.length - diagnostics.length\n for (let i = 0; i < diff; i++) {\n $Diagnostics.lastChild.remove()\n }\n}\n\nconst render$Diagnostics = ($Diagnostics, diagnostics) => {\n if ($Diagnostics.children.length < diagnostics.length) {\n render$DiagnosticsLess($Diagnostics, diagnostics)\n } else if ($Diagnostics.children.length === diagnostics.length) {\n render$DiagnosticsEqual($Diagnostics, diagnostics)\n } else {\n render$DiagnosticsMore($Diagnostics, diagnostics)\n }\n}\n\nexport const setDiagnostics = (state, diagnostics) => {\n render$Diagnostics(state.$LayerDiagnostics, diagnostics)\n}\n", "export const setPosition = (state, scrollBarY, scrollBarHeight) => {\n state.$ScrollBarThumb.style.top = `${scrollBarY}px`\n state.$ScrollBarThumb.style.height = `${scrollBarHeight}px`\n}\n\n// TODO scrollbar decorations should be own layer maybe\nconst create$ScrollBarDiagnostic = () => {\n const $ScrollBarDiagnostic = document.createElement('div')\n $ScrollBarDiagnostic.className = 'ScrollBarDiagnostic'\n return $ScrollBarDiagnostic\n}\n\nconst render$ScrollBarDiagnostic = (\n $ScrollBarDiagnostic,\n scrollBarDiagnostic\n) => {\n $ScrollBarDiagnostic.style.top = `${scrollBarDiagnostic.top}px`\n}\n\nconst render$ScrollBarDiagnosticsLess = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n for (let i = 0; i < $ScrollBarDiagnostics.children.length; i++) {\n render$ScrollBarDiagnostic(\n $ScrollBarDiagnostics.children[i],\n scrollBarDiagnostics[i]\n )\n }\n const fragment = document.createDocumentFragment()\n for (\n let i = $ScrollBarDiagnostics.children.length;\n i < scrollBarDiagnostics.length;\n i++\n ) {\n const $ScrollBarDiagnostic = create$ScrollBarDiagnostic()\n render$ScrollBarDiagnostic($ScrollBarDiagnostic, scrollBarDiagnostics[i])\n fragment.append($ScrollBarDiagnostic)\n }\n $ScrollBarDiagnostics.append(fragment)\n}\n\nconst render$ScrollBarDiagnosticsEqual = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic(\n $ScrollBarDiagnostics.children[i],\n scrollBarDiagnostics[i]\n )\n }\n}\n\nconst render$ScrollBarDiagnosticsMore = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n for (let i = 0; i < scrollBarDiagnostics.length; i++) {\n render$ScrollBarDiagnostic(\n $ScrollBarDiagnostics.children[i],\n scrollBarDiagnostics[i]\n )\n }\n const diff =\n $ScrollBarDiagnostics.children.length - scrollBarDiagnostics.length\n for (let i = 0; i < diff; i++) {\n $ScrollBarDiagnostics.lastChild.remove()\n }\n}\n\nconst render$ScrollBarDiagnostics = (\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n) => {\n if ($ScrollBarDiagnostics.children.length < scrollBarDiagnostics.length) {\n render$ScrollBarDiagnosticsLess($ScrollBarDiagnostics, scrollBarDiagnostics)\n } else if (\n $ScrollBarDiagnostics.children.length === scrollBarDiagnostics.length\n ) {\n render$ScrollBarDiagnosticsEqual(\n $ScrollBarDiagnostics,\n scrollBarDiagnostics\n )\n } else {\n render$ScrollBarDiagnosticsMore($ScrollBarDiagnostics, scrollBarDiagnostics)\n }\n}\n\nexport const setDiagnostics = (editor, scrollBarDiagnostics) => {\n render$ScrollBarDiagnostics(\n editor.$ScrollBarDiagnostics,\n scrollBarDiagnostics\n )\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as Assert from '../Assert/Assert.js'\n\nconst create$Selection = () => {\n const $Selection = document.createElement('div')\n $Selection.className = 'EditorSelection'\n return $Selection\n}\n\nconst render$Selection = ($Selection, selections, i) => {\n Assert.object($Selection)\n Assert.number(i)\n\n const top = selections[i * 4]\n const left = selections[i * 4 + 1]\n const width = selections[i * 4 + 2]\n const height = selections[i * 4 + 3]\n // TODO have many decorations per row\n // no absolute positioning\n $Selection.style.top = `${top}px`\n $Selection.style.left = `${left}px`\n $Selection.style.width = `${width}px`\n $Selection.style.height = `${height}px`\n}\n\nconst render$SelectionsLess = (\n $Selections,\n childCount,\n selections,\n selectionCount\n) => {\n for (let i = 0, j = 0; i < childCount; i++, j += 4) {\n render$Selection($Selections.children[i], selections, i)\n }\n const fragment = document.createDocumentFragment()\n for (let i = childCount; i < selectionCount; i++) {\n const $Selection = create$Selection()\n render$Selection($Selection, selections, i)\n fragment.append($Selection)\n }\n $Selections.append(fragment)\n}\n\nconst render$SelectionsEqual = (\n $Selections,\n childCount,\n selections,\n selectionCount\n) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n}\n\nconst render$SelectionsMore = (\n $Selections,\n childCount,\n selections,\n selectionCount\n) => {\n for (let i = 0; i < selectionCount; i++) {\n render$Selection($Selections.children[i], selections, i)\n }\n const diff = childCount - selectionCount\n for (let i = 0; i < diff; i++) {\n $Selections.lastChild.remove()\n }\n}\n\nconst render$Selections = ($Selections, selections) => {\n const selectionsCount = selections.length / 4\n const childCount = $Selections.children.length\n if (childCount < selectionsCount) {\n render$SelectionsLess($Selections, childCount, selections, selectionsCount)\n } else if (childCount === selectionsCount) {\n render$SelectionsEqual($Selections, childCount, selections, selectionsCount)\n } else {\n render$SelectionsMore($Selections, childCount, selections, selectionsCount)\n }\n}\n\nconst renderSelectionsNative = (state, selections) => {\n if (selections.length > 1) {\n console.warn('[editor] cannot render more than one native selection')\n }\n}\n\nexport const setSelections = (state, selections) => {\n render$Selections(state.$LayerSelections, selections)\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nconst create$Row = () => {\n const $Row = document.createElement('div')\n $Row.className = 'EditorRow'\n return $Row\n}\n\nconst create$Token = () => {\n const $Token = document.createElement('span')\n $Token.className = 'Token'\n return $Token\n}\n\n// TODO maybe use createTextNode (codeMirror uses that)\n// This function seems to be a hot spot\nconst render$Token = ($Token, text, className) => {\n $Token.className = className\n if ($Token.firstChild) {\n // recycle text node\n $Token.firstChild.nodeValue = text\n } else {\n $Token.textContent = text\n }\n}\n\nconst render$LineLess = ($Line, lineInfo) => {\n let i = 0\n while (i < $Line.children.length * 2) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const fragment = document.createDocumentFragment()\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n const $Token = create$Token()\n render$Token($Token, text, className)\n fragment.append($Token)\n }\n $Line.append(fragment)\n}\n\nconst render$LineEqual = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n}\n\nconst render$LineMore = ($Line, lineInfo) => {\n let i = 0\n while (i < lineInfo.length) {\n const text = lineInfo[i++]\n const className = lineInfo[i++]\n render$Token($Line.children[i / 2 - 1], text, className)\n }\n const diff = $Line.children.length - lineInfo.length / 2\n for (let i = lineInfo.length; i < lineInfo.length + diff; i++) {\n $Line.lastChild.remove()\n }\n}\n\nconst render$Line = ($Line, lineInfo) => {\n if ($Line.children.length < lineInfo.length / 2) {\n render$LineLess($Line, lineInfo)\n } else if ($Line.children.length === lineInfo.length / 2) {\n render$LineEqual($Line, lineInfo)\n } else {\n render$LineMore($Line, lineInfo)\n }\n}\n\nconst render$LinesLess = ($Lines, lineInfos) => {\n for (let i = 0; i < $Lines.children.length; i++) {\n render$Line($Lines.children[i], lineInfos[i])\n }\n const fragment = document.createDocumentFragment()\n for (let i = $Lines.children.length; i < lineInfos.length; i++) {\n const $Line = create$Row()\n render$Line($Line, lineInfos[i])\n fragment.append($Line)\n }\n $Lines.append(fragment)\n}\n\nconst render$LinesEqual = ($Lines, lineInfos) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i])\n }\n}\n\nconst render$LinesMore = ($Lines, lineInfos) => {\n for (let i = 0; i < lineInfos.length; i++) {\n render$Line($Lines.children[i], lineInfos[i])\n }\n const diff = $Lines.children.length - lineInfos.length\n for (let i = lineInfos.length; i < lineInfos.length + diff; i++) {\n $Lines.lastChild.remove()\n }\n}\n\nconst render$Lines = ($Lines, lineInfos) => {\n Assert.object($Lines)\n Assert.array(lineInfos)\n if ($Lines.children.length < lineInfos.length) {\n render$LinesLess($Lines, lineInfos)\n } else if ($Lines.children.length === lineInfos.length) {\n render$LinesEqual($Lines, lineInfos)\n } else {\n render$LinesMore($Lines, lineInfos)\n }\n}\n\nexport const setLineInfos = (state, lineInfos) => {\n render$Lines(state.$LayerText, lineInfos)\n}\n", "// TODO so many things in this file\n\nimport * as Assert from '../Assert/Assert.js'\nimport * as EditorEvents from './EditorEvents.js'\nimport * as LayerCursor from './LayerCursor.js'\nimport * as LayerDiagnostics from './LayerDiagnostics.js'\nimport * as LayerScrollBar from './LayerScrollBar.js'\nimport * as LayerSelections from './LayerSelections.js'\nimport * as LayerText3 from './LayerText.js'\n// TODO go back to edit mode after pressing escape so screenreaders can navigate https://stackoverflow.com/questions/53909477/how-to-handle-tabbing-for-accessibility-with-a-textarea-that-uses-the-tab-button\n\n// TODO tree shake out mobile support when targeting electron -> less code -> less event listeners -> less memory -> less cpu\n\n// TODO all create functions should have no arguments\n// and be split into two parts\n// 1. create -> only create dom elements\n// 2. render -> fill elements with attributes and data\n// that way all dom nodes can be recycled\nexport const create = () => {\n const $EditorInput = document.createElement('textarea')\n $EditorInput.className = 'EditorInput'\n $EditorInput.ariaAutoComplete = 'list'\n $EditorInput.ariaRoleDescription = 'editor'\n $EditorInput.ariaMultiLine = 'true'\n $EditorInput.setAttribute('autocomplete', 'off')\n $EditorInput.setAttribute('autocapitalize', 'off')\n $EditorInput.setAttribute('autocorrect', 'off')\n $EditorInput.setAttribute('wrap', 'off')\n $EditorInput.setAttribute('spellcheck', 'false')\n // @ts-ignore\n $EditorInput.role = 'textbox'\n $EditorInput.onpaste = EditorEvents.handlePaste\n // TODO where to best put listeners (side effects)\n $EditorInput.addEventListener('beforeinput', EditorEvents.handleBeforeInput)\n $EditorInput.addEventListener(\n 'compositionstart',\n EditorEvents.handleCompositionStart\n )\n $EditorInput.addEventListener(\n 'compositionupdate',\n EditorEvents.handleCompositionUpdate\n )\n $EditorInput.addEventListener(\n 'compositionend',\n EditorEvents.handleCompositionEnd\n )\n $EditorInput.onfocus = EditorEvents.handleFocus\n $EditorInput.onblur = EditorEvents.handleBlur\n $EditorInput.oncut = EditorEvents.handleCut\n\n const $LayerCursor = document.createElement('div')\n $LayerCursor.className = 'LayerCursor'\n\n const $LayerText = document.createElement('div')\n $LayerText.className = 'EditorRows'\n\n $LayerText.addEventListener('mousedown', EditorEvents.handleMouseDown)\n\n const $ScrollBarThumb = document.createElement('div')\n $ScrollBarThumb.className = 'ScrollBarThumb'\n $ScrollBarThumb.onpointerdown = EditorEvents.handleScrollBarThumbPointerDown\n\n // TODO only create $ScrollBarDiagnostics lazily when there are actually diagnostics\n const $ScrollBarDiagnostics = document.createElement('div')\n $ScrollBarDiagnostics.className = 'EditorScrollBarDiagnostics'\n\n const $ScrollBar = document.createElement('div')\n $ScrollBar.className = 'ScrollBar'\n $ScrollBar.onmousedown = EditorEvents.handleScrollBarMouseDown\n $ScrollBar.oncontextmenu = EditorEvents.handleScrollBarContextMenu\n $ScrollBar.append($ScrollBarThumb)\n\n // $EditorRows.addEventListener('mousemove', handleMouseMove, { passive: true })\n\n // TODO function should be hoisted (maybe -> one listener for all editors (definitely))\n // only problem is $EditorInput closure\n\n // TODO when mousedown on completions -> this shouldn't be called\n\n const $LayerSelections = document.createElement('div')\n $LayerSelections.className = 'Selections'\n\n // TODO maybe use css grid to position layers on top of each other\n // TODO maybe merge layerDiagnostics with LayerSelections\n // TODO maybe this should be more generic, e.g. LayerDecorations\n // where decoration = {top,left, width, height, type/className}\n const $LayerDiagnostics = document.createElement('div')\n $LayerDiagnostics.className = 'LayerDiagnostics'\n\n const $EditorLayers = document.createElement('div')\n $EditorLayers.className = 'EditorLayers'\n $EditorLayers.append(\n $LayerSelections,\n $LayerText,\n $LayerCursor,\n $LayerDiagnostics\n )\n\n const $Editor = document.createElement('div')\n $Editor.className = 'Viewlet Editor'\n $Editor.dataset.viewletId = 'EditorText'\n // @ts-ignore\n $Editor.role = 'code'\n $Editor.append($EditorInput, $EditorLayers, $ScrollBarDiagnostics, $ScrollBar)\n $Editor.addEventListener('contextmenu', EditorEvents.handleContextMenu)\n $Editor.addEventListener('wheel', EditorEvents.handleWheel, { passive: true })\n $Editor.addEventListener('mousemove', EditorEvents.handlePointerMove, {\n passive: true,\n })\n return {\n $LayerCursor,\n $LayerSelections,\n $LayerText,\n $EditorLayers,\n $Editor,\n $EditorInput,\n $ScrollBarThumb,\n $LayerDiagnostics,\n $ScrollBarDiagnostics,\n shouldIgnoreSelectionChange: false,\n $Viewlet: $Editor,\n }\n}\n\nexport const setText = (state, textInfos) => {\n LayerText3.setLineInfos(state, textInfos)\n}\n\nexport const setSettings = (state, fontSize, lineHeight, letterSpacing) => {\n // TODO many properties on <html> element in chrome devtools looks ugly\n // maybe put styles into a stylesheet instead of using inline styles?\n const root = document.documentElement\n root.style.setProperty('--EditorFontSize', `${fontSize}px`)\n root.style.setProperty('--EditorLineHeight', `${lineHeight}px`)\n root.style.setProperty('--EditorLetterSpacing', letterSpacing)\n}\n\nexport const setScrollBar = (state, scrollBarY, scrollBarHeight) => {\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n}\n\nexport const renderCursors = (state, cursorInfos) => {\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const renderSelections = (state, selectionInfos) => {\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursors = (state, textInfos, cursorInfos) => {\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n}\n\nexport const setSelections = (state, cursorInfos, selectionInfos) => {\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\nexport const renderTextAndCursorsAndSelections = (\n state,\n scrollBarY,\n scrollBarHeight,\n textInfos,\n cursorInfos,\n selectionInfos\n) => {\n Assert.object(state)\n Assert.number(scrollBarY)\n Assert.number(scrollBarHeight)\n Assert.array(textInfos)\n Assert.array(cursorInfos)\n Assert.array(selectionInfos)\n LayerScrollBar.setPosition(state, scrollBarY, scrollBarHeight)\n LayerText3.setLineInfos(state, textInfos)\n LayerCursor.setCursors(state, cursorInfos)\n LayerSelections.setSelections(state, selectionInfos)\n}\n\n// TODO this should be in editor\nconst getColumnWidth = () => {\n const testSpan = document.createElement('span')\n testSpan.textContent = 'a'\n testSpan.style.fontSize = '15px'\n testSpan.style.letterSpacing = '0.5px'\n testSpan.style.position = 'fixed'\n testSpan.style.fontFamily = \"'Fira Code'\"\n document.body.append(testSpan)\n const result = Number.parseFloat(getComputedStyle(testSpan).width) / 1\n testSpan.remove()\n return result\n}\n\nexport const mount = (state, $Parent) => {\n $Parent.append(state.$Editor)\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $EditorInput } = state\n if (!$EditorInput.isConnected) {\n console.warn('unmounted editor cannot be focused')\n }\n $EditorInput.focus()\n}\n\nexport const setLanguageId = async (state, languageId) => {\n // state.languageId = languageId\n // state.$Editor.dataset.languageId = languageId\n // loadTokenizer(languageId)\n}\n\nexport const renderDiagnostics = (state, diagnostics, scrollBarDiagnostics) => {\n LayerDiagnostics.setDiagnostics(state, diagnostics)\n LayerScrollBar.setDiagnostics(state, scrollBarDiagnostics)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Widget from '../Widget/Widget.js'\n\nexport const create = Editor.create\n\nexport const setText = Editor.setText\n\nexport const setSelections = Editor.setSelections\n\nexport const handleError = (state, error) => {\n state.$Viewlet.textContent = error\n}\n\nexport const setScrollBar = Editor.setScrollBar\n\nexport const highlightAsLink = (state, relativeY, tokenIndex) => {\n const $Row = state.$LayerText.children[relativeY]\n if (!$Row) {\n console.info('no row found')\n return\n }\n const $Token = $Row.children[tokenIndex + 1]\n console.log($Token)\n $Token.classList.add('EditorGoToDefinitionLink')\n // console.log({ state, tokenIndex, relativeY })\n}\n\nexport const showOverlayMessage = (state, x, y, content) => {\n const $OverLayMessage = document.createElement('div')\n $OverLayMessage.className = 'EditorOverlayMessage'\n $OverLayMessage.style.position = 'fixed'\n $OverLayMessage.textContent = content\n $OverLayMessage.style.top = `${y}px`\n $OverLayMessage.style.left = `${x}px`\n Widget.append($OverLayMessage)\n}\n\nexport const hideOverlayMessage = (state) => {\n // TODO pass id of the overlay message and remove widget by id\n for (const $Widget of Widget.state.widgetSet) {\n if ($Widget.className === 'EditorOverlayMessage') {\n Widget.remove($Widget)\n }\n }\n}\n\nexport const focus = Editor.focus\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerMove = (event) => {\n const { pointerId, clientX, clientY } = event\n RendererWorker.send(\n 'EditorImage.handlePointerMove',\n pointerId,\n clientX,\n clientY\n )\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerUp = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n // @ts-ignore\n target.releasePointerCapture(pointerId)\n RendererWorker.send(\n 'EditorImage.handlePointerUp',\n pointerId,\n clientX,\n clientY\n )\n}\n\n/**\n * @param {PointerEvent} event\n */\nexport const handlePointerDown = (event) => {\n const { pointerId, clientX, clientY, target, button } = event\n if (button !== MouseEventType.LeftClick) {\n return\n }\n // @ts-ignore\n target.setPointerCapture(pointerId)\n RendererWorker.send(\n 'EditorImage.handlePointerDown',\n pointerId,\n clientX,\n clientY\n )\n}\n\n/**\n * @param {WheelEvent} event\n */\nexport const handleWheel = (event) => {\n const { clientX, clientY, deltaX, deltaY } = event\n RendererWorker.send(\n 'EditorImage.handleWheel',\n clientX,\n clientY,\n deltaX,\n deltaY\n )\n}\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send('EditorImage.handleContextMenu', clientX, clientY)\n}\n", "import * as ViewletEditorImageEvents from './ViewletEditorImageEvents.js'\n\nexport const name = 'EditorImage'\n\nexport const create = () => {\n const $Image = document.createElement('img')\n $Image.className = 'ViewletImage'\n $Image.draggable = false\n\n const $ImageWrapper = document.createElement('div')\n $ImageWrapper.className = 'ImageWrapper'\n $ImageWrapper.append($Image)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'EditorImage'\n $Viewlet.append($ImageWrapper)\n $Viewlet.onpointerdown = ViewletEditorImageEvents.handlePointerDown\n $Viewlet.onpointerup = ViewletEditorImageEvents.handlePointerUp\n // TODO maybe set pointer move handle once pointer down is called\n // but that would require keeping track of how many pointers are down\n // and removing the listener when pointerDownCount === 0\n // TODO not sure whether this event listener should be passive or not\n // doesn't seem to make a difference\n $Viewlet.addEventListener(\n 'pointermove',\n ViewletEditorImageEvents.handlePointerMove,\n { passive: true }\n )\n $Viewlet.oncontextmenu = ViewletEditorImageEvents.handleContextMenu\n $Viewlet.addEventListener('wheel', ViewletEditorImageEvents.handleWheel, {\n passive: true,\n })\n return {\n $Viewlet,\n $Image,\n $ImageWrapper,\n }\n}\n\nexport const setTransform = (state, transform) => {\n const { $ImageWrapper } = state\n $ImageWrapper.style.transform = transform\n}\n\nexport const setSrc = (state, src) => {\n const { $Image } = state\n $Image.src = src\n}\n\nexport const setDragging = (state, isDragging) => {\n console.log('set dragging', isDragging)\n const { $Viewlet } = state\n $Viewlet.classList.toggle('Dragging', isDragging)\n}\n\nexport const dispose = (state) => {}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const name = 'Clock'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = name\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = () => {}\n\nexport const setTime = (state, time) => {\n Assert.object(state)\n Assert.string(time)\n state.$Viewlet.textContent = time\n}\n", "import * as Layout from '../Layout/Layout.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = () => {\n const $SideBarTitleAreaTitle = document.createElement('h2')\n $SideBarTitleAreaTitle.id = 'SideBarTitleAreaTitle'\n\n const $SideBarTitleAreaButtons = document.createElement('div')\n $SideBarTitleAreaButtons.id = 'SideBarTitleAreaButtons'\n\n const $SideBarTitleArea = document.createElement('div')\n $SideBarTitleArea.id = 'SideBarTitleArea'\n $SideBarTitleArea.append($SideBarTitleAreaTitle, $SideBarTitleAreaButtons)\n\n // const $SideBarContent = document.createElement('div')\n // $SideBarContent.id = 'SideBarContent'\n\n const $SideBar = Layout.state.$SideBar\n $SideBar.role = 'complementary'\n $SideBar.ariaRoleDescription = 'Side Bar'\n $SideBar.append($SideBarTitleArea)\n\n return {\n $SideBar,\n $SideBarTitleArea,\n $SideBarTitleAreaButtons,\n $SideBarContent: undefined,\n $SideBarTitleAreaTitle,\n }\n}\n\nexport const dispose = (state) => {\n Assert.object(state)\n state.$SideBar.replaceChildren()\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n const $SideBarTitleAreaTitle = state.$SideBarTitleAreaTitle\n $SideBarTitleAreaTitle.title = name\n $SideBarTitleAreaTitle.textContent = name\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'SideBarContent'\n if (state.$SideBarContent) {\n state.$SideBarContent.replaceWith($Viewlet)\n } else {\n state.$SideBar.append($Viewlet)\n }\n state.$SideBarContent = $Viewlet\n}\n\nexport const focus = async () => {\n // await\n console.log('todo focus sidebar')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst create$PanelTab = (label, index) => {\n const $PanelTab = document.createElement('div')\n $PanelTab.className = 'PanelTab'\n // @ts-ignore\n $PanelTab.role = 'tab'\n $PanelTab.textContent = label\n $PanelTab.id = `PanelTab-${index + 1}`\n return $PanelTab\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst panelTabsHandleClick = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'PanelTab': {\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* Panel.selectIndex */ 'Panel.selectIndex',\n /* index */ index\n )\n break\n }\n default:\n break\n }\n}\n\nexport const create = () => {\n const $PanelTabs = document.createElement('div')\n $PanelTabs.id = 'PanelTabs'\n // @ts-ignore\n $PanelTabs.role = 'tablist'\n $PanelTabs.onmousedown = panelTabsHandleClick\n $PanelTabs.tabIndex = -1\n const $PanelHeader = document.createElement('div')\n $PanelHeader.id = 'PanelHeader'\n $PanelHeader.append($PanelTabs)\n // const $PanelContent = document.createElement('div')\n // $PanelContent.id = 'PanelContent'\n const $Panel = Layout.state.$Panel\n $Panel.append($PanelHeader)\n $Panel.ariaLabel = 'Panel'\n return {\n $Panel,\n $PanelTabs,\n $PanelHeader,\n $PanelContent: undefined,\n }\n // await openViewlet('Terminal')\n}\n\nexport const setTabs = (state, tabs) => {\n state.$PanelTabs.append(...tabs.map(create$PanelTab))\n}\n\nexport const appendViewlet = (state, name, $Viewlet) => {\n Assert.object(state)\n Assert.string(name)\n Assert.object($Viewlet)\n // TODO is it a problem that the id is duplicated for a short amount of time here?\n $Viewlet.id = 'PanelContent'\n if (state.$PanelContent) {\n state.$PanelContent.replaceWith($Viewlet)\n } else {\n state.$Panel.append($Viewlet)\n }\n state.$PanelContent = $Viewlet\n}\n\n// TODO add test for focus method\nexport const focus = (state) => {\n Assert.object(state)\n if (!state.currentViewlet) {\n return\n }\n state.currentViewlet.factory.focus(state.currentViewlet.state)\n}\n\nexport const dispose = (state) => {\n if (state.$PanelContent) {\n state.$PanelContent.remove()\n state.$PanelContent = undefined\n }\n if (state.$PanelTabs) {\n state.$PanelTabs.remove()\n state.$PanelTabs = undefined\n }\n if (state.$PanelHeader) {\n state.$PanelHeader.remove()\n state.$PanelHeader = undefined\n }\n}\n\nexport const setSelectedIndex = (state, oldIndex, newIndex) => {\n const { $PanelTabs } = state\n if (oldIndex !== -1) {\n const $PanelTab = $PanelTabs.children[oldIndex]\n $PanelTab.removeAttribute('aria-selected')\n }\n if (newIndex !== -1) {\n const $PanelTab = $PanelTabs.children[newIndex]\n $PanelTab.ariaSelected = true\n $PanelTabs.setAttribute('aria-activedescendant', $PanelTab.id)\n }\n}\n", "export const Tab = 1\n\nexport const Button = 2\n", "import * as Focus from '../Focus/Focus.js'\nimport * as MouseEventTypes from '../MouseEventType/MouseEventType.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst get$ItemFromEvent = (event) => {\n const $Target = event.target\n switch ($Target.className) {\n case 'ActivityBarItemIcon':\n return $Target.parentNode\n case 'ActivityBarItem':\n return $Target\n default:\n return undefined\n }\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nexport const handleMousedown = (event) => {\n if (event.button !== MouseEventTypes.LeftClick) {\n return\n }\n const $Item = get$ItemFromEvent(event)\n if (!$Item) {\n return\n }\n event.preventDefault()\n event.stopPropagation()\n const index = getNodeIndex($Item)\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* ActivityBar.handleClick */ 'ActivityBar.handleClick',\n /* index */ index,\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const handleContextMenu = (event) => {\n event.preventDefault()\n // TODO also move side bar position command\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* activityBarHandleContextMenu */ 'ActivityBar.handleContextMenu',\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const handleBlur = () => {}\n\nexport const handleFocusIn = () => {\n Focus.setFocus('activityBar')\n}\n", "import * as ActivityBarItemFlags from '../ActivityBarItemFlags/ActvityBarItemFlags.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as ViewletActivityBarEvents from './ViewletActivityBarEvents.js'\n\n// TODO set aria-selected false when sidebar is collapsed\n\nconst create$ActivityBarItemIcon = (icon) => {\n const $ActivityBarItemIcon = document.createElement('div')\n $ActivityBarItemIcon.className = 'ActivityBarItemIcon'\n // @ts-ignore\n $ActivityBarItemIcon.style.maskImage = `url(${icon})`\n $ActivityBarItemIcon.style.webkitMaskImage = `url(${icon})`\n return $ActivityBarItemIcon\n}\n\n// TODO assetDir might not work with non-builtin extension icons\nconst create$ActivityBarItem = (item) => {\n const $ActivityBarItemIcon = create$ActivityBarItemIcon(`${item.icon}`)\n const $ActivityBarItem = document.createElement('div')\n $ActivityBarItem.className = 'ActivityBarItem'\n $ActivityBarItem.ariaLabel = '' // aria-label is determined by content TODO is empty aria-label necessary or can it be left off?\n $ActivityBarItem.title = item.title\n $ActivityBarItem.tabIndex = -1\n $ActivityBarItem.dataset.viewletId = item.id\n if (item.keyShortcuts) {\n $ActivityBarItem.ariaKeyShortcuts = item.keyShortcuts\n }\n switch (item.flags) {\n case ActivityBarItemFlags.Tab:\n // @ts-ignore\n $ActivityBarItem.role = 'tab'\n $ActivityBarItem.ariaSelected = 'false'\n break\n case ActivityBarItemFlags.Button:\n // @ts-ignore\n $ActivityBarItem.role = 'button'\n $ActivityBarItem.ariaHasPopup = 'true'\n break\n default:\n console.warn(`unknown activity bar item flags ${item.flags}`)\n break\n }\n $ActivityBarItem.append($ActivityBarItemIcon)\n return $ActivityBarItem\n}\n\nexport const name = 'ActivityBar'\n\nexport const create = () => {\n const $ActivityBar = Layout.state.$ActivityBar\n $ActivityBar.role = 'toolbar'\n $ActivityBar.ariaRoleDescription = 'Activity Bar'\n $ActivityBar.ariaOrientation = 'vertical'\n // $ActivityBar.append(...activityBarItems.map(create$ActivityBarItem))\n $ActivityBar.onmousedown = ViewletActivityBarEvents.handleMousedown\n $ActivityBar.oncontextmenu = ViewletActivityBarEvents.handleContextMenu\n $ActivityBar.onblur = ViewletActivityBarEvents.handleBlur\n $ActivityBar.addEventListener(\n 'focusin',\n ViewletActivityBarEvents.handleFocusIn\n )\n // $ActivityBar.children[focusedIndex].tabIndex = 0\n return {\n $ActivityBar,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const setItems = (state, activityBarItems) => {\n Assert.object(state)\n Assert.array(activityBarItems)\n const $ActivityBar = state.$ActivityBar\n $ActivityBar.replaceChildren(...activityBarItems.map(create$ActivityBarItem))\n}\n\nexport const selectIndex = (state, oldIndex, newIndex) => {\n if (oldIndex !== -1) {\n const $OldItem = state.$ActivityBar.children[oldIndex]\n $OldItem.ariaSelected = 'false'\n if (newIndex !== -1) {\n $OldItem.tabIndex = -1\n }\n }\n if (newIndex !== -1) {\n const $NewItem = state.$ActivityBar.children[newIndex]\n $NewItem.ariaSelected = 'true'\n $NewItem.tabIndex = 0\n }\n}\n\nconst focus$Item = ($Item) => {\n Focus.focus($Item, 'activityBar')\n}\n\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n const { $ActivityBar } = state\n if (oldIndex !== -1) {\n const $OldItem = $ActivityBar.children[oldIndex]\n $OldItem.tabIndex = -1\n $OldItem.classList.remove('FocusOutline')\n }\n if (newIndex !== -1) {\n const $NewItem = $ActivityBar.children[newIndex]\n $NewItem.tabIndex = 0\n $NewItem.classList.add('FocusOutline')\n focus$Item($NewItem)\n }\n}\n\nexport const setBadgeCount = (state, index, count) => {\n const { $ActivityBar } = state\n const $Item = $ActivityBar.children[index]\n const $Badge = document.createElement('div')\n $Badge.className = 'ActivityBarItemBadge'\n $Badge.textContent = `${count}`\n // @ts-ignore\n $Item.append($Badge)\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getTargetIndex = ($Target) => {\n switch ($Target.className) {\n case 'QuickPickItem':\n case 'QuickPickItem Focused':\n return getNodeIndex($Target)\n case 'QuickPickItemLabel':\n return getNodeIndex($Target.parentNode)\n default:\n return -1\n }\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* QuickPick.handleWheel */ 'QuickPick.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* QuickPick.handleWheel */ 'QuickPick.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n\nexport const handleMouseDown = (event) => {\n event.preventDefault()\n const { clientX, clientY } = event\n RendererWorker.send(\n /* QuickPick.selectIndex */ 'QuickPick.handleClickAt',\n /* x */ clientX,\n /* y */ clientY\n )\n}\n\n// TODO beforeinput event should prevent input event maybe\n// const handleBeforeInput = (event) => {\n// if (!event.data) {\n// return\n// }\n// const value = event.target.value + event.data\n// RendererWorker.send(\n// /* quickPickHandleInput */ 'QuickPick.handleInput',\n// /* value */ value,\n// )\n// }\n\nexport const handleInput = (event) => {\n const $Target = event.target\n RendererWorker.send(\n /* quickPickHandleInput */ 'QuickPick.handleInput',\n /* value */ $Target.value\n )\n}\n\nexport const handleBlur = (event) => {\n RendererWorker.send(/* QuickPick.handleBlur */ 'QuickPick.handleBlur')\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const handleBeforeInput = (event) => {\n event.preventDefault()\n const { target, inputType, data } = event\n const { selectionStart, selectionEnd } = target\n RendererWorker.send(\n 'QuickPick.handleBeforeInput',\n /* inputType */ inputType,\n /* data */ data,\n /* selectionStart */ selectionStart,\n /* selectionEnd */ selectionEnd\n )\n}\n", "/* Tries to implement the pattern for combobox with listbox popup https://www.w3.org/TR/wai-aria-1.2/#combobox */\n\nimport * as AriaAlert from '../AriaAlert/AriaAlert.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletQuickPickEvents from './ViewletQuickPickEvents.js'\n\n// TODO use another virtual list that just appends elements and\n// is optimized for fast show/hide, scrolling performance should\n// be good as well but is not as important as fast show/hide\n\n// TODO screenreader makes pause after reading colon, maybe there is a setting for screenreaders so they speak normally\n\n// TODO state\n\n// TODO when quickpick is shown recalculate style and layout is really slow (>10ms every time)\n\n// TODO accessibility issues with nvda: when pressing escape, it goes into different mode\n// but should just close quick-pick like vscode does\n\nconst activeId = 'QuickPickItemActive'\n\n// TODO forbidden:\n// 1. methods\n// 2. functions inside functions\n\n/**\n * @enum {string}\n */\nconst ClassNames = {\n Label: 'Label',\n QuickPickItem: 'QuickPickItem',\n Icon: 'Icon',\n QuickPickItemDescription: 'QuickPickItemDescription',\n QuickPickStatus: 'QuickPickStatus',\n}\n\n/**\n * @enum {string}\n */\nconst Ids = {\n QuickPickHeader: 'QuickPickHeader',\n QuickPickItems: 'QuickPickItems',\n QuickPick: 'QuickPick',\n}\n\n/**\n * @enum {string}\n */\nconst Roles = {\n ListBox: 'listbox',\n ComboBox: 'combobox',\n Option: 'option',\n}\n\nconst create$QuickPickItem = () => {\n // TODO many quickPick items may not have description -> avoid creating description dom nodes if there is no description\n const $QuickPickItemLabelText = document.createTextNode('')\n\n const $QuickPickItemLabel = document.createElement('div')\n $QuickPickItemLabel.className = ClassNames.Label\n $QuickPickItemLabel.append($QuickPickItemLabelText)\n\n const $QuickPickItemIcon = document.createElement('i')\n $QuickPickItemIcon.className = ClassNames.Icon\n const $QuickPickItem = document.createElement('div') // TODO ul/li would be better for structure but might be slower\n $QuickPickItem.className = ClassNames.QuickPickItem\n // @ts-ignore\n $QuickPickItem.role = Roles.Option\n $QuickPickItem.append($QuickPickItemIcon, $QuickPickItemLabel)\n return $QuickPickItem\n}\n\n// TODO add test with show and slicedItems length is 0\n\nconst create$QuickPickDescription = () => {\n const $QuickPickItemDescription = document.createElement('div')\n $QuickPickItemDescription.className = ClassNames.QuickPickItemDescription\n return $QuickPickItemDescription\n}\n\nconst render$QuickPickItemLess = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n const $QuickPickItemDescription = create$QuickPickDescription()\n // render$QuickPickItemDescription($QuickPickItemDescription, quickPickItem)\n\n $QuickPickItem.append($QuickPickItemDescription)\n}\n\nconst render$QuickPickItemLabel = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[1].firstChild.nodeValue = quickPickItem.label\n}\n\nconst render$QuickPickItemIcon = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.children[0].className = `Icon${quickPickItem.icon}`\n}\n\nconst render$QuickPickItemEqual = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem, quickPickItem)\n render$QuickPickItemIcon($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemMore = ($QuickPickItem, quickPickItem) => {\n render$QuickPickItemLabel($QuickPickItem.firstChild, quickPickItem)\n $QuickPickItem.lastChild.remove()\n}\n\nconst render$QuickPickItem = ($QuickPickItem, quickPickItem) => {\n $QuickPickItem.ariaPosInSet = `${quickPickItem.posInSet}` // TODO pass correct number as prop\n $QuickPickItem.ariaSetSize = `${quickPickItem.setSize}`\n $QuickPickItem.quickPickItem = quickPickItem\n render$QuickPickItemEqual($QuickPickItem, quickPickItem)\n}\n\nconst render$QuickPickItemsLess = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < $QuickPickItems.children.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const fragment = document.createDocumentFragment()\n for (\n let i = $QuickPickItems.children.length;\n i < quickPickItems.length;\n i++\n ) {\n const $QuickPickItem = create$QuickPickItem()\n render$QuickPickItem($QuickPickItem, quickPickItems[i])\n fragment.append($QuickPickItem)\n }\n $QuickPickItems.append(fragment)\n}\n\nconst render$QuickPickItemsEqual = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n}\n\nconst render$QuickPickItemsMore = ($QuickPickItems, quickPickItems) => {\n for (let i = 0; i < quickPickItems.length; i++) {\n render$QuickPickItem($QuickPickItems.children[i], quickPickItems[i])\n }\n const diff = $QuickPickItems.children.length - quickPickItems.length\n for (let i = 0; i < diff; i++) {\n $QuickPickItems.lastChild.remove()\n }\n}\n\nconst render$QuickPickItems = ($QuickPickItems, quickPickItems) => {\n if ($QuickPickItems.children.length < quickPickItems.length) {\n render$QuickPickItemsLess($QuickPickItems, quickPickItems)\n } else if ($QuickPickItems.children.length === quickPickItems.length) {\n render$QuickPickItemsEqual($QuickPickItems, quickPickItems)\n } else {\n render$QuickPickItemsMore($QuickPickItems, quickPickItems)\n }\n}\n\nexport const setVisiblePicks = (state, visiblePicks) => {\n if (state.$QuickPickStatus) {\n hideStatus(state)\n }\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $QuickPickItems, $QuickPickInput } = state\n if (oldFocusedIndex >= 0) {\n const $OldItem = $QuickPickItems.children[oldFocusedIndex]\n if ($OldItem) {\n $OldItem.removeAttribute('id')\n }\n }\n if (newFocusedIndex >= 0) {\n const $NewItem = $QuickPickItems.children[newFocusedIndex]\n if ($NewItem) {\n $NewItem.id = activeId\n $QuickPickInput.setAttribute('aria-activedescendant', activeId)\n }\n }\n}\n\nexport const focus = (state) => {\n const { $QuickPickInput } = state\n $QuickPickInput.focus()\n Focus.setFocus('quickPickInput')\n}\n\n// TODO\n// - for windows narrator, ariaLabel works well\n// - for nvda ariaRoleDescription works better\n\nexport const create = () => {\n const $QuickPickInput = InputBox.create()\n $QuickPickInput.setAttribute('aria-controls', Ids.QuickPickItems) // TODO use idl once supported\n // @ts-ignore\n $QuickPickInput.role = Roles.ComboBox\n $QuickPickInput.ariaLabel = 'Type the name of a command to run.'\n $QuickPickInput.ariaAutoComplete = 'list'\n $QuickPickInput.onblur = ViewletQuickPickEvents.handleBlur\n $QuickPickInput.addEventListener(\n 'beforeinput',\n ViewletQuickPickEvents.handleBeforeInput\n )\n $QuickPickInput.ariaExpanded = 'true'\n\n const $QuickPickHeader = document.createElement('div')\n $QuickPickHeader.id = Ids.QuickPickHeader\n $QuickPickHeader.append($QuickPickInput)\n\n const $QuickPickItems = document.createElement('div')\n $QuickPickItems.id = Ids.QuickPickItems\n // @ts-ignore\n $QuickPickItems.role = Roles.ListBox\n $QuickPickItems.onmousedown = ViewletQuickPickEvents.handleMouseDown\n $QuickPickItems.addEventListener(\n 'wheel',\n ViewletQuickPickEvents.handleWheel,\n { passive: true }\n )\n\n // TODO this works well with nvda but not with windows narrator\n // probably a bug with windows narrator that doesn't support ariaRoleDescription\n $QuickPickItems.ariaRoleDescription = 'Quick Input'\n\n const $QuickPick = document.createElement('div')\n $QuickPick.id = Ids.QuickPick\n // $QuickPick.role= 'dialog'\n $QuickPick.append($QuickPickHeader, $QuickPickItems)\n // $QuickPick.setAttribute('aria-modal', 'false') // TODO why is this\n $QuickPick.ariaLabel = 'Quick open'\n\n return {\n $Viewlet: $QuickPick,\n $QuickPick,\n $QuickPickInput,\n $QuickPickItems,\n $QuickPickStatus: undefined,\n }\n}\n\nexport const setPicks = (state, visiblePicks) => {\n render$QuickPickItems(state.$QuickPickItems, visiblePicks)\n}\n\nconst create$QuickPickStatus = () => {\n const $QuickPickStatus = document.createElement('div')\n $QuickPickStatus.className = 'QuickPickStatus'\n // const te.$QuickPickStatus.role = 'status'\n // $QuickPickStatus.ariaLive = 'polite'\n // $QuickPickStatus.id = 'QuickPickStatus'\n return $QuickPickStatus\n}\n\nexport const hideStatus = (state) => {\n state.$QuickPickStatus.remove()\n state.$QuickPickStatus = undefined\n}\n\nexport const showNoResults = (state, noResults, unfocusIndex) => {\n setPicks(state, [])\n if (!state.$QuickPickStatus) {\n state.$QuickPickStatus = create$QuickPickStatus()\n state.$QuickPick.append(state.$QuickPickStatus)\n }\n state.$QuickPickStatus.textContent = 'No Results'\n\n // announce to screenreaders that there are no results\n AriaAlert.alert('No results')\n}\n\n// TODO QuickPick module is always loaded lazily -> can create $QuickPick eagerly (no state / less state laying around)\n\n// TODO remove from dom vs display none which should be used?\n\n// TODO have common widgets container for all widgets (this, notifications, context menu)\nexport const dispose = (state) => {\n state.$QuickPickInput.onblur = null\n}\n\nexport const setValue = (state, value) => {\n const { $QuickPickInput } = state\n $QuickPickInput.value = value\n}\n\nexport const setCursorOffset = (state, cursorOffset) => {\n const { $QuickPickInput } = state\n $QuickPickInput.selectionStart = cursorOffset\n $QuickPickInput.selectionEnd = cursorOffset\n}\n\nexport const setItemsHeight = (state, itemsHeight) => {\n const { $QuickPickItems } = state\n $QuickPickItems.style.height = `${itemsHeight}px`\n}\n", "import * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Assert from '../Assert/Assert.js'\n\nconst getIconClassName = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n return 'StatusBarIcon AnimationSpin'\n case '$(sync)':\n return 'StatusBarIcon'\n case '$(source-control)':\n return 'StatusBarIcon'\n default:\n console.warn(`unknown icon \"${icon}\"`)\n return ''\n }\n}\n\nconst getMaskImageUrl = (icon) => {\n switch (icon) {\n case '$(sync-spin)':\n case '$(sync~spin)':\n case '$(sync)':\n return 'url(/icons/icon-sync.svg)'\n case '$(source-control)':\n return 'url(/icons/icon-source-control.svg)'\n default:\n return ''\n }\n}\n\nconst create$StatusBarItem = (item) => {\n const $StatusBarItem = document.createElement('li')\n $StatusBarItem.className = 'StatusBarItem'\n // @ts-ignore\n $StatusBarItem.role = 'button'\n $StatusBarItem.dataset.name = item.name\n $StatusBarItem.tabIndex = -1\n $StatusBarItem.textContent = item.text\n $StatusBarItem.dataset.command = item.command\n if (item.tooltip) {\n $StatusBarItem.title = item.tooltip\n }\n if (item.icon) {\n const $StatusBarItemIcon = document.createElement('span')\n $StatusBarItemIcon.className = getIconClassName(item.icon)\n // @ts-ignore\n $StatusBarItemIcon.style.maskImage = getMaskImageUrl(item.icon)\n $StatusBarItemIcon.style.webkitMaskImage = getMaskImageUrl(item.icon)\n $StatusBarItem.prepend($StatusBarItemIcon)\n }\n return $StatusBarItem\n}\n\nconst handleClick = (event) => {\n const $Target = event.target\n if ($Target.className !== 'StatusBarItem') {\n return\n }\n const command = Number.parseInt($Target.dataset.command, 10)\n RendererWorker.send(command)\n}\n\n// TODO get items from renderer worker\n// const statusBarItemsLeft = [\n// {\n// name: 'RunTests',\n// text: 'Run Tests',\n// tooltip: '',\n// command: 909021,\n// },\n// ]\n\n// const statusBarItemsRight = []\n\nexport const create = (statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = document.createElement('ul')\n $StatusBarItemsLeft.id = 'StatusBarItemsLeft'\n\n const $StatusBarItemsRight = document.createElement('ul')\n $StatusBarItemsRight.id = 'StatusBarItemsRight'\n\n const $StatusBar = Layout.state.$StatusBar\n $StatusBar.onclick = handleClick\n $StatusBar.tabIndex = 0\n $StatusBar.role = 'status'\n $StatusBar.ariaLive = 'off' // see https://github.com/microsoft/vscode/issues/94677\n $StatusBar.append($StatusBarItemsLeft, $StatusBarItemsRight)\n\n return {\n $StatusBar,\n $StatusBarItemsLeft,\n $StatusBarItemsRight,\n }\n}\n\nconst clearNode = (node) => {\n while (node.firstChild) {\n node.firstChild.remove()\n }\n}\n\nexport const setItems = (state, statusBarItemsLeft, statusBarItemsRight) => {\n const $StatusBarItemsLeft = state.$StatusBarItemsLeft\n const $StatusBarItemsRight = state.$StatusBarItemsRight\n clearNode($StatusBarItemsLeft)\n clearNode($StatusBarItemsRight)\n $StatusBarItemsLeft.append(...statusBarItemsLeft.map(create$StatusBarItem))\n $StatusBarItemsRight.append(...statusBarItemsRight.map(create$StatusBarItem))\n}\n\nexport const focus = (state) => {\n Assert.object(state)\n state.$StatusBar.focus()\n}\n", "import * as Layout from '../Layout/Layout.js'\n\nexport const create = () => {\n // TODO set aria label for title bar menu\n // TODO add tests for aria properties\n const $TitleBar = Layout.state.$TitleBar\n $TitleBar.ariaLabel = 'Title Bar'\n $TitleBar.role = 'contentinfo'\n return {\n $TitleBar,\n $Viewlet: $TitleBar,\n }\n}\n", "export const state = {\n editorStates: Object.create(null),\n}\n\nconst get$EditorFromEvent = (event) => {\n const $Target = event.target\n const $WantedTarget = $Target.closest('.Editor')\n return $WantedTarget\n}\n\nexport const getStateFromEvent = (event) => {\n const $Editor = get$EditorFromEvent(event)\n // TODO find more efficient way\n for (const [key, value] of Object.entries(state.editorStates)) {\n if (value.$Editor === $Editor) {\n return value\n }\n }\n return undefined\n}\n\nexport const getStateFromId = (id) => {\n return state.editorStates[id]\n}\n\nexport const setState = (id, editorState) => {\n state.editorStates[id] = editorState\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\n// TODO windows\nconst getFileName = (uri) => {\n return uri.slice(uri.lastIndexOf('/') + 1)\n}\n\nconst handleEditorTabsContextMenu = (event) => {\n event.preventDefault()\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* editorTabsHandleContextMenu */ 'Main.handleTabContextMenu',\n /* x */ x,\n /* y */ y\n )\n}\n\n/**\n * @param {MouseEvent} event\n */\nconst handleMouseDown = (event) => {\n event.preventDefault()\n const $Target = event.target\n console.log({ $Target })\n // TODO if middle click -> close tab\n // else if tab is not focused -> focus tab\n // else noop\n switch (event.button) {\n case MouseEventType.LeftClick:\n console.log('left click')\n break\n case MouseEventType.MiddleClick:\n RendererWorker.send(/* Main.closeEditor */ 'Main.closeFocusedEditor')\n break\n default:\n break\n }\n}\n\nexport const create = () => {\n const $EditorTabs = document.createElement('ul')\n $EditorTabs.className = 'EditorTabs'\n $EditorTabs.oncontextmenu = handleEditorTabsContextMenu\n $EditorTabs.onmousedown = handleMouseDown\n return $EditorTabs\n}\n\nconst create$Tab = () => {\n const $Tab = document.createElement('li')\n // @ts-ignore\n $Tab.role = 'tab'\n $Tab.className = 'EditorTab'\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n // Set aria-description to empty string so that screen readers don't read title as well\n // More details https://github.com/microsoft/vscode/issues/95378\n $Tab.setAttribute('aria-description', '')\n const $TabLabel = document.createElement('span')\n return $Tab\n}\n\nconst render$Tab = ($Tab, id, uri, languageId) => {\n const fileName = getFileName(uri)\n $Tab.textContent = fileName\n $Tab.title = uri\n $Tab.dataset.languageId = languageId\n $Tab.dataset.fileName = fileName\n}\n\n// const render$TabsLess = ($Tabs, tabs) => {\n// for (let i = 0; i < $Tabs.children.length; i++) {\n// render$Tab($Tabs.children[i], tabs[i])\n// }\n// const fragment = document.createDocumentFragment()\n// for (let i = $Tabs.children.length; i < tabs.length; i++) {\n// const $Tab = create$Tab()\n// render$Tab($Tab, tabs[i])\n// fragment.append($Tab)\n// }\n// $Tabs.append(fragment)\n// }\n\n// const render$TabsEqual = ($Tabs, tabs) => {\n// for (let i = 0; i < tabs.length; i++) {\n// render$Tab($Tabs.children[i], tabs[i])\n// }\n// }\n\n// const render$TabsMore = ($Tabs, tabs) => {\n// for (let i = 0; i < tabs.length; i++) {\n// render$Tab($Tabs.children[i], tabs[i])\n// }\n// const diff = $Tabs.children.length - tabs.length\n// for (let i = 0; i < diff; i++) {\n// $Tabs.lastChild.remove()\n// }\n// }\n\n// const render$Tabs = ($Tabs, tabs) => {\n// if ($Tabs.children.length < tabs.length) {\n// render$TabsLess($Tabs, tabs)\n// } else if ($Tabs.children.length === tabs.length) {\n// render$TabsEqual($Tabs, tabs)\n// } else {\n// render$TabsMore($Tabs, tabs)\n// }\n// }\n\n// export const setTabs = (state, tabs) => {\n// render$Tabs(state.$EditorTabs, tabs)\n// }\n\nexport const addOne = ($EditorTabs, id, uri, languageId) => {\n const $EditorTab = create$Tab()\n render$Tab($EditorTab, id, uri, languageId)\n $EditorTabs.append($EditorTab)\n}\n\n// TODO should pass index as well\nexport const replaceOne = ($EditorTabs, id, uri, languageId) => {\n render$Tab($EditorTabs.firstChild, id, uri, languageId)\n}\n\nexport const removeOne = ($EditorTabs, index) => {\n $EditorTabs.firstChild.remove()\n // const $EditorTab = $EditorTabs.children[index]\n // $EditorTab.remove()\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorHelper from '../Editor/EditorHelper.js'\nimport * as EditorTabs from '../EditorTab/EditorTab.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleEditorTabsContextMenu = (event) => {\n event.preventDefault()\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* editorTabsHandleContextMenu */ 'Main.handleTabContextMenu',\n /* x */ x,\n /* y */ y\n )\n}\n\nexport const create = () => {\n const $EditorTabs = EditorTabs.create()\n\n const $Editors = document.createElement('div')\n $Editors.className = 'Editors'\n\n // TODO create should not have side effect of mounting\n // TODO this causes 2 times layout (when also calling add after)\n Layout.state.$Main.append($EditorTabs, $Editors)\n return {\n $EditorTabs,\n $Editors,\n }\n}\n\nexport const addOne = (state, id, uri, languageId) => {\n EditorTabs.addOne(state.$EditorTabs, id, uri, languageId)\n // const $Editor = EditorController.create(id)\n // const $EditorTab = EditorTabsController.create(id, uri, languageId)\n // TODO should call addOne as well\n const editorState = Editor.create()\n EditorHelper.setState(id, editorState)\n Editor.mount(editorState, state.$Editors)\n return editorState\n}\n\nexport const replaceOne = (state, id, uri, languageId) => {\n console.log('replace one')\n EditorTabs.addOne(state.$EditorTabs, id, uri, languageId)\n}\n\n// TODO remove single tab\nexport const removeOne = (state, index) => {\n // EditorTabs.removeOne(state.$EditorTabs, index)\n // Editor.removeOne(state.$Editors, index)\n state.$Editors.remove()\n state.$EditorTabs.remove()\n}\n", "import * as EditorGroup from '../EditorGroup/EditorGroup.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\nexport const handleDragOver = (event) => {\n event.preventDefault()\n Layout.state.$Main.classList.add('DropTarget')\n}\n\nexport const handleDrop = async (event) => {\n console.log('[main] drop')\n event.preventDefault()\n Layout.state.$Main.classList.remove('DropTarget')\n RendererWorker.send(/* handleDrop */ 'Main.handleDrop')\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'EditorTabCloseButton':\n return getNodeIndex($Target.parentNode)\n case 'MainTab':\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleTabCloseButtonMouseDown = (event, index) => {\n RendererWorker.send(\n /* Main.closeEditor */ 'Main.closeEditor',\n /* index */ index\n )\n}\n\nexport const handleTabMouseDown = (event, index) => {\n switch (event.button) {\n case MouseEventType.LeftClick:\n RendererWorker.send(\n /* Main.handleTabClick */ 'Main.handleTabClick',\n /* index */ index\n )\n break\n case MouseEventType.MiddleClick:\n RendererWorker.send(\n /* Main.closeEditor */ 'Main.closeEditor',\n /* index */ index\n )\n break\n case MouseEventType.RightClick:\n break\n default:\n break\n }\n}\n\nexport const handleTabsMouseDown = (event) => {\n const $Target = event.target\n const index = getIndex($Target)\n if (index === -1) {\n return\n }\n event.preventDefault()\n switch ($Target.className) {\n case 'EditorTabCloseButton':\n handleTabCloseButtonMouseDown(event, index)\n break\n case 'MainTab':\n handleTabMouseDown(event, index)\n break\n default:\n break\n }\n}\n\nexport const handleTabsContextMenu = (event) => {\n const $Target = event.target\n const index = getIndex($Target)\n if (index === -1) {\n return\n }\n event.preventDefault()\n const x = event.clientX\n const y = event.clientY\n RendererWorker.send(\n /* Main.handleTabContextMenu */ 'Main.handleTabContextMenu',\n /* index */ index,\n /* x */ x,\n /* y */ y\n )\n}\n", "import * as EditorGroup from '../EditorGroup/EditorGroup.js'\nimport * as Layout from '../Layout/Layout.js'\nimport * as ViewletMainEvents from './ViewletMainEvents.js'\n\nconst create$MainTabs = () => {\n const $MainTabs = document.createElement('div')\n $MainTabs.className = 'MainTabs'\n // @ts-ignore\n $MainTabs.role = 'tablist'\n $MainTabs.onmousedown = ViewletMainEvents.handleTabsMouseDown\n $MainTabs.oncontextmenu = ViewletMainEvents.handleTabsContextMenu\n // TODO race condition: what if tab has already been closed?\n return $MainTabs\n}\n\n// TODO Main should not be bound to Editor -> Lazy load Editor\nexport const create = () => {\n const $Main = Layout.state.$Main\n $Main.ondrop = ViewletMainEvents.handleDrop\n $Main.ondragover = ViewletMainEvents.handleDragOver\n\n // const $MainContent = document.createElement('div')\n // $MainContent.id = 'MainContent'\n\n // const $MainTabs = document.createElement('div')\n // $MainTabs.className = 'MainTabs'\n // $MainTabs.onmousedown = handleTabsMouseDown\n // $MainTabs.oncontextmenu = handleTabsContextMenu\n // // TODO race condition: what if tab has already been closed?\n // $Main.append($MainTabs, $MainContent)\n\n return {\n $Viewlet: $Main,\n $Main,\n $MainContent: undefined,\n $MainTabs: undefined,\n }\n}\n\nexport const dispose = (state) => {\n console.log(state)\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const replaceEditor = (state, id, uri, languageId) => {\n EditorGroup.replaceOne(state.editorGroup, id, uri, languageId)\n}\n\nexport const addEditor = (state, id, uri, languageId) => {\n EditorGroup.addOne(state.editorGroup, id, uri, languageId)\n}\n\n// TODO there are 3 cases\n// 1. no editor group and no editor\n// 2. editor group exists and new editor should be added\n// 3. editor group exists and editor should be replaced\nexport const openEditor = async (state, id, uri, languageId) => {\n console.log('open editor', id, uri, languageId)\n state.editorGroup = EditorGroup.create()\n state.activeEditorState = EditorGroup.addOne(\n state.editorGroup,\n id,\n uri,\n languageId\n )\n}\n\nexport const closeAllViewlets = (state) => {\n const $Main = Layout.state.$Main\n while ($Main.firstChild) {\n $Main.firstChild.remove()\n }\n state.$MainContent = undefined\n state.$MainTabs = undefined\n}\n\nexport const closeViewletAndTab = (state, index) => {\n state.$MainContent.remove()\n state.$MainContent = undefined\n state.$MainTabs.remove()\n state.$MainTabs = undefined\n}\n\nexport const focus = () => {\n console.log('todo focus main')\n}\n\nexport const openViewlet = (state, tabLabel, tabTitle, oldActiveIndex) => {\n const $Tab = document.createElement('div')\n $Tab.className = 'MainTab'\n $Tab.textContent = tabLabel\n $Tab.title = tabTitle\n $Tab.ariaSelected = 'true'\n // @ts-ignore\n $Tab.role = 'tab'\n\n const $TabCloseButton = document.createElement('button')\n $TabCloseButton.className = 'EditorTabCloseButton'\n $TabCloseButton.ariaLabel = 'Close'\n $TabCloseButton.title = ''\n $Tab.append($TabCloseButton)\n\n if (oldActiveIndex !== -1 && state.$MainTabs) {\n const $OldTab = state.$MainTabs.children[oldActiveIndex]\n if ($OldTab) {\n $OldTab.ariaSelected = 'false'\n }\n }\n\n if (!state.$MainTabs) {\n state.$MainTabs = create$MainTabs()\n state.$Main.append(state.$MainTabs)\n }\n\n state.$MainTabs.append($Tab)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\nconst create$MainContent = () => {\n const $MainContent = document.createElement('div')\n $MainContent.id = 'MainContent'\n return $MainContent\n}\n\nexport const appendViewlet = (state, childName, $Child) => {\n if (!state.$MainContent) {\n state.$MainContent = create$MainContent()\n state.$Main.append(state.$MainContent)\n }\n // TODO should bring back old optimization of reusing existing editor dom nodes if possible\n while (state.$MainContent.firstChild) {\n state.$MainContent.firstChild.remove()\n }\n state.$MainContent.append($Child)\n\n // await Viewlet.load(id)\n // const instance = Viewlet.state.instances[id]\n // // TODO race condition: what if tab has already been closed?\n // Viewlet.mount(state.$MainContent, instance.state)\n // Viewlet.focus(id)\n // Layout.state.$Main.append(state.$MainTabs, state.$MainContent)\n}\n\n// TODO when there is not enough space available, only show tab close button\n// for focused tab (that's how chrome and firefox do it)\nexport const openAnotherTab = async (\n state,\n tabLabel,\n tabTitle,\n unFocusIndex\n) => {\n const $Tab = document.createElement('div')\n $Tab.className = 'MainTab'\n $Tab.textContent = tabLabel\n $Tab.title = tabTitle\n $Tab.ariaSelected = 'true'\n // @ts-ignore\n $Tab.role = 'tab'\n $Tab.tabIndex = 0\n const $TabCloseButton = document.createElement('button')\n $TabCloseButton.className = 'EditorTabCloseButton'\n $TabCloseButton.ariaLabel = 'Close'\n $Tab.append($TabCloseButton)\n state.$MainTabs.children[unFocusIndex].ariaSelected = 'false'\n state.$MainTabs.append($Tab)\n}\n\nexport const closeOneTab = (state, closeIndex, focusIndex) => {\n state.$MainTabs.children[closeIndex].remove()\n state.$MainTabs.children[focusIndex].ariaSelected = 'true'\n}\n\nexport const closeOneTabOnly = (state, closeIndex) => {\n state.$MainTabs.children[closeIndex].remove()\n}\n\nexport const focusAnotherTab = (state, unFocusIndex, focusIndex) => {\n state.$MainTabs.children[unFocusIndex].ariaSelected = 'false'\n state.$MainTabs.children[focusIndex].ariaSelected = 'true'\n}\n\nexport const closeOthers = (state, keepIndex, focusIndex) => {\n for (let i = state.$MainTabs.children.length - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n if (i === keepIndex) {\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n } else {\n $Tab.remove()\n }\n }\n}\n\nexport const closeTabsRight = (state, index) => {\n for (let i = state.$MainTabs.children.length - 1; i > index; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[index]\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n}\n\nexport const closeTabsLeft = (state, index) => {\n for (let i = index - 1; i >= 0; i--) {\n const $Tab = state.$MainTabs.children[i]\n $Tab.remove()\n }\n const $Tab = state.$MainTabs.children[0]\n $Tab.ariaSelected = 'true'\n $Tab.tabIndex = 0\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n if ($Target.classList.contains('EditorCompletionItem')) {\n return getNodeIndex($Target)\n }\n return -1\n}\n\nexport const handleMousedown = (event) => {\n event.preventDefault()\n const $Target = event.target\n const index = getIndex($Target)\n if (index === -1) {\n return\n }\n RendererWorker.send(\n /* ViewletEditorCompletion.selectIndex */ 'EditorCompletion.selectIndex',\n /* index */ index\n )\n}\n\nexport const handleWheel = (event) => {\n switch (event.deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* EditorCompletion.handleWheel */ 'EditorCompletion.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* EditorCompletion.handleWheel */ 'EditorCompletion.handleWheel',\n /* deltaY */ event.deltaY\n )\n break\n default:\n break\n }\n}\n", "import * as Focus from '../Focus/Focus.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as ViewletEditorCompletionEvents from './ViewletEditorCompletionEvents.js'\n\nexport const name = 'EditorCompletion'\n\nconst create$CompletionItem = (item, index) => {\n const $CompletionItemText = document.createElement('div')\n $CompletionItemText.className = 'Label'\n $CompletionItemText.textContent = item.label\n\n const $Icon = document.createElement('div')\n $Icon.className = 'ColoredMaskIcon'\n $Icon.style.webkitMaskImage = `url('${item.icon}')`\n\n const $CompletionItem = document.createElement('div')\n // @ts-ignore\n $CompletionItem.role = 'option'\n $CompletionItem.id = `CompletionItem-${index}`\n $CompletionItem.className = `EditorCompletionItem`\n $CompletionItem.append($Icon, $CompletionItemText)\n return $CompletionItem\n}\n\nexport const create = () => {\n // TODO recycle nodes\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = name\n $Viewlet.id = 'Completions'\n // @ts-ignore\n $Viewlet.role = 'listbox'\n $Viewlet.ariaLabel = 'Suggest'\n $Viewlet.onmousedown = ViewletEditorCompletionEvents.handleMousedown\n $Viewlet.addEventListener(\n 'wheel',\n ViewletEditorCompletionEvents.handleWheel,\n {\n passive: true,\n }\n )\n return {\n $Viewlet,\n }\n}\n\n// TODO show should be passed active cursor position\n// this would make this function easier to test as it would avoid dependency on globals of other files\n\nexport const setItems = (state, items, reason, focusedIndex) => {\n console.log('COMPLETION SHOW', items)\n const { $Viewlet } = state\n Focus.setAdditionalFocus('editorCompletions')\n if (items.length === 0) {\n if (reason === /* automatically */ 0) {\n return\n }\n $Viewlet.textContent = 'No Results'\n Widget.append($Viewlet)\n return\n }\n // TODO recycle nodes\n $Viewlet.replaceChildren(...items.map(create$CompletionItem))\n Widget.append($Viewlet)\n setFocusedIndex(state, 0, 0)\n // TODO set right aria attributes on $EditorInput\n}\n\nexport const dispose = (state) => {\n Widget.remove(state.$Viewlet)\n // state.$EditorInput.removeAttribute('aria-activedescendant')\n Focus.removeAdditionalFocus('editorCompletions')\n}\n\n// TODO should pass maybe oldIndex to be removed\n// but keeping $ActiveItem in state also works\nexport const setFocusedIndex = (state, oldIndex, newIndex) => {\n const $Viewlet = state.$Viewlet\n if (oldIndex !== -1) {\n const $OldItem = $Viewlet.children[oldIndex]\n $OldItem.classList.remove('Focused')\n }\n if (newIndex !== -1) {\n const $NewItem = $Viewlet.children[newIndex]\n $NewItem.classList.add('Focused')\n }\n Focus.setAdditionalFocus('editorCompletions')\n // state.$EditorInput.setAttribute('aria-activedescendant', $NewItem.id) // TODO use idl once supported\n}\n\nexport const showLoading = (state, x, y) => {\n const { $Viewlet } = state\n $Viewlet.style.transform = `translate(${x}px, ${y}px)`\n const $Loading = document.createElement('div')\n $Loading.textContent = 'Loading'\n $Viewlet.append($Loading)\n Widget.append($Viewlet)\n Focus.setAdditionalFocus('editorCompletions')\n}\n\nexport const handleError = (state, error) => {\n const { $Viewlet } = state\n $Viewlet.textContent = `${error}`\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as MouseEventType from '../MouseEventType/MouseEventType.js'\n\nexport const name = 'Locations'\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst handleLocationsMouseDown = (event) => {\n if (event.button !== MouseEventType.LeftClick) {\n return\n }\n const $Target = event.target\n if ($Target.classList.contains('TreeItem')) {\n const index = getNodeIndex($Target)\n RendererWorker.send(\n /* ViewletLocations.selectIndex */ 'Locations.selectIndex',\n /* index */ index\n )\n } else if ($Target.classList.contains('LocationList')) {\n RendererWorker.send(\n /* ViewletLocations.focusIndex */ 'Locations.focusIndex',\n /* index */ -1\n )\n }\n}\n\nexport const create = () => {\n const $Message = document.createElement('div')\n $Message.className = 'LocationsMessage'\n $Message.id = 'LocationsMessage'\n // @ts-ignore\n $Message.role = 'status'\n const $Locations = document.createElement('div')\n $Locations.className = 'LocationList'\n // @ts-ignore\n $Locations.role = 'tree'\n $Locations.ariaLabel = 'Locations'\n $Locations.tabIndex = 0\n $Locations.onmousedown = handleLocationsMouseDown\n $Locations.setAttribute('aria-described-by', 'LocationsMessage')\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'Locations' // TODO\n $Viewlet.append($Message, $Locations)\n return {\n $Viewlet,\n $Message,\n $Locations,\n }\n}\n\nconst create$Location = () => {\n // TODO reuse logic from tree view\n const $Location = document.createElement('div')\n $Location.className = 'TreeItem'\n // @ts-ignore\n $Location.role = 'treeitem'\n return $Location\n}\n\nconst render$Location = ($Location, location) => {\n console.log({ reference: location })\n switch (location.type) {\n case 'leaf':\n $Location.className = 'TreeItem'\n $Location.textContent = location.lineText || '(empty line)'\n $Location.ariaExpanded = undefined\n $Location.id = `Reference-${location.index}`\n break\n case 'collapsed':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.textContent = location.name\n $Location.ariaExpanded = false\n $Location.id = `Reference-${location.index}`\n case 'expanded':\n $Location.className = `TreeItem Icon${location.icon}`\n $Location.ariaExpanded = true\n $Location.textContent = location.name\n $Location.id = `Reference-${location.index}`\n default:\n break\n }\n\n // TODO\n}\n\nconst render$Locations = ($Locations, locations) => {\n $Locations.textContent = ''\n const fragment = document.createDocumentFragment()\n for (const location of locations) {\n const $Location = create$Location()\n render$Location($Location, location)\n fragment.append($Location)\n }\n $Locations.append(fragment)\n}\n\nexport const setLocations = (state, locations) => {\n const { $Locations } = state\n render$Locations($Locations, locations)\n}\n\nexport const setMessage = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const setFocusedIndex = (state, oldFocusedIndex, newFocusedIndex) => {\n const { $Locations } = state\n if (oldFocusedIndex === -1) {\n $Locations.classList.remove('FocusOutline')\n } else {\n $Locations.children[oldFocusedIndex].classList.remove('Focused')\n }\n if (newFocusedIndex === -1) {\n $Locations.classList.add('FocusOutline')\n } else {\n $Locations.setAttribute(\n 'aria-activedescendant',\n `Reference-${newFocusedIndex}`\n )\n $Locations.children[newFocusedIndex].classList.add('Focused')\n }\n}\n\nexport const handleError = (state, message) => {\n const { $Message } = state\n $Message.textContent = message\n}\n\nexport const focus = (state) => {\n const { $Locations } = state\n $Locations.classList.add('FocusOutline')\n $Locations.focus()\n Focus.setFocus('locationList')\n}\n", "export * from '../ViewletLocations/ViewletLocations.js'\n\nexport const name = 'References'\n", "export * from '../ViewletLocations/ViewletLocations.js'\n\nexport const name = 'Implementations'\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const name = 'EditorPlainText'\n\nexport const create = () => {\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'EditorText'\n $Viewlet.textContent = 'loading...'\n return {\n $Viewlet,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const refresh = (state, context) => {\n Assert.object(state)\n Assert.string(context.content)\n state.$Viewlet.textContent = context.content\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as WheelEventType from '../WheelEventType/WheelEventType.js'\n\nexport const handleInput = (event) => {\n const $Target = event.target\n const value = $Target.value\n RendererWorker.send('KeyBindings.handleInput', value)\n}\n\nexport const handleWheel = (event) => {\n const { deltaMode, deltaY } = event\n switch (deltaMode) {\n case WheelEventType.DomDeltaLine:\n RendererWorker.send(\n /* ViewletKeyBindings.handleWheel */ 'KeyBindings.handleWheel',\n /* deltaY */ deltaY\n )\n break\n case WheelEventType.DomDeltaPixel:\n RendererWorker.send(\n /* ViewletKeyBindings.handleWheel */ 'KeyBindings.handleWheel',\n /* deltaY */ deltaY\n )\n break\n default:\n break\n }\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", "export const H1 = 'h1'\nexport const Div = 'div'\nexport const Kbd = 'kbd'\nexport const Table = 'table'\nexport const TBody = 'tbody'\nexport const THead = 'thead'\nexport const Td = 'td'\nexport const Th = 'th'\nexport const Tr = 'tr'\nexport const Input = 'input'\n", "import * as ElementTag from '../ElementTags/ElementTags.js'\nimport * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nexport const getElementTag = (type) => {\n switch (type) {\n case VirtualDomElements.H1:\n return ElementTag.H1\n case VirtualDomElements.Div:\n return ElementTag.Div\n case VirtualDomElements.Kbd:\n return ElementTag.Kbd\n case VirtualDomElements.Table:\n return ElementTag.Table\n case VirtualDomElements.TBody:\n return ElementTag.TBody\n case VirtualDomElements.Th:\n return ElementTag.Th\n case VirtualDomElements.Td:\n return ElementTag.Td\n case VirtualDomElements.THead:\n return ElementTag.THead\n case VirtualDomElements.Tr:\n return ElementTag.Tr\n case VirtualDomElements.Input:\n return ElementTag.Input\n default:\n throw new Error(`element tag not found ${type}`)\n }\n}\n", "import * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\nimport * as ElementTagMap from '../ElementTagMap/ElementTagMap.js'\n\nconst renderDomTextNode = (element) => {\n return document.createTextNode(element.props.text)\n}\n\nconst setProps = ($Element, props) => {\n for (const key in props) {\n $Element[key] = props[key]\n }\n}\n\nconst renderDomElement = (element) => {\n const { type, props } = element\n const tag = ElementTagMap.getElementTag(type)\n const $Element = document.createElement(tag)\n setProps($Element, props)\n return $Element\n}\n\nexport const render = (element) => {\n switch (element.type) {\n case VirtualDomElements.Text:\n return renderDomTextNode(element)\n default:\n return renderDomElement(element)\n }\n}\n", "import * as VirtualDomElement from '../VirtualDomElement/VirtualDomElement.js'\n\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const renderInternal = ($Parent, elements) => {\n const max = elements.length - 1\n let stack = []\n for (let i = max; i >= 0; i--) {\n const element = elements[i]\n const $Element = VirtualDomElement.render(element)\n if (element.childCount > 0) {\n $Element.append(...stack.slice(0, element.childCount))\n stack = stack.slice(element.childCount)\n }\n stack.unshift($Element)\n }\n $Parent.append(...stack)\n}\n/**\n *\n * @param {any[]} elements\n * @returns\n */\nexport const render = (elements) => {\n const $Root = document.createElement('div')\n renderInternal($Root, elements)\n return $Root\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletkeyBindingsEvents from './ViewletKeyBindingsEvents.js'\nimport * as VirtualDom from '../VirtualDom/VirtualDom.js'\n\nexport const name = 'KeyBindings'\n\nexport const create = () => {\n const $InputBox = InputBox.create()\n $InputBox.type = 'search'\n $InputBox.placeholder = 'Search Key Bindings' // TODO placeholder string should come from renderer worker\n // @ts-ignore\n $InputBox.ariaDescription = 'Results will update as you type'\n $InputBox.oninput = ViewletkeyBindingsEvents.handleInput\n\n const $KeyBindingsHeader = document.createElement('div')\n $KeyBindingsHeader.className = 'KeyBindingsHeader'\n $KeyBindingsHeader.append($InputBox)\n\n const $KeyBindingsTableWrapper = document.createElement('div')\n $KeyBindingsTableWrapper.className = 'KeyBindingsTableWrapper'\n $KeyBindingsTableWrapper.addEventListener(\n 'wheel',\n ViewletkeyBindingsEvents.handleWheel,\n { passive: true }\n )\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'KeyBindings'\n $Viewlet.append($KeyBindingsHeader, $KeyBindingsTableWrapper)\n\n return {\n $Viewlet,\n $InputBox,\n $KeyBindingsHeader,\n $KeyBindingsTableWrapper,\n }\n}\n\nexport const setTableDom = (state, dom) => {\n const { $KeyBindingsTableWrapper } = state\n // console.log(dom)\n const $Root = VirtualDom.render(dom)\n $KeyBindingsTableWrapper.replaceChildren($Root.firstChild)\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleInput = (event) => {\n const { target } = event\n const { value } = target\n RendererWorker.send('EditorFindWidget.handleInput', value)\n}\n\nconst handleClickClose = (event) => {\n event.preventDefault()\n RendererWorker.send('Viewlet.closeWidget', 'EditorFindWidget')\n}\n\nconst handleClickPreviousMatch = (event) => {\n event.preventDefault()\n RendererWorker.send('EditorFindWidget.focusPrevious')\n}\n\nconst handleClickNextMatch = (event) => {\n event.preventDefault()\n RendererWorker.send('EditorFindWidget.focusNext')\n}\n\nexport const handleClick = (event) => {\n const { target } = event\n const { title } = target\n switch (title) {\n case 'Close':\n handleClickClose(event)\n break\n case 'Previous Match':\n handleClickPreviousMatch(event)\n break\n case 'Next Match':\n handleClickNextMatch(event)\n break\n default:\n break\n }\n}\n", "import * as InputBox from '../InputBox/InputBox.js'\nimport * as ViewletEditorFindWidgetEvents from './ViewletEditorFindWidgetEvents.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as Icon from '../Icon/Icon.js'\n\nexport const name = 'EditorFindWidget'\n\nconst UiStrings = {\n Close: 'Close',\n PreviousMatch: 'Previous Match',\n NextMatch: 'Next Match',\n}\n\nconst create$Button = (label, icon) => {\n const $Icon = document.createElement('div')\n $Icon.className = 'MaskIcon'\n $Icon.style.webkitMaskImage = `url('${icon}')`\n // @ts-ignore\n $Icon.role = 'none'\n\n const $Button = document.createElement('div')\n // @ts-ignore\n $Button.role = 'button'\n $Button.ariaLabel = label\n $Button.title = label\n $Button.tabIndex = 0\n $Button.className = `EditorFindWidgetButton`\n $Button.append($Icon)\n return $Button\n}\n\nexport const create = () => {\n // TODO recycle nodes\n const $InputBox = InputBox.create()\n $InputBox.oninput = ViewletEditorFindWidgetEvents.handleInput\n $InputBox.ariaLabel = 'Find'\n\n const $MatchCountText = document.createTextNode('')\n const $MatchCount = document.createElement('div')\n $MatchCount.className = 'EditorFindWidgetMatchCount'\n $MatchCount.append($MatchCountText)\n\n const $ButtonFocusNext = create$Button(UiStrings.NextMatch, Icon.NextMatch)\n const $ButtonFocusPrevious = create$Button(\n UiStrings.PreviousMatch,\n Icon.PreviousMatch\n )\n const $ButtonClose = create$Button(UiStrings.Close, Icon.Close)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.onclick = ViewletEditorFindWidgetEvents.handleClick\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'EditorFindWidget'\n $Viewlet.append(\n $InputBox,\n $MatchCount,\n $ButtonFocusPrevious,\n $ButtonFocusNext,\n $ButtonClose\n )\n return {\n $Viewlet,\n $InputBox,\n $MatchCount,\n $MatchCountText,\n $ButtonClose,\n $ButtonFocusNext,\n $ButtonFocusPrevious,\n }\n}\n\nexport const focus = (state) => {\n const { $InputBox } = state\n $InputBox.focus()\n Focus.setFocus('EditorFindWidget')\n}\n\nexport const setValue = (state, value) => {\n const { $InputBox } = state\n $InputBox.value = value\n}\n\nexport const setMatchCountText = (state, value) => {\n const { $MatchCountText } = state\n $MatchCountText.nodeValue = value\n}\n\nexport const dispose = () => {}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const handleIconError = (event) => {\n RendererWorker.send('ExtensionDetail.handleIconError')\n}\n", "import * as ViewletExtensionDetailEvents from './ViewletExtensionDetailEvents.js'\n\nexport const name = 'ExtensionDetail'\n\nexport const create = () => {\n const $NameText = document.createTextNode('')\n\n const $ReadmeHtml = document.createElement('div')\n $ReadmeHtml.className = 'Markdown'\n // @ts-ignore\n $ReadmeHtml.role = 'document'\n\n const $ExtensionDetailIcon = document.createElement('img')\n $ExtensionDetailIcon.className = 'ExtensionDetailIcon'\n $ExtensionDetailIcon.alt = ''\n $ExtensionDetailIcon.draggable = false\n $ExtensionDetailIcon.onerror = ViewletExtensionDetailEvents.handleIconError\n\n const $Name = document.createElement('h3')\n $Name.className = 'ExtensionDetailName'\n $Name.append($NameText)\n\n const $Description = document.createElement('div')\n $Description.className = 'ExtensionDetailDescription'\n\n const $ExtensionDetailHeaderDetails = document.createElement('div')\n $ExtensionDetailHeaderDetails.className = 'ExtensionDetailHeaderDetails'\n $ExtensionDetailHeaderDetails.append($Name, $Description)\n\n const $ExtensionDetailHeader = document.createElement('div')\n $ExtensionDetailHeader.className = 'ExtensionDetailHeader'\n $ExtensionDetailHeader.append(\n $ExtensionDetailIcon,\n $ExtensionDetailHeaderDetails\n )\n\n const $ExtensionDetailMain = document.createElement('div')\n $ExtensionDetailMain.className = 'ExtensionDetailMain'\n $ExtensionDetailMain.append($ExtensionDetailHeader, $ReadmeHtml)\n\n const $Viewlet = document.createElement('div')\n $Viewlet.className = 'Viewlet'\n $Viewlet.dataset.viewletId = 'ExtensionDetail'\n $Viewlet.append($ExtensionDetailMain)\n return {\n $Viewlet,\n $Name,\n $NameText,\n $ReadmeHtml,\n $ExtensionDetailIcon,\n $Description,\n }\n}\n\nexport const setName = (state, name) => {\n const { $NameText } = state\n $NameText.nodeValue = name\n}\n\nexport const setReadmeHtml = (state, sanitizedHtml) => {\n const { $ReadmeHtml } = state\n $ReadmeHtml.innerHTML = sanitizedHtml\n}\n\nexport const setIconSrc = (state, src) => {\n const { $ExtensionDetailIcon } = state\n // TODO handle error and load fallback icon\n $ExtensionDetailIcon.src = src\n}\n\nexport const setDescription = (state, description) => {\n const { $Description } = state\n $Description.textContent = description\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nconst handleClickMinmize = () => {\n RendererWorker.send('TitleBarButtons.handleClickMinimize')\n}\n\nconst handleClickToggleMaximize = () => {\n RendererWorker.send('TitleBarButtons.handleClickToggleMaximize')\n}\n\nconst handleClickClose = () => {\n RendererWorker.send('TitleBarButtons.handleClickClose')\n}\n\n/**\n *\n * @param {MouseEvent} event\n */\nexport const handleTitleBarButtonsClick = (event) => {\n const { target } = event\n // @ts-ignore\n const { id } = target\n switch (id) {\n case 'TitleBarButtonMinimize':\n handleClickMinmize()\n break\n case 'TitleBarButtonToggleMaximize':\n handleClickToggleMaximize()\n break\n case 'TitleBarButtonClose':\n handleClickClose()\n break\n default:\n break\n }\n}\n", "import * as ViewletTitleBarButtonEvents from './ViewletTitleBarButtonsEvents.js'\n\nexport const name = 'TitleBarButtons'\n\nconst create$TitleBarButton = (id, icon, label) => {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon${icon}`\n\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${id}`\n $TitleBarButton.ariaLabel = label\n $TitleBarButton.append($Icon)\n return $TitleBarButton\n}\n\nexport const create = () => {\n const $ButtonMinimize = create$TitleBarButton(\n 'Minimize',\n 'Minimize',\n 'Minimize'\n )\n const $ButtonToggleMaximize = create$TitleBarButton(\n 'ToggleMaximize',\n 'ToggleMaximize',\n 'Toggle Maximize'\n )\n const $ButtonClose = create$TitleBarButton('Close', 'Close', 'Close')\n\n const $TitleBarButtons = document.createElement('div')\n $TitleBarButtons.id = 'TitleBarButtons'\n $TitleBarButtons.onmousedown =\n ViewletTitleBarButtonEvents.handleTitleBarButtonsClick\n $TitleBarButtons.append($ButtonMinimize, $ButtonToggleMaximize, $ButtonClose)\n return {\n $TitleBarButtons,\n $Viewlet: $TitleBarButtons,\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const setButtons = (state, buttons) => {\n const { $TitleBarButtons } = state\n for (const button of buttons) {\n const $Icon = document.createElement('i')\n $Icon.className = `MaskIcon${button.icon}`\n const $TitleBarButton = document.createElement('button')\n $TitleBarButton.className = 'TitleBarButton'\n $TitleBarButton.id = `TitleBarButton${button.id}`\n $TitleBarButton.ariaLabel = button.label\n $TitleBarButton.append($Icon)\n $TitleBarButtons.append($TitleBarButton)\n }\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\nimport * as MouseEventTypes from '../MouseEventType/MouseEventType.js'\nimport * as Focus from '../Focus/Focus.js'\nimport * as FindIndex from '../../shared/findIndex.js'\n\nconst isInsideTitleBarMenu = ($Element) => {\n return (\n $Element.classList.contains('MenuItem') ||\n $Element.classList.contains('Menu') ||\n $Element.classList.contains('TitleBarTopLevelEntry')\n )\n}\n\nexport const handleFocusOut = (event) => {\n const $ActiveElement = event.relatedTarget\n if ($ActiveElement && isInsideTitleBarMenu($ActiveElement)) {\n return\n }\n RendererWorker.send(\n /* TitleBarMenuBar.closeMenu */ 'TitleBarMenuBar.closeMenu',\n /* keepFocus */ false\n )\n}\n\nexport const handleMouseOver = (event) => {\n const { target, clientX, clientY } = event\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n RendererWorker.send(\n /* TitleBarMenuBar.focusIndex */ 'TitleBarMenuBar.handleMouseOver',\n /* index */ index,\n /* enterX */ clientX,\n /* enterY */ clientY\n )\n}\n\nconst getNodeIndex = ($Node) => {\n let index = 0\n while (($Node = $Node.previousElementSibling)) {\n index++\n }\n return index\n}\n\nconst getIndex = ($Target) => {\n switch ($Target.className) {\n case 'TitleBarTopLevelEntry':\n return getNodeIndex($Target)\n default:\n return -1\n }\n}\n\nexport const handleClick = (event) => {\n const { button, target } = event\n if (button !== MouseEventTypes.LeftClick) {\n return\n }\n const index = getIndex(target)\n if (index === -1) {\n return\n }\n // event.preventDefault()\n RendererWorker.send(\n /* TitleBarMenuBar.toggleIndex */ 'TitleBarMenuBar.toggleIndex',\n /* index */ index\n )\n}\n\nconst getLevelAndIndex = (event) => {\n const { target } = event\n const $Menu = target.closest('.Menu')\n const index = FindIndex.findIndex($Menu, target)\n const { id } = $Menu\n const level = parseInt(id.slice(5))\n return {\n level,\n index,\n }\n}\n\nexport const handleMenuMouseOver = (event) => {\n const { level, index } = getLevelAndIndex(event)\n RendererWorker.send(\n /* TitleBarMenuBar.handleMenuMouseOver */ 'TitleBarMenuBar.handleMenuMouseOver',\n /* level */ level,\n /* index */ index\n )\n}\n\nexport const handleMenuMouseDown = (event) => {\n const { level, index } = getLevelAndIndex(event)\n RendererWorker.send(\n /* TitleBarMenuBar.handleMenuMouseDown */ 'TitleBarMenuBar.handleMenuMouseDown',\n /* level */ level,\n /* index */ index\n )\n}\n\nexport const handleFocus = () => {\n Focus.setFocus('TitleBarMenuBar')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletTitleBarMenuBarEvents from './ViewletTitleBarMenuBarEvents.js'\nimport * as Menu from '../OldMenu/Menu.js'\nimport * as Widget from '../Widget/Widget.js'\nimport * as MenuItem from '../MenuItem/MenuItem.js'\n\nconst activeId = 'TitleBarEntryActive'\n\nexport const create = () => {\n const $TitleBarMenuBar = document.createElement('div')\n $TitleBarMenuBar.id = 'TitleBarMenuBar'\n // @ts-ignore\n $TitleBarMenuBar.role = 'menubar'\n $TitleBarMenuBar.tabIndex = 0\n $TitleBarMenuBar.onmousedown = ViewletTitleBarMenuBarEvents.handleClick\n $TitleBarMenuBar.addEventListener(\n 'focusout',\n ViewletTitleBarMenuBarEvents.handleFocusOut\n )\n $TitleBarMenuBar.addEventListener(\n 'focusin',\n ViewletTitleBarMenuBarEvents.handleFocus\n )\n $TitleBarMenuBar.onmouseover = ViewletTitleBarMenuBarEvents.handleMouseOver\n\n return {\n $Viewlet: $TitleBarMenuBar,\n $TitleBarMenuBar,\n $$Menus: [],\n }\n}\n\nexport const dispose = (state) => {}\n\nexport const focus = (state) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.firstChild.focus()\n}\n\n// TODO set proper tabIndex 0 to focused item https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-1/menubar-1.html\n\n// TODO screenreader doesn't read top level label\n// when menu is open,\n// first item is selected,\n// right is clicked it just reads\n// \"Expanded\" instead of \"Selection Expanded\"\n\n// TODO sometimes screenreader reads too much (e.g. \"File, expanded, opens menu, expanded\")\n\n// TODO don't focus on separators\n\n// TODO don't focus on hover\n// only focus on hover when it has already focus or the menu has focus\n\n// TODO title bar menu bar is very inefficient:\n\n// before: 5 times recalculate style\n// 1.37ms Recalculate style\n// 83us Update Layer tree\n// 0.34ms paint\n// 0.79ms composite layer\n// 0.23ms Hit test\n// 1.42ms Recalculate style\n// 1.44ms Recalculate style\n// 2.08ms Recalculate style\n// 0.44ms Recalculate style\n// 0.52ms Layout\n// 0.16ms Update Layer Tree\n// 48us hit test\n// 16us Update Layer Tree\n// 0.36ms paint\n// 0.33ms composite layer\n\n// now: 2 recalculate styles\n// 0.43ms recalculate style\n// 0.53ms recalculate style\n// 0.19ms layout\n// 0.16ms update layer tree\n// 30us hit test\n// 17us update layer tree\n// 0.17ms paint\n// 0.19ms composite layers\n\nconst create$TopLevelEntry = (item) => {\n const $TitleBarTopLevelEntry = document.createElement('div')\n $TitleBarTopLevelEntry.className = 'TitleBarTopLevelEntry'\n $TitleBarTopLevelEntry.ariaHasPopup = 'true'\n $TitleBarTopLevelEntry.ariaExpanded = 'false'\n // @ts-ignore\n $TitleBarTopLevelEntry.role = 'menuitem'\n if (item.keyboardShortCut) {\n $TitleBarTopLevelEntry.ariaKeyShortcuts = item.keyboardShortCut\n }\n $TitleBarTopLevelEntry.textContent = item.name\n return $TitleBarTopLevelEntry\n}\n\nexport const getMenuEntryBounds = (state, index) => {\n const { $TitleBarMenuBar } = state\n const $MenuEntry = $TitleBarMenuBar.children[index]\n const rect = $MenuEntry.getBoundingClientRect()\n return {\n left: rect.left,\n bottom: rect.bottom,\n }\n}\n\nexport const setFocusedIndex = (\n state,\n unFocusIndex,\n focusIndex,\n oldIsMenuOpen,\n newIsMenuOpen\n) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(focusIndex)\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[unFocusIndex]\n $Child.ariaExpanded = 'false'\n $Child.removeAttribute('aria-owns')\n $Child.removeAttribute('id')\n }\n if (focusIndex !== -1) {\n const $Child = $TitleBarMenuBar.children[focusIndex]\n $Child.id = activeId\n $TitleBarMenuBar.focus()\n $TitleBarMenuBar.setAttribute('aria-activedescendant', activeId)\n if (newIsMenuOpen) {\n $Child.setAttribute('aria-owns', 'Menu-0')\n $Child.ariaExpanded = 'true'\n }\n }\n}\n\n// TODO the focus variable is confusing: false means keep focus in menubar, true means focus the menu\nexport const openMenu = (\n state,\n unFocusIndex,\n index,\n level,\n menuItems,\n menuFocusedIndex,\n focus,\n x,\n y,\n width,\n height\n) => {\n Assert.object(state)\n Assert.number(unFocusIndex)\n Assert.number(index)\n Assert.number(level)\n Assert.array(menuItems)\n Assert.number(menuFocusedIndex)\n Assert.boolean(focus)\n Assert.number(x)\n Assert.number(y)\n Assert.number(width)\n Assert.number(height)\n const { $TitleBarMenuBar } = state\n // TODO this code is very unclean\n $TitleBarMenuBar.addEventListener(\n 'mouseenter',\n ViewletTitleBarMenuBarEvents.handleMouseOver,\n {\n capture: true,\n }\n )\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = 'false'\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute('aria-owns')\n }\n $TitleBarMenuBar.children[index].ariaExpanded = 'true'\n const $$Menus = Menu.state.$$Menus\n Menu.state.$$Menus = []\n Menu.showControlled({\n x,\n y,\n width,\n height,\n items: menuItems,\n handleFocusOut: ViewletTitleBarMenuBarEvents.handleFocusOut,\n $Parent: $TitleBarMenuBar.children[index],\n level,\n })\n if (menuFocusedIndex !== -1) {\n Menu.focusIndex(0, -1, menuFocusedIndex)\n }\n for (const $Menu of $$Menus) {\n Widget.remove($Menu)\n }\n}\n\n// TODO there need to be two variants of closeMenu: one just closes menu, another close menu and focuses top level entry\nexport const closeMenu = (state, unFocusIndex, index) => {\n const { $TitleBarMenuBar } = state\n if (unFocusIndex !== -1) {\n $TitleBarMenuBar.children[unFocusIndex].ariaExpanded = 'false'\n $TitleBarMenuBar.children[unFocusIndex].removeAttribute('aria-owns')\n }\n if (index !== -1) {\n $TitleBarMenuBar.children[index].focus()\n }\n Menu.hide(/* restoreFocus */ false)\n $TitleBarMenuBar.removeEventListener(\n 'mouseenter',\n ViewletTitleBarMenuBarEvents.handleMouseOver,\n {\n capture: true,\n }\n )\n}\n\nexport const setEntries = (state, titleBarEntries) => {\n const { $TitleBarMenuBar } = state\n $TitleBarMenuBar.append(...titleBarEntries.map(create$TopLevelEntry))\n}\n\nconst create$Menu = () => {\n const $Menu = document.createElement('div')\n $Menu.className = 'Menu'\n // @ts-ignore\n $Menu.role = 'menu'\n $Menu.tabIndex = -1\n // $ContextMenu.onmousedown = contextMenuHandleMouseDown\n // TODO mousedown vs click? (click is usually better but mousedown is faster, why wait 100ms?)\n // $Menu.addEventListener('mousedown', handleMouseDown)\n // $Menu.addEventListener('mouseenter', handleMouseEnter, {\n // capture: true,\n // })\n // $Menu.addEventListener('mouseleave', handleMouseLeave, {\n // capture: true,\n // })\n // $Menu.addEventListener('mousemove', handleMouseMove, {\n // passive: true,\n // })\n // $Menu.onkeydown = handleKeyDown\n // $Menu.addEventListener('focusout', handleFocusOut)\n // $Menu.oncontextmenu = handleContextMenu\n // $ContextMenu.onfocus = handleFocus\n // $ContextMenu.onblur = handleBlur\n return $Menu\n}\n\n// TODO recycle menus\nexport const setMenus = (state, changes) => {\n const { $$Menus } = state\n for (const change of changes) {\n const type = change[0]\n if (type === 'addMenu') {\n const menu = change[1]\n const $Menu = create$Menu()\n $Menu.onmouseover = ViewletTitleBarMenuBarEvents.handleMenuMouseOver\n $Menu.onmousedown = ViewletTitleBarMenuBarEvents.handleMenuMouseDown\n const { top, left, width, height, level, focusedIndex } = menu\n $Menu.style.width = `${width}px`\n $Menu.style.height = `${height}px`\n $Menu.style.top = `${top}px`\n $Menu.style.left = `${left}px`\n $Menu.append(...menu.items.map(MenuItem.create$MenuItem))\n $Menu.id = `Menu-${level}`\n Widget.append($Menu)\n if (focusedIndex !== -1) {\n const $Child = $Menu.children[focusedIndex]\n $Child.classList.add('Focused')\n // @ts-ignore\n $Child.focus()\n }\n $$Menus.push($Menu)\n } else if (type === 'updateMenu') {\n const menu = change[1]\n const newLength = change[2]\n const replaceItems = change[3]\n const { level, top, left, width, height, focusedIndex, items, expanded } =\n menu\n const $Menu = $$Menus[level]\n $Menu.style.width = `${width}px`\n $Menu.style.height = `${height}px`\n $Menu.style.top = `${top}px`\n $Menu.style.left = `${left}px`\n // TODO recycle menu item nodes\n const $$Children = items.map(MenuItem.create$MenuItem)\n if (focusedIndex !== -1) {\n const $Child = $$Children[focusedIndex]\n $Child.classList.add('Focused')\n if (expanded) {\n $Child.ariaExpanded = true\n $Child.setAttribute('aria-owns', `Menu-${level + 1}`)\n }\n }\n $Menu.replaceChildren(...$$Children)\n if (level === newLength - 1) {\n if (focusedIndex === -1) {\n $Menu.focus()\n } else {\n const $Child = $Menu.children[focusedIndex]\n $Child.focus()\n }\n }\n } else if (type === 'closeMenus') {\n const keepCount = change[1]\n const $$ToDispose = $$Menus.slice(keepCount)\n for (const $ToDispose of $$ToDispose) {\n Widget.remove($ToDispose)\n }\n $$Menus.length = keepCount\n }\n }\n}\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.js')\n case ViewletModuleId.RunAndDebug:\n return import('../ViewletRunAndDebug/ViewletRunAndDebug.js')\n case ViewletModuleId.Search:\n return import('../ViewletSearch/ViewletSearch.js')\n case ViewletModuleId.SourceControl:\n return import('../ViewletSourceControl/ViewletSourceControl.js')\n case ViewletModuleId.Terminal:\n return import('../ViewletTerminal/ViewletTerminal.js')\n case ViewletModuleId.Extensions:\n return import('../ViewletExtensions/ViewletExtensions.js')\n case ViewletModuleId.DebugConsole:\n return import('../ViewletDebugConsole/ViewletDebugConsole.js')\n case ViewletModuleId.Output:\n return import('../ViewletOutput/ViewletOutput.js')\n case ViewletModuleId.Problems:\n return import('../ViewletProblems/ViewletProblems.js')\n case ViewletModuleId.Empty:\n return import('../ViewletEmpty/ViewletEmpty.js')\n case ViewletModuleId.EditorText:\n return import('../ViewletEditorText/ViewletEditorText.js')\n case ViewletModuleId.EditorImage:\n return import('../ViewletEditorImage/ViewletEditorImage.js')\n case ViewletModuleId.Clock:\n return import('../ViewletClock/ViewletClock.js')\n case ViewletModuleId.SideBar:\n return import('../ViewletSideBar/ViewletSideBar.js')\n case ViewletModuleId.Panel:\n return import('../ViewletPanel/ViewletPanel.js')\n case ViewletModuleId.ActivityBar:\n return import('../ViewletActivityBar/ViewletActivityBar.js')\n case ViewletModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.js')\n case ViewletModuleId.QuickPick:\n return import('../ViewletQuickPick/ViewletQuickPick.js')\n case ViewletModuleId.StatusBar:\n return import('../ViewletStatusBar/ViewletStatusBar.js')\n case ViewletModuleId.TitleBar:\n return import('../ViewletTitleBar/ViewletTitleBar.js')\n case ViewletModuleId.Main:\n return import('../ViewletMain/ViewletMain.js')\n case ViewletModuleId.EditorCompletion:\n return import('../ViewletEditorCompletion/ViewletEditorCompletion.js')\n case ViewletModuleId.References:\n return import('../ViewletReferences/ViewletReferences.js')\n case ViewletModuleId.Implementations:\n return import('../ViewletImplementations/ViewletImplementations.js')\n case ViewletModuleId.EditorPlainText:\n return import('../ViewletEditorPlainText/ViewletEditorPlainText.js')\n case ViewletModuleId.KeyBindings:\n return import('../ViewletKeyBindings/ViewletKeyBindings.js')\n case ViewletModuleId.EditorFindWidget:\n return import('../ViewletEditorFindWidget/ViewletEditorFindWidget.js')\n case ViewletModuleId.ExtensionDetail:\n return import('../ViewletExtensionDetail/ViewletExtensionDetail.js')\n case ViewletModuleId.TitleBarButtons:\n return import('../ViewletTitleBarButtons/ViewletTitleBarButtons.js')\n case ViewletModuleId.TitleBarMenuBar:\n return import('../ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js')\n default:\n throw new Error('unknown module')\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\n\nexport const state = {\n instances: Object.create(null),\n currentSideBarView: undefined,\n currentPanelView: undefined,\n modules: Object.create(null),\n}\n\nexport const mount = ($Parent, state) => {\n $Parent.replaceChildren(state.$Viewlet)\n}\n\nexport const load = async (id, ...args) => {\n const module = await ViewletModule.load(id)\n state.modules[id] = module\n state.instances[id] = {\n state: module.create(...args),\n factory: module,\n }\n}\n\nexport const create = (id) => {\n const module = state.modules[id]\n state.instances[id] = {\n state: module.create(),\n factory: module,\n }\n}\n\nexport const loadModule = async (id) => {\n const module = await ViewletModule.load(id)\n state.modules[id] = module\n}\n\nexport const invoke = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (!instance) {\n console.warn(`viewlet instance ${viewletId} not found`)\n return\n }\n if (typeof instance.factory[method] !== 'function') {\n console.warn(`method ${method} in ${viewletId} not implemented`)\n return\n }\n return instance.factory[method](instance.state, ...args)\n}\n\nexport const focus = (viewletId) => {\n const instance = state.instances[viewletId]\n if (instance && instance.factory && instance.factory.focus) {\n instance.factory.focus(instance.state)\n } else {\n // TODO push focusContext\n }\n}\n\n/**\n * @deprecated\n */\nexport const refresh = (viewletId, viewletContext) => {\n console.log('REFRESH', viewletId)\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory.refresh(instance.state, viewletContext)\n } else {\n // console.warn('no instance yet of ' + viewletId)\n state.refreshContext[viewletId] = viewletContext\n }\n}\n\n// TODO handle error when viewlet creation fails\n\n// TODO remove send -> use invoke instead\nexport const send = (viewletId, method, ...args) => {\n const instance = state.instances[viewletId]\n if (instance) {\n instance.factory[method](...args)\n } else {\n // TODO\n console.warn('instance not present')\n }\n}\n\n// TODO this code is bad\nexport const sendMultiple = (commands) => {\n for (const command of commands) {\n const [_, viewletId, method, ...args] = command\n if (_ === 'Viewlet.ariaAnnounce') {\n ariaAnnounce(viewletId)\n } else if (_ === 'Viewlet.setBounds') {\n setBounds(viewletId, method, ...args)\n } else if (_ === 'Viewlet.create') {\n create(viewletId)\n } else if (_ === 'Viewlet.append') {\n append(viewletId, method)\n } else {\n invoke(viewletId, method, ...args)\n }\n }\n}\n\n/**\n * @deprecated\n */\nexport const dispose = (id) => {\n Assert.string(id)\n const instance = state.instances[id]\n if (!instance) {\n console.warn(`viewlet instance ${id} not found and cannot be disposed`)\n return\n }\n try {\n instance.factory.dispose(instance.state)\n if (instance.state.$Viewlet && instance.state.$Viewlet.isConnected) {\n instance.state.$Viewlet.remove()\n }\n } catch (error) {\n console.error(error)\n }\n delete state.instances[id]\n}\n\n/**\n * @deprecated\n */\nexport const replace = () => {\n // TODO maybe check if viewlet can be recycled\n}\n\nexport const handleError = (id, parentId, message) => {\n console.log(`[viewlet-error] ${id}: ${message}`)\n const instance = state.instances[id]\n if (instance && instance.factory && instance.factory.handleError) {\n instance.factory.handleError(instance.state, message)\n return\n }\n // TODO error should bubble up to until highest possible component\n const parentInstance = state.instances[parentId]\n if (\n parentInstance &&\n parentInstance.factory &&\n parentInstance.factory.handleError\n ) {\n parentInstance.factory.handleError(instance.state, message)\n console.log('parent instance', parentInstance)\n return\n }\n if (\n instance &&\n instance.state.$Viewlet &&\n instance.state.$Viewlet.isConnected\n ) {\n instance.state.$Viewlet.textContent = `${message}`\n }\n}\n\n/**\n * @deprecated\n */\nexport const hydrate = (id, ...args) => {\n const module = state.modules[id]\n const instanceState = module.create(...args)\n state.instances[id] = { state: instanceState, factory: module }\n}\n\n/**\n * @deprecated\n */\nexport const appendViewlet = (parentId, childId, focus) => {\n if (parentId === 'Widget') {\n // TODO\n return\n }\n const parentInstanceState = state.instances[parentId] // TODO must ensure that parent is already created\n const parentModule = parentInstanceState.factory\n const childInstance = state.instances[childId]\n if (!childInstance) {\n throw new Error('child instance must be defined to be appended to parent')\n }\n parentModule.appendViewlet(\n parentInstanceState.state,\n childInstance.factory.name,\n childInstance.state.$Viewlet\n )\n if (focus && childInstance.factory.focus) {\n childInstance.factory.focus(childInstance.state)\n }\n}\n\nconst ariaAnnounce = async (message) => {\n const AriaAlert = await import('../AriaAlert/AriaAlert.js')\n AriaAlert.alert(message)\n}\n\nconst append = (parentId, childId) => {\n const parentInstance = state.instances[parentId]\n const $Parent = parentInstance.state.$Viewlet\n const childInstance = state.instances[childId]\n const $Child = childInstance.state.$Viewlet\n $Parent.append($Child)\n}\n\nexport const executeCommands = (commands) => {\n for (const [command, ...args] of commands) {\n switch (command) {\n case 'Viewlet.create':\n create(...args)\n break\n case 'Viewlet.send':\n invoke(...args)\n break\n case 'Viewlet.show':\n show(...args)\n break\n case 'Viewlet.dispose':\n dispose(...args)\n break\n case 'Viewlet.setBounds':\n setBounds(...args)\n break\n case 'Viewlet.ariaAnnounce':\n ariaAnnounce(...args)\n break\n case 'Viewlet.append':\n append(...args)\n break\n default:\n throw new Error(`unknown command ${command}`)\n }\n }\n}\n\nexport const show = (id) => {\n const instance = state.instances[id]\n const $Viewlet = instance.state.$Viewlet\n const $Workbench = document.getElementById('Workbench')\n $Workbench.append($Viewlet)\n if (instance.factory.focus) {\n instance.factory.focus(instance.state)\n }\n}\n\nexport const setBounds = (id, left, top, width, height) => {\n const instance = state.instances[id]\n const $Viewlet = instance.state.$Viewlet\n $Viewlet.style.left = `${left}px`\n $Viewlet.style.top = `${top}px`\n $Viewlet.style.width = `${width}px`\n $Viewlet.style.height = `${height}px`\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\n\nexport const Commands = {\n 'Viewlet.appendViewlet': Viewlet.appendViewlet,\n 'Viewlet.dispose': Viewlet.dispose,\n 'Viewlet.executeCommands': Viewlet.executeCommands,\n 'Viewlet.focus': Viewlet.focus,\n 'Viewlet.handleError': Viewlet.handleError,\n 'Viewlet.invoke': Viewlet.invoke,\n 'Viewlet.load': Viewlet.load,\n 'Viewlet.loadModule': Viewlet.loadModule,\n 'Viewlet.refresh': Viewlet.refresh,\n 'Viewlet.send': Viewlet.invoke,\n 'Viewlet.sendMultiple': Viewlet.sendMultiple,\n 'Viewlet.setBounds': Viewlet.setBounds,\n 'Viewlet.show': Viewlet.show,\n}\n", "export const LocalStorage = 1\n\nexport const SessionStorage = 2\n", "import * as WebStorageType from '../WebStorageType/WebStorageType.js'\n\nconst getStorage = (storageType) => {\n switch (storageType) {\n case WebStorageType.LocalStorage:\n return localStorage\n case WebStorageType.SessionStorage:\n return sessionStorage\n default:\n throw new Error(`unsupported storage type ${storageType}`)\n }\n}\n\nexport const getItem = (storageType, key) => {\n const storage = getStorage(storageType)\n return storage.getItem(key) || undefined\n}\n\nexport const setItem = (storageType, key, value) => {\n const storage = getStorage(storageType)\n storage.setItem(key, value)\n}\n\nexport const clear = (storageType) => {\n const storage = getStorage(storageType)\n storage.clear()\n}\n", "import * as WebStorage from './WebStorage.js'\n\nexport const Commands = {\n 'WebStorage.clear': WebStorage.clear,\n 'WebStorage.getItem': WebStorage.getItem,\n 'WebStorage.setItem': WebStorage.setItem,\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const reload = () => {\n location.reload()\n}\n\nexport const minimize = () => {}\n\nexport const maximize = () => {}\n\nexport const unmaximize = () => {}\n\nexport const close = () => {\n // window.close()\n}\n\nexport const setTitle = (title) => {\n document.title = title\n}\n\nconst sendVisibilityChangeHint = () => {\n RendererWorker.send(\n /* SaveState.handleVisibilityChange */ 'SaveState.handleVisibilityChange',\n /* visibilityState */ 'hidden'\n )\n}\n\nconst handleBeforeUnload = () => {\n sendVisibilityChangeHint()\n}\nconst handlePointerLeave = () => {\n sendVisibilityChangeHint()\n}\n\n// cannot use visibilty change event because worker cannot process events when page closes\n// https://stackoverflow.com/questions/20084348/what-happens-to-a-web-worker-if-i-close-the-page-that-created-this-web-worker/20105455#20105455\n// beforeunload event has the same problem, pointerleave event sometimes works\nexport const onVisibilityChange = () => {\n window.addEventListener('beforeunload', handleBeforeUnload)\n document.addEventListener('pointerleave', handlePointerLeave)\n}\n", "import * as Window from './Window.js'\n\nexport const Commands = {\n 'Window.close': Window.close,\n 'Window.maximize': Window.maximize,\n 'Window.minimize': Window.minimize,\n 'Window.onVisibilityChange': Window.onVisibilityChange,\n 'Window.reload': Window.reload,\n 'Window.setTitle': Window.setTitle,\n 'Window.unmaximize': Window.unmaximize,\n}\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ModuleId.Audio:\n return import('../Audio/Audio.ipc.js')\n case ModuleId.ClipBoard:\n return import('../ClipBoard/ClipBoard.ipc.js')\n case ModuleId.Css:\n return import('../Css/Css.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.EditorError:\n return import('../EditorError/EditorError.ipc.js')\n case ModuleId.EditorHover:\n return import('../EditorHover/EditorHover.ipc.js')\n case ModuleId.EditorRename:\n return import('../EditorRename/EditorRename.ipc.js')\n case ModuleId.Eval:\n return import('../Eval/Eval.ipc.js')\n case ModuleId.FilePicker:\n return import('../FilePicker/FilePicker.ipc.js')\n case ModuleId.FileSystemHandle:\n return import('../FileSystemHandle/FileSystemHandle.ipc.js')\n case ModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.ipc.js')\n case ModuleId.InitData:\n return import('../InitData/InitData.ipc.js')\n case ModuleId.KeyBindings:\n return import('../KeyBindings/KeyBindings.ipc.js')\n case ModuleId.Layout:\n return import('../Layout/Layout.ipc.js')\n case ModuleId.Location:\n return import('../Location/Location.ipc.js')\n case ModuleId.Meta:\n return import('../Meta/Meta.ipc.js')\n case ModuleId.Notification:\n return import('../Notification/Notification.ipc.js')\n case ModuleId.Menu:\n return import('../OldMenu/Menu.ipc.js')\n case ModuleId.Open:\n return import('../Open/Open.ipc.js')\n case ModuleId.Performance:\n return import('../Performance/Performance.ipc.js')\n case ModuleId.SanitizeHtml:\n return import('../SanitizeHtml/SanitizeHtml.ipc.js')\n case ModuleId.ServiceWorker:\n return import('../ServiceWorker/ServiceWorker.ipc.js')\n case ModuleId.TestFrameWork:\n return import('../TestFrameWork/TestFrameWork.ipc.js')\n case ModuleId.Viewlet:\n return import('../Viewlet/Viewlet.ipc.js')\n case ModuleId.WebStorage:\n return import('../WebStorage/WebStorage.ipc.js')\n case ModuleId.Window:\n return import('../Window/Window.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 case 'Audio.play':\n return ModuleId.Audio\n case 'ClipBoard.readText':\n case 'ClipBoard.writeImage':\n case 'ClipBoard.writeText':\n return ModuleId.ClipBoard\n case 'Css.setInlineStyle':\n return ModuleId.Css\n case 'Developer.getMemoryUsage':\n case 'Developer.showState':\n return ModuleId.Developer\n case 'Dialog.alert':\n case 'Dialog.close':\n case 'Dialog.prompt':\n case 'Dialog.showErrorDialogWithOptions':\n return ModuleId.Dialog\n case 'Download.downloadFile':\n return ModuleId.Download\n case 764:\n case 765:\n case 766:\n case 767:\n case 768:\n case 769:\n case 770:\n case 771:\n case 772:\n case 773:\n case 774:\n case 775:\n case 776:\n case 777:\n return ModuleId.EditorController\n case 'EditorError.create':\n return ModuleId.EditorError\n case 'EditorHover.create':\n return ModuleId.EditorHover\n case 'EditorRename.create':\n case 'EditorRename.dispose':\n case 'EditorRename.finish':\n return ModuleId.EditorRename\n case 'Eval.evalCode':\n return ModuleId.Eval\n case 'FilePicker.showDirectoryPicker':\n case 'FilePicker.showFilePicker':\n case 'FilePicker.showSaveFilePicker':\n return ModuleId.FilePicker\n case 'FileSystemHandle.requestPermission':\n return ModuleId.FileSystemHandle\n case 'FindWidget.create':\n case 'FindWidget.dispose':\n case 'FindWidget.setResults':\n return ModuleId.FindWidget\n case 'ImagePreview.create':\n case 'ImagePreview.dispose':\n case 'ImagePreview.showError':\n case 'ImagePreview.update':\n return ModuleId.ImagePreview\n case 'InitData.getInitData':\n return ModuleId.InitData\n case 'KeyBindings.hydrate':\n return ModuleId.KeyBindings\n case 'Layout.getBounds':\n case 'Layout.hide':\n case 'Layout.hydrate':\n case 'Layout.show':\n case 'Layout.update':\n return ModuleId.Layout\n case 'Location.getHref':\n case 'Location.getPathName':\n case 'Location.hydrate':\n case 'Location.setPathName':\n return ModuleId.Location\n case 'Menu.focusIndex':\n case 'Menu.hide':\n case 'Menu.hideSubMenu':\n case 'Menu.show':\n case 'Menu.showContextMenu':\n case 'Menu.showControlled':\n case 'Menu.showMenu':\n case 'Menu.showSubMenu':\n return ModuleId.Menu\n case 'Meta.setThemeColor':\n return ModuleId.Meta\n case 'Notification.create':\n case 'Notification.createWithOptions':\n case 'Notification.dispose':\n return ModuleId.Notification\n case 'Open.openUrl':\n return ModuleId.Open\n case 6661:\n case 6662:\n case 6663:\n case 6664:\n return ModuleId.Panel\n case 'Performance.getMemory':\n case 'Performance.measureUserAgentSpecificMemory':\n return ModuleId.Performance\n case 'SanitizeHtml.sanitizeHtml':\n return ModuleId.SanitizeHtml\n case 'ServiceWorker.register':\n case 'ServiceWorker.uninstall':\n return ModuleId.ServiceWorker\n case 'TestFrameWork.checkMultiElementCondition':\n case 'TestFrameWork.checkSingleElementCondition':\n case 'TestFrameWork.performAction':\n case 'TestFrameWork.performKeyBoardAction':\n case 'TestFrameWork.showOverlay':\n return ModuleId.TestFrameWork\n case 549:\n case 550:\n case 551:\n return ModuleId.ViewService\n case 'Viewlet.appendViewlet':\n case 'Viewlet.dispose':\n case 'Viewlet.focus':\n case 'Viewlet.handleError':\n case 'Viewlet.invoke':\n case 'Viewlet.load':\n case 'Viewlet.refresh':\n case 'Viewlet.send':\n case 'Viewlet.sendMultiple':\n case 'Viewlet.setBounds':\n return ModuleId.Viewlet\n case 'WebStorage.clear':\n case 'WebStorage.getItem':\n case 'WebStorage.setItem':\n return ModuleId.WebStorage\n case 'Window.close':\n case 'Window.maximize':\n case 'Window.minimize':\n case 'Window.onVisibilityChange':\n case 'Window.reload':\n case 'Window.setTitle':\n case 'Window.unmaximize':\n return ModuleId.Window\n case 33111:\n return ModuleId.Workbench\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 register(key, value)\n }\n return\n }\n throw new Error(`module ${module.name} is missing commands`)\n}\n\nconst getOrLoadModule = (moduleId) => {\n if (!state.pendingModules[moduleId]) {\n const importPromise = Module.load(moduleId)\n state.pendingModules[moduleId] = importPromise\n .then(initializeModule)\n .catch((error) => {\n console.error(error)\n })\n }\n return state.pendingModules[moduleId]\n}\n\nconst loadCommand = async (command) => {\n await getOrLoadModule(ModuleMap.getModuleId(command))\n}\n\nexport const register = (commandId, listener) => {\n state.commands[commandId] = listener\n}\n\nconst hasThrown = new Set()\n\nconst executeCommandAsync = async (command, ...args) => {\n try {\n await loadCommand(command)\n } catch (error) {\n // @ts-ignore\n throw new Error(`Failed to load command ${command}`, {\n cause: error,\n })\n }\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\nexport const execute = (command, ...args) => {\n if (command in state.commands) {\n return state.commands[command](...args)\n }\n return executeCommandAsync(command, ...args)\n}\n", "export class JsonRpcError extends Error {\n constructor(message) {\n super(message)\n this.name = 'JsonRpcError'\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 return port\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 renderer 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 return worker\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 return referencePort\n}\n", "/* istanbul ignore file */\n\nexport const Methods = {\n MessagePort: 1,\n ModuleWorker: 2,\n ReferencePort: 3,\n}\n\n/**\n * @type {number}\n */\nconst METHOD_PREFERRED = Methods.ModuleWorker\n\nconst getModule = () => {\n switch (METHOD_PREFERRED) {\n case Methods.ModuleWorker:\n return import('./IpcParentWithModuleWorker.js')\n case Methods.MessagePort:\n return import('./IpcParentWithMessagePort.js')\n case Methods.ReferencePort:\n return import('./IpcParentWithReferencePort.js')\n default:\n throw new Error('unknown method')\n }\n}\n\nexport const create = async ({ method, ...options }) => {\n const module = await getModule()\n // @ts-ignore\n return module.create(options)\n}\n", "import * as Callback from '../Callback/Callback.js'\nimport * as Command from '../Command/Command.js'\nimport { JsonRpcError } from '../Errors/JsonRpcError.js'\nimport * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// const URL_RENDERER_WORKER =\n// '/packages/renderer-worker/distmin/rendererWorkerMain-0ead0bed.js'\n\nexport const state = {\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nclass NonError extends Error {\n name = 'NonError'\n\n constructor(message) {\n super(message)\n }\n}\n\n// ensureError based on https://github.com/sindresorhus/ensure-error/blob/main/index.js (License MIT)\nconst ensureError = (input) => {\n if (!(input instanceof Error)) {\n return new NonError(input)\n }\n return input\n}\n\nconst serializeError = (error) => {\n error = ensureError(error)\n return {\n stack: error.stack,\n message: error.message,\n }\n}\n\nconst handleMessageFromRendererWorker = async (event) => {\n const message = event.data\n if ('id' in message) {\n if ('method' in message) {\n try {\n const result = await Command.execute(message.method, ...message.params)\n state.ipc.send({\n jsonrpc: '2.0',\n id: message.id,\n result,\n })\n return\n } catch (error) {\n const serializedError = serializeError(error)\n state.ipc.send({\n jsonrpc: '2.0',\n id: message.id,\n error: {\n message: serializedError.message,\n stack: serializedError.stack,\n },\n })\n }\n return\n }\n Callback.resolve(message.id, message)\n return\n }\n if (message.method === 'get-port') {\n const type = message.params[0]\n const port = await getPort(type)\n console.log({ port })\n state.ipc.sendAndTransfer('port', [port])\n return\n }\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nconst getIpc = async () => {\n const rendererWorker = await IpcParent.create({\n method: IpcParent.Methods.ModuleWorker,\n url: Platform.getRendererWorkerUrl(),\n name: 'Renderer Worker',\n })\n return {\n send(message) {\n rendererWorker.postMessage(message)\n },\n sendAndTransfer(message, transferables) {\n rendererWorker.postMessage(message, transferables)\n },\n get onmessage() {\n return rendererWorker.onmessage\n },\n set onmessage(listener) {\n rendererWorker.onmessage = listener\n },\n }\n}\n\nconst getPort = (type) => {\n return new Promise((resolve, reject) => {\n const handleMessageFromWindow = (event) => {\n const port = event.ports[0]\n resolve(port)\n }\n\n // @ts-ignore\n window.addEventListener('message', handleMessageFromWindow, {\n once: true,\n })\n // @ts-ignore\n window.myApi.ipcConnect(type)\n })\n}\n\nexport const hydrate = async (config) => {\n const ipc = await getIpc()\n\n // setup electron message port\n if (Platform.isElectron()) {\n const event = await new Promise((resolve, reject) => {\n const handleIpcMessage = async (event) => {\n resolve(event)\n }\n ipc.onmessage = handleIpcMessage\n })\n if (event.data.method !== 'get-port') {\n throw new Error('unexpected message from renderer worker')\n }\n const type = event.data.params[0]\n const port = await getPort(type)\n ipc.sendAndTransfer('port', [port])\n }\n ipc.onmessage = handleMessageFromRendererWorker\n state.ipc = ipc\n}\n\n// TODO needed?\nexport const dispose = () => {\n if (state.rendererWorker) {\n state.rendererWorker.terminate()\n }\n}\n\nexport const send = (method, ...params) => {\n state.ipc.send({\n jsonrpc: '2.0',\n method,\n params,\n })\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 RendererWorkerError 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, ...params) => {\n const responseMessage = await new Promise((resolve, reject) => {\n const callbackId = Callback.register(resolve, reject)\n state.ipc.send({\n jsonrpc: '2.0',\n method,\n params,\n id: callbackId,\n })\n })\n if ('error' in responseMessage) {\n throw new RendererWorkerError(responseMessage.error)\n }\n if ('result' in responseMessage) {\n return responseMessage.result\n }\n\n throw new JsonRpcError('unexpected message from renderer worker')\n}\n\nexport const sendAndTransfer = (message, transfer) => {\n state.ipc.sendAndTransfer(message, transfer)\n}\n", "import * as RendererWorker from '../RendererWorker/RendererWorker.js'\n\nexport const state = {\n $ActivityBar: undefined,\n $StatusBar: undefined,\n $TitleBar: undefined,\n $Main: undefined,\n $SideBar: undefined,\n $Panel: undefined,\n $Workbench: undefined,\n $SashSideBar: undefined,\n $SashPanel: undefined,\n}\n\n// TODO when nodes are not visible, they are still kept in memory as detached dom nodes\n// maybe it doesn't matter but maybe they should be garbage collected\n\nexport const update = (points) => {\n const $ActivityBar = state.$ActivityBar\n const $Main = state.$Main\n const $TitleBar = state.$TitleBar\n const $SideBar = state.$SideBar\n const $StatusBar = state.$StatusBar\n const $Panel = state.$Panel\n const $SashSideBar = state.$SashSideBar\n const $SashPanel = state.$SashPanel\n\n if (points.activityBarVisible) {\n $ActivityBar.style.top = `${points.activityBarTop}px`\n $ActivityBar.style.left = `${points.activityBarLeft}px`\n $ActivityBar.style.width = `${points.activityBarWidth}px`\n $ActivityBar.style.height = `${points.activityBarHeight}px`\n $ActivityBar.style.display = ''\n } else {\n $ActivityBar.style.display = 'none'\n }\n if (points.mainVisible) {\n $Main.style.top = `${points.mainTop}px`\n $Main.style.left = `${points.mainLeft}px`\n $Main.style.width = `${points.mainWidth}px`\n $Main.style.height = `${points.mainHeight}px`\n $Main.style.display = ''\n } else {\n $Main.style.display = 'none'\n }\n if (points.panelVisible) {\n $Panel.style.top = `${points.panelTop}px`\n $Panel.style.left = `${points.panelLeft}px`\n $Panel.style.width = `${points.panelWidth}px`\n $Panel.style.height = `${points.panelHeight}px`\n $Panel.style.display = ''\n\n $SashPanel.style.top = `${points.panelTop}px`\n $SashPanel.style.left = `${points.panelLeft}px`\n $SashPanel.style.width = `${points.panelWidth}px`\n } else {\n $Panel.style.display = 'none'\n }\n if (points.sideBarVisible) {\n $SideBar.style.top = `${points.sideBarTop}px`\n $SideBar.style.left = `${points.sideBarLeft}px`\n $SideBar.style.width = `${points.sideBarWidth}px`\n $SideBar.style.height = `${points.sideBarHeight}px`\n $SideBar.style.display = ''\n\n $SashSideBar.style.left = `${points.sideBarLeft}px`\n $SashSideBar.style.top = `${points.sideBarTop}px`\n $SashSideBar.style.height = `${points.sideBarHeight}px`\n } else {\n $SideBar.style.display = 'none'\n }\n if (points.statusBarVisible) {\n $StatusBar.style.top = `${points.statusBarTop}px`\n $StatusBar.style.left = `${points.statusBarLeft}px`\n $StatusBar.style.width = `${points.statusBarWidth}px`\n $StatusBar.style.height = `${points.statusBarHeight}px`\n $StatusBar.style.display = ''\n } else {\n $StatusBar.style.display = 'none'\n }\n if (points.titleBarVisible) {\n $TitleBar.style.top = `${points.titleBarTop}px`\n $TitleBar.style.left = `${points.titleBarLeft}px`\n $TitleBar.style.width = `${points.titleBarWidth}px`\n $TitleBar.style.height = `${points.titleBarHeight}px`\n $TitleBar.style.display = ''\n } else {\n // TODO remove elements from dom instead of hiding them\n $TitleBar.style.display = 'none'\n }\n}\n\n// export const get$ActivityBar = () => {\n// return state.$ActivityBar\n// }\n\n// export const get$SideBar = () => {\n// return state.$SideBar\n// }\n\n// export const get$Panel = () => {\n// return state.$Panel\n// }\n\n// export const get$TitleBar = () => {\n// return state.$TitleBar\n// }\n\n// export const get$Main = () => {\n// return state.$Main\n// }\n\nconst getTitleBarHeight = () => {\n if (\n // @ts-ignore\n navigator.windowControlsOverlay &&\n // @ts-ignore\n navigator.windowControlsOverlay.getTitlebarAreaRect\n ) {\n // @ts-ignore\n const titleBarRect = navigator.windowControlsOverlay.getTitlebarAreaRect()\n return titleBarRect.height\n }\n return 0\n}\n\nexport const getBounds = () => {\n return {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n titleBarHeight: getTitleBarHeight(),\n }\n}\n\nconst handleResize = (event) => {\n RendererWorker.send(\n /* Layout.handleResize */ 'Layout.handleResize',\n /* bounds */ getBounds()\n )\n}\n\nconst getSashId = ($Target) => {\n console.log({ $Target })\n if ($Target.id === 'SashPanel') {\n return 'Panel'\n }\n if ($Target.id === 'SashSideBar') {\n return 'SideBar'\n }\n return ''\n}\n\nconst handleSashPointerMove = (event) => {\n const { clientX, clientY } = event\n RendererWorker.send(\n /* Layout.handleSashPointerMove */ 'Layout.handleSashPointerMove',\n /* x */ clientX,\n /* y */ clientY\n )\n}\n\nconst handleSashPointerUp = (event) => {\n const { target, pointerId } = event\n target.releasePointerCapture(pointerId)\n target.removeEventListener('pointermove', handleSashPointerMove)\n target.removeEventListener('pointerup', handleSashPointerUp)\n}\n\nconst handleSashPointerDown = (event) => {\n const { target, pointerId } = event\n target.setPointerCapture(pointerId)\n target.addEventListener('pointermove', handleSashPointerMove)\n target.addEventListener('pointerup', handleSashPointerUp)\n const $Target = event.target\n const id = getSashId($Target)\n RendererWorker.send(\n /* Layout.handleSashPointerDown */ 'Layout.handleSashPointerDown',\n /* id */ id\n )\n}\n\nexport const show = (points) => {\n const $ActivityBar = document.createElement('div')\n $ActivityBar.id = 'ActivityBar'\n\n const $StatusBar = document.createElement('div')\n $StatusBar.id = 'StatusBar'\n\n const $TitleBar = document.createElement('div')\n $TitleBar.id = 'TitleBar'\n\n const $Main = document.createElement('main')\n $Main.id = 'Main'\n\n const $SideBar = document.createElement('div')\n $SideBar.id = 'SideBar'\n\n const $Panel = document.createElement('div')\n $Panel.id = 'Panel'\n\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashSideBar = document.createElement('div')\n $SashSideBar.className = 'SashVertical'\n $SashSideBar.id = 'SashSideBar'\n\n // TODO use aria role splitter once supported https://github.com/w3c/aria/issues/1348\n const $SashPanel = document.createElement('div')\n $SashPanel.className = 'SashHorizontal'\n $SashPanel.id = 'SashPanel'\n\n const $Workbench = document.createElement('div')\n $Workbench.id = 'Workbench'\n $Workbench.append(\n $TitleBar,\n $Main,\n $SideBar,\n $ActivityBar,\n $Panel,\n $StatusBar,\n $SashSideBar,\n $SashPanel\n )\n // TODO don't like the random side effects here\n state.$ActivityBar = $ActivityBar\n state.$Main = $Main\n state.$Panel = $Panel\n state.$SideBar = $SideBar\n state.$StatusBar = $StatusBar\n state.$TitleBar = $TitleBar\n state.$Workbench = $Workbench\n state.$SashPanel = $SashPanel\n state.$SashSideBar = $SashSideBar\n update(points)\n // document.body.role= 'application' // TODO this doesn't seem to work\n // @ts-ignore\n $Workbench.role = 'application'\n document.body.append($Workbench)\n window.addEventListener('resize', handleResize, { passive: true })\n $SashSideBar.addEventListener('pointerdown', handleSashPointerDown)\n $SashPanel.addEventListener('pointerdown', handleSashPointerDown)\n}\n\nexport const hide = () => {\n state.$Workbench.remove()\n window.removeEventListener('resize', handleResize)\n}\n", "import * as Layout from './Layout.js'\n\nexport const Commands = {\n 'Layout.getBounds': Layout.getBounds,\n 'Layout.hide': Layout.hide,\n 'Layout.show': Layout.show,\n 'Layout.update': Layout.update,\n // Command.register(1101, Layout.hideSideBar)\n // Command.register(1102, Layout.toggleSideBar)\n // Command.register(1103, Layout.showPanel)\n // Command.register(1104, Layout.hidePanel)\n // Command.register(1105, Layout.togglePanel)\n // Command.register(1106, Layout.showActivityBar)\n // Command.register(1107, Layout.hideActivityBar)\n // Command.register(1108, Layout.toggleActivityBar)\n}\n", "// files that should be in initial chunk\nimport * as M1 from '../src/parts/Css/Css.ipc.js'\nimport * as M2 from '../src/parts/Layout/Layout.ipc.js'\nimport * as M4 from '../src/parts/Editor/Editor.js'\nimport * as M5 from '../src/parts/Focus/Focus.js'\nimport * as M6 from '../src/parts/Viewlet/Viewlet.ipc.js'\nimport * as M7 from '../src/parts/KeyBindings/KeyBindings.ipc.js'\nimport * as M14 from '../src/parts/Widget/Widget.js'\nimport * as M18 from '../src/parts/Platform/Platform.js'\nimport * as M22 from '../src/parts/ServiceWorker/ServiceWorker.ipc.js'\nimport * as M26 from '../src/parts/Location/Location.ipc.js'\nimport * as M13 from './parts/OldMenu/Menu.js'\nimport * as M27 from './parts/ViewletActivityBar/ViewletActivityBar.js'\nimport * as M28 from './parts/ViewletStatusBar/ViewletStatusBar.js'\nimport * as M29 from './parts/ViewletTitleBar/ViewletTitleBar.js'\nimport * as M30 from './parts/Window/Window.ipc.js'\nimport * as RendererWorker from './parts/RendererWorker/RendererWorker.js'\nimport * as Platform from './parts/Platform/Platform.js'\nimport * as PlatformType from './parts/PlatformType/PlatformType.js'\n\n// hack so that rollup doesn't tree-shake out these modules\nglobalThis.M = [\n M1,\n M2,\n M4,\n M5,\n M6,\n M7,\n M13,\n M14,\n M18,\n M22,\n M26,\n M27,\n M28,\n M29,\n M30,\n]\n\nconst handleError = (error) => {\n console.info(`[renderer-process] Unhandled Error: ${error}`)\n alert(error)\n}\n\nconst handleUnhandledRejection = (event) => {\n console.info(`[renderer-process] Unhandled Rejection: ${event.reason}`)\n alert(event.reason)\n}\n\nconst main = async () => {\n onerror = handleError\n onunhandledrejection = handleUnhandledRejection\n\n if (Platform.platform === PlatformType.Web) {\n // disable prompt to download app as pwa\n // @ts-ignore\n window.onbeforeinstallprompt = (event) => {\n event.preventDefault()\n }\n }\n // TODO this is discovered very late\n await RendererWorker.hydrate()\n dispatchEvent(new CustomEvent('code/ready'))\n // TODO avoid creating global variables\n globalThis.__codeLoaded = true\n}\n\nmain()\n\n// 1. invoke shared process to read file\n// 2. display file\n// 3. optimize\n\n// DEBUG\n\n// globalThis.Panel = Panel\n// globalThis.Context = Context\n// globalThis.StatusBar = StatusBar\n// globalThis.ViewService = ViewService\n// globalThis.SideBar = SideBar\n// globalThis.FileSystem = FileSystem\n\nexport const send = RendererWorker.send\n"],
5
+ "mappings": "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,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA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lB,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;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;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;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;AACH,iBAAgB;AAAA,QAClB,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;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;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AA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",
6
6
  "names": ["Audio", "Commands", "type", "text", "Commands", "state", "Commands", "state", "remove", "state", "remove", "state", "state", "alert", "resolve", "Commands", "alert", "Commands", "alert", "state", "alert", "Commands", "create", "hover", "Commands", "create", "create", "create", "state", "Commands", "create", "Commands", "Commands", "Commands", "create", "dispose", "state", "Commands", "create", "dispose", "Commands", "state", "hydrate", "Commands", "hydrate", "Commands", "Commands", "create", "dispose", "type", "Commands", "create", "dispose", "findIndex", "state", "handleKeyDown", "findIndex", "$Menu", "handleFocusOut", "Commands", "Commands", "Commands", "set", "array", "object", "create", "document", "NodeFilter", "name", "html", "Commands", "Commands", "dispatchEvent", "text", "element", "text", "toBeFocused", "toBeHidden", "toBeVisible", "toHaveAttribute", "toHaveClass", "toHaveCount", "toHaveCss", "toHaveId", "toHaveText", "toHaveValue", "text", "state", "text", "resolve", "Commands", "ImagePreview", "KeyBindings", "Panel", "handleBlur", "handleContextMenu", "handleMouseDown", "handleMouseEnter", "handleMouseLeave", "create", "dispose", "handleMouseDown", "handleContextMenu", "handleMouseEnter", "handleMouseLeave", "handleBlur", "state", "$InputBox", "name", "create", "dispose", "focus", "name", "state", "getNodeIndex", "handleContextMenuMouse", "handleContextMenuKeyboard", "handleContextMenu", "create", "dispose", "focus", "name", "refresh", "setMessage", "create$Row", "render$Row", "render$RowsLess", "render$RowsEqual", "render$RowsMore", "render$Rows", "handleContextMenu", "state", "create", "dispose", "focus", "name", "handleClick", "findIndex", "state", "text", "array", "state", "handleInput", "handleKeyDown", "handleBeforeInput", "render", "focus", "write", "create", "handleInput", "state", "text", "Commands", "create", "dispose", "focus", "name", "refresh", "write", "handleInput", "handleFocus", "state", "handleFocus", "getNodeIndex", "handleContextMenuMouse", "handleContextMenuKeyboard", "handleContextMenu", "handleWheel", "handleInput", "create", "dispose", "focus", "handleError", "name", "setError", "setFocusedIndex", "activeId", "handleInput", "handleContextMenu", "handleFocus", "handleWheel", "state", "create", "dispose", "focus", "name", "refresh", "state", "append", "create", "dispose", "focus", "handleError", "name", "state", "text", "handleMouseDown", "create", "focus", "name", "setFocusedIndex", "handleMouseDown", "state", "create", "dispose", "focus", "name", "refresh", "state", "None", "handleContextMenu", "handleFocus", "handleBlur", "getModifier", "handleMouseDown", "handleWheel", "handleScrollBarThumbPointerMove", "handleScrollBarThumbPointerUp", "None", "text", "state", "state", "setDiagnostics", "state", "state", "create$Row", "text", "i", "state", "create", "dispose", "focus", "setScrollBar", "setSelections", "handleFocus", "handleBlur", "handleMouseDown", "handleContextMenu", "handleWheel", "state", "setDiagnostics", "create", "focus", "handleError", "setScrollBar", "setSelections", "setText", "state", "handlePointerMove", "handlePointerDown", "handleWheel", "handleContextMenu", "create", "dispose", "name", "handlePointerDown", "handlePointerMove", "handleContextMenu", "handleWheel", "state", "create", "dispose", "name", "refresh", "state", "create", "dispose", "focus", "state", "name", "appendViewlet", "create", "dispose", "focus", "getNodeIndex", "state", "name", "getNodeIndex", "handleMousedown", "handleContextMenu", "handleBlur", "create", "dispose", "name", "setFocusedIndex", "state", "handleMousedown", "handleContextMenu", "handleBlur", "handleWheel", "handleMouseDown", "handleBlur", "handleBeforeInput", "create", "dispose", "focus", "setFocusedIndex", "setValue", "activeId", "state", "handleBlur", "handleBeforeInput", "handleMouseDown", "handleWheel", "alert", "create", "focus", "setItems", "handleClick", "state", "create", "state", "state", "getFileName", "handleMouseDown", "create", "create", "addOne", "state", "handleDragOver", "handleDrop", "getNodeIndex", "getIndex", "state", "appendViewlet", "create", "dispose", "focus", "state", "handleDrop", "handleDragOver", "addOne", "focusIndex", "$Tab", "getNodeIndex", "getIndex", "handleMousedown", "handleWheel", "create", "dispose", "handleError", "name", "setFocusedIndex", "setItems", "handleMousedown", "handleWheel", "state", "getNodeIndex", "create", "setMessage", "setFocusedIndex", "handleError", "focus", "location", "state", "create", "focus", "handleError", "name", "setFocusedIndex", "setMessage", "create", "focus", "handleError", "name", "setFocusedIndex", "setMessage", "create", "dispose", "name", "refresh", "state", "handleInput", "handleWheel", "H1", "Div", "Kbd", "Table", "TBody", "THead", "Td", "Th", "Tr", "Input", "type", "H1", "Div", "Kbd", "Table", "TBody", "Th", "Td", "THead", "Tr", "Input", "type", "render", "create", "name", "setValue", "handleInput", "handleWheel", "state", "render", "handleInput", "handleClick", "create", "dispose", "focus", "name", "setValue", "handleInput", "handleClick", "state", "handleIconError", "create", "name", "handleIconError", "state", "handleClickClose", "create", "dispose", "name", "state", "handleFocusOut", "getNodeIndex", "getIndex", "handleClick", "handleFocus", "findIndex", "create", "dispose", "focus", "setFocusedIndex", "activeId", "create$Menu", "handleClick", "handleFocusOut", "handleFocus", "state", "focusIndex", "type", "Panel", "ImagePreview", "KeyBindings", "state", "load", "create", "focus", "refresh", "dispose", "handleError", "appendViewlet", "append", "Commands", "appendViewlet", "dispose", "focus", "handleError", "load", "refresh", "clear", "Commands", "clear", "close", "Commands", "close", "load", "Audio", "Audio", "state", "register", "load", "create", "resolve", "create", "name", "resolve", "create", "resolve", "create", "state", "hydrate", "type", "create", "resolve", "event", "state", "update", "show", "hide", "Commands", "hide", "show", "update", "handleError", "hydrate", "send"]
7
7
  }