claude-flow-novice 2.0.3 → 2.0.5

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 (228) hide show
  1. package/dist/src/cli/commands/swarm.js +1 -1
  2. package/dist/src/cli/main.js +1 -1
  3. package/dist/src/coordination/byzantine-memory-channels.js +25 -1
  4. package/dist/src/index.js +384 -35
  5. package/dist/src/utils/error-handler.js +2 -36
  6. package/dist/src/web/api/apm-routes.js +353 -0
  7. package/dist/src/web/api/config/api-config.js +184 -0
  8. package/dist/src/web/api/middleware/auth.js +203 -0
  9. package/dist/src/web/api/middleware/cache.js +273 -0
  10. package/dist/src/web/api/middleware/error-handler.js +257 -0
  11. package/dist/src/web/api/middleware/request-logger.js +215 -0
  12. package/dist/src/web/api/middleware/validation.js +323 -0
  13. package/dist/src/web/api/routes/events.js +463 -0
  14. package/dist/src/web/api/routes/hierarchy.js +300 -0
  15. package/dist/src/web/api/routes/index.js +12 -0
  16. package/dist/src/web/api/routes/metrics.js +559 -0
  17. package/dist/src/web/api/routes/parallel-status.js +359 -0
  18. package/dist/src/web/api/routes/status.js +448 -0
  19. package/dist/src/web/api/server.js +462 -0
  20. package/dist/src/web/dashboard/hooks/useWebSocket.js +383 -0
  21. package/dist/src/web/dashboard/index.js +85 -0
  22. package/dist/src/web/dashboard/realtime/CustomSyncManager.js +439 -0
  23. package/dist/src/web/dashboard/realtime/NativeWebSocketManager.js +323 -0
  24. package/dist/src/web/dashboard/realtime/PerformanceBenchmark.js +527 -0
  25. package/dist/src/web/dashboard/realtime/RealtimeCommunicationManager.js +474 -0
  26. package/dist/src/web/dashboard/realtime/RealtimeServer.js +666 -0
  27. package/dist/src/web/dashboard/realtime/SSEManager.js +426 -0
  28. package/dist/src/web/dashboard/types.js +4 -0
  29. package/dist/src/web/messaging/agent-status-tracker.js +453 -0
  30. package/dist/src/web/messaging/human-intervention-system.js +305 -0
  31. package/dist/src/web/messaging/message-filter.js +302 -0
  32. package/dist/src/web/messaging/swarm-message-router.js +324 -0
  33. package/dist/src/web/messaging/transparency-logger.js +421 -0
  34. package/dist/src/web/portal-server.js +460 -0
  35. package/dist/src/web/server.js +322 -0
  36. package/dist/src/web/websocket/apm-websocket-handler.js +453 -0
  37. package/dist/src/web/websocket/websocket-manager.js +780 -0
  38. package/package.json +6 -4
  39. package/dist/src/cli/minimal-main.js +0 -22
  40. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js +0 -23
  41. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +0 -57
  42. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +0 -401
  43. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +0 -181
  44. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js +0 -44
  45. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +0 -157
  46. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js +0 -71
  47. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/editorState/browser/editorState.js +0 -112
  48. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findController.js +0 -990
  49. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findDecorations.js +0 -296
  50. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findModel.js +0 -488
  51. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +0 -138
  52. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findState.js +0 -243
  53. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findWidget.js +0 -1177
  54. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/folding.js +0 -1093
  55. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +0 -133
  56. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingModel.js +0 -538
  57. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingRanges.js +0 -351
  58. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +0 -49
  59. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/format.js +0 -360
  60. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formatActions.js +0 -263
  61. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formattingEdit.js +0 -54
  62. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +0 -149
  63. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/hover/browser/contentHover.js +0 -874
  64. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js +0 -7
  65. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commands.js +0 -199
  66. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js +0 -70
  67. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +0 -26
  68. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +0 -153
  69. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +0 -33
  70. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +0 -354
  71. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js +0 -146
  72. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/suggest/browser/completionModel.js +0 -224
  73. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +0 -119
  74. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/edcore.main.js +0 -14
  75. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.all.js +0 -63
  76. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.api.js +0 -55
  77. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.main.js +0 -7
  78. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.worker.js +0 -25
  79. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/standalone/browser/colorizer.js +0 -118
  80. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/css.worker.js +0 -36869
  81. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/cssMode.js +0 -2035
  82. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
  83. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
  84. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
  85. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
  86. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
  87. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
  88. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
  89. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
  90. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
  91. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
  92. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
  93. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
  94. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
  95. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
  96. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
  97. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
  98. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
  99. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
  100. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
  101. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
  102. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
  103. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
  104. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
  105. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
  106. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
  107. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
  108. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
  109. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
  110. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
  111. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
  112. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
  113. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
  114. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
  115. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
  116. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
  117. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
  118. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
  119. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
  120. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
  121. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
  122. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
  123. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
  124. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cameligo/cameligo.js +0 -10
  125. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/clojure/clojure.js +0 -10
  126. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/coffee/coffee.js +0 -10
  127. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cpp/cpp.js +0 -10
  128. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csharp/csharp.js +0 -10
  129. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csp/csp.js +0 -10
  130. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/css/css.js +0 -12
  131. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cypher/cypher.js +0 -10
  132. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dart/dart.js +0 -10
  133. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dockerfile/dockerfile.js +0 -10
  134. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/ecl/ecl.js +0 -10
  135. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/elixir/elixir.js +0 -10
  136. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/flow9/flow9.js +0 -10
  137. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.js +0 -745
  138. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.de.js +0 -31
  139. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.es.js +0 -31
  140. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.fr.js +0 -29
  141. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.it.js +0 -29
  142. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ja.js +0 -31
  143. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.js +0 -29
  144. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ko.js +0 -29
  145. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ru.js +0 -31
  146. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-cn.js +0 -31
  147. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-tw.js +0 -29
  148. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssMode.js +0 -13
  149. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssWorker.js +0 -81
  150. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/cli.js +0 -64
  151. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/example.js +0 -36
  152. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/index.js +0 -205
  153. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/test.js +0 -260
  154. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.browser.js +0 -34
  155. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.js +0 -35
  156. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.native.js +0 -26
  157. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.browser.js +0 -34
  158. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.js +0 -45
  159. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/nanoid.js +0 -1
  160. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/non-secure/index.js +0 -21
  161. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/url-alphabet/index.js +0 -3
  162. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/bin/nodemon.js +0 -16
  163. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/index.js +0 -49
  164. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/parse.js +0 -230
  165. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/command.js +0 -43
  166. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/defaults.js +0 -34
  167. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/exec.js +0 -234
  168. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/index.js +0 -93
  169. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/load.js +0 -225
  170. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/help/index.js +0 -27
  171. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/index.js +0 -1
  172. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/index.js +0 -4
  173. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/match.js +0 -287
  174. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/run.js +0 -562
  175. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/signals.js +0 -34
  176. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/watch.js +0 -244
  177. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/nodemon.js +0 -317
  178. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/add.js +0 -89
  179. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/index.js +0 -53
  180. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/parse.js +0 -43
  181. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/spawn.js +0 -74
  182. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/bus.js +0 -44
  183. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/clone.js +0 -40
  184. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/colour.js +0 -26
  185. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/index.js +0 -103
  186. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/log.js +0 -82
  187. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/merge.js +0 -47
  188. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/version.js +0 -100
  189. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/brace-expansion/index.js +0 -201
  190. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/has-flag/index.js +0 -8
  191. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/minimatch/minimatch.js +0 -947
  192. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/browser.js +0 -5
  193. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/index.js +0 -131
  194. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/bin/pidtree.js +0 -128
  195. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/index.js +0 -49
  196. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/bin.js +0 -61
  197. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/get.js +0 -45
  198. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/pidtree.js +0 -104
  199. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/ps.js +0 -47
  200. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/wmic.js +0 -49
  201. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/doc.js +0 -1270
  202. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/acorn.js +0 -15
  203. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/angular.js +0 -2
  204. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/babel.js +0 -15
  205. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/estree.js +0 -36
  206. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/flow.js +0 -19
  207. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/glimmer.js +0 -29
  208. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/graphql.js +0 -29
  209. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/html.js +0 -22
  210. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/markdown.js +0 -63
  211. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/meriyah.js +0 -4
  212. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/postcss.js +0 -54
  213. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/typescript.js +0 -20
  214. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/yaml.js +0 -160
  215. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/standalone.js +0 -34
  216. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/bin/react-scripts.js +0 -58
  217. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/env.js +0 -112
  218. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/getHttpsConfig.js +0 -74
  219. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/babelTransform.js +0 -37
  220. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/cssTransform.js +0 -22
  221. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/fileTransform.js +0 -40
  222. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/modules.js +0 -142
  223. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/paths.js +0 -153
  224. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
  225. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack.config.js +0 -796
  226. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpackDevServer.config.js +0 -135
  227. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/build.js +0 -225
  228. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/eject.js +0 -340
