constructor(el, filter) {
    super()

    // Create CodeMirror input and filter elements
    this.editor = CodeMirror.fromTextArea(el, defaultEditorOptions)
    this.filter = filter

    // Path to store data file so it can be read for jq (required for large input)
    // NOTE: the absolute path is too long to be parsed by jq in Windows
    if (process.platform === 'win32') {
      this.tmp = path.join('app', 'tmp', 'data.json')
    } else {
      this.tmp = path.resolve(__dirname, '..', 'tmp', 'data.json')
    }

    // Set js-beautify format options
    this.formatOptions = defaultFormatOptions

    // Handle functions that respond to input
    this.handleEvents()
  }
Creates the input editor, sets a welcome message, and registers DOM events

@param {Element} el The textarea element to use for CodeMirror instance
@param {jQuery} filter The filter input element