text: /*
   * Set up window for Node.js
   */
  
  var root = (typeof window !== 'undefined' ? window : {})
  
  /*
   * Parsing HTML strings
   */
  
  function canParseHTMLNatively () {
    var Parser = root.DOMParser
    var canParse = false
  
    // Adapted from https://gist.github.com/1129031
    // Firefox/Opera/IE throw errors on unsupported types
    try {
      // WebKit returns null on unsupported types
      if (new Parser().parseFromString('', 'text/html')) {
        canParse = true
      }
    } catch (e) {}
  
    return canParse
  }
  
  function createHTMLParser () {
    var Parser = function () {}
  
    if (process.browser) {
      if (shouldUseActiveX()) {
        Parser.prototype.parseFromString = function (string) {
          var doc = new window.ActiveXObject('htmlfile')
          doc.designMode = 'on' // disable on-page scripts
          doc.open()
          doc.write(string)
          doc.close()
          return doc
        }
      } else {
        Parser.prototype.parseFromString = function (string) {
          var doc = document.implementation.createHTMLDocument('')
          doc.open()
          doc.write(string)
          doc.close()
          return doc
        }
      }
    } else {
      var JSDOM = require('jsdom').JSDOM
      Parser.prototype.parseFromString = function (string) {
        return new JSDOM(string).window.document
      }
    }
    return Parser
  }
  
  function shouldUseActiveX () {
    var useActiveX = false
    try {
      document.implementation.createHTMLDocument('').open()
    } catch (e) {
      if (window.ActiveXObject) useActiveX = true
    }
    return useActiveX
  }
  
  export default canParseHTMLNatively() ? root.DOMParser : createHTMLParser()
  