{"version":3,"sources":["jsdelivr-header.js","/npm/turndown@7.2.4/lib/turndown.browser.es.js"],"names":[],"mappings":"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","file":"/npm/turndown@7.2.4/lib/turndown.browser.es.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/turndown@7.2.4/lib/turndown.browser.es.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","function extend(destination) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) destination[key] = source[key];\n    }\n  }\n  return destination;\n}\nfunction repeat(character, count) {\n  return Array(count + 1).join(character);\n}\nfunction trimLeadingNewlines(string) {\n  return string.replace(/^\\n*/, '');\n}\nfunction trimTrailingNewlines(string) {\n  // avoid match-at-end regexp bottleneck, see #370\n  var indexEnd = string.length;\n  while (indexEnd > 0 && string[indexEnd - 1] === '\\n') indexEnd--;\n  return string.substring(0, indexEnd);\n}\nfunction trimNewlines(string) {\n  return trimTrailingNewlines(trimLeadingNewlines(string));\n}\nvar blockElements = ['ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS', 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', 'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES', 'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD', 'TFOOT', 'TH', 'THEAD', 'TR', 'UL'];\nfunction isBlock(node) {\n  return is(node, blockElements);\n}\nvar voidElements = ['AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT', 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'];\nfunction isVoid(node) {\n  return is(node, voidElements);\n}\nfunction hasVoid(node) {\n  return has(node, voidElements);\n}\nvar meaningfulWhenBlankElements = ['A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT', 'AUDIO', 'VIDEO'];\nfunction isMeaningfulWhenBlank(node) {\n  return is(node, meaningfulWhenBlankElements);\n}\nfunction hasMeaningfulWhenBlank(node) {\n  return has(node, meaningfulWhenBlankElements);\n}\nfunction is(node, tagNames) {\n  return tagNames.indexOf(node.nodeName) >= 0;\n}\nfunction has(node, tagNames) {\n  return node.getElementsByTagName && tagNames.some(function (tagName) {\n    return node.getElementsByTagName(tagName).length;\n  });\n}\nvar markdownEscapes = [[/\\\\/g, '\\\\\\\\'], [/\\*/g, '\\\\*'], [/^-/g, '\\\\-'], [/^\\+ /g, '\\\\+ '], [/^(=+)/g, '\\\\$1'], [/^(#{1,6}) /g, '\\\\$1 '], [/`/g, '\\\\`'], [/^~~~/g, '\\\\~~~'], [/\\[/g, '\\\\['], [/\\]/g, '\\\\]'], [/^>/g, '\\\\>'], [/_/g, '\\\\_'], [/^(\\d+)\\. /g, '$1\\\\. ']];\nfunction escapeMarkdown(string) {\n  return markdownEscapes.reduce(function (accumulator, escape) {\n    return accumulator.replace(escape[0], escape[1]);\n  }, string);\n}\n\nvar rules = {};\nrules.paragraph = {\n  filter: 'p',\n  replacement: function (content) {\n    return '\\n\\n' + content + '\\n\\n';\n  }\n};\nrules.lineBreak = {\n  filter: 'br',\n  replacement: function (content, node, options) {\n    return options.br + '\\n';\n  }\n};\nrules.heading = {\n  filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n  replacement: function (content, node, options) {\n    var hLevel = Number(node.nodeName.charAt(1));\n    if (options.headingStyle === 'setext' && hLevel < 3) {\n      var underline = repeat(hLevel === 1 ? '=' : '-', content.length);\n      return '\\n\\n' + content + '\\n' + underline + '\\n\\n';\n    } else {\n      return '\\n\\n' + repeat('#', hLevel) + ' ' + content + '\\n\\n';\n    }\n  }\n};\nrules.blockquote = {\n  filter: 'blockquote',\n  replacement: function (content) {\n    content = trimNewlines(content).replace(/^/gm, '> ');\n    return '\\n\\n' + content + '\\n\\n';\n  }\n};\nrules.list = {\n  filter: ['ul', 'ol'],\n  replacement: function (content, node) {\n    var parent = node.parentNode;\n    if (parent.nodeName === 'LI' && parent.lastElementChild === node) {\n      return '\\n' + content;\n    } else {\n      return '\\n\\n' + content + '\\n\\n';\n    }\n  }\n};\nrules.listItem = {\n  filter: 'li',\n  replacement: function (content, node, options) {\n    var prefix = options.bulletListMarker + '   ';\n    var parent = node.parentNode;\n    if (parent.nodeName === 'OL') {\n      var start = parent.getAttribute('start');\n      var index = Array.prototype.indexOf.call(parent.children, node);\n      prefix = (start ? Number(start) + index : index + 1) + '.  ';\n    }\n    var isParagraph = /\\n$/.test(content);\n    content = trimNewlines(content) + (isParagraph ? '\\n' : '');\n    content = content.replace(/\\n/gm, '\\n' + ' '.repeat(prefix.length)); // indent\n    return prefix + content + (node.nextSibling ? '\\n' : '');\n  }\n};\nrules.indentedCodeBlock = {\n  filter: function (node, options) {\n    return options.codeBlockStyle === 'indented' && node.nodeName === 'PRE' && node.firstChild && node.firstChild.nodeName === 'CODE';\n  },\n  replacement: function (content, node, options) {\n    return '\\n\\n    ' + node.firstChild.textContent.replace(/\\n/g, '\\n    ') + '\\n\\n';\n  }\n};\nrules.fencedCodeBlock = {\n  filter: function (node, options) {\n    return options.codeBlockStyle === 'fenced' && node.nodeName === 'PRE' && node.firstChild && node.firstChild.nodeName === 'CODE';\n  },\n  replacement: function (content, node, options) {\n    var className = node.firstChild.getAttribute('class') || '';\n    var language = (className.match(/language-(\\S+)/) || [null, ''])[1];\n    var code = node.firstChild.textContent;\n    var fenceChar = options.fence.charAt(0);\n    var fenceSize = 3;\n    var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm');\n    var match;\n    while (match = fenceInCodeRegex.exec(code)) {\n      if (match[0].length >= fenceSize) {\n        fenceSize = match[0].length + 1;\n      }\n    }\n    var fence = repeat(fenceChar, fenceSize);\n    return '\\n\\n' + fence + language + '\\n' + code.replace(/\\n$/, '') + '\\n' + fence + '\\n\\n';\n  }\n};\nrules.horizontalRule = {\n  filter: 'hr',\n  replacement: function (content, node, options) {\n    return '\\n\\n' + options.hr + '\\n\\n';\n  }\n};\nrules.inlineLink = {\n  filter: function (node, options) {\n    return options.linkStyle === 'inlined' && node.nodeName === 'A' && node.getAttribute('href');\n  },\n  replacement: function (content, node) {\n    var href = escapeLinkDestination(node.getAttribute('href'));\n    var title = escapeLinkTitle(cleanAttribute(node.getAttribute('title')));\n    var titlePart = title ? ' \"' + title + '\"' : '';\n    return '[' + content + '](' + href + titlePart + ')';\n  }\n};\nrules.referenceLink = {\n  filter: function (node, options) {\n    return options.linkStyle === 'referenced' && node.nodeName === 'A' && node.getAttribute('href');\n  },\n  replacement: function (content, node, options) {\n    var href = escapeLinkDestination(node.getAttribute('href'));\n    var title = cleanAttribute(node.getAttribute('title'));\n    if (title) title = ' \"' + escapeLinkTitle(title) + '\"';\n    var replacement;\n    var reference;\n    switch (options.linkReferenceStyle) {\n      case 'collapsed':\n        replacement = '[' + content + '][]';\n        reference = '[' + content + ']: ' + href + title;\n        break;\n      case 'shortcut':\n        replacement = '[' + content + ']';\n        reference = '[' + content + ']: ' + href + title;\n        break;\n      default:\n        var id = this.references.length + 1;\n        replacement = '[' + content + '][' + id + ']';\n        reference = '[' + id + ']: ' + href + title;\n    }\n    this.references.push(reference);\n    return replacement;\n  },\n  references: [],\n  append: function (options) {\n    var references = '';\n    if (this.references.length) {\n      references = '\\n\\n' + this.references.join('\\n') + '\\n\\n';\n      this.references = []; // Reset references\n    }\n    return references;\n  }\n};\nrules.emphasis = {\n  filter: ['em', 'i'],\n  replacement: function (content, node, options) {\n    if (!content.trim()) return '';\n    return options.emDelimiter + content + options.emDelimiter;\n  }\n};\nrules.strong = {\n  filter: ['strong', 'b'],\n  replacement: function (content, node, options) {\n    if (!content.trim()) return '';\n    return options.strongDelimiter + content + options.strongDelimiter;\n  }\n};\nrules.code = {\n  filter: function (node) {\n    var hasSiblings = node.previousSibling || node.nextSibling;\n    var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings;\n    return node.nodeName === 'CODE' && !isCodeBlock;\n  },\n  replacement: function (content) {\n    if (!content) return '';\n    content = content.replace(/\\r?\\n|\\r/g, ' ');\n    var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : '';\n    var delimiter = '`';\n    var matches = content.match(/`+/gm) || [];\n    while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`';\n    return delimiter + extraSpace + content + extraSpace + delimiter;\n  }\n};\nrules.image = {\n  filter: 'img',\n  replacement: function (content, node) {\n    var alt = escapeMarkdown(cleanAttribute(node.getAttribute('alt')));\n    var src = escapeLinkDestination(node.getAttribute('src') || '');\n    var title = cleanAttribute(node.getAttribute('title'));\n    var titlePart = title ? ' \"' + escapeLinkTitle(title) + '\"' : '';\n    return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : '';\n  }\n};\nfunction cleanAttribute(attribute) {\n  return attribute ? attribute.replace(/(\\n+\\s*)+/g, '\\n') : '';\n}\nfunction escapeLinkDestination(destination) {\n  var escaped = destination.replace(/([<>()])/g, '\\\\$1');\n  return escaped.indexOf(' ') >= 0 ? '<' + escaped + '>' : escaped;\n}\nfunction escapeLinkTitle(title) {\n  return title.replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Manages a collection of rules used to convert HTML to Markdown\n */\n\nfunction Rules(options) {\n  this.options = options;\n  this._keep = [];\n  this._remove = [];\n  this.blankRule = {\n    replacement: options.blankReplacement\n  };\n  this.keepReplacement = options.keepReplacement;\n  this.defaultRule = {\n    replacement: options.defaultReplacement\n  };\n  this.array = [];\n  for (var key in options.rules) this.array.push(options.rules[key]);\n}\nRules.prototype = {\n  add: function (key, rule) {\n    this.array.unshift(rule);\n  },\n  keep: function (filter) {\n    this._keep.unshift({\n      filter: filter,\n      replacement: this.keepReplacement\n    });\n  },\n  remove: function (filter) {\n    this._remove.unshift({\n      filter: filter,\n      replacement: function () {\n        return '';\n      }\n    });\n  },\n  forNode: function (node) {\n    if (node.isBlank) return this.blankRule;\n    var rule;\n    if (rule = findRule(this.array, node, this.options)) return rule;\n    if (rule = findRule(this._keep, node, this.options)) return rule;\n    if (rule = findRule(this._remove, node, this.options)) return rule;\n    return this.defaultRule;\n  },\n  forEach: function (fn) {\n    for (var i = 0; i < this.array.length; i++) fn(this.array[i], i);\n  }\n};\nfunction findRule(rules, node, options) {\n  for (var i = 0; i < rules.length; i++) {\n    var rule = rules[i];\n    if (filterValue(rule, node, options)) return rule;\n  }\n  return undefined;\n}\nfunction filterValue(rule, node, options) {\n  var filter = rule.filter;\n  if (typeof filter === 'string') {\n    if (filter === node.nodeName.toLowerCase()) return true;\n  } else if (Array.isArray(filter)) {\n    if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true;\n  } else if (typeof filter === 'function') {\n    if (filter.call(rule, node, options)) return true;\n  } else {\n    throw new TypeError('`filter` needs to be a string, array, or function');\n  }\n}\n\n/**\n * The collapseWhitespace function is adapted from collapse-whitespace\n * by Luc Thevenard.\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014 Luc Thevenard <lucthevenard@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * collapseWhitespace(options) removes extraneous whitespace from an the given element.\n *\n * @param {Object} options\n */\nfunction collapseWhitespace(options) {\n  var element = options.element;\n  var isBlock = options.isBlock;\n  var isVoid = options.isVoid;\n  var isPre = options.isPre || function (node) {\n    return node.nodeName === 'PRE';\n  };\n  if (!element.firstChild || isPre(element)) return;\n  var prevText = null;\n  var keepLeadingWs = false;\n  var prev = null;\n  var node = next(prev, element, isPre);\n  while (node !== element) {\n    if (node.nodeType === 3 || node.nodeType === 4) {\n      // Node.TEXT_NODE or Node.CDATA_SECTION_NODE\n      var text = node.data.replace(/[ \\r\\n\\t]+/g, ' ');\n      if ((!prevText || / $/.test(prevText.data)) && !keepLeadingWs && text[0] === ' ') {\n        text = text.substr(1);\n      }\n\n      // `text` might be empty at this point.\n      if (!text) {\n        node = remove(node);\n        continue;\n      }\n      node.data = text;\n      prevText = node;\n    } else if (node.nodeType === 1) {\n      // Node.ELEMENT_NODE\n      if (isBlock(node) || node.nodeName === 'BR') {\n        if (prevText) {\n          prevText.data = prevText.data.replace(/ $/, '');\n        }\n        prevText = null;\n        keepLeadingWs = false;\n      } else if (isVoid(node) || isPre(node)) {\n        // Avoid trimming space around non-block, non-BR void elements and inline PRE.\n        prevText = null;\n        keepLeadingWs = true;\n      } else if (prevText) {\n        // Drop protection if set previously.\n        keepLeadingWs = false;\n      }\n    } else {\n      node = remove(node);\n      continue;\n    }\n    var nextNode = next(prev, node, isPre);\n    prev = node;\n    node = nextNode;\n  }\n  if (prevText) {\n    prevText.data = prevText.data.replace(/ $/, '');\n    if (!prevText.data) {\n      remove(prevText);\n    }\n  }\n}\n\n/**\n * remove(node) removes the given node from the DOM and returns the\n * next node in the sequence.\n *\n * @param {Node} node\n * @return {Node} node\n */\nfunction remove(node) {\n  var next = node.nextSibling || node.parentNode;\n  node.parentNode.removeChild(node);\n  return next;\n}\n\n/**\n * next(prev, current, isPre) returns the next node in the sequence, given the\n * current and previous nodes.\n *\n * @param {Node} prev\n * @param {Node} current\n * @param {Function} isPre\n * @return {Node}\n */\nfunction next(prev, current, isPre) {\n  if (prev && prev.parentNode === current || isPre(current)) {\n    return current.nextSibling || current.parentNode;\n  }\n  return current.firstChild || current.nextSibling || current.parentNode;\n}\n\n/*\n * Set up window for Node.js\n */\n\nvar root = typeof window !== 'undefined' ? window : {};\n\n/*\n * Parsing HTML strings\n */\n\nfunction canParseHTMLNatively() {\n  var Parser = root.DOMParser;\n  var canParse = false;\n\n  // Adapted from https://gist.github.com/1129031\n  // Firefox/Opera/IE throw errors on unsupported types\n  try {\n    // WebKit returns null on unsupported types\n    if (new Parser().parseFromString('', 'text/html')) {\n      canParse = true;\n    }\n  } catch (e) {}\n  return canParse;\n}\nfunction createHTMLParser() {\n  var Parser = function () {};\n  {\n    if (shouldUseActiveX()) {\n      Parser.prototype.parseFromString = function (string) {\n        var doc = new window.ActiveXObject('htmlfile');\n        doc.designMode = 'on'; // disable on-page scripts\n        doc.open();\n        doc.write(string);\n        doc.close();\n        return doc;\n      };\n    } else {\n      Parser.prototype.parseFromString = function (string) {\n        var doc = document.implementation.createHTMLDocument('');\n        doc.open();\n        doc.write(string);\n        doc.close();\n        return doc;\n      };\n    }\n  }\n  return Parser;\n}\nfunction shouldUseActiveX() {\n  var useActiveX = false;\n  try {\n    document.implementation.createHTMLDocument('').open();\n  } catch (e) {\n    if (root.ActiveXObject) useActiveX = true;\n  }\n  return useActiveX;\n}\nvar HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser();\n\nfunction RootNode(input, options) {\n  var root;\n  if (typeof input === 'string') {\n    var doc = htmlParser().parseFromString(\n    // DOM parsers arrange elements in the <head> and <body>.\n    // Wrapping in a custom element ensures elements are reliably arranged in\n    // a single element.\n    '<x-turndown id=\"turndown-root\">' + input + '</x-turndown>', 'text/html');\n    root = doc.getElementById('turndown-root');\n  } else {\n    root = input.cloneNode(true);\n  }\n  collapseWhitespace({\n    element: root,\n    isBlock: isBlock,\n    isVoid: isVoid,\n    isPre: options.preformattedCode ? isPreOrCode : null\n  });\n  return root;\n}\nvar _htmlParser;\nfunction htmlParser() {\n  _htmlParser = _htmlParser || new HTMLParser();\n  return _htmlParser;\n}\nfunction isPreOrCode(node) {\n  return node.nodeName === 'PRE' || node.nodeName === 'CODE';\n}\n\nfunction Node(node, options) {\n  node.isBlock = isBlock(node);\n  node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode;\n  node.isBlank = isBlank(node);\n  node.flankingWhitespace = flankingWhitespace(node, options);\n  return node;\n}\nfunction isBlank(node) {\n  return !isVoid(node) && !isMeaningfulWhenBlank(node) && /^\\s*$/i.test(node.textContent) && !hasVoid(node) && !hasMeaningfulWhenBlank(node);\n}\nfunction flankingWhitespace(node, options) {\n  if (node.isBlock || options.preformattedCode && node.isCode) {\n    return {\n      leading: '',\n      trailing: ''\n    };\n  }\n  var edges = edgeWhitespace(node.textContent);\n\n  // abandon leading ASCII WS if left-flanked by ASCII WS\n  if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) {\n    edges.leading = edges.leadingNonAscii;\n  }\n\n  // abandon trailing ASCII WS if right-flanked by ASCII WS\n  if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) {\n    edges.trailing = edges.trailingNonAscii;\n  }\n  return {\n    leading: edges.leading,\n    trailing: edges.trailing\n  };\n}\nfunction edgeWhitespace(string) {\n  var m = string.match(/^(([ \\t\\r\\n]*)(\\s*))(?:(?=\\S)[\\s\\S]*\\S)?((\\s*?)([ \\t\\r\\n]*))$/);\n  return {\n    leading: m[1],\n    // whole string for whitespace-only strings\n    leadingAscii: m[2],\n    leadingNonAscii: m[3],\n    trailing: m[4],\n    // empty for whitespace-only strings\n    trailingNonAscii: m[5],\n    trailingAscii: m[6]\n  };\n}\nfunction isFlankedByWhitespace(side, node, options) {\n  var sibling;\n  var regExp;\n  var isFlanked;\n  if (side === 'left') {\n    sibling = node.previousSibling;\n    regExp = / $/;\n  } else {\n    sibling = node.nextSibling;\n    regExp = /^ /;\n  }\n  if (sibling) {\n    if (sibling.nodeType === 3) {\n      isFlanked = regExp.test(sibling.nodeValue);\n    } else if (options.preformattedCode && sibling.nodeName === 'CODE') {\n      isFlanked = false;\n    } else if (sibling.nodeType === 1 && !isBlock(sibling)) {\n      isFlanked = regExp.test(sibling.textContent);\n    }\n  }\n  return isFlanked;\n}\n\nvar reduce = Array.prototype.reduce;\nfunction TurndownService(options) {\n  if (!(this instanceof TurndownService)) return new TurndownService(options);\n  var defaults = {\n    rules: rules,\n    headingStyle: 'setext',\n    hr: '* * *',\n    bulletListMarker: '*',\n    codeBlockStyle: 'indented',\n    fence: '```',\n    emDelimiter: '_',\n    strongDelimiter: '**',\n    linkStyle: 'inlined',\n    linkReferenceStyle: 'full',\n    br: '  ',\n    preformattedCode: false,\n    blankReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' : '';\n    },\n    keepReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' + node.outerHTML + '\\n\\n' : node.outerHTML;\n    },\n    defaultReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' + content + '\\n\\n' : content;\n    }\n  };\n  this.options = extend({}, defaults, options);\n  this.rules = new Rules(this.options);\n}\nTurndownService.prototype = {\n  /**\n   * The entry point for converting a string or DOM node to Markdown\n   * @public\n   * @param {String|HTMLElement} input The string or DOM node to convert\n   * @returns A Markdown representation of the input\n   * @type String\n   */\n\n  turndown: function (input) {\n    if (!canConvert(input)) {\n      throw new TypeError(input + ' is not a string, or an element/document/fragment node.');\n    }\n    if (input === '') return '';\n    var output = process.call(this, new RootNode(input, this.options));\n    return postProcess.call(this, output);\n  },\n  /**\n   * Add one or more plugins\n   * @public\n   * @param {Function|Array} plugin The plugin or array of plugins to add\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  use: function (plugin) {\n    if (Array.isArray(plugin)) {\n      for (var i = 0; i < plugin.length; i++) this.use(plugin[i]);\n    } else if (typeof plugin === 'function') {\n      plugin(this);\n    } else {\n      throw new TypeError('plugin must be a Function or an Array of Functions');\n    }\n    return this;\n  },\n  /**\n   * Adds a rule\n   * @public\n   * @param {String} key The unique key of the rule\n   * @param {Object} rule The rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  addRule: function (key, rule) {\n    this.rules.add(key, rule);\n    return this;\n  },\n  /**\n   * Keep a node (as HTML) that matches the filter\n   * @public\n   * @param {String|Array|Function} filter The unique key of the rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  keep: function (filter) {\n    this.rules.keep(filter);\n    return this;\n  },\n  /**\n   * Remove a node that matches the filter\n   * @public\n   * @param {String|Array|Function} filter The unique key of the rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  remove: function (filter) {\n    this.rules.remove(filter);\n    return this;\n  },\n  /**\n   * Escapes Markdown syntax\n   * @public\n   * @param {String} string The string to escape\n   * @returns A string with Markdown syntax escaped\n   * @type String\n   */\n\n  escape: function (string) {\n    return escapeMarkdown(string);\n  }\n};\n\n/**\n * Reduces a DOM node down to its Markdown string equivalent\n * @private\n * @param {HTMLElement} parentNode The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction process(parentNode) {\n  var self = this;\n  return reduce.call(parentNode.childNodes, function (output, node) {\n    node = new Node(node, self.options);\n    var replacement = '';\n    if (node.nodeType === 3) {\n      replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue);\n    } else if (node.nodeType === 1) {\n      replacement = replacementForNode.call(self, node);\n    }\n    return join(output, replacement);\n  }, '');\n}\n\n/**\n * Appends strings as each rule requires and trims the output\n * @private\n * @param {String} output The conversion output\n * @returns A trimmed version of the ouput\n * @type String\n */\n\nfunction postProcess(output) {\n  var self = this;\n  this.rules.forEach(function (rule) {\n    if (typeof rule.append === 'function') {\n      output = join(output, rule.append(self.options));\n    }\n  });\n  return output.replace(/^[\\t\\r\\n]+/, '').replace(/[\\t\\r\\n\\s]+$/, '');\n}\n\n/**\n * Converts an element node to its Markdown equivalent\n * @private\n * @param {HTMLElement} node The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction replacementForNode(node) {\n  var rule = this.rules.forNode(node);\n  var content = process.call(this, node);\n  var whitespace = node.flankingWhitespace;\n  if (whitespace.leading || whitespace.trailing) content = content.trim();\n  return whitespace.leading + rule.replacement(content, node, this.options) + whitespace.trailing;\n}\n\n/**\n * Joins replacement to the current output with appropriate number of new lines\n * @private\n * @param {String} output The current conversion output\n * @param {String} replacement The string to append to the output\n * @returns Joined output\n * @type String\n */\n\nfunction join(output, replacement) {\n  var s1 = trimTrailingNewlines(output);\n  var s2 = trimLeadingNewlines(replacement);\n  var nls = Math.max(output.length - s1.length, replacement.length - s2.length);\n  var separator = '\\n\\n'.substring(0, nls);\n  return s1 + separator + s2;\n}\n\n/**\n * Determines whether an input can be converted\n * @private\n * @param {String|HTMLElement} input Describe this parameter\n * @returns Describe what it returns\n * @type String|Object|Array|Boolean|Number\n */\n\nfunction canConvert(input) {\n  return input != null && (typeof input === 'string' || input.nodeType && (input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11));\n}\n\nexport { TurndownService as default };\n"]}