<commit_before>import { Slide } from './Slide';

export class Presentation {
  constructor() {
    this._slides = [];
    this._currentSlideIndex = 0;
  }

  /**
   * Push slide instance
   * @param {Slide} slide
   * @returns {Presentation}
   */
  pushSlide(slide) {
    if (!(slide instanceof Slide)) throw new Error('You must provide Slide instance');

    this._slides.push(slide);
    return this;
  }

  /**
   * Renders specified slide
   * @param {Number} index Slide index in presentation
   * @returns {Presentation}
   */
  renderSlide(index) {
    this._slides[index].render();
<commit_msg>refactor(presentation): Move cursor functionality to presentation<commit_after>import keypress from 'keypress';

import { Slide } from './Slide';
import { Cursor } from './Cursor';

export class Presentation {
  constructor() {
    this._slides = [];
    this._currentSlideIndex = 0;
    this._cursor = new Cursor([process.stdout], [process.stdin]);

    keypress(process.stdin);

    process.stdin.setRawMode(true);
    process.stdin.setEncoding('utf8');
  }

  /**
   * Push slide instance
   * @param {Slide} slide
   * @returns {Presentation}
   */
  pushSlide(slide) {
    if (!(slide instanceof Slide)) throw new Error('You must provide Slide instance');

    this._slides.push(slide);
    return this;
  }

  /**
   * Renders specified slide
   * @param {Number} index Slide index in presentation
   * @returns {Presentation}
   */
  renderSlide(index) {
    this._slides[index].render();

{'fraction_non_alphanumeric': 0.13542361574382922, 'fraction_numerical': 0.0020013342228152103, 'mean_word_length': 3.322766570605187, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '725418', 'n_tokens_mistral': 475, 'n_tokens_neox': 461, 'n_words': 116}