pattern_prompt.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. *
  7. *
  8. */
  9. 'use strict';
  10. Object.defineProperty(exports, '__esModule', {
  11. value: true
  12. });
  13. var _chalk;
  14. function _load_chalk() {
  15. return (_chalk = _interopRequireDefault(require('chalk')));
  16. }
  17. var _ansiEscapes;
  18. function _load_ansiEscapes() {
  19. return (_ansiEscapes = _interopRequireDefault(require('ansi-escapes')));
  20. }
  21. var _Prompt;
  22. function _load_Prompt() {
  23. return (_Prompt = _interopRequireDefault(require('./lib/Prompt')));
  24. }
  25. function _interopRequireDefault(obj) {
  26. return obj && obj.__esModule ? obj : {default: obj};
  27. }
  28. const usage = entity =>
  29. `\n${(_chalk || _load_chalk()).default.bold('Pattern Mode Usage')}\n` +
  30. ` ${(_chalk || _load_chalk()).default.dim('\u203A Press')} Esc ${(
  31. _chalk || _load_chalk()
  32. ).default.dim('to exit pattern mode.')}\n` +
  33. ` ${(_chalk || _load_chalk()).default.dim('\u203A Press')} Enter ` +
  34. `${(_chalk || _load_chalk()).default.dim(
  35. `to filter by a ${entity} regex pattern.`
  36. )}\n` +
  37. `\n`;
  38. const usageRows = usage('').split('\n').length;
  39. class PatternPrompt {
  40. constructor(pipe, prompt) {
  41. this._pipe = pipe;
  42. this._prompt = prompt;
  43. this._currentUsageRows = usageRows;
  44. }
  45. run(onSuccess, onCancel, options) {
  46. this._pipe.write((_ansiEscapes || _load_ansiEscapes()).default.cursorHide);
  47. this._pipe.write((_ansiEscapes || _load_ansiEscapes()).default.clearScreen);
  48. if (options && options.header) {
  49. this._pipe.write(options.header + '\n');
  50. this._currentUsageRows = usageRows + options.header.split('\n').length;
  51. } else {
  52. this._currentUsageRows = usageRows;
  53. }
  54. this._pipe.write(usage(this._entityName));
  55. this._pipe.write((_ansiEscapes || _load_ansiEscapes()).default.cursorShow);
  56. this._prompt.enter(this._onChange.bind(this), onSuccess, onCancel);
  57. }
  58. _onChange(pattern, options) {
  59. this._pipe.write((_ansiEscapes || _load_ansiEscapes()).default.eraseLine);
  60. this._pipe.write((_ansiEscapes || _load_ansiEscapes()).default.cursorLeft);
  61. }
  62. }
  63. exports.default = PatternPrompt;