@@ -1,1177 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
- import * as dom from '../../../../base/browser/dom.js';
6
- import { alert as alertFn } from '../../../../base/browser/ui/aria/aria.js';
7
- import { Toggle } from '../../../../base/browser/ui/toggle/toggle.js';
8
- import { Sash } from '../../../../base/browser/ui/sash/sash.js';
9
- import { Widget } from '../../../../base/browser/ui/widget.js';
10
- import { Delayer } from '../../../../base/common/async.js';
11
- import { Codicon } from '../../../../base/common/codicons.js';
12
- import { onUnexpectedError } from '../../../../base/common/errors.js';
13
- import { toDisposable } from '../../../../base/common/lifecycle.js';
14
- import * as platform from '../../../../base/common/platform.js';
15
- import * as strings from '../../../../base/common/strings.js';
16
- import './findWidget.css';
17
- import { Range } from '../../../common/core/range.js';
18
- import { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_REPLACE_INPUT_FOCUSED, FIND_IDS, MATCHES_LIMIT } from './findModel.js';
19
- import * as nls from '../../../../nls.js';
20
- import { ContextScopedFindInput, ContextScopedReplaceInput } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';
21
- import { showHistoryKeybindingHint } from '../../../../platform/history/browser/historyWidgetKeybindingHint.js';
22
- import { asCssVariable, contrastBorder, editorFindMatch, editorFindMatchBorder, editorFindMatchHighlight, editorFindMatchHighlightBorder, editorFindRangeHighlight, editorFindRangeHighlightBorder, editorWidgetBackground, editorWidgetBorder, editorWidgetForeground, editorWidgetResizeBorder, errorForeground, focusBorder, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground, toolbarHoverBackground, widgetBorder, widgetShadow } from '../../../../platform/theme/common/colorRegistry.js';
23
- import { registerIcon, widgetClose } from '../../../../platform/theme/common/iconRegistry.js';
24
- import { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';
25
- import { ThemeIcon } from '../../../../base/common/themables.js';
26
- import { isHighContrast } from '../../../../platform/theme/common/theme.js';
27
- import { assertIsDefined } from '../../../../base/common/types.js';
28
- import { defaultInputBoxStyles, defaultToggleStyles } from '../../../../platform/theme/browser/defaultStyles.js';
29
- const findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize('findSelectionIcon', 'Icon for \'Find in Selection\' in the editor find widget.'));
30
- const findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize('findCollapsedIcon', 'Icon to indicate that the editor find widget is collapsed.'));
31
- const findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize('findExpandedIcon', 'Icon to indicate that the editor find widget is expanded.'));
32
- export const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize('findReplaceIcon', 'Icon for \'Replace\' in the editor find widget.'));
33
- export const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize('findReplaceAllIcon', 'Icon for \'Replace All\' in the editor find widget.'));
34
- export const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize('findPreviousMatchIcon', 'Icon for \'Find Previous\' in the editor find widget.'));
35
- export const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize('findNextMatchIcon', 'Icon for \'Find Next\' in the editor find widget.'));
36
- const NLS_FIND_DIALOG_LABEL = nls.localize('label.findDialog', "Find / Replace");
37
- const NLS_FIND_INPUT_LABEL = nls.localize('label.find', "Find");
38
- const NLS_FIND_INPUT_PLACEHOLDER = nls.localize('placeholder.find', "Find");
39
- const NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', "Previous Match");
40
- const NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', "Next Match");
41
- const NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize('label.toggleSelectionFind', "Find in Selection");
42
- const NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', "Close");
43
- const NLS_REPLACE_INPUT_LABEL = nls.localize('label.replace', "Replace");
44
- const NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize('placeholder.replace', "Replace");
45
- const NLS_REPLACE_BTN_LABEL = nls.localize('label.replaceButton', "Replace");
46
- const NLS_REPLACE_ALL_BTN_LABEL = nls.localize('label.replaceAllButton', "Replace All");
47
- const NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize('label.toggleReplaceButton', "Toggle Replace");
48
- const NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize('title.matchesCountLimit', "Only the first {0} results are highlighted, but all find operations work on the entire text.", MATCHES_LIMIT);
49
- export const NLS_MATCHES_LOCATION = nls.localize('label.matchesLocation', "{0} of {1}");
50
- export const NLS_NO_RESULTS = nls.localize('label.noResults', "No results");
51
- const FIND_WIDGET_INITIAL_WIDTH = 419;
52
- const PART_WIDTH = 275;
53
- const FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;
54
- let MAX_MATCHES_COUNT_WIDTH = 69;
55
- // let FIND_ALL_CONTROLS_WIDTH = 17/** Find Input margin-left */ + (MAX_MATCHES_COUNT_WIDTH + 3 + 1) /** Match Results */ + 23 /** Button */ * 4 + 2/** sash */;
56
- const FIND_INPUT_AREA_HEIGHT = 33; // The height of Find Widget when Replace Input is not visible.
57
- const ctrlEnterReplaceAllWarningPromptedKey = 'ctrlEnterReplaceAll.windows.donotask';
58
- const ctrlKeyMod = (platform.isMacintosh ? 256 /* KeyMod.WinCtrl */ : 2048 /* KeyMod.CtrlCmd */);
59
- export class FindWidgetViewZone {
60
- constructor(afterLineNumber) {
61
- this.afterLineNumber = afterLineNumber;
62
- this.heightInPx = FIND_INPUT_AREA_HEIGHT;
63
- this.suppressMouseDown = false;
64
- this.domNode = document.createElement('div');
65
- this.domNode.className = 'dock-find-viewzone';
66
- }
67
- }
68
- function stopPropagationForMultiLineUpwards(event, value, textarea) {
69
- const isMultiline = !!value.match(/\n/);
70
- if (textarea && isMultiline && textarea.selectionStart > 0) {
71
- event.stopPropagation();
72
- return;
73
- }
74
- }
75
- function stopPropagationForMultiLineDownwards(event, value, textarea) {
76
- const isMultiline = !!value.match(/\n/);
77
- if (textarea && isMultiline && textarea.selectionEnd < textarea.value.length) {
78
- event.stopPropagation();
79
- return;
80
- }
81
- }
82
- export class FindWidget extends Widget {
83
- constructor(codeEditor, controller, state, contextViewProvider, keybindingService, contextKeyService, themeService, storageService, notificationService) {
84
- super();
85
- this._cachedHeight = null;
86
- this._revealTimeouts = [];
87
- this._codeEditor = codeEditor;
88
- this._controller = controller;
89
- this._state = state;
90
- this._contextViewProvider = contextViewProvider;
91
- this._keybindingService = keybindingService;
92
- this._contextKeyService = contextKeyService;
93
- this._storageService = storageService;
94
- this._notificationService = notificationService;
95
- this._ctrlEnterReplaceAllWarningPrompted = !!storageService.getBoolean(ctrlEnterReplaceAllWarningPromptedKey, 0 /* StorageScope.PROFILE */);
96
- this._isVisible = false;
97
- this._isReplaceVisible = false;
98
- this._ignoreChangeEvent = false;
99
- this._updateHistoryDelayer = new Delayer(500);
100
- this._register(toDisposable(() => this._updateHistoryDelayer.cancel()));
101
- this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));
102
- this._buildDomNode();
103
- this._updateButtons();
104
- this._tryUpdateWidgetWidth();
105
- this._findInput.inputBox.layout();
106
- this._register(this._codeEditor.onDidChangeConfiguration((e) => {
107
- if (e.hasChanged(90 /* EditorOption.readOnly */)) {
108
- if (this._codeEditor.getOption(90 /* EditorOption.readOnly */)) {
109
- // Hide replace part if editor becomes read only
110
- this._state.change({ isReplaceRevealed: false }, false);
111
- }
112
- this._updateButtons();
113
- }
114
- if (e.hasChanged(143 /* EditorOption.layoutInfo */)) {
115
- this._tryUpdateWidgetWidth();
116
- }
117
- if (e.hasChanged(2 /* EditorOption.accessibilitySupport */)) {
118
- this.updateAccessibilitySupport();
119
- }
120
- if (e.hasChanged(41 /* EditorOption.find */)) {
121
- const supportLoop = this._codeEditor.getOption(41 /* EditorOption.find */).loop;
122
- this._state.change({ loop: supportLoop }, false);
123
- const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;
124
- if (addExtraSpaceOnTop && !this._viewZone) {
125
- this._viewZone = new FindWidgetViewZone(0);
126
- this._showViewZone();
127
- }
128
- if (!addExtraSpaceOnTop && this._viewZone) {
129
- this._removeViewZone();
130
- }
131
- }
132
- }));
133
- this.updateAccessibilitySupport();
134
- this._register(this._codeEditor.onDidChangeCursorSelection(() => {
135
- if (this._isVisible) {
136
- this._updateToggleSelectionFindButton();
137
- }
138
- }));
139
- this._register(this._codeEditor.onDidFocusEditorWidget(async () => {
140
- if (this._isVisible) {
141
- const globalBufferTerm = await this._controller.getGlobalBufferTerm();
142
- if (globalBufferTerm && globalBufferTerm !== this._state.searchString) {
143
- this._state.change({ searchString: globalBufferTerm }, false);
144
- this._findInput.select();
145
- }
146
- }
147
- }));
148
- this._findInputFocused = CONTEXT_FIND_INPUT_FOCUSED.bindTo(contextKeyService);
149
- this._findFocusTracker = this._register(dom.trackFocus(this._findInput.inputBox.inputElement));
150
- this._register(this._findFocusTracker.onDidFocus(() => {
151
- this._findInputFocused.set(true);
152
- this._updateSearchScope();
153
- }));
154
- this._register(this._findFocusTracker.onDidBlur(() => {
155
- this._findInputFocused.set(false);
156
- }));
157
- this._replaceInputFocused = CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(contextKeyService);
158
- this._replaceFocusTracker = this._register(dom.trackFocus(this._replaceInput.inputBox.inputElement));
159
- this._register(this._replaceFocusTracker.onDidFocus(() => {
160
- this._replaceInputFocused.set(true);
161
- this._updateSearchScope();
162
- }));
163
- this._register(this._replaceFocusTracker.onDidBlur(() => {
164
- this._replaceInputFocused.set(false);
165
- }));
166
- this._codeEditor.addOverlayWidget(this);
167
- if (this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop) {
168
- this._viewZone = new FindWidgetViewZone(0); // Put it before the first line then users can scroll beyond the first line.
169
- }
170
- this._register(this._codeEditor.onDidChangeModel(() => {
171
- if (!this._isVisible) {
172
- return;
173
- }
174
- this._viewZoneId = undefined;
175
- }));
176
- this._register(this._codeEditor.onDidScrollChange((e) => {
177
- if (e.scrollTopChanged) {
178
- this._layoutViewZone();
179
- return;
180
- }
181
- // for other scroll changes, layout the viewzone in next tick to avoid ruining current rendering.
182
- setTimeout(() => {
183
- this._layoutViewZone();
184
- }, 0);
185
- }));
186
- }
187
- // ----- IOverlayWidget API
188
- getId() {
189
- return FindWidget.ID;
190
- }
191
- getDomNode() {
192
- return this._domNode;
193
- }
194
- getPosition() {
195
- if (this._isVisible) {
196
- return {
197
- preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */
198
- };
199
- }
200
- return null;
201
- }
202
- // ----- React to state changes
203
- _onStateChanged(e) {
204
- if (e.searchString) {
205
- try {
206
- this._ignoreChangeEvent = true;
207
- this._findInput.setValue(this._state.searchString);
208
- }
209
- finally {
210
- this._ignoreChangeEvent = false;
211
- }
212
- this._updateButtons();
213
- }
214
- if (e.replaceString) {
215
- this._replaceInput.inputBox.value = this._state.replaceString;
216
- }
217
- if (e.isRevealed) {
218
- if (this._state.isRevealed) {
219
- this._reveal();
220
- }
221
- else {
222
- this._hide(true);
223
- }
224
- }
225
- if (e.isReplaceRevealed) {
226
- if (this._state.isReplaceRevealed) {
227
- if (!this._codeEditor.getOption(90 /* EditorOption.readOnly */) && !this._isReplaceVisible) {
228
- this._isReplaceVisible = true;
229
- this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);
230
- this._updateButtons();
231
- this._replaceInput.inputBox.layout();
232
- }
233
- }
234
- else {
235
- if (this._isReplaceVisible) {
236
- this._isReplaceVisible = false;
237
- this._updateButtons();
238
- }
239
- }
240
- }
241
- if ((e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed)) {
242
- if (this._tryUpdateHeight()) {
243
- this._showViewZone();
244
- }
245
- }
246
- if (e.isRegex) {
247
- this._findInput.setRegex(this._state.isRegex);
248
- }
249
- if (e.wholeWord) {
250
- this._findInput.setWholeWords(this._state.wholeWord);
251
- }
252
- if (e.matchCase) {
253
- this._findInput.setCaseSensitive(this._state.matchCase);
254
- }
255
- if (e.preserveCase) {
256
- this._replaceInput.setPreserveCase(this._state.preserveCase);
257
- }
258
- if (e.searchScope) {
259
- if (this._state.searchScope) {
260
- this._toggleSelectionFind.checked = true;
261
- }
262
- else {
263
- this._toggleSelectionFind.checked = false;
264
- }
265
- this._updateToggleSelectionFindButton();
266
- }
267
- if (e.searchString || e.matchesCount || e.matchesPosition) {
268
- const showRedOutline = (this._state.searchString.length > 0 && this._state.matchesCount === 0);
269
- this._domNode.classList.toggle('no-results', showRedOutline);
270
- this._updateMatchesCount();
271
- this._updateButtons();
272
- }
273
- if (e.searchString || e.currentMatch) {
274
- this._layoutViewZone();
275
- }
276
- if (e.updateHistory) {
277
- this._delayedUpdateHistory();
278
- }
279
- if (e.loop) {
280
- this._updateButtons();
281
- }
282
- }
283
- _delayedUpdateHistory() {
284
- this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(undefined, onUnexpectedError);
285
- }
286
- _updateHistory() {
287
- if (this._state.searchString) {
288
- this._findInput.inputBox.addToHistory();
289
- }
290
- if (this._state.replaceString) {
291
- this._replaceInput.inputBox.addToHistory();
292
- }
293
- }
294
- _updateMatchesCount() {
295
- this._matchesCount.style.minWidth = MAX_MATCHES_COUNT_WIDTH + 'px';
296
- if (this._state.matchesCount >= MATCHES_LIMIT) {
297
- this._matchesCount.title = NLS_MATCHES_COUNT_LIMIT_TITLE;
298
- }
299
- else {
300
- this._matchesCount.title = '';
301
- }
302
- // remove previous content
303
- if (this._matchesCount.firstChild) {
304
- this._matchesCount.removeChild(this._matchesCount.firstChild);
305
- }
306
- let label;
307
- if (this._state.matchesCount > 0) {
308
- let matchesCount = String(this._state.matchesCount);
309
- if (this._state.matchesCount >= MATCHES_LIMIT) {
310
- matchesCount += '+';
311
- }
312
- let matchesPosition = String(this._state.matchesPosition);
313
- if (matchesPosition === '0') {
314
- matchesPosition = '?';
315
- }
316
- label = strings.format(NLS_MATCHES_LOCATION, matchesPosition, matchesCount);
317
- }
318
- else {
319
- label = NLS_NO_RESULTS;
320
- }
321
- this._matchesCount.appendChild(document.createTextNode(label));
322
- alertFn(this._getAriaLabel(label, this._state.currentMatch, this._state.searchString));
323
- MAX_MATCHES_COUNT_WIDTH = Math.max(MAX_MATCHES_COUNT_WIDTH, this._matchesCount.clientWidth);
324
- }
325
- // ----- actions
326
- _getAriaLabel(label, currentMatch, searchString) {
327
- if (label === NLS_NO_RESULTS) {
328
- return searchString === ''
329
- ? nls.localize('ariaSearchNoResultEmpty', "{0} found", label)
330
- : nls.localize('ariaSearchNoResult', "{0} found for '{1}'", label, searchString);
331
- }
332
- if (currentMatch) {
333
- const ariaLabel = nls.localize('ariaSearchNoResultWithLineNum', "{0} found for '{1}', at {2}", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);
334
- const model = this._codeEditor.getModel();
335
- if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {
336
- const lineContent = model.getLineContent(currentMatch.startLineNumber);
337
- return `${lineContent}, ${ariaLabel}`;
338
- }
339
- return ariaLabel;
340
- }
341
- return nls.localize('ariaSearchNoResultWithLineNumNoCurrentMatch', "{0} found for '{1}'", label, searchString);
342
- }
343
- /**
344
- * If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').
345
- * If 'selection find' is OFF we enable the button only if there is a selection.
346
- */
347
- _updateToggleSelectionFindButton() {
348
- const selection = this._codeEditor.getSelection();
349
- const isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false;
350
- const isChecked = this._toggleSelectionFind.checked;
351
- if (this._isVisible && (isChecked || isSelection)) {
352
- this._toggleSelectionFind.enable();
353
- }
354
- else {
355
- this._toggleSelectionFind.disable();
356
- }
357
- }
358
- _updateButtons() {
359
- this._findInput.setEnabled(this._isVisible);
360
- this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible);
361
- this._updateToggleSelectionFindButton();
362
- this._closeBtn.setEnabled(this._isVisible);
363
- const findInputIsNonEmpty = (this._state.searchString.length > 0);
364
- const matchesCount = this._state.matchesCount ? true : false;
365
- this._prevBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateBack());
366
- this._nextBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateForward());
367
- this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);
368
- this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);
369
- this._domNode.classList.toggle('replaceToggled', this._isReplaceVisible);
370
- this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);
371
- const canReplace = !this._codeEditor.getOption(90 /* EditorOption.readOnly */);
372
- this._toggleReplaceBtn.setEnabled(this._isVisible && canReplace);
373
- }
374
- _reveal() {
375
- this._revealTimeouts.forEach(e => {
376
- clearTimeout(e);
377
- });
378
- this._revealTimeouts = [];
379
- if (!this._isVisible) {
380
- this._isVisible = true;
381
- const selection = this._codeEditor.getSelection();
382
- switch (this._codeEditor.getOption(41 /* EditorOption.find */).autoFindInSelection) {
383
- case 'always':
384
- this._toggleSelectionFind.checked = true;
385
- break;
386
- case 'never':
387
- this._toggleSelectionFind.checked = false;
388
- break;
389
- case 'multiline': {
390
- const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;
391
- this._toggleSelectionFind.checked = isSelectionMultipleLine;
392
- break;
393
- }
394
- default:
395
- break;
396
- }
397
- this._tryUpdateWidgetWidth();
398
- this._updateButtons();
399
- this._revealTimeouts.push(setTimeout(() => {
400
- this._domNode.classList.add('visible');
401
- this._domNode.setAttribute('aria-hidden', 'false');
402
- }, 0));
403
- // validate query again as it's being dismissed when we hide the find widget.
404
- this._revealTimeouts.push(setTimeout(() => {
405
- this._findInput.validate();
406
- }, 200));
407
- this._codeEditor.layoutOverlayWidget(this);
408
- let adjustEditorScrollTop = true;
409
- if (this._codeEditor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection && selection) {
410
- const domNode = this._codeEditor.getDomNode();
411
- if (domNode) {
412
- const editorCoords = dom.getDomNodePagePosition(domNode);
413
- const startCoords = this._codeEditor.getScrolledVisiblePosition(selection.getStartPosition());
414
- const startLeft = editorCoords.left + (startCoords ? startCoords.left : 0);
415
- const startTop = startCoords ? startCoords.top : 0;
416
- if (this._viewZone && startTop < this._viewZone.heightInPx) {
417
- if (selection.endLineNumber > selection.startLineNumber) {
418
- adjustEditorScrollTop = false;
419
- }
420
- const leftOfFindWidget = dom.getTopLeftOffset(this._domNode).left;
421
- if (startLeft > leftOfFindWidget) {
422
- adjustEditorScrollTop = false;
423
- }
424
- const endCoords = this._codeEditor.getScrolledVisiblePosition(selection.getEndPosition());
425
- const endLeft = editorCoords.left + (endCoords ? endCoords.left : 0);
426
- if (endLeft > leftOfFindWidget) {
427
- adjustEditorScrollTop = false;
428
- }
429
- }
430
- }
431
- }
432
- this._showViewZone(adjustEditorScrollTop);
433
- }
434
- }
435
- _hide(focusTheEditor) {
436
- this._revealTimeouts.forEach(e => {
437
- clearTimeout(e);
438
- });
439
- this._revealTimeouts = [];
440
- if (this._isVisible) {
441
- this._isVisible = false;
442
- this._updateButtons();
443
- this._domNode.classList.remove('visible');
444
- this._domNode.setAttribute('aria-hidden', 'true');
445
- this._findInput.clearMessage();
446
- if (focusTheEditor) {
447
- this._codeEditor.focus();
448
- }
449
- this._codeEditor.layoutOverlayWidget(this);
450
- this._removeViewZone();
451
- }
452
- }
453
- _layoutViewZone(targetScrollTop) {
454
- const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;
455
- if (!addExtraSpaceOnTop) {
456
- this._removeViewZone();
457
- return;
458
- }
459
- if (!this._isVisible) {
460
- return;
461
- }
462
- const viewZone = this._viewZone;
463
- if (this._viewZoneId !== undefined || !viewZone) {
464
- return;
465
- }
466
- this._codeEditor.changeViewZones((accessor) => {
467
- viewZone.heightInPx = this._getHeight();
468
- this._viewZoneId = accessor.addZone(viewZone);
469
- // scroll top adjust to make sure the editor doesn't scroll when adding viewzone at the beginning.
470
- this._codeEditor.setScrollTop(targetScrollTop || this._codeEditor.getScrollTop() + viewZone.heightInPx);
471
- });
472
- }
473
- _showViewZone(adjustScroll = true) {
474
- if (!this._isVisible) {
475
- return;
476
- }
477
- const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;
478
- if (!addExtraSpaceOnTop) {
479
- return;
480
- }
481
- if (this._viewZone === undefined) {
482
- this._viewZone = new FindWidgetViewZone(0);
483
- }
484
- const viewZone = this._viewZone;
485
- this._codeEditor.changeViewZones((accessor) => {
486
- if (this._viewZoneId !== undefined) {
487
- // the view zone already exists, we need to update the height
488
- const newHeight = this._getHeight();
489
- if (newHeight === viewZone.heightInPx) {
490
- return;
491
- }
492
- const scrollAdjustment = newHeight - viewZone.heightInPx;
493
- viewZone.heightInPx = newHeight;
494
- accessor.layoutZone(this._viewZoneId);
495
- if (adjustScroll) {
496
- this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);
497
- }
498
- return;
499
- }
500
- else {
501
- let scrollAdjustment = this._getHeight();
502
- // if the editor has top padding, factor that into the zone height
503
- scrollAdjustment -= this._codeEditor.getOption(83 /* EditorOption.padding */).top;
504
- if (scrollAdjustment <= 0) {
505
- return;
506
- }
507
- viewZone.heightInPx = scrollAdjustment;
508
- this._viewZoneId = accessor.addZone(viewZone);
509
- if (adjustScroll) {
510
- this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);
511
- }
512
- }
513
- });
514
- }
515
- _removeViewZone() {
516
- this._codeEditor.changeViewZones((accessor) => {
517
- if (this._viewZoneId !== undefined) {
518
- accessor.removeZone(this._viewZoneId);
519
- this._viewZoneId = undefined;
520
- if (this._viewZone) {
521
- this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx);
522
- this._viewZone = undefined;
523
- }
524
- }
525
- });
526
- }
527
- _tryUpdateWidgetWidth() {
528
- if (!this._isVisible) {
529
- return;
530
- }
531
- if (!this._domNode.isConnected) {
532
- // the widget is not in the DOM
533
- return;
534
- }
535
- const layoutInfo = this._codeEditor.getLayoutInfo();
536
- const editorContentWidth = layoutInfo.contentWidth;
537
- if (editorContentWidth <= 0) {
538
- // for example, diff view original editor
539
- this._domNode.classList.add('hiddenEditor');
540
- return;
541
- }
542
- else if (this._domNode.classList.contains('hiddenEditor')) {
543
- this._domNode.classList.remove('hiddenEditor');
544
- }
545
- const editorWidth = layoutInfo.width;
546
- const minimapWidth = layoutInfo.minimap.minimapWidth;
547
- let collapsedFindWidget = false;
548
- let reducedFindWidget = false;
549
- let narrowFindWidget = false;
550
- if (this._resized) {
551
- const widgetWidth = dom.getTotalWidth(this._domNode);
552
- if (widgetWidth > FIND_WIDGET_INITIAL_WIDTH) {
553
- // as the widget is resized by users, we may need to change the max width of the widget as the editor width changes.
554
- this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;
555
- this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);
556
- return;
557
- }
558
- }
559
- if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth >= editorWidth) {
560
- reducedFindWidget = true;
561
- }
562
- if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth) {
563
- narrowFindWidget = true;
564
- }
565
- if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth + 50) {
566
- collapsedFindWidget = true;
567
- }
568
- this._domNode.classList.toggle('collapsed-find-widget', collapsedFindWidget);
569
- this._domNode.classList.toggle('narrow-find-widget', narrowFindWidget);
570
- this._domNode.classList.toggle('reduced-find-widget', reducedFindWidget);
571
- if (!narrowFindWidget && !collapsedFindWidget) {
572
- // the minimal left offset of findwidget is 15px.
573
- this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;
574
- }
575
- this._findInput.layout({ collapsedFindWidget, narrowFindWidget, reducedFindWidget });
576
- if (this._resized) {
577
- const findInputWidth = this._findInput.inputBox.element.clientWidth;
578
- if (findInputWidth > 0) {
579
- this._replaceInput.width = findInputWidth;
580
- }
581
- }
582
- else if (this._isReplaceVisible) {
583
- this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);
584
- }
585
- }
586
- _getHeight() {
587
- let totalheight = 0;
588
- // find input margin top
589
- totalheight += 4;
590
- // find input height
591
- totalheight += this._findInput.inputBox.height + 2 /** input box border */;
592
- if (this._isReplaceVisible) {
593
- // replace input margin
594
- totalheight += 4;
595
- totalheight += this._replaceInput.inputBox.height + 2 /** input box border */;
596
- }
597
- // margin bottom
598
- totalheight += 4;
599
- return totalheight;
600
- }
601
- _tryUpdateHeight() {
602
- const totalHeight = this._getHeight();
603
- if (this._cachedHeight !== null && this._cachedHeight === totalHeight) {
604
- return false;
605
- }
606
- this._cachedHeight = totalHeight;
607
- this._domNode.style.height = `${totalHeight}px`;
608
- return true;
609
- }
610
- // ----- Public
611
- focusFindInput() {
612
- this._findInput.select();
613
- // Edge browser requires focus() in addition to select()
614
- this._findInput.focus();
615
- }
616
- focusReplaceInput() {
617
- this._replaceInput.select();
618
- // Edge browser requires focus() in addition to select()
619
- this._replaceInput.focus();
620
- }
621
- highlightFindOptions() {
622
- this._findInput.highlightFindOptions();
623
- }
624
- _updateSearchScope() {
625
- if (!this._codeEditor.hasModel()) {
626
- return;
627
- }
628
- if (this._toggleSelectionFind.checked) {
629
- const selections = this._codeEditor.getSelections();
630
- selections.map(selection => {
631
- if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {
632
- selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));
633
- }
634
- const currentMatch = this._state.currentMatch;
635
- if (selection.startLineNumber !== selection.endLineNumber) {
636
- if (!Range.equalsRange(selection, currentMatch)) {
637
- return selection;
638
- }
639
- }
640
- return null;
641
- }).filter(element => !!element);
642
- if (selections.length) {
643
- this._state.change({ searchScope: selections }, true);
644
- }
645
- }
646
- }
647
- _onFindInputMouseDown(e) {
648
- // on linux, middle key does pasting.
649
- if (e.middleButton) {
650
- e.stopPropagation();
651
- }
652
- }
653
- _onFindInputKeyDown(e) {
654
- if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {
655
- if (this._keybindingService.dispatchEvent(e, e.target)) {
656
- e.preventDefault();
657
- return;
658
- }
659
- else {
660
- this._findInput.inputBox.insertAtCursor('\n');
661
- e.preventDefault();
662
- return;
663
- }
664
- }
665
- if (e.equals(2 /* KeyCode.Tab */)) {
666
- if (this._isReplaceVisible) {
667
- this._replaceInput.focus();
668
- }
669
- else {
670
- this._findInput.focusOnCaseSensitive();
671
- }
672
- e.preventDefault();
673
- return;
674
- }
675
- if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {
676
- this._codeEditor.focus();
677
- e.preventDefault();
678
- return;
679
- }
680
- if (e.equals(16 /* KeyCode.UpArrow */)) {
681
- return stopPropagationForMultiLineUpwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));
682
- }
683
- if (e.equals(18 /* KeyCode.DownArrow */)) {
684
- return stopPropagationForMultiLineDownwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));
685
- }
686
- }
687
- _onReplaceInputKeyDown(e) {
688
- if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {
689
- if (this._keybindingService.dispatchEvent(e, e.target)) {
690
- e.preventDefault();
691
- return;
692
- }
693
- else {
694
- if (platform.isWindows && platform.isNative && !this._ctrlEnterReplaceAllWarningPrompted) {
695
- // this is the first time when users press Ctrl + Enter to replace all
696
- this._notificationService.info(nls.localize('ctrlEnter.keybindingChanged', 'Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.'));
697
- this._ctrlEnterReplaceAllWarningPrompted = true;
698
- this._storageService.store(ctrlEnterReplaceAllWarningPromptedKey, true, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);
699
- }
700
- this._replaceInput.inputBox.insertAtCursor('\n');
701
- e.preventDefault();
702
- return;
703
- }
704
- }
705
- if (e.equals(2 /* KeyCode.Tab */)) {
706
- this._findInput.focusOnCaseSensitive();
707
- e.preventDefault();
708
- return;
709
- }
710
- if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {
711
- this._findInput.focus();
712
- e.preventDefault();
713
- return;
714
- }
715
- if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {
716
- this._codeEditor.focus();
717
- e.preventDefault();
718
- return;
719
- }
720
- if (e.equals(16 /* KeyCode.UpArrow */)) {
721
- return stopPropagationForMultiLineUpwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));
722
- }
723
- if (e.equals(18 /* KeyCode.DownArrow */)) {
724
- return stopPropagationForMultiLineDownwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));
725
- }
726
- }
727
- // ----- sash
728
- getVerticalSashLeft(_sash) {
729
- return 0;
730
- }
731
- // ----- initialization
732
- _keybindingLabelFor(actionId) {
733
- const kb = this._keybindingService.lookupKeybinding(actionId);
734
- if (!kb) {
735
- return '';
736
- }
737
- return ` (${kb.getLabel()})`;
738
- }
739
- _buildDomNode() {
740
- const flexibleHeight = true;
741
- const flexibleWidth = true;
742
- // Find input
743
- this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewProvider, {
744
- width: FIND_INPUT_AREA_WIDTH,
745
- label: NLS_FIND_INPUT_LABEL,
746
- placeholder: NLS_FIND_INPUT_PLACEHOLDER,
747
- appendCaseSensitiveLabel: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),
748
- appendWholeWordsLabel: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),
749
- appendRegexLabel: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),
750
- validation: (value) => {
751
- if (value.length === 0 || !this._findInput.getRegex()) {
752
- return null;
753
- }
754
- try {
755
- // use `g` and `u` which are also used by the TextModel search
756
- new RegExp(value, 'gu');
757
- return null;
758
- }
759
- catch (e) {
760
- return { content: e.message };
761
- }
762
- },
763
- flexibleHeight,
764
- flexibleWidth,
765
- flexibleMaxHeight: 118,
766
- showCommonFindToggles: true,
767
- showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),
768
- inputBoxStyles: defaultInputBoxStyles,
769
- toggleStyles: defaultToggleStyles
770
- }, this._contextKeyService));
771
- this._findInput.setRegex(!!this._state.isRegex);
772
- this._findInput.setCaseSensitive(!!this._state.matchCase);
773
- this._findInput.setWholeWords(!!this._state.wholeWord);
774
- this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e)));
775
- this._register(this._findInput.inputBox.onDidChange(() => {
776
- if (this._ignoreChangeEvent) {
777
- return;
778
- }
779
- this._state.change({ searchString: this._findInput.getValue() }, true);
780
- }));
781
- this._register(this._findInput.onDidOptionChange(() => {
782
- this._state.change({
783
- isRegex: this._findInput.getRegex(),
784
- wholeWord: this._findInput.getWholeWords(),
785
- matchCase: this._findInput.getCaseSensitive()
786
- }, true);
787
- }));
788
- this._register(this._findInput.onCaseSensitiveKeyDown((e) => {
789
- if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {
790
- if (this._isReplaceVisible) {
791
- this._replaceInput.focus();
792
- e.preventDefault();
793
- }
794
- }
795
- }));
796
- this._register(this._findInput.onRegexKeyDown((e) => {
797
- if (e.equals(2 /* KeyCode.Tab */)) {
798
- if (this._isReplaceVisible) {
799
- this._replaceInput.focusOnPreserve();
800
- e.preventDefault();
801
- }
802
- }
803
- }));
804
- this._register(this._findInput.inputBox.onDidHeightChange((e) => {
805
- if (this._tryUpdateHeight()) {
806
- this._showViewZone();
807
- }
808
- }));
809
- if (platform.isLinux) {
810
- this._register(this._findInput.onMouseDown((e) => this._onFindInputMouseDown(e)));
811
- }
812
- this._matchesCount = document.createElement('div');
813
- this._matchesCount.className = 'matchesCount';
814
- this._updateMatchesCount();
815
- // Previous button
816
- this._prevBtn = this._register(new SimpleButton({
817
- label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),
818
- icon: findPreviousMatchIcon,
819
- onTrigger: () => {
820
- assertIsDefined(this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction)).run().then(undefined, onUnexpectedError);
821
- }
822
- }));
823
- // Next button
824
- this._nextBtn = this._register(new SimpleButton({
825
- label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),
826
- icon: findNextMatchIcon,
827
- onTrigger: () => {
828
- assertIsDefined(this._codeEditor.getAction(FIND_IDS.NextMatchFindAction)).run().then(undefined, onUnexpectedError);
829
- }
830
- }));
831
- const findPart = document.createElement('div');
832
- findPart.className = 'find-part';
833
- findPart.appendChild(this._findInput.domNode);
834
- const actionsContainer = document.createElement('div');
835
- actionsContainer.className = 'find-actions';
836
- findPart.appendChild(actionsContainer);
837
- actionsContainer.appendChild(this._matchesCount);
838
- actionsContainer.appendChild(this._prevBtn.domNode);
839
- actionsContainer.appendChild(this._nextBtn.domNode);
840
- // Toggle selection button
841
- this._toggleSelectionFind = this._register(new Toggle({
842
- icon: findSelectionIcon,
843
- title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),
844
- isChecked: false,
845
- inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),
846
- inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),
847
- inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),
848
- }));
849
- this._register(this._toggleSelectionFind.onChange(() => {
850
- if (this._toggleSelectionFind.checked) {
851
- if (this._codeEditor.hasModel()) {
852
- const selections = this._codeEditor.getSelections();
853
- selections.map(selection => {
854
- if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {
855
- selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));
856
- }
857
- if (!selection.isEmpty()) {
858
- return selection;
859
- }
860
- return null;
861
- }).filter(element => !!element);
862
- if (selections.length) {
863
- this._state.change({ searchScope: selections }, true);
864
- }
865
- }
866
- }
867
- else {
868
- this._state.change({ searchScope: null }, true);
869
- }
870
- }));
871
- actionsContainer.appendChild(this._toggleSelectionFind.domNode);
872
- // Close button
873
- this._closeBtn = this._register(new SimpleButton({
874
- label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),
875
- icon: widgetClose,
876
- onTrigger: () => {
877
- this._state.change({ isRevealed: false, searchScope: null }, false);
878
- },
879
- onKeyDown: (e) => {
880
- if (e.equals(2 /* KeyCode.Tab */)) {
881
- if (this._isReplaceVisible) {
882
- if (this._replaceBtn.isEnabled()) {
883
- this._replaceBtn.focus();
884
- }
885
- else {
886
- this._codeEditor.focus();
887
- }
888
- e.preventDefault();
889
- }
890
- }
891
- }
892
- }));
893
- // Replace input
894
- this._replaceInput = this._register(new ContextScopedReplaceInput(null, undefined, {
895
- label: NLS_REPLACE_INPUT_LABEL,
896
- placeholder: NLS_REPLACE_INPUT_PLACEHOLDER,
897
- appendPreserveCaseLabel: this._keybindingLabelFor(FIND_IDS.TogglePreserveCaseCommand),
898
- history: [],
899
- flexibleHeight,
900
- flexibleWidth,
901
- flexibleMaxHeight: 118,
902
- showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),
903
- inputBoxStyles: defaultInputBoxStyles,
904
- toggleStyles: defaultToggleStyles
905
- }, this._contextKeyService, true));
906
- this._replaceInput.setPreserveCase(!!this._state.preserveCase);
907
- this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));
908
- this._register(this._replaceInput.inputBox.onDidChange(() => {
909
- this._state.change({ replaceString: this._replaceInput.inputBox.value }, false);
910
- }));
911
- this._register(this._replaceInput.inputBox.onDidHeightChange((e) => {
912
- if (this._isReplaceVisible && this._tryUpdateHeight()) {
913
- this._showViewZone();
914
- }
915
- }));
916
- this._register(this._replaceInput.onDidOptionChange(() => {
917
- this._state.change({
918
- preserveCase: this._replaceInput.getPreserveCase()
919
- }, true);
920
- }));
921
- this._register(this._replaceInput.onPreserveCaseKeyDown((e) => {
922
- if (e.equals(2 /* KeyCode.Tab */)) {
923
- if (this._prevBtn.isEnabled()) {
924
- this._prevBtn.focus();
925
- }
926
- else if (this._nextBtn.isEnabled()) {
927
- this._nextBtn.focus();
928
- }
929
- else if (this._toggleSelectionFind.enabled) {
930
- this._toggleSelectionFind.focus();
931
- }
932
- else if (this._closeBtn.isEnabled()) {
933
- this._closeBtn.focus();
934
- }
935
- e.preventDefault();
936
- }
937
- }));
938
- // Replace one button
939
- this._replaceBtn = this._register(new SimpleButton({
940
- label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),
941
- icon: findReplaceIcon,
942
- onTrigger: () => {
943
- this._controller.replace();
944
- },
945
- onKeyDown: (e) => {
946
- if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {
947
- this._closeBtn.focus();
948
- e.preventDefault();
949
- }
950
- }
951
- }));
952
- // Replace all button
953
- this._replaceAllBtn = this._register(new SimpleButton({
954
- label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),
955
- icon: findReplaceAllIcon,
956
- onTrigger: () => {
957
- this._controller.replaceAll();
958
- }
959
- }));
960
- const replacePart = document.createElement('div');
961
- replacePart.className = 'replace-part';
962
- replacePart.appendChild(this._replaceInput.domNode);
963
- const replaceActionsContainer = document.createElement('div');
964
- replaceActionsContainer.className = 'replace-actions';
965
- replacePart.appendChild(replaceActionsContainer);
966
- replaceActionsContainer.appendChild(this._replaceBtn.domNode);
967
- replaceActionsContainer.appendChild(this._replaceAllBtn.domNode);
968
- // Toggle replace button
969
- this._toggleReplaceBtn = this._register(new SimpleButton({
970
- label: NLS_TOGGLE_REPLACE_MODE_BTN_LABEL,
971
- className: 'codicon toggle left',
972
- onTrigger: () => {
973
- this._state.change({ isReplaceRevealed: !this._isReplaceVisible }, false);
974
- if (this._isReplaceVisible) {
975
- this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);
976
- this._replaceInput.inputBox.layout();
977
- }
978
- this._showViewZone();
979
- }
980
- }));
981
- this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);
982
- // Widget
983
- this._domNode = document.createElement('div');
984
- this._domNode.className = 'editor-widget find-widget';
985
- this._domNode.setAttribute('aria-hidden', 'true');
986
- this._domNode.ariaLabel = NLS_FIND_DIALOG_LABEL;
987
- this._domNode.role = 'dialog';
988
- // We need to set this explicitly, otherwise on IE11, the width inheritence of flex doesn't work.
989
- this._domNode.style.width = `${FIND_WIDGET_INITIAL_WIDTH}px`;
990
- this._domNode.appendChild(this._toggleReplaceBtn.domNode);
991
- this._domNode.appendChild(findPart);
992
- this._domNode.appendChild(this._closeBtn.domNode);
993
- this._domNode.appendChild(replacePart);
994
- this._resizeSash = new Sash(this._domNode, this, { orientation: 0 /* Orientation.VERTICAL */, size: 2 });
995
- this._resized = false;
996
- let originalWidth = FIND_WIDGET_INITIAL_WIDTH;
997
- this._register(this._resizeSash.onDidStart(() => {
998
- originalWidth = dom.getTotalWidth(this._domNode);
999
- }));
1000
- this._register(this._resizeSash.onDidChange((evt) => {
1001
- this._resized = true;
1002
- const width = originalWidth + evt.startX - evt.currentX;
1003
- if (width < FIND_WIDGET_INITIAL_WIDTH) {
1004
- // narrow down the find widget should be handled by CSS.
1005
- return;
1006
- }
1007
- const maxWidth = parseFloat(dom.getComputedStyle(this._domNode).maxWidth) || 0;
1008
- if (width > maxWidth) {
1009
- return;
1010
- }
1011
- this._domNode.style.width = `${width}px`;
1012
- if (this._isReplaceVisible) {
1013
- this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);
1014
- }
1015
- this._findInput.inputBox.layout();
1016
- this._tryUpdateHeight();
1017
- }));
1018
- this._register(this._resizeSash.onDidReset(() => {
1019
- // users double click on the sash
1020
- const currentWidth = dom.getTotalWidth(this._domNode);
1021
- if (currentWidth < FIND_WIDGET_INITIAL_WIDTH) {
1022
- // The editor is narrow and the width of the find widget is controlled fully by CSS.
1023
- return;
1024
- }
1025
- let width = FIND_WIDGET_INITIAL_WIDTH;
1026
- if (!this._resized || currentWidth === FIND_WIDGET_INITIAL_WIDTH) {
1027
- // 1. never resized before, double click should maximizes it
1028
- // 2. users resized it already but its width is the same as default
1029
- const layoutInfo = this._codeEditor.getLayoutInfo();
1030
- width = layoutInfo.width - 28 - layoutInfo.minimap.minimapWidth - 15;
1031
- this._resized = true;
1032
- }
1033
- else {
1034
- /**
1035
- * no op, the find widget should be shrinked to its default size.
1036
- */
1037
- }
1038
- this._domNode.style.width = `${width}px`;
1039
- if (this._isReplaceVisible) {
1040
- this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);
1041
- }
1042
- this._findInput.inputBox.layout();
1043
- }));
1044
- }
1045
- updateAccessibilitySupport() {
1046
- const value = this._codeEditor.getOption(2 /* EditorOption.accessibilitySupport */);
1047
- this._findInput.setFocusInputOnOptionClick(value !== 2 /* AccessibilitySupport.Enabled */);
1048
- }
1049
- }
1050
- FindWidget.ID = 'editor.contrib.findWidget';
1051
- export class SimpleButton extends Widget {
1052
- constructor(opts) {
1053
- super();
1054
- this._opts = opts;
1055
- let className = 'button';
1056
- if (this._opts.className) {
1057
- className = className + ' ' + this._opts.className;
1058
- }
1059
- if (this._opts.icon) {
1060
- className = className + ' ' + ThemeIcon.asClassName(this._opts.icon);
1061
- }
1062
- this._domNode = document.createElement('div');
1063
- this._domNode.title = this._opts.label;
1064
- this._domNode.tabIndex = 0;
1065
- this._domNode.className = className;
1066
- this._domNode.setAttribute('role', 'button');
1067
- this._domNode.setAttribute('aria-label', this._opts.label);
1068
- this.onclick(this._domNode, (e) => {
1069
- this._opts.onTrigger();
1070
- e.preventDefault();
1071
- });
1072
- this.onkeydown(this._domNode, (e) => {
1073
- var _a, _b;
1074
- if (e.equals(10 /* KeyCode.Space */) || e.equals(3 /* KeyCode.Enter */)) {
1075
- this._opts.onTrigger();
1076
- e.preventDefault();
1077
- return;
1078
- }
1079
- (_b = (_a = this._opts).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, e);
1080
- });
1081
- }
1082
- get domNode() {
1083
- return this._domNode;
1084
- }
1085
- isEnabled() {
1086
- return (this._domNode.tabIndex >= 0);
1087
- }
1088
- focus() {
1089
- this._domNode.focus();
1090
- }
1091
- setEnabled(enabled) {
1092
- this._domNode.classList.toggle('disabled', !enabled);
1093
- this._domNode.setAttribute('aria-disabled', String(!enabled));
1094
- this._domNode.tabIndex = enabled ? 0 : -1;
1095
- }
1096
- setExpanded(expanded) {
1097
- this._domNode.setAttribute('aria-expanded', String(!!expanded));
1098
- if (expanded) {
1099
- this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findCollapsedIcon));
1100
- this._domNode.classList.add(...ThemeIcon.asClassNameArray(findExpandedIcon));
1101
- }
1102
- else {
1103
- this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findExpandedIcon));
1104
- this._domNode.classList.add(...ThemeIcon.asClassNameArray(findCollapsedIcon));
1105
- }
1106
- }
1107
- }
1108
- // theming
1109
- registerThemingParticipant((theme, collector) => {
1110
- const addBackgroundColorRule = (selector, color) => {
1111
- if (color) {
1112
- collector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);
1113
- }
1114
- };
1115
- addBackgroundColorRule('.findMatch', theme.getColor(editorFindMatchHighlight));
1116
- addBackgroundColorRule('.currentFindMatch', theme.getColor(editorFindMatch));
1117
- addBackgroundColorRule('.findScope', theme.getColor(editorFindRangeHighlight));
1118
- const widgetBackground = theme.getColor(editorWidgetBackground);
1119
- addBackgroundColorRule('.find-widget', widgetBackground);
1120
- const widgetShadowColor = theme.getColor(widgetShadow);
1121
- if (widgetShadowColor) {
1122
- collector.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${widgetShadowColor}; }`);
1123
- }
1124
- const widgetBorderColor = theme.getColor(widgetBorder);
1125
- if (widgetBorderColor) {
1126
- collector.addRule(`.monaco-editor .find-widget { border-left: 1px solid ${widgetBorderColor}; border-right: 1px solid ${widgetBorderColor}; border-bottom: 1px solid ${widgetBorderColor}; }`);
1127
- }
1128
- const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);
1129
- if (findMatchHighlightBorder) {
1130
- collector.addRule(`.monaco-editor .findMatch { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);
1131
- }
1132
- const findMatchBorder = theme.getColor(editorFindMatchBorder);
1133
- if (findMatchBorder) {
1134
- collector.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${findMatchBorder}; padding: 1px; box-sizing: border-box; }`);
1135
- }
1136
- const findRangeHighlightBorder = theme.getColor(editorFindRangeHighlightBorder);
1137
- if (findRangeHighlightBorder) {
1138
- collector.addRule(`.monaco-editor .findScope { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${findRangeHighlightBorder}; }`);
1139
- }
1140
- const hcBorder = theme.getColor(contrastBorder);
1141
- if (hcBorder) {
1142
- collector.addRule(`.monaco-editor .find-widget { border: 1px solid ${hcBorder}; }`);
1143
- }
1144
- const foreground = theme.getColor(editorWidgetForeground);
1145
- if (foreground) {
1146
- collector.addRule(`.monaco-editor .find-widget { color: ${foreground}; }`);
1147
- }
1148
- const error = theme.getColor(errorForeground);
1149
- if (error) {
1150
- collector.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${error}; }`);
1151
- }
1152
- const resizeBorderBackground = theme.getColor(editorWidgetResizeBorder);
1153
- if (resizeBorderBackground) {
1154
- collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${resizeBorderBackground}; }`);
1155
- }
1156
- else {
1157
- const border = theme.getColor(editorWidgetBorder);
1158
- if (border) {
1159
- collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${border}; }`);
1160
- }
1161
- }
1162
- // Action bars
1163
- const toolbarHoverBackgroundColor = theme.getColor(toolbarHoverBackground);
1164
- if (toolbarHoverBackgroundColor) {
1165
- collector.addRule(`
1166
- .monaco-editor .find-widget .button:not(.disabled):hover,
1167
- .monaco-editor .find-widget .codicon-find-selection:hover {
1168
- background-color: ${toolbarHoverBackgroundColor} !important;
1169
- }
1170
- `);
1171
- }
1172
- // This rule is used to override the outline color for synthetic-focus find input.
1173
- const focusOutline = theme.getColor(focusBorder);
1174
- if (focusOutline) {
1175
- collector.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${focusOutline}; }`);
1176
- }
1177
- });