HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/files.wb-cloud.nl/private_html/dist/2236-2236.js.map
{"version":3,"file":"2236-2236.js?v=addc2ab85416b1039192","mappings":"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","sources":["webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/NcRichText-CmuVmSzl.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/referencePickerModal-CtMUY45l.mjs"],"sourcesContent":["import '../assets/NcRichText-CWVHZl8s.css';\nimport { ref } from \"vue\";\nimport { N as NcReferenceWidget } from \"./referencePickerModal-CtMUY45l.mjs\";\nimport { U as URL_PATTERN, p as parseUrl, r as remarkAutolink, g as getRoute } from \"./autolink-cbuFALXr.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { getSharingToken } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-ip_mRd2T.mjs\";\nimport { visit, SKIP as SKIP$1, EXIT as EXIT$1 } from \"unist-util-visit\";\nimport { u } from \"unist-builder\";\nimport { G as GenRandomId } from \"./GenRandomId-CMooMQt0.mjs\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport breaks from \"remark-breaks\";\nimport remarkUnlinkProtocols from \"remark-unlink-protocols\";\nimport remark2rehype from \"remark-rehype\";\nimport rehype2react from \"rehype-react\";\nimport rehypeExternalLinks from \"rehype-external-links\";\nimport { RouterLink } from \"vue-router\";\nconst _sfc_main$1 = {\n  name: \"NcReferenceList\",\n  components: {\n    NcReferenceWidget\n  },\n  props: {\n    text: {\n      type: String,\n      default: \"\"\n    },\n    referenceData: {\n      type: Array,\n      default: null\n    },\n    limit: {\n      type: Number,\n      default: 1\n    },\n    displayFallback: {\n      type: Boolean,\n      default: false\n    },\n    interactive: {\n      type: Boolean,\n      default: true\n    },\n    interactiveOptIn: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      references: null,\n      loading: true\n    };\n  },\n  computed: {\n    isVisible() {\n      return this.loading || this.displayedReferences.length !== 0;\n    },\n    values() {\n      if (this.referenceData) {\n        return this.referenceData;\n      }\n      if (this.displayFallback && !this.loading && !this.references) {\n        return [this.fallbackReference];\n      }\n      return this.references ? Object.values(this.references) : [];\n    },\n    firstReference() {\n      return this.values[0] ?? null;\n    },\n    displayedReferences() {\n      return this.values.slice(0, this.limit);\n    },\n    fallbackReference() {\n      return {\n        accessible: true,\n        openGraphObject: {\n          id: this.text,\n          link: this.text,\n          name: this.text\n        },\n        richObjectType: \"open-graph\"\n      };\n    }\n  },\n  watch: {\n    text: \"fetch\"\n  },\n  mounted() {\n    this.fetch();\n  },\n  methods: {\n    fetch() {\n      this.loading = true;\n      if (this.referenceData) {\n        this.references = null;\n        this.loading = false;\n        return;\n      }\n      if (!new RegExp(URL_PATTERN).exec(this.text)) {\n        this.references = null;\n        this.loading = false;\n        return;\n      }\n      this.resolve().then((response) => {\n        this.references = response.data.ocs.data.references;\n        this.loading = false;\n        this.$emit(\"loaded\");\n      }).catch((error) => {\n        console.error(\"Failed to extract references\", error);\n        this.loading = false;\n        this.$emit(\"loaded\");\n      });\n    },\n    resolve() {\n      const match = new RegExp(URL_PATTERN).exec(this.text.trim());\n      const isPublic = getCurrentUser() === null;\n      if (this.limit === 1 && match) {\n        return isPublic ? axios.get(generateOcsUrl(\"references/resolvePublic\") + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`) : axios.get(generateOcsUrl(\"references/resolve\") + `?reference=${encodeURIComponent(match[0])}`);\n      }\n      return isPublic ? axios.post(generateOcsUrl(\"references/extractPublic\"), {\n        text: this.text,\n        resolve: true,\n        limit: this.limit,\n        sharingToken: getSharingToken()\n      }) : axios.post(generateOcsUrl(\"references/extract\"), {\n        text: this.text,\n        resolve: true,\n        limit: this.limit\n      });\n    }\n  }\n};\nvar _sfc_render$1 = function render() {\n  var _vm = this, _c = _vm._self._c;\n  return _vm.isVisible ? _c(\"div\", { staticClass: \"widgets--list\", class: { \"icon-loading\": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) {\n    return _c(\"NcReferenceWidget\", { key: reference?.openGraphObject?.id, attrs: { \"reference\": reference, \"interactive\": _vm.interactive, \"interactive-opt-in\": _vm.interactiveOptIn } });\n  }), 1) : _vm._e();\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$1,\n  _sfc_render$1,\n  _sfc_staticRenderFns$1,\n  false,\n  null,\n  \"ffdba753\"\n);\nconst NcReferenceList = __component__$1.exports;\nconst remarkPlaceholder = function() {\n  return function(ast) {\n    visit(ast, (node2) => node2.type === \"text\", visitor);\n    function visitor(node2, index, parent) {\n      const placeholders = node2.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry, index2, list2) => {\n        const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n        if (!matches) {\n          return u(\"text\", entry);\n        }\n        const [, component] = matches;\n        return u(\"element\", {\n          tagName: `#${component}`\n        });\n      });\n      parent.children.splice(index, 1, ...placeholders);\n    }\n  };\n};\nconst prepareTextNode = ({ h, context }, text2) => {\n  if (context.autolink) {\n    text2 = parseUrl(text2);\n  }\n  if (Array.isArray(text2)) {\n    return text2.map((entry) => {\n      if (typeof entry === \"string\") {\n        return entry;\n      }\n      const { component, props } = entry;\n      const componentClass = component.name === \"NcLink\" ? void 0 : \"rich-text--component\";\n      return h(component, {\n        props,\n        class: componentClass\n      });\n    });\n  }\n  return text2;\n};\nconst remarkUnescape = function() {\n  return function(tree) {\n    visit(\n      tree,\n      (node2) => [\"text\", \"code\", \"inlineCode\"].includes(node2.type),\n      (node2, index, parent) => {\n        parent.children.splice(index, 1, {\n          ...node2,\n          value: node2.value.replace(/&lt;/gmi, \"<\").replace(/&gt;/gmi, \">\")\n        });\n        return [SKIP$1, index + 1];\n      }\n    );\n  };\n};\nfunction ccount(value, character) {\n  const source = String(value);\n  if (typeof character !== \"string\") {\n    throw new TypeError(\"Expected character\");\n  }\n  let count = 0;\n  let index = source.indexOf(character);\n  while (index !== -1) {\n    count++;\n    index = source.indexOf(character, index + character.length);\n  }\n  return count;\n}\nfunction ok$1() {\n}\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nfunction asciiControl(code2) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code2 !== null && (code2 < 32 || code2 === 127)\n  );\n}\nfunction markdownLineEnding(code2) {\n  return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n  return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n  return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(new RegExp(\"\\\\p{P}|\\\\p{S}\", \"u\"));\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n  return check;\n  function check(code2) {\n    return code2 !== null && code2 > -1 && regex.test(String.fromCharCode(code2));\n  }\n}\nfunction escapeStringRegexp(string) {\n  if (typeof string !== \"string\") {\n    throw new TypeError(\"Expected a string\");\n  }\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\nconst convert = (\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  /**\n   * @param {Test} [test]\n   * @returns {Check}\n   */\n  function(test) {\n    if (test === null || test === void 0) {\n      return ok;\n    }\n    if (typeof test === \"function\") {\n      return castFactory(test);\n    }\n    if (typeof test === \"object\") {\n      return Array.isArray(test) ? anyFactory(test) : propsFactory(test);\n    }\n    if (typeof test === \"string\") {\n      return typeFactory(test);\n    }\n    throw new Error(\"Expected function, string, or object as test\");\n  }\n);\nfunction anyFactory(tests) {\n  const checks = [];\n  let index = -1;\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index]);\n  }\n  return castFactory(any);\n  function any(...parameters) {\n    let index2 = -1;\n    while (++index2 < checks.length) {\n      if (checks[index2].apply(this, parameters)) return true;\n    }\n    return false;\n  }\n}\nfunction propsFactory(check) {\n  const checkAsRecord = (\n    /** @type {Record<string, unknown>} */\n    check\n  );\n  return castFactory(all2);\n  function all2(node2) {\n    const nodeAsRecord = (\n      /** @type {Record<string, unknown>} */\n      /** @type {unknown} */\n      node2\n    );\n    let key;\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false;\n    }\n    return true;\n  }\n}\nfunction typeFactory(check) {\n  return castFactory(type);\n  function type(node2) {\n    return node2 && node2.type === check;\n  }\n}\nfunction castFactory(testFunction) {\n  return check;\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) && testFunction.call(\n        this,\n        value,\n        typeof index === \"number\" ? index : void 0,\n        parent || void 0\n      )\n    );\n  }\n}\nfunction ok() {\n  return true;\n}\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === \"object\" && \"type\" in value;\n}\nfunction color(d) {\n  return d;\n}\nconst empty = [];\nconst CONTINUE = true;\nconst EXIT = false;\nconst SKIP = \"skip\";\nfunction visitParents(tree, test, visitor, reverse) {\n  let check;\n  {\n    check = test;\n  }\n  const is = convert(check);\n  const step = 1;\n  factory(tree, void 0, [])();\n  function factory(node2, index, parents) {\n    const value = (\n      /** @type {Record<string, unknown>} */\n      node2 && typeof node2 === \"object\" ? node2 : {}\n    );\n    if (typeof value.type === \"string\") {\n      const name = (\n        // `hast`\n        typeof value.tagName === \"string\" ? value.tagName : (\n          // `xast`\n          typeof value.name === \"string\" ? value.name : void 0\n        )\n      );\n      Object.defineProperty(visit2, \"name\", {\n        value: \"node (\" + color(node2.type + (name ? \"<\" + name + \">\" : \"\")) + \")\"\n      });\n    }\n    return visit2;\n    function visit2() {\n      let result = empty;\n      let subresult;\n      let offset;\n      let grandparents;\n      if (is(node2, index, parents[parents.length - 1] || void 0)) {\n        result = toResult(visitor(node2, parents));\n        if (result[0] === EXIT) {\n          return result;\n        }\n      }\n      if (\"children\" in node2 && node2.children) {\n        const nodeAsParent = (\n          /** @type {UnistParent} */\n          node2\n        );\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = -1 + step;\n          grandparents = parents.concat(nodeAsParent);\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset];\n            subresult = factory(child, offset, grandparents)();\n            if (subresult[0] === EXIT) {\n              return subresult;\n            }\n            offset = typeof subresult[1] === \"number\" ? subresult[1] : offset + step;\n          }\n        }\n      }\n      return result;\n    }\n  }\n}\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value;\n  }\n  if (typeof value === \"number\") {\n    return [CONTINUE, value];\n  }\n  return value === null || value === void 0 ? empty : [value];\n}\nfunction findAndReplace(tree, list2, options) {\n  const settings = options || {};\n  const ignored = convert(settings.ignore || []);\n  const pairs = toPairs(list2);\n  let pairIndex = -1;\n  while (++pairIndex < pairs.length) {\n    visitParents(tree, \"text\", visitor);\n  }\n  function visitor(node2, parents) {\n    let index = -1;\n    let grandparent;\n    while (++index < parents.length) {\n      const parent = parents[index];\n      const siblings = grandparent ? grandparent.children : void 0;\n      if (ignored(\n        parent,\n        siblings ? siblings.indexOf(parent) : void 0,\n        grandparent\n      )) {\n        return;\n      }\n      grandparent = parent;\n    }\n    if (grandparent) {\n      return handler(node2, parents);\n    }\n  }\n  function handler(node2, parents) {\n    const parent = parents[parents.length - 1];\n    const find = pairs[pairIndex][0];\n    const replace2 = pairs[pairIndex][1];\n    let start = 0;\n    const siblings = parent.children;\n    const index = siblings.indexOf(node2);\n    let change = false;\n    let nodes = [];\n    find.lastIndex = 0;\n    let match = find.exec(node2.value);\n    while (match) {\n      const position = match.index;\n      const matchObject = {\n        index: match.index,\n        input: match.input,\n        stack: [...parents, node2]\n      };\n      let value = replace2(...match, matchObject);\n      if (typeof value === \"string\") {\n        value = value.length > 0 ? { type: \"text\", value } : void 0;\n      }\n      if (value === false) {\n        find.lastIndex = position + 1;\n      } else {\n        if (start !== position) {\n          nodes.push({\n            type: \"text\",\n            value: node2.value.slice(start, position)\n          });\n        }\n        if (Array.isArray(value)) {\n          nodes.push(...value);\n        } else if (value) {\n          nodes.push(value);\n        }\n        start = position + match[0].length;\n        change = true;\n      }\n      if (!find.global) {\n        break;\n      }\n      match = find.exec(node2.value);\n    }\n    if (change) {\n      if (start < node2.value.length) {\n        nodes.push({ type: \"text\", value: node2.value.slice(start) });\n      }\n      parent.children.splice(index, 1, ...nodes);\n    } else {\n      nodes = [node2];\n    }\n    return index + nodes.length;\n  }\n}\nfunction toPairs(tupleOrList) {\n  const result = [];\n  if (!Array.isArray(tupleOrList)) {\n    throw new TypeError(\"Expected find and replace tuple or list of tuples\");\n  }\n  const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];\n  let index = -1;\n  while (++index < list2.length) {\n    const tuple = list2[index];\n    result.push([toExpression(tuple[0]), toFunction(tuple[1])]);\n  }\n  return result;\n}\nfunction toExpression(find) {\n  return typeof find === \"string\" ? new RegExp(escapeStringRegexp(find), \"g\") : find;\n}\nfunction toFunction(replace2) {\n  return typeof replace2 === \"function\" ? replace2 : function() {\n    return replace2;\n  };\n}\nconst inConstruct = \"phrasing\";\nconst notInConstruct = [\"autolink\", \"link\", \"image\", \"label\"];\nfunction gfmAutolinkLiteralFromMarkdown() {\n  return {\n    transforms: [transformGfmAutolinkLiterals],\n    enter: {\n      literalAutolink: enterLiteralAutolink,\n      literalAutolinkEmail: enterLiteralAutolinkValue,\n      literalAutolinkHttp: enterLiteralAutolinkValue,\n      literalAutolinkWww: enterLiteralAutolinkValue\n    },\n    exit: {\n      literalAutolink: exitLiteralAutolink,\n      literalAutolinkEmail: exitLiteralAutolinkEmail,\n      literalAutolinkHttp: exitLiteralAutolinkHttp,\n      literalAutolinkWww: exitLiteralAutolinkWww\n    }\n  };\n}\nfunction gfmAutolinkLiteralToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: \"@\",\n        before: \"[+\\\\-.\\\\w]\",\n        after: \"[\\\\-.\\\\w]\",\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: \".\",\n        before: \"[Ww]\",\n        after: \"[\\\\-.\\\\w]\",\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: \":\",\n        before: \"[ps]\",\n        after: \"\\\\/\",\n        inConstruct,\n        notInConstruct\n      }\n    ]\n  };\n}\nfunction enterLiteralAutolink(token) {\n  this.enter({ type: \"link\", title: null, url: \"\", children: [] }, token);\n}\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token);\n  const node2 = this.stack[this.stack.length - 1];\n  ok$1(node2.type === \"link\");\n  node2.url = \"http://\" + this.sliceSerialize(token);\n}\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token);\n}\nfunction exitLiteralAutolink(token) {\n  this.exit(token);\n}\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n    ],\n    { ignore: [\"link\", \"linkReference\"] }\n  );\n}\nfunction findUrl(_, protocol, domain2, path2, match) {\n  let prefix = \"\";\n  if (!previous(match)) {\n    return false;\n  }\n  if (/^w/i.test(protocol)) {\n    domain2 = protocol + domain2;\n    protocol = \"\";\n    prefix = \"http://\";\n  }\n  if (!isCorrectDomain(domain2)) {\n    return false;\n  }\n  const parts = splitUrl(domain2 + path2);\n  if (!parts[0]) return false;\n  const result = {\n    type: \"link\",\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{ type: \"text\", value: protocol + parts[0] }]\n  };\n  if (parts[1]) {\n    return [result, { type: \"text\", value: parts[1] }];\n  }\n  return result;\n}\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) || // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false;\n  }\n  return {\n    type: \"link\",\n    title: null,\n    url: \"mailto:\" + atext + \"@\" + label,\n    children: [{ type: \"text\", value: atext + \"@\" + label }]\n  };\n}\nfunction isCorrectDomain(domain2) {\n  const parts = domain2.split(\".\");\n  if (parts.length < 2 || parts[parts.length - 1] && (/_/.test(parts[parts.length - 1]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 1])) || parts[parts.length - 2] && (/_/.test(parts[parts.length - 2]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 2]))) {\n    return false;\n  }\n  return true;\n}\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url);\n  if (!trailExec) {\n    return [url, void 0];\n  }\n  url = url.slice(0, trailExec.index);\n  let trail2 = trailExec[0];\n  let closingParenIndex = trail2.indexOf(\")\");\n  const openingParens = ccount(url, \"(\");\n  let closingParens = ccount(url, \")\");\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail2.slice(0, closingParenIndex + 1);\n    trail2 = trail2.slice(closingParenIndex + 1);\n    closingParenIndex = trail2.indexOf(\")\");\n    closingParens++;\n  }\n  return [url, trail2];\n}\nfunction previous(match, email) {\n  const code2 = match.input.charCodeAt(match.index - 1);\n  return (match.index === 0 || unicodeWhitespace(code2) || unicodePunctuation(code2)) && (!email || code2 !== 47);\n}\nfunction normalizeIdentifier(value) {\n  return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nfootnoteReference.peek = footnoteReferencePeek;\nfunction gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteDefinition: enterFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteCallString: enterFootnoteCallString\n    },\n    exit: {\n      gfmFootnoteDefinition: exitFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteCallString: exitFootnoteCallString\n    }\n  };\n}\nfunction gfmFootnoteToMarkdown() {\n  return {\n    // This is on by default already.\n    unsafe: [{ character: \"[\", inConstruct: [\"phrasing\", \"label\", \"reference\"] }],\n    handlers: { footnoteDefinition, footnoteReference }\n  };\n}\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    { type: \"footnoteDefinition\", identifier: \"\", label: \"\", children: [] },\n    token\n  );\n}\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer();\n}\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume();\n  const node2 = this.stack[this.stack.length - 1];\n  ok$1(node2.type === \"footnoteDefinition\");\n  node2.label = label;\n  node2.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase();\n}\nfunction exitFootnoteDefinition(token) {\n  this.exit(token);\n}\nfunction enterFootnoteCall(token) {\n  this.enter({ type: \"footnoteReference\", identifier: \"\", label: \"\" }, token);\n}\nfunction enterFootnoteCallString() {\n  this.buffer();\n}\nfunction exitFootnoteCallString(token) {\n  const label = this.resume();\n  const node2 = this.stack[this.stack.length - 1];\n  ok$1(node2.type === \"footnoteReference\");\n  node2.label = label;\n  node2.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase();\n}\nfunction exitFootnoteCall(token) {\n  this.exit(token);\n}\nfunction footnoteReference(node2, _, state, info) {\n  const tracker = state.createTracker(info);\n  let value = tracker.move(\"[^\");\n  const exit2 = state.enter(\"footnoteReference\");\n  const subexit = state.enter(\"reference\");\n  value += tracker.move(\n    state.safe(state.associationId(node2), {\n      ...tracker.current(),\n      before: value,\n      after: \"]\"\n    })\n  );\n  subexit();\n  exit2();\n  value += tracker.move(\"]\");\n  return value;\n}\nfunction footnoteReferencePeek() {\n  return \"[\";\n}\nfunction footnoteDefinition(node2, _, state, info) {\n  const tracker = state.createTracker(info);\n  let value = tracker.move(\"[^\");\n  const exit2 = state.enter(\"footnoteDefinition\");\n  const subexit = state.enter(\"label\");\n  value += tracker.move(\n    state.safe(state.associationId(node2), {\n      ...tracker.current(),\n      before: value,\n      after: \"]\"\n    })\n  );\n  subexit();\n  value += tracker.move(\n    \"]:\" + (node2.children && node2.children.length > 0 ? \" \" : \"\")\n  );\n  tracker.shift(4);\n  value += tracker.move(\n    state.indentLines(state.containerFlow(node2, tracker.current()), map$2)\n  );\n  exit2();\n  return value;\n}\nfunction map$2(line, index, blank) {\n  if (index === 0) {\n    return line;\n  }\n  return (blank ? \"\" : \"    \") + line;\n}\nconst constructsWithoutStrikethrough = [\n  \"autolink\",\n  \"destinationLiteral\",\n  \"destinationRaw\",\n  \"reference\",\n  \"titleQuote\",\n  \"titleApostrophe\"\n];\nhandleDelete.peek = peekDelete;\nfunction gfmStrikethroughFromMarkdown() {\n  return {\n    canContainEols: [\"delete\"],\n    enter: { strikethrough: enterStrikethrough },\n    exit: { strikethrough: exitStrikethrough }\n  };\n}\nfunction gfmStrikethroughToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: \"~\",\n        inConstruct: \"phrasing\",\n        notInConstruct: constructsWithoutStrikethrough\n      }\n    ],\n    handlers: { delete: handleDelete }\n  };\n}\nfunction enterStrikethrough(token) {\n  this.enter({ type: \"delete\", children: [] }, token);\n}\nfunction exitStrikethrough(token) {\n  this.exit(token);\n}\nfunction handleDelete(node2, _, state, info) {\n  const tracker = state.createTracker(info);\n  const exit2 = state.enter(\"strikethrough\");\n  let value = tracker.move(\"~~\");\n  value += state.containerPhrasing(node2, {\n    ...tracker.current(),\n    before: value,\n    after: \"~\"\n  });\n  value += tracker.move(\"~~\");\n  exit2();\n  return value;\n}\nfunction peekDelete() {\n  return \"~\";\n}\nfunction markdownTable(table, options = {}) {\n  const align = (options.align || []).concat();\n  const stringLength = options.stringLength || defaultStringLength;\n  const alignments = [];\n  const cellMatrix = [];\n  const sizeMatrix = [];\n  const longestCellByColumn = [];\n  let mostCellsPerRow = 0;\n  let rowIndex = -1;\n  while (++rowIndex < table.length) {\n    const row2 = [];\n    const sizes2 = [];\n    let columnIndex2 = -1;\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length;\n    }\n    while (++columnIndex2 < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex2]);\n      if (options.alignDelimiters !== false) {\n        const size = stringLength(cell);\n        sizes2[columnIndex2] = size;\n        if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) {\n          longestCellByColumn[columnIndex2] = size;\n        }\n      }\n      row2.push(cell);\n    }\n    cellMatrix[rowIndex] = row2;\n    sizeMatrix[rowIndex] = sizes2;\n  }\n  let columnIndex = -1;\n  if (typeof align === \"object\" && \"length\" in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex]);\n    }\n  } else {\n    const code2 = toAlignment(align);\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code2;\n    }\n  }\n  columnIndex = -1;\n  const row = [];\n  const sizes = [];\n  while (++columnIndex < mostCellsPerRow) {\n    const code2 = alignments[columnIndex];\n    let before = \"\";\n    let after = \"\";\n    if (code2 === 99) {\n      before = \":\";\n      after = \":\";\n    } else if (code2 === 108) {\n      before = \":\";\n    } else if (code2 === 114) {\n      after = \":\";\n    }\n    let size = options.alignDelimiters === false ? 1 : Math.max(\n      1,\n      longestCellByColumn[columnIndex] - before.length - after.length\n    );\n    const cell = before + \"-\".repeat(size) + after;\n    if (options.alignDelimiters !== false) {\n      size = before.length + size + after.length;\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size;\n      }\n      sizes[columnIndex] = size;\n    }\n    row[columnIndex] = cell;\n  }\n  cellMatrix.splice(1, 0, row);\n  sizeMatrix.splice(1, 0, sizes);\n  rowIndex = -1;\n  const lines = [];\n  while (++rowIndex < cellMatrix.length) {\n    const row2 = cellMatrix[rowIndex];\n    const sizes2 = sizeMatrix[rowIndex];\n    columnIndex = -1;\n    const line = [];\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row2[columnIndex] || \"\";\n      let before = \"\";\n      let after = \"\";\n      if (options.alignDelimiters !== false) {\n        const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0);\n        const code2 = alignments[columnIndex];\n        if (code2 === 114) {\n          before = \" \".repeat(size);\n        } else if (code2 === 99) {\n          if (size % 2) {\n            before = \" \".repeat(size / 2 + 0.5);\n            after = \" \".repeat(size / 2 - 0.5);\n          } else {\n            before = \" \".repeat(size / 2);\n            after = before;\n          }\n        } else {\n          after = \" \".repeat(size);\n        }\n      }\n      if (options.delimiterStart !== false && !columnIndex) {\n        line.push(\"|\");\n      }\n      if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is\n      // empty: there will be a closing space.\n      !(options.alignDelimiters === false && cell === \"\") && (options.delimiterStart !== false || columnIndex)) {\n        line.push(\" \");\n      }\n      if (options.alignDelimiters !== false) {\n        line.push(before);\n      }\n      line.push(cell);\n      if (options.alignDelimiters !== false) {\n        line.push(after);\n      }\n      if (options.padding !== false) {\n        line.push(\" \");\n      }\n      if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {\n        line.push(\"|\");\n      }\n    }\n    lines.push(\n      options.delimiterEnd === false ? line.join(\"\").replace(/ +$/, \"\") : line.join(\"\")\n    );\n  }\n  return lines.join(\"\\n\");\n}\nfunction serialize(value) {\n  return value === null || value === void 0 ? \"\" : String(value);\n}\nfunction defaultStringLength(value) {\n  return value.length;\n}\nfunction toAlignment(value) {\n  const code2 = typeof value === \"string\" ? value.codePointAt(0) : 0;\n  return code2 === 67 || code2 === 99 ? 99 : code2 === 76 || code2 === 108 ? 108 : code2 === 82 || code2 === 114 ? 114 : 0;\n}\nfunction blockquote(node2, _, state, info) {\n  const exit2 = state.enter(\"blockquote\");\n  const tracker = state.createTracker(info);\n  tracker.move(\"> \");\n  tracker.shift(2);\n  const value = state.indentLines(\n    state.containerFlow(node2, tracker.current()),\n    map$1\n  );\n  exit2();\n  return value;\n}\nfunction map$1(line, _, blank) {\n  return \">\" + (blank ? \"\" : \" \") + line;\n}\nfunction patternInScope(stack, pattern) {\n  return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);\n}\nfunction listInScope(stack, list2, none) {\n  if (typeof list2 === \"string\") {\n    list2 = [list2];\n  }\n  if (!list2 || list2.length === 0) {\n    return none;\n  }\n  let index = -1;\n  while (++index < list2.length) {\n    if (stack.includes(list2[index])) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction hardBreak(_, _1, state, info) {\n  let index = -1;\n  while (++index < state.unsafe.length) {\n    if (state.unsafe[index].character === \"\\n\" && patternInScope(state.stack, state.unsafe[index])) {\n      return /[ \\t]/.test(info.before) ? \"\" : \" \";\n    }\n  }\n  return \"\\\\\\n\";\n}\nfunction longestStreak(value, substring) {\n  const source = String(value);\n  let index = source.indexOf(substring);\n  let expected = index;\n  let count = 0;\n  let max = 0;\n  if (typeof substring !== \"string\") {\n    throw new TypeError(\"Expected substring\");\n  }\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count;\n      }\n    } else {\n      count = 1;\n    }\n    expected = index + substring.length;\n    index = source.indexOf(substring, expected);\n  }\n  return max;\n}\nfunction formatCodeAsIndented(node2, state) {\n  return Boolean(\n    state.options.fences === false && node2.value && // If there’s no info…\n    !node2.lang && // And there’s a non-whitespace character…\n    /[^ \\r\\n]/.test(node2.value) && // And the value doesn’t start or end in a blank…\n    !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node2.value)\n  );\n}\nfunction checkFence(state) {\n  const marker = state.options.fence || \"`\";\n  if (marker !== \"`\" && marker !== \"~\") {\n    throw new Error(\n      \"Cannot serialize code with `\" + marker + \"` for `options.fence`, expected `` ` `` or `~`\"\n    );\n  }\n  return marker;\n}\nfunction code$1(node2, _, state, info) {\n  const marker = checkFence(state);\n  const raw = node2.value || \"\";\n  const suffix = marker === \"`\" ? \"GraveAccent\" : \"Tilde\";\n  if (formatCodeAsIndented(node2, state)) {\n    const exit3 = state.enter(\"codeIndented\");\n    const value2 = state.indentLines(raw, map);\n    exit3();\n    return value2;\n  }\n  const tracker = state.createTracker(info);\n  const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));\n  const exit2 = state.enter(\"codeFenced\");\n  let value = tracker.move(sequence);\n  if (node2.lang) {\n    const subexit = state.enter(`codeFencedLang${suffix}`);\n    value += tracker.move(\n      state.safe(node2.lang, {\n        before: value,\n        after: \" \",\n        encode: [\"`\"],\n        ...tracker.current()\n      })\n    );\n    subexit();\n  }\n  if (node2.lang && node2.meta) {\n    const subexit = state.enter(`codeFencedMeta${suffix}`);\n    value += tracker.move(\" \");\n    value += tracker.move(\n      state.safe(node2.meta, {\n        before: value,\n        after: \"\\n\",\n        encode: [\"`\"],\n        ...tracker.current()\n      })\n    );\n    subexit();\n  }\n  value += tracker.move(\"\\n\");\n  if (raw) {\n    value += tracker.move(raw + \"\\n\");\n  }\n  value += tracker.move(sequence);\n  exit2();\n  return value;\n}\nfunction map(line, _, blank) {\n  return (blank ? \"\" : \"    \") + line;\n}\nfunction checkQuote(state) {\n  const marker = state.options.quote || '\"';\n  if (marker !== '\"' && marker !== \"'\") {\n    throw new Error(\n      \"Cannot serialize title with `\" + marker + \"` for `options.quote`, expected `\\\"`, or `'`\"\n    );\n  }\n  return marker;\n}\nfunction definition(node2, _, state, info) {\n  const quote = checkQuote(state);\n  const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n  const exit2 = state.enter(\"definition\");\n  let subexit = state.enter(\"label\");\n  const tracker = state.createTracker(info);\n  let value = tracker.move(\"[\");\n  value += tracker.move(\n    state.safe(state.associationId(node2), {\n      before: value,\n      after: \"]\",\n      ...tracker.current()\n    })\n  );\n  value += tracker.move(\"]: \");\n  subexit();\n  if (\n    // If there’s no url, or…\n    !node2.url || // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node2.url)\n  ) {\n    subexit = state.enter(\"destinationLiteral\");\n    value += tracker.move(\"<\");\n    value += tracker.move(\n      state.safe(node2.url, { before: value, after: \">\", ...tracker.current() })\n    );\n    value += tracker.move(\">\");\n  } else {\n    subexit = state.enter(\"destinationRaw\");\n    value += tracker.move(\n      state.safe(node2.url, {\n        before: value,\n        after: node2.title ? \" \" : \"\\n\",\n        ...tracker.current()\n      })\n    );\n  }\n  subexit();\n  if (node2.title) {\n    subexit = state.enter(`title${suffix}`);\n    value += tracker.move(\" \" + quote);\n    value += tracker.move(\n      state.safe(node2.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    );\n    value += tracker.move(quote);\n    subexit();\n  }\n  exit2();\n  return value;\n}\nfunction checkEmphasis(state) {\n  const marker = state.options.emphasis || \"*\";\n  if (marker !== \"*\" && marker !== \"_\") {\n    throw new Error(\n      \"Cannot serialize emphasis with `\" + marker + \"` for `options.emphasis`, expected `*`, or `_`\"\n    );\n  }\n  return marker;\n}\nemphasis.peek = emphasisPeek;\nfunction emphasis(node2, _, state, info) {\n  const marker = checkEmphasis(state);\n  const exit2 = state.enter(\"emphasis\");\n  const tracker = state.createTracker(info);\n  let value = tracker.move(marker);\n  value += tracker.move(\n    state.containerPhrasing(node2, {\n      before: value,\n      after: marker,\n      ...tracker.current()\n    })\n  );\n  value += tracker.move(marker);\n  exit2();\n  return value;\n}\nfunction emphasisPeek(_, _1, state) {\n  return state.options.emphasis || \"*\";\n}\nconst emptyOptions$1 = {};\nfunction toString(value, options) {\n  const settings = emptyOptions$1;\n  const includeImageAlt = typeof settings.includeImageAlt === \"boolean\" ? settings.includeImageAlt : true;\n  const includeHtml = typeof settings.includeHtml === \"boolean\" ? settings.includeHtml : true;\n  return one(value, includeImageAlt, includeHtml);\n}\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if (\"value\" in value) {\n      return value.type === \"html\" && !includeHtml ? \"\" : value.value;\n    }\n    if (includeImageAlt && \"alt\" in value && value.alt) {\n      return value.alt;\n    }\n    if (\"children\" in value) {\n      return all(value.children, includeImageAlt, includeHtml);\n    }\n  }\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml);\n  }\n  return \"\";\n}\nfunction all(values, includeImageAlt, includeHtml) {\n  const result = [];\n  let index = -1;\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml);\n  }\n  return result.join(\"\");\n}\nfunction node(value) {\n  return Boolean(value && typeof value === \"object\");\n}\nfunction formatHeadingAsSetext(node2, state) {\n  let literalWithBreak = false;\n  visit(node2, function(node3) {\n    if (\"value\" in node3 && /\\r?\\n|\\r/.test(node3.value) || node3.type === \"break\") {\n      literalWithBreak = true;\n      return EXIT$1;\n    }\n  });\n  return Boolean(\n    (!node2.depth || node2.depth < 3) && toString(node2) && (state.options.setext || literalWithBreak)\n  );\n}\nfunction heading(node2, _, state, info) {\n  const rank = Math.max(Math.min(6, node2.depth || 1), 1);\n  const tracker = state.createTracker(info);\n  if (formatHeadingAsSetext(node2, state)) {\n    const exit3 = state.enter(\"headingSetext\");\n    const subexit2 = state.enter(\"phrasing\");\n    const value2 = state.containerPhrasing(node2, {\n      ...tracker.current(),\n      before: \"\\n\",\n      after: \"\\n\"\n    });\n    subexit2();\n    exit3();\n    return value2 + \"\\n\" + (rank === 1 ? \"=\" : \"-\").repeat(\n      // The whole size…\n      value2.length - // Minus the position of the character after the last EOL (or\n      // 0 if there is none)…\n      (Math.max(value2.lastIndexOf(\"\\r\"), value2.lastIndexOf(\"\\n\")) + 1)\n    );\n  }\n  const sequence = \"#\".repeat(rank);\n  const exit2 = state.enter(\"headingAtx\");\n  const subexit = state.enter(\"phrasing\");\n  tracker.move(sequence + \" \");\n  let value = state.containerPhrasing(node2, {\n    before: \"# \",\n    after: \"\\n\",\n    ...tracker.current()\n  });\n  if (/^[\\t ]/.test(value)) {\n    value = \"&#x\" + value.charCodeAt(0).toString(16).toUpperCase() + \";\" + value.slice(1);\n  }\n  value = value ? sequence + \" \" + value : sequence;\n  if (state.options.closeAtx) {\n    value += \" \" + sequence;\n  }\n  subexit();\n  exit2();\n  return value;\n}\nhtml.peek = htmlPeek;\nfunction html(node2) {\n  return node2.value || \"\";\n}\nfunction htmlPeek() {\n  return \"<\";\n}\nimage.peek = imagePeek;\nfunction image(node2, _, state, info) {\n  const quote = checkQuote(state);\n  const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n  const exit2 = state.enter(\"image\");\n  let subexit = state.enter(\"label\");\n  const tracker = state.createTracker(info);\n  let value = tracker.move(\"![\");\n  value += tracker.move(\n    state.safe(node2.alt, { before: value, after: \"]\", ...tracker.current() })\n  );\n  value += tracker.move(\"](\");\n  subexit();\n  if (\n    // If there’s no url but there is a title…\n    !node2.url && node2.title || // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node2.url)\n  ) {\n    subexit = state.enter(\"destinationLiteral\");\n    value += tracker.move(\"<\");\n    value += tracker.move(\n      state.safe(node2.url, { before: value, after: \">\", ...tracker.current() })\n    );\n    value += tracker.move(\">\");\n  } else {\n    subexit = state.enter(\"destinationRaw\");\n    value += tracker.move(\n      state.safe(node2.url, {\n        before: value,\n        after: node2.title ? \" \" : \")\",\n        ...tracker.current()\n      })\n    );\n  }\n  subexit();\n  if (node2.title) {\n    subexit = state.enter(`title${suffix}`);\n    value += tracker.move(\" \" + quote);\n    value += tracker.move(\n      state.safe(node2.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    );\n    value += tracker.move(quote);\n    subexit();\n  }\n  value += tracker.move(\")\");\n  exit2();\n  return value;\n}\nfunction imagePeek() {\n  return \"!\";\n}\nimageReference.peek = imageReferencePeek;\nfunction imageReference(node2, _, state, info) {\n  const type = node2.referenceType;\n  const exit2 = state.enter(\"imageReference\");\n  let subexit = state.enter(\"label\");\n  const tracker = state.createTracker(info);\n  let value = tracker.move(\"![\");\n  const alt = state.safe(node2.alt, {\n    before: value,\n    after: \"]\",\n    ...tracker.current()\n  });\n  value += tracker.move(alt + \"][\");\n  subexit();\n  const stack = state.stack;\n  state.stack = [];\n  subexit = state.enter(\"reference\");\n  const reference = state.safe(state.associationId(node2), {\n    before: value,\n    after: \"]\",\n    ...tracker.current()\n  });\n  subexit();\n  state.stack = stack;\n  exit2();\n  if (type === \"full\" || !alt || alt !== reference) {\n    value += tracker.move(reference + \"]\");\n  } else if (type === \"shortcut\") {\n    value = value.slice(0, -1);\n  } else {\n    value += tracker.move(\"]\");\n  }\n  return value;\n}\nfunction imageReferencePeek() {\n  return \"!\";\n}\ninlineCode.peek = inlineCodePeek;\nfunction inlineCode(node2, _, state) {\n  let value = node2.value || \"\";\n  let sequence = \"`\";\n  let index = -1;\n  while (new RegExp(\"(^|[^`])\" + sequence + \"([^`]|$)\").test(value)) {\n    sequence += \"`\";\n  }\n  if (/[^ \\r\\n]/.test(value) && (/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value) || /^`|`$/.test(value))) {\n    value = \" \" + value + \" \";\n  }\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index];\n    const expression = state.compilePattern(pattern);\n    let match;\n    if (!pattern.atBreak) continue;\n    while (match = expression.exec(value)) {\n      let position = match.index;\n      if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {\n        position--;\n      }\n      value = value.slice(0, position) + \" \" + value.slice(match.index + 1);\n    }\n  }\n  return sequence + value + sequence;\n}\nfunction inlineCodePeek() {\n  return \"`\";\n}\nfunction formatLinkAsAutolink(node2, state) {\n  const raw = toString(node2);\n  return Boolean(\n    !state.options.resourceLink && // If there’s a url…\n    node2.url && // And there’s a no title…\n    !node2.title && // And the content of `node` is a single text node…\n    node2.children && node2.children.length === 1 && node2.children[0].type === \"text\" && // And if the url is the same as the content…\n    (raw === node2.url || \"mailto:\" + raw === node2.url) && // And that starts w/ a protocol…\n    /^[a-z][a-z+.-]+:/i.test(node2.url) && // And that doesn’t contain ASCII control codes (character escapes and\n    // references don’t work), space, or angle brackets…\n    !/[\\0- <>\\u007F]/.test(node2.url)\n  );\n}\nlink.peek = linkPeek;\nfunction link(node2, _, state, info) {\n  const quote = checkQuote(state);\n  const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n  const tracker = state.createTracker(info);\n  let exit2;\n  let subexit;\n  if (formatLinkAsAutolink(node2, state)) {\n    const stack = state.stack;\n    state.stack = [];\n    exit2 = state.enter(\"autolink\");\n    let value2 = tracker.move(\"<\");\n    value2 += tracker.move(\n      state.containerPhrasing(node2, {\n        before: value2,\n        after: \">\",\n        ...tracker.current()\n      })\n    );\n    value2 += tracker.move(\">\");\n    exit2();\n    state.stack = stack;\n    return value2;\n  }\n  exit2 = state.enter(\"link\");\n  subexit = state.enter(\"label\");\n  let value = tracker.move(\"[\");\n  value += tracker.move(\n    state.containerPhrasing(node2, {\n      before: value,\n      after: \"](\",\n      ...tracker.current()\n    })\n  );\n  value += tracker.move(\"](\");\n  subexit();\n  if (\n    // If there’s no url but there is a title…\n    !node2.url && node2.title || // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node2.url)\n  ) {\n    subexit = state.enter(\"destinationLiteral\");\n    value += tracker.move(\"<\");\n    value += tracker.move(\n      state.safe(node2.url, { before: value, after: \">\", ...tracker.current() })\n    );\n    value += tracker.move(\">\");\n  } else {\n    subexit = state.enter(\"destinationRaw\");\n    value += tracker.move(\n      state.safe(node2.url, {\n        before: value,\n        after: node2.title ? \" \" : \")\",\n        ...tracker.current()\n      })\n    );\n  }\n  subexit();\n  if (node2.title) {\n    subexit = state.enter(`title${suffix}`);\n    value += tracker.move(\" \" + quote);\n    value += tracker.move(\n      state.safe(node2.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    );\n    value += tracker.move(quote);\n    subexit();\n  }\n  value += tracker.move(\")\");\n  exit2();\n  return value;\n}\nfunction linkPeek(node2, _, state) {\n  return formatLinkAsAutolink(node2, state) ? \"<\" : \"[\";\n}\nlinkReference.peek = linkReferencePeek;\nfunction linkReference(node2, _, state, info) {\n  const type = node2.referenceType;\n  const exit2 = state.enter(\"linkReference\");\n  let subexit = state.enter(\"label\");\n  const tracker = state.createTracker(info);\n  let value = tracker.move(\"[\");\n  const text2 = state.containerPhrasing(node2, {\n    before: value,\n    after: \"]\",\n    ...tracker.current()\n  });\n  value += tracker.move(text2 + \"][\");\n  subexit();\n  const stack = state.stack;\n  state.stack = [];\n  subexit = state.enter(\"reference\");\n  const reference = state.safe(state.associationId(node2), {\n    before: value,\n    after: \"]\",\n    ...tracker.current()\n  });\n  subexit();\n  state.stack = stack;\n  exit2();\n  if (type === \"full\" || !text2 || text2 !== reference) {\n    value += tracker.move(reference + \"]\");\n  } else if (type === \"shortcut\") {\n    value = value.slice(0, -1);\n  } else {\n    value += tracker.move(\"]\");\n  }\n  return value;\n}\nfunction linkReferencePeek() {\n  return \"[\";\n}\nfunction checkBullet(state) {\n  const marker = state.options.bullet || \"*\";\n  if (marker !== \"*\" && marker !== \"+\" && marker !== \"-\") {\n    throw new Error(\n      \"Cannot serialize items with `\" + marker + \"` for `options.bullet`, expected `*`, `+`, or `-`\"\n    );\n  }\n  return marker;\n}\nfunction checkBulletOther(state) {\n  const bullet = checkBullet(state);\n  const bulletOther = state.options.bulletOther;\n  if (!bulletOther) {\n    return bullet === \"*\" ? \"-\" : \"*\";\n  }\n  if (bulletOther !== \"*\" && bulletOther !== \"+\" && bulletOther !== \"-\") {\n    throw new Error(\n      \"Cannot serialize items with `\" + bulletOther + \"` for `options.bulletOther`, expected `*`, `+`, or `-`\"\n    );\n  }\n  if (bulletOther === bullet) {\n    throw new Error(\n      \"Expected `bullet` (`\" + bullet + \"`) and `bulletOther` (`\" + bulletOther + \"`) to be different\"\n    );\n  }\n  return bulletOther;\n}\nfunction checkBulletOrdered(state) {\n  const marker = state.options.bulletOrdered || \".\";\n  if (marker !== \".\" && marker !== \")\") {\n    throw new Error(\n      \"Cannot serialize items with `\" + marker + \"` for `options.bulletOrdered`, expected `.` or `)`\"\n    );\n  }\n  return marker;\n}\nfunction checkRule(state) {\n  const marker = state.options.rule || \"*\";\n  if (marker !== \"*\" && marker !== \"-\" && marker !== \"_\") {\n    throw new Error(\n      \"Cannot serialize rules with `\" + marker + \"` for `options.rule`, expected `*`, `-`, or `_`\"\n    );\n  }\n  return marker;\n}\nfunction list(node2, parent, state, info) {\n  const exit2 = state.enter(\"list\");\n  const bulletCurrent = state.bulletCurrent;\n  let bullet = node2.ordered ? checkBulletOrdered(state) : checkBullet(state);\n  const bulletOther = node2.ordered ? bullet === \".\" ? \")\" : \".\" : checkBulletOther(state);\n  let useDifferentMarker = parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false;\n  if (!node2.ordered) {\n    const firstListItem = node2.children ? node2.children[0] : void 0;\n    if (\n      // Bullet could be used as a thematic break marker:\n      (bullet === \"*\" || bullet === \"-\") && // Empty first list item:\n      firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:\n      state.stack[state.stack.length - 1] === \"list\" && state.stack[state.stack.length - 2] === \"listItem\" && state.stack[state.stack.length - 3] === \"list\" && state.stack[state.stack.length - 4] === \"listItem\" && // That are each the first child.\n      state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0\n    ) {\n      useDifferentMarker = true;\n    }\n    if (checkRule(state) === bullet && firstListItem) {\n      let index = -1;\n      while (++index < node2.children.length) {\n        const item = node2.children[index];\n        if (item && item.type === \"listItem\" && item.children && item.children[0] && item.children[0].type === \"thematicBreak\") {\n          useDifferentMarker = true;\n          break;\n        }\n      }\n    }\n  }\n  if (useDifferentMarker) {\n    bullet = bulletOther;\n  }\n  state.bulletCurrent = bullet;\n  const value = state.containerFlow(node2, info);\n  state.bulletLastUsed = bullet;\n  state.bulletCurrent = bulletCurrent;\n  exit2();\n  return value;\n}\nfunction checkListItemIndent(state) {\n  const style = state.options.listItemIndent || \"one\";\n  if (style !== \"tab\" && style !== \"one\" && style !== \"mixed\") {\n    throw new Error(\n      \"Cannot serialize items with `\" + style + \"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`\"\n    );\n  }\n  return style;\n}\nfunction listItem(node2, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state);\n  let bullet = state.bulletCurrent || checkBullet(state);\n  if (parent && parent.type === \"list\" && parent.ordered) {\n    bullet = (typeof parent.start === \"number\" && parent.start > -1 ? parent.start : 1) + (state.options.incrementListMarker === false ? 0 : parent.children.indexOf(node2)) + bullet;\n  }\n  let size = bullet.length + 1;\n  if (listItemIndent === \"tab\" || listItemIndent === \"mixed\" && (parent && parent.type === \"list\" && parent.spread || node2.spread)) {\n    size = Math.ceil(size / 4) * 4;\n  }\n  const tracker = state.createTracker(info);\n  tracker.move(bullet + \" \".repeat(size - bullet.length));\n  tracker.shift(size);\n  const exit2 = state.enter(\"listItem\");\n  const value = state.indentLines(\n    state.containerFlow(node2, tracker.current()),\n    map2\n  );\n  exit2();\n  return value;\n  function map2(line, index, blank) {\n    if (index) {\n      return (blank ? \"\" : \" \".repeat(size)) + line;\n    }\n    return (blank ? bullet : bullet + \" \".repeat(size - bullet.length)) + line;\n  }\n}\nfunction paragraph(node2, _, state, info) {\n  const exit2 = state.enter(\"paragraph\");\n  const subexit = state.enter(\"phrasing\");\n  const value = state.containerPhrasing(node2, info);\n  subexit();\n  exit2();\n  return value;\n}\nconst phrasing = (\n  /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n  convert([\n    \"break\",\n    \"delete\",\n    \"emphasis\",\n    // To do: next major: removed since footnotes were added to GFM.\n    \"footnote\",\n    \"footnoteReference\",\n    \"image\",\n    \"imageReference\",\n    \"inlineCode\",\n    // Enabled by `mdast-util-math`:\n    \"inlineMath\",\n    \"link\",\n    \"linkReference\",\n    // Enabled by `mdast-util-mdx`:\n    \"mdxJsxTextElement\",\n    // Enabled by `mdast-util-mdx`:\n    \"mdxTextExpression\",\n    \"strong\",\n    \"text\",\n    // Enabled by `mdast-util-directive`:\n    \"textDirective\"\n  ])\n);\nfunction root(node2, _, state, info) {\n  const hasPhrasing = node2.children.some(function(d) {\n    return phrasing(d);\n  });\n  const fn = hasPhrasing ? state.containerPhrasing : state.containerFlow;\n  return fn.call(state, node2, info);\n}\nfunction checkStrong(state) {\n  const marker = state.options.strong || \"*\";\n  if (marker !== \"*\" && marker !== \"_\") {\n    throw new Error(\n      \"Cannot serialize strong with `\" + marker + \"` for `options.strong`, expected `*`, or `_`\"\n    );\n  }\n  return marker;\n}\nstrong.peek = strongPeek;\nfunction strong(node2, _, state, info) {\n  const marker = checkStrong(state);\n  const exit2 = state.enter(\"strong\");\n  const tracker = state.createTracker(info);\n  let value = tracker.move(marker + marker);\n  value += tracker.move(\n    state.containerPhrasing(node2, {\n      before: value,\n      after: marker,\n      ...tracker.current()\n    })\n  );\n  value += tracker.move(marker + marker);\n  exit2();\n  return value;\n}\nfunction strongPeek(_, _1, state) {\n  return state.options.strong || \"*\";\n}\nfunction text$1(node2, _, state, info) {\n  return state.safe(node2.value, info);\n}\nfunction checkRuleRepetition(state) {\n  const repetition = state.options.ruleRepetition || 3;\n  if (repetition < 3) {\n    throw new Error(\n      \"Cannot serialize rules with repetition `\" + repetition + \"` for `options.ruleRepetition`, expected `3` or more\"\n    );\n  }\n  return repetition;\n}\nfunction thematicBreak(_, _1, state) {\n  const value = (checkRule(state) + (state.options.ruleSpaces ? \" \" : \"\")).repeat(checkRuleRepetition(state));\n  return state.options.ruleSpaces ? value.slice(0, -1) : value;\n}\nconst handle = {\n  blockquote,\n  break: hardBreak,\n  code: code$1,\n  definition,\n  emphasis,\n  hardBreak,\n  heading,\n  html,\n  image,\n  imageReference,\n  inlineCode,\n  link,\n  linkReference,\n  list,\n  listItem,\n  paragraph,\n  root,\n  strong,\n  text: text$1,\n  thematicBreak\n};\nfunction gfmTableFromMarkdown() {\n  return {\n    enter: {\n      table: enterTable,\n      tableData: enterCell,\n      tableHeader: enterCell,\n      tableRow: enterRow\n    },\n    exit: {\n      codeText: exitCodeText,\n      table: exitTable,\n      tableData: exit,\n      tableHeader: exit,\n      tableRow: exit\n    }\n  };\n}\nfunction enterTable(token) {\n  const align = token._align;\n  this.enter(\n    {\n      type: \"table\",\n      align: align.map(function(d) {\n        return d === \"none\" ? null : d;\n      }),\n      children: []\n    },\n    token\n  );\n  this.data.inTable = true;\n}\nfunction exitTable(token) {\n  this.exit(token);\n  this.data.inTable = void 0;\n}\nfunction enterRow(token) {\n  this.enter({ type: \"tableRow\", children: [] }, token);\n}\nfunction exit(token) {\n  this.exit(token);\n}\nfunction enterCell(token) {\n  this.enter({ type: \"tableCell\", children: [] }, token);\n}\nfunction exitCodeText(token) {\n  let value = this.resume();\n  if (this.data.inTable) {\n    value = value.replace(/\\\\([\\\\|])/g, replace);\n  }\n  const node2 = this.stack[this.stack.length - 1];\n  ok$1(node2.type === \"inlineCode\");\n  node2.value = value;\n  this.exit(token);\n}\nfunction replace($0, $1) {\n  return $1 === \"|\" ? $1 : $0;\n}\nfunction gfmTableToMarkdown(options) {\n  const settings = options || {};\n  const padding = settings.tableCellPadding;\n  const alignDelimiters = settings.tablePipeAlign;\n  const stringLength = settings.stringLength;\n  const around = padding ? \" \" : \"|\";\n  return {\n    unsafe: [\n      { character: \"\\r\", inConstruct: \"tableCell\" },\n      { character: \"\\n\", inConstruct: \"tableCell\" },\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      { atBreak: true, character: \"|\", after: \"[\t :-]\" },\n      // A pipe in a cell must be encoded.\n      { character: \"|\", inConstruct: \"tableCell\" },\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      { atBreak: true, character: \":\", after: \"-\" },\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      { atBreak: true, character: \"-\", after: \"[:|-]\" }\n    ],\n    handlers: {\n      inlineCode: inlineCodeWithTable,\n      table: handleTable,\n      tableCell: handleTableCell,\n      tableRow: handleTableRow\n    }\n  };\n  function handleTable(node2, _, state, info) {\n    return serializeData(handleTableAsData(node2, state, info), node2.align);\n  }\n  function handleTableRow(node2, _, state, info) {\n    const row = handleTableRowAsData(node2, state, info);\n    const value = serializeData([row]);\n    return value.slice(0, value.indexOf(\"\\n\"));\n  }\n  function handleTableCell(node2, _, state, info) {\n    const exit2 = state.enter(\"tableCell\");\n    const subexit = state.enter(\"phrasing\");\n    const value = state.containerPhrasing(node2, {\n      ...info,\n      before: around,\n      after: around\n    });\n    subexit();\n    exit2();\n    return value;\n  }\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    });\n  }\n  function handleTableAsData(node2, state, info) {\n    const children = node2.children;\n    let index = -1;\n    const result = [];\n    const subexit = state.enter(\"table\");\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(children[index], state, info);\n    }\n    subexit();\n    return result;\n  }\n  function handleTableRowAsData(node2, state, info) {\n    const children = node2.children;\n    let index = -1;\n    const result = [];\n    const subexit = state.enter(\"tableRow\");\n    while (++index < children.length) {\n      result[index] = handleTableCell(children[index], node2, state, info);\n    }\n    subexit();\n    return result;\n  }\n  function inlineCodeWithTable(node2, parent, state) {\n    let value = handle.inlineCode(node2, parent, state);\n    if (state.stack.includes(\"tableCell\")) {\n      value = value.replace(/\\|/g, \"\\\\$&\");\n    }\n    return value;\n  }\n}\nfunction gfmTaskListItemFromMarkdown() {\n  return {\n    exit: {\n      taskListCheckValueChecked: exitCheck,\n      taskListCheckValueUnchecked: exitCheck,\n      paragraph: exitParagraphWithTaskListItem\n    }\n  };\n}\nfunction gfmTaskListItemToMarkdown() {\n  return {\n    unsafe: [{ atBreak: true, character: \"-\", after: \"[:|-]\" }],\n    handlers: { listItem: listItemWithTaskListItem }\n  };\n}\nfunction exitCheck(token) {\n  const node2 = this.stack[this.stack.length - 2];\n  ok$1(node2.type === \"listItem\");\n  node2.checked = token.type === \"taskListCheckValueChecked\";\n}\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = this.stack[this.stack.length - 2];\n  if (parent && parent.type === \"listItem\" && typeof parent.checked === \"boolean\") {\n    const node2 = this.stack[this.stack.length - 1];\n    ok$1(node2.type === \"paragraph\");\n    const head = node2.children[0];\n    if (head && head.type === \"text\") {\n      const siblings = parent.children;\n      let index = -1;\n      let firstParaghraph;\n      while (++index < siblings.length) {\n        const sibling = siblings[index];\n        if (sibling.type === \"paragraph\") {\n          firstParaghraph = sibling;\n          break;\n        }\n      }\n      if (firstParaghraph === node2) {\n        head.value = head.value.slice(1);\n        if (head.value.length === 0) {\n          node2.children.shift();\n        } else if (node2.position && head.position && typeof head.position.start.offset === \"number\") {\n          head.position.start.column++;\n          head.position.start.offset++;\n          node2.position.start = Object.assign({}, head.position.start);\n        }\n      }\n    }\n  }\n  this.exit(token);\n}\nfunction listItemWithTaskListItem(node2, parent, state, info) {\n  const head = node2.children[0];\n  const checkable = typeof node2.checked === \"boolean\" && head && head.type === \"paragraph\";\n  const checkbox = \"[\" + (node2.checked ? \"x\" : \" \") + \"] \";\n  const tracker = state.createTracker(info);\n  if (checkable) {\n    tracker.move(checkbox);\n  }\n  let value = handle.listItem(node2, parent, state, {\n    ...info,\n    ...tracker.current()\n  });\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check);\n  }\n  return value;\n  function check($0) {\n    return $0 + checkbox;\n  }\n}\nfunction gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown(),\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown(),\n    gfmTableFromMarkdown(),\n    gfmTaskListItemFromMarkdown()\n  ];\n}\nfunction gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown(),\n      gfmFootnoteToMarkdown(),\n      gfmStrikethroughToMarkdown(),\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown()\n    ]\n  };\n}\nfunction splice(list2, start, remove, items) {\n  const end = list2.length;\n  let chunkStart = 0;\n  let parameters;\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n  if (items.length < 1e4) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    list2.splice(...parameters);\n  } else {\n    if (remove) list2.splice(start, remove);\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 1e4);\n      parameters.unshift(start, 0);\n      list2.splice(...parameters);\n      chunkStart += 1e4;\n      start += 1e4;\n    }\n  }\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n  const all2 = {};\n  let index = -1;\n  while (++index < extensions.length) {\n    syntaxExtension(all2, extensions[index]);\n  }\n  return all2;\n}\nfunction syntaxExtension(all2, extension) {\n  let hook;\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all2, hook) ? all2[hook] : void 0;\n    const left = maybe || (all2[hook] = {});\n    const right = extension[hook];\n    let code2;\n    if (right) {\n      for (code2 in right) {\n        if (!hasOwnProperty.call(left, code2)) left[code2] = [];\n        const value = right[code2];\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code2],\n          Array.isArray(value) ? value : value ? [value] : []\n        );\n      }\n    }\n  }\n}\nfunction constructs(existing, list2) {\n  let index = -1;\n  const before = [];\n  while (++index < list2.length) {\n    (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n  }\n  splice(existing, 0, 0, before);\n}\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\nconst text = {};\nfunction gfmAutolinkLiteral() {\n  return {\n    text\n  };\n}\nlet code = 48;\nwhile (code < 123) {\n  text[code] = emailAutolink;\n  code++;\n  if (code === 58) code = 65;\n  else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok2, nok) {\n  const self = this;\n  let dot;\n  let data;\n  return start;\n  function start(code2) {\n    if (!gfmAtext(code2) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code2);\n    }\n    effects.enter(\"literalAutolink\");\n    effects.enter(\"literalAutolinkEmail\");\n    return atext(code2);\n  }\n  function atext(code2) {\n    if (gfmAtext(code2)) {\n      effects.consume(code2);\n      return atext;\n    }\n    if (code2 === 64) {\n      effects.consume(code2);\n      return emailDomain;\n    }\n    return nok(code2);\n  }\n  function emailDomain(code2) {\n    if (code2 === 46) {\n      return effects.check(\n        emailDomainDotTrail,\n        emailDomainAfter,\n        emailDomainDot\n      )(code2);\n    }\n    if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n      data = true;\n      effects.consume(code2);\n      return emailDomain;\n    }\n    return emailDomainAfter(code2);\n  }\n  function emailDomainDot(code2) {\n    effects.consume(code2);\n    dot = true;\n    return emailDomain;\n  }\n  function emailDomainAfter(code2) {\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit(\"literalAutolinkEmail\");\n      effects.exit(\"literalAutolink\");\n      return ok2(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeWwwAutolink(effects, ok2, nok) {\n  const self = this;\n  return wwwStart;\n  function wwwStart(code2) {\n    if (code2 !== 87 && code2 !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code2);\n    }\n    effects.enter(\"literalAutolink\");\n    effects.enter(\"literalAutolinkWww\");\n    return effects.check(\n      wwwPrefix,\n      effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n      nok\n    )(code2);\n  }\n  function wwwAfter(code2) {\n    effects.exit(\"literalAutolinkWww\");\n    effects.exit(\"literalAutolink\");\n    return ok2(code2);\n  }\n}\nfunction tokenizeProtocolAutolink(effects, ok2, nok) {\n  const self = this;\n  let buffer = \"\";\n  let seen = false;\n  return protocolStart;\n  function protocolStart(code2) {\n    if ((code2 === 72 || code2 === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n      effects.enter(\"literalAutolink\");\n      effects.enter(\"literalAutolinkHttp\");\n      buffer += String.fromCodePoint(code2);\n      effects.consume(code2);\n      return protocolPrefixInside;\n    }\n    return nok(code2);\n  }\n  function protocolPrefixInside(code2) {\n    if (asciiAlpha(code2) && buffer.length < 5) {\n      buffer += String.fromCodePoint(code2);\n      effects.consume(code2);\n      return protocolPrefixInside;\n    }\n    if (code2 === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === \"http\" || protocol === \"https\") {\n        effects.consume(code2);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code2);\n  }\n  function protocolSlashesInside(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code2);\n  }\n  function afterProtocol(code2) {\n    return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n  }\n  function protocolAfter(code2) {\n    effects.exit(\"literalAutolinkHttp\");\n    effects.exit(\"literalAutolink\");\n    return ok2(code2);\n  }\n}\nfunction tokenizeWwwPrefix(effects, ok2, nok) {\n  let size = 0;\n  return wwwPrefixInside;\n  function wwwPrefixInside(code2) {\n    if ((code2 === 87 || code2 === 119) && size < 3) {\n      size++;\n      effects.consume(code2);\n      return wwwPrefixInside;\n    }\n    if (code2 === 46 && size === 3) {\n      effects.consume(code2);\n      return wwwPrefixAfter;\n    }\n    return nok(code2);\n  }\n  function wwwPrefixAfter(code2) {\n    return code2 === null ? nok(code2) : ok2(code2);\n  }\n}\nfunction tokenizeDomain(effects, ok2, nok) {\n  let underscoreInLastSegment;\n  let underscoreInLastLastSegment;\n  let seen;\n  return domainInside;\n  function domainInside(code2) {\n    if (code2 === 46 || code2 === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n      return domainAfter(code2);\n    }\n    seen = true;\n    effects.consume(code2);\n    return domainInside;\n  }\n  function domainAtPunctuation(code2) {\n    if (code2 === 95) {\n      underscoreInLastSegment = true;\n    } else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = void 0;\n    }\n    effects.consume(code2);\n    return domainInside;\n  }\n  function domainAfter(code2) {\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code2);\n    }\n    return ok2(code2);\n  }\n}\nfunction tokenizePath(effects, ok2) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n  function pathInside(code2) {\n    if (code2 === 40) {\n      sizeOpen++;\n      effects.consume(code2);\n      return pathInside;\n    }\n    if (code2 === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code2);\n    }\n    if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n      return effects.check(trail, ok2, pathAtPunctuation)(code2);\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok2(code2);\n    }\n    effects.consume(code2);\n    return pathInside;\n  }\n  function pathAtPunctuation(code2) {\n    if (code2 === 41) {\n      sizeClose++;\n    }\n    effects.consume(code2);\n    return pathInside;\n  }\n}\nfunction tokenizeTrail(effects, ok2, nok) {\n  return trail2;\n  function trail2(code2) {\n    if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n      effects.consume(code2);\n      return trail2;\n    }\n    if (code2 === 38) {\n      effects.consume(code2);\n      return trailCharRefStart;\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return trailBracketAfter;\n    }\n    if (\n      // `<` is an end.\n      code2 === 60 || // So is whitespace.\n      code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)\n    ) {\n      return ok2(code2);\n    }\n    return nok(code2);\n  }\n  function trailBracketAfter(code2) {\n    if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok2(code2);\n    }\n    return trail2(code2);\n  }\n  function trailCharRefStart(code2) {\n    return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n  }\n  function trailCharRefInside(code2) {\n    if (code2 === 59) {\n      effects.consume(code2);\n      return trail2;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return trailCharRefInside;\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok2, nok) {\n  return start;\n  function start(code2) {\n    effects.consume(code2);\n    return after;\n  }\n  function after(code2) {\n    return asciiAlphanumeric(code2) ? nok(code2) : ok2(code2);\n  }\n}\nfunction previousWww(code2) {\n  return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n  return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n  return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n  return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n      result = true;\n      break;\n    }\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}\nfunction classifyCharacter(code2) {\n  if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n    return 1;\n  }\n  if (unicodePunctuation(code2)) {\n    return 2;\n  }\n}\nfunction resolveAll(constructs2, events, context) {\n  const called = [];\n  let index = -1;\n  while (++index < constructs2.length) {\n    const resolve = constructs2[index].resolveAll;\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context);\n      called.push(resolve);\n    }\n  }\n  return events;\n}\nfunction factorySpace(effects, ok2, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size = 0;\n  return start;\n  function start(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(type);\n      return prefix(code2);\n    }\n    return ok2(code2);\n  }\n  function prefix(code2) {\n    if (markdownSpace(code2) && size++ < limit) {\n      effects.consume(code2);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok2(code2);\n  }\n}\nconst blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n};\nfunction tokenizeBlankLine(effects, ok2, nok) {\n  return start;\n  function start(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n  }\n  function after(code2) {\n    return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);\n  }\n}\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\nfunction gfmFootnote() {\n  return {\n    document: {\n      [91]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        add: \"after\",\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok2, nok) {\n  const self = this;\n  let index = self.events.length;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let labelStart;\n  while (index--) {\n    const token = self.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n    if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n  function start(code2) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code2);\n    }\n    const id = normalizeIdentifier(\n      self.sliceSerialize({\n        start: labelStart.end,\n        end: self.now()\n      })\n    );\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code2);\n    }\n    effects.enter(\"gfmFootnoteCallLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallLabelMarker\");\n    return ok2(code2);\n  }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n      events[index][1];\n      break;\n    }\n  }\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n  const call = {\n    type: \"gfmFootnoteCall\",\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  const marker = {\n    type: \"gfmFootnoteCallMarker\",\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  const string = {\n    type: \"gfmFootnoteCallString\",\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  const chunk = {\n    type: \"chunkString\",\n    contentType: \"string\",\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  };\n  const replacement = [\n    // Take the `labelImageMarker` (now `data`, the `!`)\n    events[index + 1],\n    events[index + 2],\n    [\"enter\", call, context],\n    // The `[`\n    events[index + 3],\n    events[index + 4],\n    // The `^`.\n    [\"enter\", marker, context],\n    [\"exit\", marker, context],\n    // Everything in between.\n    [\"enter\", string, context],\n    [\"enter\", chunk, context],\n    [\"exit\", chunk, context],\n    [\"exit\", string, context],\n    // The ending (`]`, properly parsed and labelled).\n    events[events.length - 2],\n    events[events.length - 1],\n    [\"exit\", call, context]\n  ];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok2, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let size = 0;\n  let data;\n  return start;\n  function start(code2) {\n    effects.enter(\"gfmFootnoteCall\");\n    effects.enter(\"gfmFootnoteCallLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallLabelMarker\");\n    return callStart;\n  }\n  function callStart(code2) {\n    if (code2 !== 94) return nok(code2);\n    effects.enter(\"gfmFootnoteCallMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallMarker\");\n    effects.enter(\"gfmFootnoteCallString\");\n    effects.enter(\"chunkString\").contentType = \"string\";\n    return callData;\n  }\n  function callData(code2) {\n    if (\n      // Too long.\n      size > 999 || // Closing brace with nothing.\n      code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n      // `\\n` and `[` not being supported makes sense.\n      code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n    ) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(\"chunkString\");\n      const token = effects.exit(\"gfmFootnoteCallString\");\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code2);\n      }\n      effects.enter(\"gfmFootnoteCallLabelMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteCallLabelMarker\");\n      effects.exit(\"gfmFootnoteCall\");\n      return ok2;\n    }\n    if (!markdownLineEndingOrSpace(code2)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code2);\n    return code2 === 92 ? callEscape : callData;\n  }\n  function callEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size++;\n      return callData;\n    }\n    return callData(code2);\n  }\n}\nfunction tokenizeDefinitionStart(effects, ok2, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let identifier;\n  let size = 0;\n  let data;\n  return start;\n  function start(code2) {\n    effects.enter(\"gfmFootnoteDefinition\")._container = true;\n    effects.enter(\"gfmFootnoteDefinitionLabel\");\n    effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n    return labelAtMarker;\n  }\n  function labelAtMarker(code2) {\n    if (code2 === 94) {\n      effects.enter(\"gfmFootnoteDefinitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteDefinitionMarker\");\n      effects.enter(\"gfmFootnoteDefinitionLabelString\");\n      effects.enter(\"chunkString\").contentType = \"string\";\n      return labelInside;\n    }\n    return nok(code2);\n  }\n  function labelInside(code2) {\n    if (\n      // Too long.\n      size > 999 || // Closing brace with nothing.\n      code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n      // `\\n` and `[` not being supported makes sense.\n      code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n    ) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(\"chunkString\");\n      const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n      identifier = normalizeIdentifier(self.sliceSerialize(token));\n      effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n      effects.exit(\"gfmFootnoteDefinitionLabel\");\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code2)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code2);\n    return code2 === 92 ? labelEscape : labelInside;\n  }\n  function labelEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code2);\n  }\n  function labelAfter(code2) {\n    if (code2 === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"definitionMarker\");\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n      return factorySpace(\n        effects,\n        whitespaceAfter,\n        \"gfmFootnoteDefinitionWhitespace\"\n      );\n    }\n    return nok(code2);\n  }\n  function whitespaceAfter(code2) {\n    return ok2(code2);\n  }\n}\nfunction tokenizeDefinitionContinuation(effects, ok2, nok) {\n  return effects.check(blankLine, ok2, effects.attempt(indent, ok2, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok2, nok) {\n  const self = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"gfmFootnoteDefinitionIndent\",\n    4 + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok2(code2) : nok(code2);\n  }\n}\nfunction gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === void 0) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n    while (++index < events.length) {\n      if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n        let open = index;\n        while (open--) {\n          if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && // If the sizes are the same:\n          events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = \"strikethroughSequence\";\n            events[open][1].type = \"strikethroughSequence\";\n            const strikethrough = {\n              type: \"strikethrough\",\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n            const text2 = {\n              type: \"strikethroughText\",\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n            const nextEvents = [\n              [\"enter\", strikethrough, context],\n              [\"enter\", events[open][1], context],\n              [\"exit\", events[open][1], context],\n              [\"enter\", text2, context]\n            ];\n            const insideSpan = context.parser.constructs.insideSpan.null;\n            if (insideSpan) {\n              splice(\n                nextEvents,\n                nextEvents.length,\n                0,\n                resolveAll(insideSpan, events.slice(open + 1, index), context)\n              );\n            }\n            splice(nextEvents, nextEvents.length, 0, [\n              [\"exit\", text2, context],\n              [\"enter\", events[index][1], context],\n              [\"exit\", events[index][1], context],\n              [\"exit\", strikethrough, context]\n            ]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n  function tokenizeStrikethrough(effects, ok2, nok) {\n    const previous2 = this.previous;\n    const events = this.events;\n    let size = 0;\n    return start;\n    function start(code2) {\n      if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code2);\n      }\n      effects.enter(\"strikethroughSequenceTemporary\");\n      return more(code2);\n    }\n    function more(code2) {\n      const before = classifyCharacter(previous2);\n      if (code2 === 126) {\n        if (size > 1) return nok(code2);\n        effects.consume(code2);\n        size++;\n        return more;\n      }\n      if (size < 2 && !single) return nok(code2);\n      const token = effects.exit(\"strikethroughSequenceTemporary\");\n      const after = classifyCharacter(code2);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok2(code2);\n    }\n  }\n}\nclass EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    this.map = [];\n  }\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   * @param {number} remove\n   * @param {Array<Event>} add\n   * @returns {undefined}\n   */\n  add(index, remove, add) {\n    addImpl(this, index, remove, add);\n  }\n  // To do: add this when moving to `micromark`.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {undefined}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImpl(this, index, remove, add, true)\n  // }\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   * @returns {undefined}\n   */\n  consume(events) {\n    this.map.sort(function(a, b) {\n      return a[0] - b[0];\n    });\n    if (this.map.length === 0) {\n      return;\n    }\n    let index = this.map.length;\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(\n        events.slice(this.map[index][0] + this.map[index][1]),\n        this.map[index][2]\n      );\n      events.length = this.map[index][0];\n    }\n    vecs.push([...events]);\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      events.push(...slice);\n      slice = vecs.pop();\n    }\n    this.map.length = 0;\n  }\n}\nfunction addImpl(editMap, at, remove, add) {\n  let index = 0;\n  if (remove === 0 && add.length === 0) {\n    return;\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove;\n      editMap.map[index][2].push(...add);\n      return;\n    }\n    index += 1;\n  }\n  editMap.map.push([at, remove, add]);\n}\nfunction gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === \"enter\") {\n        if (event[1].type === \"tableContent\") {\n          align.push(\n            events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n          );\n        }\n      } else if (event[1].type === \"tableContent\") {\n        if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n        }\n      } else if (event[1].type === \"tableDelimiterRow\") {\n        break;\n      }\n    } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}\nfunction gfmTable() {\n  return {\n    flow: {\n      null: {\n        tokenize: tokenizeTable,\n        resolveAll: resolveTable\n      }\n    }\n  };\n}\nfunction tokenizeTable(effects, ok2, nok) {\n  const self = this;\n  let size = 0;\n  let sizeB = 0;\n  let seen;\n  return start;\n  function start(code2) {\n    let index = self.events.length - 1;\n    while (index > -1) {\n      const type = self.events[index][1].type;\n      if (type === \"lineEnding\" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n      type === \"linePrefix\")\n        index--;\n      else break;\n    }\n    const tail = index > -1 ? self.events[index][1].type : null;\n    const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code2);\n    }\n    return next(code2);\n  }\n  function headRowBefore(code2) {\n    effects.enter(\"tableHead\");\n    effects.enter(\"tableRow\");\n    return headRowStart(code2);\n  }\n  function headRowStart(code2) {\n    if (code2 === 124) {\n      return headRowBreak(code2);\n    }\n    seen = true;\n    sizeB += 1;\n    return headRowBreak(code2);\n  }\n  function headRowBreak(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      if (sizeB > 1) {\n        sizeB = 0;\n        self.interrupt = true;\n        effects.exit(\"tableRow\");\n        effects.enter(\"lineEnding\");\n        effects.consume(code2);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n      return nok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      size += 1;\n    }\n    if (code2 === 124) {\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      seen = true;\n      return headRowBreak;\n    }\n    effects.enter(\"data\");\n    return headRowData(code2);\n  }\n  function headRowData(code2) {\n    if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"data\");\n      return headRowBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? headRowEscape : headRowData;\n  }\n  function headRowEscape(code2) {\n    if (code2 === 92 || code2 === 124) {\n      effects.consume(code2);\n      return headRowData;\n    }\n    return headRowData(code2);\n  }\n  function headDelimiterStart(code2) {\n    self.interrupt = false;\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code2);\n    }\n    effects.enter(\"tableDelimiterRow\");\n    seen = false;\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        headDelimiterBefore,\n        \"linePrefix\",\n        self.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2);\n    }\n    return headDelimiterBefore(code2);\n  }\n  function headDelimiterBefore(code2) {\n    if (code2 === 45 || code2 === 58) {\n      return headDelimiterValueBefore(code2);\n    }\n    if (code2 === 124) {\n      seen = true;\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      return headDelimiterCellBefore;\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterCellBefore(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n    }\n    return headDelimiterValueBefore(code2);\n  }\n  function headDelimiterValueBefore(code2) {\n    if (code2 === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter(\"tableDelimiterMarker\");\n      effects.consume(code2);\n      effects.exit(\"tableDelimiterMarker\");\n      return headDelimiterLeftAlignmentAfter;\n    }\n    if (code2 === 45) {\n      sizeB += 1;\n      return headDelimiterLeftAlignmentAfter(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      return headDelimiterCellAfter(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterLeftAlignmentAfter(code2) {\n    if (code2 === 45) {\n      effects.enter(\"tableDelimiterFiller\");\n      return headDelimiterFiller(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterFiller(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return headDelimiterFiller;\n    }\n    if (code2 === 58) {\n      seen = true;\n      effects.exit(\"tableDelimiterFiller\");\n      effects.enter(\"tableDelimiterMarker\");\n      effects.consume(code2);\n      effects.exit(\"tableDelimiterMarker\");\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit(\"tableDelimiterFiller\");\n    return headDelimiterRightAlignmentAfter(code2);\n  }\n  function headDelimiterRightAlignmentAfter(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n    }\n    return headDelimiterCellAfter(code2);\n  }\n  function headDelimiterCellAfter(code2) {\n    if (code2 === 124) {\n      return headDelimiterBefore(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code2);\n      }\n      effects.exit(\"tableDelimiterRow\");\n      effects.exit(\"tableHead\");\n      return ok2(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterNok(code2) {\n    return nok(code2);\n  }\n  function bodyRowStart(code2) {\n    effects.enter(\"tableRow\");\n    return bodyRowBreak(code2);\n  }\n  function bodyRowBreak(code2) {\n    if (code2 === 124) {\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      return bodyRowBreak;\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"tableRow\");\n      return ok2(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n    }\n    effects.enter(\"data\");\n    return bodyRowData(code2);\n  }\n  function bodyRowData(code2) {\n    if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? bodyRowEscape : bodyRowData;\n  }\n  function bodyRowEscape(code2) {\n    if (code2 === 92 || code2 === 124) {\n      effects.consume(code2);\n      return bodyRowData;\n    }\n    return bodyRowData(code2);\n  }\n}\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  let rowKind = 0;\n  let lastCell = [0, 0, 0, 0];\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  let currentTable;\n  let currentBody;\n  let currentCell;\n  const map2 = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === \"enter\") {\n      if (token.type === \"tableHead\") {\n        afterHeadAwaitingFirstBodyRow = false;\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n          currentBody = void 0;\n          lastTableEnd = 0;\n        }\n        currentTable = {\n          type: \"table\",\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        };\n        map2.add(index, 0, [[\"enter\", currentTable, context]]);\n      } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n        inFirstCellAwaitingPipe = true;\n        currentCell = void 0;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: \"tableBody\",\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          };\n          map2.add(index, 0, [[\"enter\", currentBody, context]]);\n        }\n        rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n      } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n        inFirstCellAwaitingPipe = false;\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(\n              map2,\n              context,\n              lastCell,\n              rowKind,\n              void 0,\n              currentCell\n            );\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === \"tableCellDivider\") {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(\n              map2,\n              context,\n              lastCell,\n              rowKind,\n              void 0,\n              currentCell\n            );\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    } else if (token.type === \"tableHead\") {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(\n          map2,\n          context,\n          lastCell,\n          rowKind,\n          index,\n          currentCell\n        );\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map2, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n  }\n  map2.consume(context.events);\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === \"enter\" && event[1].type === \"table\") {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\nfunction flushCell(map2, context, range, rowKind, rowEnd, previousCell) {\n  const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n  const valueName = \"tableContent\";\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map2.add(range[0], 0, [[\"exit\", previousCell, context]]);\n  }\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  };\n  map2.add(range[1], 0, [[\"enter\", previousCell, context]]);\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map2.add(range[2], 0, [[\"enter\", valueToken, context]]);\n    if (rowKind !== 2) {\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map2.add(a, b, []);\n      }\n    }\n    map2.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n  }\n  if (rowEnd !== void 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map2.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n    previousCell = void 0;\n  }\n  return previousCell;\n}\nfunction flushTableEnd(map2, context, index, table, tableBody) {\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push([\"exit\", tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push([\"exit\", table, context]);\n  map2.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === \"enter\" ? \"start\" : \"end\";\n  return event[1][side];\n}\nconst tasklistCheck = {\n  tokenize: tokenizeTasklistCheck\n};\nfunction gfmTaskListItem() {\n  return {\n    text: {\n      [91]: tasklistCheck\n    }\n  };\n}\nfunction tokenizeTasklistCheck(effects, ok2, nok) {\n  const self = this;\n  return open;\n  function open(code2) {\n    if (\n      // Exit if there’s stuff before.\n      self.previous !== null || // Exit if not in the first content that is the first child of a list\n      // item.\n      !self._gfmTasklistFirstContentOfListItem\n    ) {\n      return nok(code2);\n    }\n    effects.enter(\"taskListCheck\");\n    effects.enter(\"taskListCheckMarker\");\n    effects.consume(code2);\n    effects.exit(\"taskListCheckMarker\");\n    return inside;\n  }\n  function inside(code2) {\n    if (markdownLineEndingOrSpace(code2)) {\n      effects.enter(\"taskListCheckValueUnchecked\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckValueUnchecked\");\n      return close;\n    }\n    if (code2 === 88 || code2 === 120) {\n      effects.enter(\"taskListCheckValueChecked\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckValueChecked\");\n      return close;\n    }\n    return nok(code2);\n  }\n  function close(code2) {\n    if (code2 === 93) {\n      effects.enter(\"taskListCheckMarker\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckMarker\");\n      effects.exit(\"taskListCheck\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    if (markdownLineEnding(code2)) {\n      return ok2(code2);\n    }\n    if (markdownSpace(code2)) {\n      return effects.check(\n        {\n          tokenize: spaceThenNonSpace\n        },\n        ok2,\n        nok\n      )(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction spaceThenNonSpace(effects, ok2, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n  function after(code2) {\n    return code2 === null ? nok(code2) : ok2(code2);\n  }\n}\nfunction gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral(),\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable(),\n    gfmTaskListItem()\n  ]);\n}\nconst emptyOptions = {};\nfunction remarkGfm(options) {\n  const self = (\n    /** @type {Processor<Root>} */\n    this\n  );\n  const settings = options || emptyOptions;\n  const data = self.data();\n  const micromarkExtensions = data.micromarkExtensions || (data.micromarkExtensions = []);\n  const fromMarkdownExtensions = data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []);\n  const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);\n  micromarkExtensions.push(gfm(settings));\n  fromMarkdownExtensions.push(gfmFromMarkdown());\n  toMarkdownExtensions.push(gfmToMarkdown(settings));\n}\nconst LINK_PROTOCOLS = [\"http\", \"https\", \"mailto\", \"tel\"];\nconst rehypeHighlight = ref(null);\nasync function importRehypeHighlightLibrary() {\n  const module = await import(\"rehype-highlight\");\n  rehypeHighlight.value = module.default;\n}\nconst _sfc_main = {\n  name: \"NcRichText\",\n  components: {\n    NcReferenceList\n  },\n  props: {\n    text: {\n      type: String,\n      default: \"\"\n    },\n    arguments: {\n      type: Object,\n      default: () => {\n        return {};\n      }\n    },\n    referenceLimit: {\n      type: Number,\n      default: 0\n    },\n    referenceInteractive: {\n      type: Boolean,\n      default: true\n    },\n    referenceInteractiveOptIn: {\n      type: Boolean,\n      default: false\n    },\n    /** Provide data upfront to avoid extra http request */\n    references: {\n      type: Array,\n      default: null\n    },\n    /** Provide basic Markdown syntax */\n    useMarkdown: {\n      type: Boolean,\n      default: false\n    },\n    /** Provide GitHub Flavored Markdown syntax */\n    useExtendedMarkdown: {\n      type: Boolean,\n      default: false\n    },\n    /** Provide event from rendered markdown inputs */\n    interactive: {\n      type: Boolean,\n      default: false\n    },\n    autolink: {\n      type: Boolean,\n      default: true\n    }\n  },\n  emits: [\n    \"interact-todo\",\n    \"interact:todo\"\n  ],\n  data() {\n    return {\n      parentId: GenRandomId(5)\n    };\n  },\n  methods: {\n    renderPlaintext(h) {\n      const context = this;\n      const placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map(function(entry, index, list2) {\n        const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n        if (!matches) {\n          return prepareTextNode({ h, context }, entry);\n        }\n        const argumentId = matches[1];\n        const argument = context.arguments[argumentId];\n        if (typeof argument === \"object\") {\n          const { component, props } = argument;\n          return h(component, {\n            props,\n            class: \"rich-text--component\"\n          });\n        }\n        if (argument) {\n          return h(\"span\", { class: \"rich-text--fallback\" }, argument);\n        }\n        return entry;\n      });\n      return h(\"div\", { class: \"rich-text--wrapper\" }, [\n        h(\"div\", {}, placeholders.flat()),\n        this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n          h(NcReferenceList, {\n            props: {\n              text: this.text,\n              referenceData: this.references,\n              interactive: this.referenceInteractive,\n              interactiveOptIn: this.referenceInteractiveOptIn\n            }\n          })\n        ]) : null\n      ]);\n    },\n    renderMarkdown(h) {\n      const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {\n        autolink: this.autolink,\n        useMarkdown: this.useMarkdown,\n        useExtendedMarkdown: this.useExtendedMarkdown\n      }).use(remarkUnescape).use(this.useExtendedMarkdown ? remarkGfm : void 0).use(breaks).use(remarkUnlinkProtocols, { except: LINK_PROTOCOLS }).use(remark2rehype, {\n        handlers: {\n          component(toHast, node2) {\n            return toHast(node2, node2.component, { value: node2.value });\n          }\n        }\n      }).use(this.useExtendedMarkdown ? rehypeHighlight.value : void 0).use(remarkPlaceholder).use(rehypeExternalLinks, {\n        target: \"_blank\",\n        rel: [\"noopener noreferrer\"]\n      }).use(rehype2react, {\n        createElement: (tag, attrs, children) => {\n          if (!tag.startsWith(\"#\")) {\n            if (this.useExtendedMarkdown) {\n              if (tag === \"code\" && !rehypeHighlight.value && attrs?.attrs?.class?.includes(\"language\")) {\n                importRehypeHighlightLibrary();\n              }\n              let nestedNode = null;\n              if (tag === \"li\" && Array.isArray(children) && children[0].tag === \"input\" && children[0].data.attrs.type === \"checkbox\") {\n                const [inputNode, ...labelParts] = children;\n                const nestedNodeIndex = labelParts.findIndex((child) => [\"ul\", \"ol\", \"li\", \"blockquote\", \"pre\"].includes(child.tag));\n                if (nestedNodeIndex !== -1) {\n                  nestedNode = labelParts[nestedNodeIndex];\n                  labelParts.splice(nestedNodeIndex);\n                }\n                const id = this.parentId + \"-markdown-input-\" + GenRandomId(5);\n                const inputComponent = h(NcCheckboxRadioSwitch, {\n                  attrs: {\n                    ...inputNode.data.attrs,\n                    id,\n                    disabled: !this.interactive\n                  },\n                  on: {\n                    \"update:checked\": () => {\n                      this.$emit(\"interact-todo\", id);\n                      this.$emit(\"interact:todo\", id);\n                    }\n                  }\n                }, labelParts);\n                return h(tag, attrs, [inputComponent, nestedNode]);\n              }\n            }\n            if (tag === \"a\") {\n              const route = getRoute(this.$router, attrs.attrs.href);\n              if (route) {\n                delete attrs.attrs.href;\n                delete attrs.attrs.target;\n                return h(RouterLink, {\n                  ...attrs,\n                  props: {\n                    to: route\n                  }\n                }, children);\n              }\n            }\n            return h(tag, attrs, children);\n          }\n          const placeholder = this.arguments[tag.slice(1)];\n          if (!placeholder) {\n            return h(\"span\", { ...{ attrs }, ...{ class: \"rich-text--fallback\" } }, [`{${tag.slice(1)}}`]);\n          }\n          if (!placeholder.component) {\n            return h(\"span\", attrs, [placeholder]);\n          }\n          return h(\n            placeholder.component,\n            {\n              attrs,\n              props: placeholder.props,\n              class: \"rich-text--component\"\n            },\n            children\n          );\n        },\n        prefix: false\n      }).processSync(\n        this.text.replace(/<[^>]+>/g, (match) => match.replace(/</g, \"&lt;\")).replace(/&gt;/gmi, \">\")\n      ).result;\n      return h(\"div\", { class: \"rich-text--wrapper rich-text--wrapper-markdown\" }, [\n        renderedMarkdown,\n        this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n          h(NcReferenceList, {\n            props: {\n              text: this.text,\n              referenceData: this.references,\n              interactive: this.referenceInteractive,\n              interactiveOptIn: this.referenceInteractiveOptIn\n            }\n          })\n        ]) : null\n      ]);\n    }\n  },\n  render(h) {\n    return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown(h) : this.renderPlaintext(h);\n  }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n  _sfc_main,\n  _sfc_render,\n  _sfc_staticRenderFns,\n  false,\n  null,\n  \"cd4f75c7\"\n);\nconst NcRichText = __component__.exports;\nexport {\n  NcRichText as N,\n  NcReferenceList as a\n};\n//# sourceMappingURL=NcRichText-CmuVmSzl.mjs.map\n","import '../assets/referencePickerModal-BgSz7IyB.css';\nimport { e as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, f as hasFullWidth, c as renderCustomPickerElement, g as destroyCustomPickerElement, d as isCustomPickerElementRegistered, j as getCustomPickerElementSize } from \"./index-56SXuvlv.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, V as t21, a as t, W as t7, X as t44, Y as t38, Z as t22, x as t40, _ as t29, n as t17, $ as t11 } from \"./_l10n-CW0YfIWk.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { imagePath, generateOcsUrl } from \"@nextcloud/router\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { N as NcHighlight } from \"./index-Bz6q9mZw.mjs\";\nimport { N as NcSelect } from \"./NcSelect-BUOuXJUQ.mjs\";\nimport { useElementSize, useIntersectionObserver } from \"@vueuse/core\";\nimport Vue, { ref, nextTick } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { g as getRoute } from \"./autolink-cbuFALXr.mjs\";\nimport NcButton from \"../Components/NcButton.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcTextField } from \"./NcTextField-Do6wBDGH.mjs\";\nimport { D as DotsHorizontalIcon } from \"./NcActions-BKZA1xVL.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nregister(t21);\nconst IDLE_TIMEOUT = 3 * 60 * 1e3;\nconst _sfc_main$8 = {\n  name: \"NcReferenceWidget\",\n  components: {\n    NcButton\n  },\n  props: {\n    reference: {\n      type: Object,\n      required: true\n    },\n    interactive: {\n      type: Boolean,\n      default: true\n    },\n    interactiveOptIn: {\n      type: Boolean,\n      default: false\n    }\n  },\n  setup() {\n    const isVisible = ref(false);\n    const widgetRoot = ref();\n    const { width } = useElementSize(widgetRoot);\n    useIntersectionObserver(widgetRoot, ([entry]) => {\n      nextTick(() => {\n        isVisible.value = entry.isIntersecting;\n      });\n    });\n    return {\n      width,\n      isVisible,\n      widgetRoot\n    };\n  },\n  data() {\n    return {\n      showInteractive: false,\n      rendered: false,\n      idleTimeout: null\n    };\n  },\n  computed: {\n    isInteractive() {\n      return !this.interactiveOptIn && this.interactive || this.showInteractive;\n    },\n    hasFullWidth() {\n      return hasFullWidth(this.reference.richObjectType);\n    },\n    hasCustomWidget() {\n      return isWidgetRegistered(this.reference.richObjectType);\n    },\n    hasInteractiveView() {\n      return isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType);\n    },\n    noAccess() {\n      return this.reference && !this.reference.accessible;\n    },\n    descriptionStyle() {\n      if (this.numberOfLines === 0) {\n        return {\n          display: \"none\"\n        };\n      }\n      const lineClamp = this.numberOfLines;\n      return {\n        lineClamp,\n        webkitLineClamp: lineClamp\n      };\n    },\n    numberOfLines() {\n      const lineCountOffsets = [450, 550, 650, Infinity];\n      return lineCountOffsets.findIndex((max) => this.width < max);\n    },\n    compactLink() {\n      const link = this.reference.openGraphObject.link;\n      if (!link) {\n        return \"\";\n      }\n      if (link.startsWith(\"https://\")) {\n        return link.substring(8);\n      }\n      if (link.startsWith(\"http://\")) {\n        return link.substring(7);\n      }\n      return link;\n    },\n    route() {\n      return getRoute(this.$router, this.reference.openGraphObject.link);\n    },\n    referenceWidgetLinkComponent() {\n      return this.route ? RouterLink : \"a\";\n    },\n    referenceWidgetLinkProps() {\n      return this.route ? { to: this.route } : { href: this.reference.openGraphObject.link, target: \"_blank\" };\n    }\n  },\n  watch: {\n    isVisible: {\n      handler(val) {\n        if (!val) {\n          this.idleTimeout = setTimeout(() => {\n            if (!this.isVisible) {\n              this.destroyWidget();\n            }\n          }, IDLE_TIMEOUT);\n          return;\n        }\n        if (this.idleTimeout) {\n          clearTimeout(this.idleTimeout);\n          this.idleTimeout = null;\n        }\n        if (!this.rendered) {\n          this.renderWidget();\n        }\n      },\n      immediate: true\n    }\n  },\n  beforeDestroy() {\n    this.destroyWidget();\n  },\n  methods: {\n    t,\n    enableInteractive() {\n      this.showInteractive = true;\n      this.renderWidget();\n    },\n    renderWidget() {\n      if (!this.$refs.customWidget) {\n        return;\n      }\n      if (this?.reference?.richObjectType === \"open-graph\") {\n        return;\n      }\n      this.$refs.customWidget.innerHTML = \"\";\n      const widget = document.createElement(\"div\");\n      widget.style = \"width: 100%;\";\n      this.$refs.customWidget.appendChild(widget);\n      this.$nextTick(() => {\n        renderWidget(widget, {\n          ...this.reference,\n          interactive: this.isInteractive\n        });\n        this.rendered = true;\n      });\n    },\n    destroyWidget() {\n      if (this.rendered) {\n        destroyWidget(this.reference.richObjectType, this.$el);\n        this.rendered = false;\n      }\n    }\n  }\n};\nvar _sfc_render$8 = function render() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { ref: \"widgetRoot\", class: { \"toggle-interactive\": _vm.hasInteractiveView && !_vm.isInteractive } }, [_vm.reference && _vm.hasCustomWidget ? _c(\"div\", { ref: \"customWidget\", staticClass: \"widget-custom\", class: { \"full-width\": _vm.hasFullWidth } }) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c(_vm.referenceWidgetLinkComponent, _vm._b({ tag: \"component\", staticClass: \"widget-default\", attrs: { \"rel\": \"noopener noreferrer\" } }, \"component\", _vm.referenceWidgetLinkProps, false), [_vm.reference.openGraphObject.thumb ? _c(\"img\", { staticClass: \"widget-default--image\", attrs: { \"src\": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c(\"div\", { staticClass: \"widget-default--details\" }, [_c(\"p\", { staticClass: \"widget-default--name\" }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.name) + \" \")]), _c(\"p\", { staticClass: \"widget-default--description\", style: _vm.descriptionStyle }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.description) + \" \")]), _c(\"p\", { staticClass: \"widget-default--link\" }, [_vm._v(\" \" + _vm._s(_vm.compactLink) + \" \")])])]) : _vm._e(), _vm.interactiveOptIn && _vm.hasInteractiveView && !_vm.isInteractive ? _c(\"NcButton\", { staticClass: \"toggle-interactive--button\", on: { \"click\": _vm.enableInteractive } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Enable interactive view\")) + \" \")]) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$8 = [];\nvar __component__$8 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$8,\n  _sfc_render$8,\n  _sfc_staticRenderFns$8,\n  false,\n  null,\n  \"734d6ae9\"\n);\nconst NcReferenceWidget = __component__$8.exports;\nconst _sfc_main$7 = {\n  name: \"NcCustomPickerElement\",\n  props: {\n    /**\n     * The reference provider\n     */\n    provider: {\n      type: Object,\n      required: true\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      isRegistered: isCustomPickerElementRegistered(this.provider.id),\n      renderResult: null\n    };\n  },\n  mounted() {\n    if (this.isRegistered) {\n      this.renderElement();\n    }\n  },\n  beforeDestroy() {\n    if (this.isRegistered) {\n      destroyCustomPickerElement(this.provider.id, this.$el, this.renderResult);\n    }\n  },\n  methods: {\n    renderElement() {\n      if (this.$refs.domElement) {\n        this.$refs.domElement.innerHTML = \"\";\n      }\n      const renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false });\n      Promise.resolve(renderFunctionResult).then((result) => {\n        this.renderResult = result;\n        if (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n          this.renderResult.object.$on(\"submit\", this.onSubmit);\n          this.renderResult.object.$on(\"cancel\", this.onCancel);\n        }\n        this.renderResult.element.addEventListener(\"submit\", (e) => {\n          this.onSubmit(e.detail);\n        });\n        this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n      });\n    },\n    onSubmit(value) {\n      this.$emit(\"submit\", value);\n    },\n    onCancel() {\n      this.$emit(\"cancel\");\n    }\n  }\n};\nvar _sfc_render$7 = function render2() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { ref: \"domElement\" });\n};\nvar _sfc_staticRenderFns$7 = [];\nvar __component__$7 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$7,\n  _sfc_render$7,\n  _sfc_staticRenderFns$7,\n  false,\n  null,\n  \"de9850e4\"\n);\nconst NcCustomPickerElement = __component__$7.exports;\nregister(t7);\nconst anyLinkProviderId = \"any-link\";\nconst anyLinkProvider = {\n  id: anyLinkProviderId,\n  title: t(\"Any link\"),\n  icon_url: imagePath(\"core\", \"filetypes/link.svg\")\n};\nif (!window._vue_richtext_reference_providers) {\n  window._vue_richtext_reference_providers = loadState(\"core\", \"reference-provider-list\", []);\n}\nif (!window._vue_richtext_reference_provider_timestamps) {\n  window._vue_richtext_reference_provider_timestamps = loadState(\"core\", \"reference-provider-timestamps\", {});\n}\nfunction getProvider(providerId) {\n  if (providerId === anyLinkProviderId) {\n    return anyLinkProvider;\n  }\n  return getProviders().find((p) => p.id === providerId);\n}\nfunction getProviders() {\n  return window._vue_richtext_reference_providers.filter((p) => {\n    const keep = !!p.search_providers_ids && p.search_providers_ids.length > 0 || isCustomPickerElementRegistered(p.id);\n    if (!keep) {\n      console.debug(\"[smart picker]\", p.id, \"reference provider is discoverable but does not have any related search provider or custom picker component registered\");\n    }\n    return keep;\n  });\n}\nfunction sortProviders(providerList) {\n  const timestamps = window._vue_richtext_reference_provider_timestamps;\n  return providerList.sort((a, b) => {\n    return a.order === b.order ? 0 : a.order > b.order ? 1 : -1;\n  }).sort((a, b) => {\n    const ta = timestamps[a.id];\n    const tb = timestamps[b.id];\n    return ta === tb ? 0 : tb === void 0 ? -1 : ta === void 0 ? 1 : ta > tb ? -1 : 1;\n  });\n}\nfunction searchProvider(query, limit = null) {\n  const providers = getProviders();\n  const escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n  const regexp = new RegExp(escapedQuery, \"i\");\n  const sortedProviders = sortProviders(providers);\n  const filteredSortedProviders = sortedProviders.filter((p) => {\n    return p.title.match(regexp);\n  });\n  const searchResult = limit ? filteredSortedProviders.slice(0, limit) : filteredSortedProviders;\n  if (query === \"\" || searchResult.length === 0) {\n    searchResult.push(anyLinkProvider);\n  }\n  return searchResult;\n}\nfunction touchProvider(providerId) {\n  const timestamp = Math.floor(Date.now() / 1e3);\n  const params = {\n    timestamp\n  };\n  const url = generateOcsUrl(\"references/provider/{providerId}\", { providerId });\n  axios.put(url, params).then((response) => {\n    window._vue_richtext_reference_provider_timestamps[providerId] = timestamp;\n  });\n}\nlet mytimer = 0;\nfunction delay(callback, ms) {\n  return function() {\n    const context = this;\n    const args = arguments;\n    clearTimeout(mytimer);\n    mytimer = setTimeout(function() {\n      callback.apply(context, args);\n    }, ms);\n  };\n}\nfunction isUrl(str) {\n  try {\n    return Boolean(new URL(str));\n  } catch (error) {\n    return false;\n  }\n}\nregister(t38, t44);\nconst _sfc_main$6 = {\n  name: \"LinkVariantIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$6 = function render3() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$6,\n  _sfc_render$6,\n  _sfc_staticRenderFns$6,\n  false,\n  null,\n  null\n);\nconst LinkVariantIcon = __component__$6.exports;\nconst _sfc_main$5 = {\n  name: \"NcProviderList\",\n  components: {\n    NcSelect,\n    NcHighlight,\n    NcEmptyContent,\n    LinkVariantIcon\n  },\n  emits: [\n    \"select-provider\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      selectedProvider: null,\n      query: \"\",\n      multiselectPlaceholder: t(\"Select provider\"),\n      providerIconAlt: t(\"Provider icon\")\n    };\n  },\n  computed: {\n    options() {\n      const result = [];\n      if (this.query !== \"\" && isUrl(this.query)) {\n        result.push({\n          id: this.query,\n          title: this.query,\n          isLink: true\n        });\n      }\n      result.push(...searchProvider(this.query));\n      return result;\n    }\n  },\n  methods: {\n    focus() {\n      setTimeout(() => {\n        this.$refs[\"provider-select\"]?.$el?.querySelector(\"#provider-select-input\")?.focus();\n      }, 300);\n    },\n    onProviderSelected(p) {\n      if (p !== null) {\n        if (p.isLink) {\n          this.$emit(\"submit\", p.title);\n        } else {\n          this.$emit(\"select-provider\", p);\n        }\n        this.selectedProvider = null;\n      }\n    },\n    onSearch(query, loading) {\n      this.query = query;\n    }\n  }\n};\nvar _sfc_render$5 = function render4() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { staticClass: \"provider-list\" }, [_c(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", \"label\": \"title\", \"placeholder\": _vm.multiselectPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"clear-search-on-select\": true, \"clear-search-on-blur\": () => false, \"filterable\": false }, on: { \"search\": _vm.onSearch, \"input\": _vm.onProviderSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n    return [option.isLink ? _c(\"div\", { staticClass: \"provider\" }, [_c(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { \"size\": 20 } }), _c(\"span\", [_vm._v(_vm._s(option.title))])], 1) : _c(\"div\", { staticClass: \"provider\" }, [_c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": option.icon_url, \"alt\": _vm.providerIconAlt } }), _c(\"NcHighlight\", { staticClass: \"option-text\", attrs: { \"search\": _vm.query, \"text\": option.title } })], 1)];\n  } }]), model: { value: _vm.selectedProvider, callback: function($$v) {\n    _vm.selectedProvider = $$v;\n  }, expression: \"selectedProvider\" } }), _c(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"LinkVariantIcon\")];\n  }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$5,\n  _sfc_render$5,\n  _sfc_staticRenderFns$5,\n  false,\n  null,\n  \"f03ee0c9\"\n);\nconst NcProviderList = __component__$5.exports;\nregister(t22);\nconst _sfc_main$4 = {\n  name: \"NcRawLinkInput\",\n  components: {\n    LinkVariantIcon,\n    NcEmptyContent,\n    NcLoadingIcon,\n    NcReferenceWidget,\n    NcTextField\n  },\n  props: {\n    /**\n     * The reference provider\n     */\n    provider: {\n      type: Object,\n      required: true\n    }\n  },\n  emits: [\n    \"submit\"\n  ],\n  data() {\n    return {\n      inputValue: \"\",\n      loading: false,\n      reference: null,\n      abortController: null,\n      inputPlaceholder: t(\"Enter link\")\n    };\n  },\n  computed: {\n    isLinkValid() {\n      return isUrl(this.inputValue);\n    }\n  },\n  methods: {\n    focus() {\n      this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]?.focus();\n    },\n    onSubmit(e) {\n      const value = e.target.value;\n      if (this.isLinkValid) {\n        this.$emit(\"submit\", value);\n      }\n    },\n    onClear() {\n      this.inputValue = \"\";\n      this.reference = null;\n    },\n    onInput() {\n      this.reference = null;\n      if (this.abortController) {\n        this.abortController.abort();\n      }\n      if (this.isLinkValid) {\n        delay(() => {\n          this.updateReference();\n        }, 500)();\n      }\n    },\n    updateReference() {\n      this.loading = true;\n      this.abortController = new AbortController();\n      axios.get(generateOcsUrl(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n        signal: this.abortController.signal\n      }).then((response) => {\n        this.reference = response.data.ocs.data.references[this.inputValue];\n      }).catch((error) => {\n        console.error(error);\n      }).then(() => {\n        this.loading = false;\n      });\n    }\n  }\n};\nvar _sfc_render$4 = function render5() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { staticClass: \"raw-link\" }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"NcTextField\", { ref: \"url-input\", attrs: { \"value\": _vm.inputValue, \"show-trailing-button\": _vm.inputValue !== \"\", \"label\": _vm.inputPlaceholder }, on: { \"update:value\": [function($event) {\n    _vm.inputValue = $event;\n  }, _vm.onInput], \"trailing-button-click\": _vm.onClear }, nativeOn: { \"keyup\": function($event) {\n    if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n    return _vm.onSubmit.apply(null, arguments);\n  } } }, [_vm.loading ? _c(\"NcLoadingIcon\", { attrs: { \"size\": 16 } }) : _c(\"LinkVariantIcon\", { attrs: { \"size\": 16 } })], 1)], 1), _vm.reference !== null ? _c(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { \"reference\": _vm.reference } }) : _c(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n  }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$4,\n  _sfc_render$4,\n  _sfc_staticRenderFns$4,\n  false,\n  null,\n  \"3c1803b5\"\n);\nconst NcRawLinkInput = __component__$4.exports;\nconst _sfc_main$3 = {\n  name: \"NcSearchResult\",\n  components: {\n    NcHighlight\n  },\n  props: {\n    /**\n     * Unified search result entry\n     */\n    entry: {\n      type: Object,\n      required: true\n    },\n    /**\n     * The query that led to getting this result\n     * Used to highlight the entry text\n     */\n    query: {\n      type: String,\n      required: true\n    }\n  }\n};\nvar _sfc_render$3 = function render6() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { staticClass: \"result\" }, [_vm.entry.icon ? _c(\"div\", { staticClass: \"result--icon-class\", class: { [_vm.entry.icon]: true, rounded: _vm.entry.rounded } }) : _c(\"img\", { staticClass: \"result--image\", class: { rounded: _vm.entry.rounded }, attrs: { \"src\": _vm.entry.thumbnailUrl } }), _c(\"div\", { staticClass: \"result--content\" }, [_c(\"span\", { staticClass: \"result--content--name\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.title } })], 1), _c(\"span\", { staticClass: \"result--content--subline\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.subline } })], 1)])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$3,\n  _sfc_render$3,\n  _sfc_staticRenderFns$3,\n  false,\n  null,\n  \"ff4bcbf3\"\n);\nconst NcSearchResult = __component__$3.exports;\nregister(t29, t38, t40);\nconst LIMIT = 5;\nconst _sfc_main$2 = {\n  name: \"NcSearch\",\n  components: {\n    LinkVariantIcon,\n    DotsHorizontalIcon,\n    NcEmptyContent,\n    NcSelect,\n    NcSearchResult\n  },\n  props: {\n    /**\n     * The selected reference provider\n     */\n    provider: {\n      type: Object,\n      required: true\n    },\n    showEmptyContent: {\n      type: Boolean,\n      default: true\n    },\n    searchPlaceholder: {\n      type: String,\n      default: null\n    }\n  },\n  emits: [\n    \"submit\"\n  ],\n  data() {\n    return {\n      searchQuery: \"\",\n      selectedResult: null,\n      resultsBySearchProvider: {},\n      searching: false,\n      searchingMoreOf: null,\n      abortController: null,\n      noOptionsText: t(\"Start typing to search\"),\n      providerIconAlt: t(\"Provider icon\")\n    };\n  },\n  computed: {\n    mySearchPlaceholder() {\n      return this.searchPlaceholder || t(\"Search\");\n    },\n    searchProviderIds() {\n      return this.provider.search_providers_ids;\n    },\n    options() {\n      if (this.searchQuery === \"\") {\n        return [];\n      }\n      const options = [];\n      if (isUrl(this.searchQuery)) {\n        options.push(this.rawLinkEntry);\n      }\n      options.push(...this.formattedSearchResults);\n      return options;\n    },\n    rawLinkEntry() {\n      return {\n        id: \"rawLinkEntry\",\n        resourceUrl: this.searchQuery,\n        isRawLink: true\n      };\n    },\n    formattedSearchResults() {\n      const results = [];\n      this.searchProviderIds.forEach((pid) => {\n        if (this.resultsBySearchProvider[pid].entries.length > 0) {\n          if (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n            results.push({\n              id: \"groupTitle-\" + pid,\n              name: this.resultsBySearchProvider[pid].name,\n              isCustomGroupTitle: true,\n              providerId: pid\n            });\n          }\n          const providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n            return {\n              id: \"provider-\" + pid + \"-entry-\" + index,\n              ...entry\n            };\n          });\n          results.push(...providerEntriesWithId);\n          if (this.resultsBySearchProvider[pid].isPaginated) {\n            results.push({\n              id: \"moreOf-\" + pid,\n              name: this.resultsBySearchProvider[pid].name,\n              isMore: true,\n              providerId: pid,\n              isLoading: this.searchingMoreOf === pid\n            });\n          }\n        }\n      });\n      return results;\n    }\n  },\n  mounted() {\n    this.resetResults();\n  },\n  beforeDestroy() {\n    this.cancelSearchRequests();\n  },\n  methods: {\n    t,\n    resetResults() {\n      const resultsBySearchProvider = {};\n      this.searchProviderIds.forEach((pid) => {\n        resultsBySearchProvider[pid] = {\n          entries: []\n        };\n      });\n      this.resultsBySearchProvider = resultsBySearchProvider;\n    },\n    focus() {\n      setTimeout(() => {\n        this.$refs[\"search-select\"]?.$el?.querySelector(\"#search-select-input\")?.focus();\n      }, 300);\n    },\n    cancelSearchRequests() {\n      if (this.abortController) {\n        this.abortController.abort();\n      }\n    },\n    onSearchInput(query, loading) {\n      this.searchQuery = query;\n      delay(() => {\n        this.updateSearch();\n      }, 500)();\n    },\n    onSelectResultSelected(item) {\n      if (item !== null) {\n        if (item.resourceUrl) {\n          this.cancelSearchRequests();\n          this.$emit(\"submit\", item.resourceUrl);\n        } else if (item.isMore) {\n          this.searchMoreOf(item.providerId).then(() => {\n            this.selectedResult = null;\n          });\n        }\n      }\n    },\n    searchMoreOf(searchProviderId) {\n      this.searchingMoreOf = searchProviderId;\n      this.cancelSearchRequests();\n      return this.searchProviders(searchProviderId);\n    },\n    updateSearch() {\n      this.cancelSearchRequests();\n      this.resetResults();\n      if (this.searchQuery === \"\") {\n        this.searching = false;\n        return;\n      }\n      return this.searchProviders();\n    },\n    searchProviders(searchProviderId = null) {\n      this.abortController = new AbortController();\n      this.searching = true;\n      const searchPromises = searchProviderId === null ? [...this.searchProviderIds].map((pid) => {\n        return this.searchOneProvider(pid);\n      }) : [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)];\n      return Promise.allSettled(searchPromises).then((promises) => {\n        const isOneCanceled = !!promises.find((p) => {\n          return p.status === \"rejected\" && (p.reason.name === \"CanceledError\" || p.reason.code === \"ERR_CANCELED\");\n        });\n        if (!isOneCanceled) {\n          this.searching = false;\n          this.searchingMoreOf = null;\n        }\n      });\n    },\n    searchOneProvider(providerId, cursor = null) {\n      const url = cursor === null ? generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId, term: this.searchQuery, limit: LIMIT }) : generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId, term: this.searchQuery, limit: LIMIT, cursor });\n      return axios.get(url, {\n        signal: this.abortController.signal\n      }).then((response) => {\n        const data = response.data.ocs.data;\n        this.resultsBySearchProvider[providerId].name = data.name;\n        this.resultsBySearchProvider[providerId].cursor = data.cursor;\n        this.resultsBySearchProvider[providerId].isPaginated = data.isPaginated;\n        this.resultsBySearchProvider[providerId].entries.push(...data.entries);\n      });\n    }\n  }\n};\nvar _sfc_render$2 = function render7() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": _vm.showEmptyContent } }, [_c(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", \"label\": \"name\", \"placeholder\": _vm.mySearchPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"close-on-select\": false, \"clear-search-on-select\": false, \"clear-search-on-blur\": () => false, \"reset-focus-on-options-change\": false, \"filterable\": false, \"autoscroll\": true, \"reset-on-options-change\": false, \"loading\": _vm.searching }, on: { \"search\": _vm.onSearchInput, \"input\": _vm.onSelectResultSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n    return [option.isRawLink ? _c(\"div\", { staticClass: \"custom-option\" }, [_c(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Raw link {options}\", { options: option.resourceUrl })) + \" \")])], 1) : option.resourceUrl ? _c(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { \"entry\": option, \"query\": _vm.searchQuery } }) : option.isCustomGroupTitle ? _c(\"span\", { staticClass: \"custom-option group-name\" }, [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _vm._e(), _c(\"span\", { staticClass: \"option-text\" }, [_c(\"strong\", [_vm._v(_vm._s(option.name))])])]) : option.isMore ? _c(\"span\", { class: { \"custom-option\": true } }, [option.isLoading ? _c(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : _c(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t('Load more \"{options}\"', { options: option.name })) + \" \")])], 1) : _vm._e()];\n  } }, { key: \"no-options\", fn: function() {\n    return [_vm._v(\" \" + _vm._s(_vm.noOptionsText) + \" \")];\n  }, proxy: true }]), model: { value: _vm.selectedResult, callback: function($$v) {\n    _vm.selectedResult = $$v;\n  }, expression: \"selectedResult\" } }), _vm.showEmptyContent ? _c(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"alt\": _vm.providerIconAlt, \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n  }, proxy: true }], null, false, 2922132592) }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$2,\n  _sfc_render$2,\n  _sfc_staticRenderFns$2,\n  false,\n  null,\n  \"05fef988\"\n);\nconst NcSearch = __component__$2.exports;\nconst MODES = {\n  providerList: 1,\n  standardLinkInput: 2,\n  searchInput: 3,\n  customElement: 4\n};\nconst _sfc_main$1 = {\n  name: \"NcReferencePicker\",\n  components: {\n    NcCustomPickerElement,\n    NcProviderList,\n    NcRawLinkInput,\n    NcSearch\n  },\n  props: {\n    /**\n     * Provider to select on creation\n     * Default: null. Show the provider list\n     */\n    initialProvider: {\n      type: Object,\n      default: () => null\n    },\n    /**\n     * Optional width in pixels\n     * Default: 100%\n     */\n    width: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Focus on the provider list select input on creation\n     * Default: true\n     */\n    focusOnCreate: {\n      type: Boolean,\n      default: true\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"cancel-raw-link\",\n    \"cancel-search\",\n    \"provider-selected\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      MODES,\n      selectedProvider: this.initialProvider\n    };\n  },\n  computed: {\n    mode() {\n      return this.selectedProvider === null ? MODES.providerList : isCustomPickerElementRegistered(this.selectedProvider.id) ? MODES.customElement : this.selectedProvider.search_providers_ids ? MODES.searchInput : MODES.standardLinkInput;\n    },\n    pickerWrapperStyle() {\n      return {\n        width: this.width ? this.width + \"px\" : void 0\n      };\n    }\n  },\n  mounted() {\n    if (this.focusOnCreate) {\n      if (this.initialProvider) {\n        setTimeout(() => {\n          this.$refs[\"url-input\"]?.focus();\n        }, 300);\n      } else {\n        this.$nextTick(() => {\n          this.$refs[\"provider-list\"]?.focus();\n        });\n      }\n    }\n  },\n  methods: {\n    onEscapePressed() {\n      if (this.selectedProvider !== null) {\n        this.deselectProvider();\n      } else {\n        this.cancelProviderSelection();\n      }\n    },\n    onProviderSelected(provider) {\n      this.selectedProvider = provider;\n      this.$emit(\"provider-selected\", provider);\n      this.$nextTick(() => {\n        this.$refs[\"url-input\"]?.focus();\n      });\n    },\n    cancelCustomElement() {\n      this.deselectProvider();\n    },\n    cancelSearch() {\n      this.$emit(\"cancel-search\", this.selectedProvider?.title);\n      this.deselectProvider();\n    },\n    cancelRawLinkInput() {\n      this.$emit(\"cancel-raw-link\", this.selectedProvider?.title);\n      this.deselectProvider();\n    },\n    cancelProviderSelection() {\n      this.$emit(\"cancel\");\n    },\n    submitLink(link) {\n      if (this.selectedProvider !== null) {\n        touchProvider(this.selectedProvider.id);\n      }\n      this.$emit(\"submit\", link);\n      this.deselectProvider();\n    },\n    deselectProvider() {\n      this.selectedProvider = null;\n      this.$emit(\"provider-selected\", null);\n      setTimeout(() => {\n        this.$refs[\"provider-list\"]?.focus();\n      }, 300);\n    }\n  }\n};\nvar _sfc_render$1 = function render8() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"div\", { staticClass: \"reference-picker\", style: _vm.pickerWrapperStyle, attrs: { \"tabindex\": \"-1\" }, on: { \"keydown\": function($event) {\n    if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n    $event.stopPropagation();\n    $event.preventDefault();\n    return _vm.onEscapePressed.apply(null, arguments);\n  } } }, [_vm.mode === _vm.MODES.providerList ? _c(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": _vm.onProviderSelected, \"submit\": _vm.submitLink, \"cancel\": _vm.cancelProviderSelection } }) : _vm.mode === _vm.MODES.standardLinkInput ? _c(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelRawLinkInput } }) : _vm.mode === _vm.MODES.searchInput ? _c(\"NcSearch\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"cancel\": _vm.cancelSearch, \"submit\": _vm.submitLink } }) : _vm.mode === _vm.MODES.customElement ? _c(\"div\", { staticClass: \"custom-element-wrapper\" }, [_c(\"NcCustomPickerElement\", { staticClass: \"custom-element\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelCustomElement } })], 1) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$1,\n  _sfc_render$1,\n  _sfc_staticRenderFns$1,\n  false,\n  null,\n  \"cd33df8e\"\n);\nconst NcReferencePicker = __component__$1.exports;\nregister(t11, t17);\nconst _sfc_main = {\n  name: \"NcReferencePickerModal\",\n  components: {\n    NcReferencePicker,\n    NcModal,\n    NcButton,\n    ArrowLeftIcon: ArrowLeft,\n    CloseIcon: Close\n  },\n  props: {\n    /**\n     * Provider to select on creation\n     * Show the provider list if no initial one is provided\n     */\n    initialProvider: {\n      type: Object,\n      default: () => null\n    },\n    /**\n     * Focus on the input item on create\n     */\n    focusOnCreate: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * If true, add the modal content to the Viewer trap elements via the event-bus\n     */\n    isInsideViewer: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      show: true,\n      selectedProvider: this.initialProvider,\n      backButtonTitle: t(\"Back to provider selection\"),\n      closeButtonTitle: t(\"Close\"),\n      closeButtonLabel: t(\"Close Smart Picker\")\n    };\n  },\n  computed: {\n    isProviderSelected() {\n      return this.selectedProvider !== null;\n    },\n    showBackButton() {\n      return this.initialProvider === null && this.isProviderSelected;\n    },\n    modalSize() {\n      return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? getCustomPickerElementSize(this.selectedProvider.id) ?? \"large\" : \"normal\";\n    },\n    showModalName() {\n      return !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id);\n    },\n    modalName() {\n      return this.isProviderSelected ? this.selectedProvider.title : t(\"Smart Picker\");\n    }\n  },\n  mounted() {\n    if (this.isInsideViewer) {\n      const elem = this.$refs.modal_content;\n      emit(\"viewer:trapElements:changed\", elem);\n    }\n  },\n  methods: {\n    onCancel() {\n      this.show = false;\n      this.$emit(\"cancel\");\n    },\n    onSubmit(value) {\n      this.show = false;\n      this.$emit(\"submit\", value);\n    },\n    onProviderSelect(provider) {\n      this.selectedProvider = provider;\n      if (provider === null && this.initialProvider !== null) {\n        this.onCancel();\n      }\n    },\n    onBackClicked() {\n      this.$refs.referencePicker.deselectProvider();\n    }\n  }\n};\nvar _sfc_render = function render9() {\n  var _vm = this, _c = _vm._self._c;\n  return _vm.show ? _c(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { \"size\": _vm.modalSize, \"can-close\": true }, on: { \"close\": _vm.onCancel } }, [_c(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [_vm.showBackButton ? _c(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": _vm.backButtonTitle, \"title\": _vm.backButtonTitle }, on: { \"click\": _vm.onBackClicked }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"ArrowLeftIcon\")];\n  }, proxy: true }], null, false, 3001860362) }) : _vm._e(), _c(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": _vm.closeButtonLabel, \"title\": _vm.closeButtonTitle, \"variant\": \"tertiary\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"CloseIcon\")];\n  }, proxy: true }], null, false, 2491825086) }), _vm.showModalName ? _c(\"h2\", [_vm._v(\" \" + _vm._s(_vm.modalName) + \" \")]) : _vm._e(), _c(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": _vm.initialProvider, \"focus-on-create\": _vm.focusOnCreate }, on: { \"provider-selected\": _vm.onProviderSelect, \"submit\": _vm.onSubmit, \"cancel\": _vm.onCancel } })], 1)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n  _sfc_main,\n  _sfc_render,\n  _sfc_staticRenderFns,\n  false,\n  null,\n  \"a3c031e1\"\n);\nconst NcReferencePickerModal = __component__.exports;\nasync function getLinkWithPicker(providerId = null, isInsideViewer = void 0) {\n  return await new Promise((resolve, reject) => {\n    const modalId = \"referencePickerModal\";\n    const modalElement = document.createElement(\"div\");\n    modalElement.id = modalId;\n    document.body.append(modalElement);\n    const initialProvider = providerId === null ? null : getProvider(providerId) ?? null;\n    const View = Vue.extend(NcReferencePickerModal);\n    const view = new View({\n      propsData: {\n        initialProvider,\n        isInsideViewer\n      }\n    }).$mount(modalElement);\n    view.$on(\"cancel\", () => {\n      view.$destroy();\n      reject(new Error(\"User cancellation\"));\n    });\n    view.$on(\"submit\", (link) => {\n      view.$destroy();\n      resolve(link);\n    });\n  });\n}\nexport {\n  NcReferenceWidget as N,\n  anyLinkProviderId as a,\n  getProvider as b,\n  getProviders as c,\n  searchProvider as d,\n  NcReferencePicker as e,\n  NcReferencePickerModal as f,\n  getLinkWithPicker as g,\n  NcSearch as h,\n  sortProviders as s\n};\n//# sourceMappingURL=referencePickerModal-CtMUY45l.mjs.map\n"],"names":["_sfc_main$1","name","components","NcReferenceWidget","props","text","type","String","default","referenceData","Array","limit","Number","displayFallback","Boolean","interactive","interactiveOptIn","data","references","loading","computed","isVisible","this","displayedReferences","length","values","Object","fallbackReference","firstReference","slice","accessible","openGraphObject","id","link","richObjectType","watch","mounted","fetch","methods","RegExp","U","exec","resolve","then","response","ocs","$emit","catch","error","console","match","trim","isPublic","get","encodeURIComponent","post","sharingToken","_sfc_render$1","_vm","_c","_self","staticClass","class","_l","reference","key","attrs","_e","_sfc_staticRenderFns$1","NcReferenceList","n","exports","remarkPlaceholder","ast","node2","index","parent","placeholders","value","split","map","entry","index2","list2","matches","u","component","tagName","children","splice","remarkUnescape","tree","includes","replace","ccount","character","source","TypeError","count","indexOf","asciiAlpha","regexCheck","asciiAlphanumeric","markdownLineEnding","code2","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","test","fromCharCode","convert","ok","castFactory","isArray","tests","checks","parameters","apply","anyFactory","check","checkAsRecord","nodeAsRecord","propsFactory","Error","testFunction","looksLikeANode","call","empty","EXIT","visitParents","visitor","reverse","is","factory","parents","defineProperty","visit2","subresult","offset","grandparents","result","toResult","nodeAsParent","concat","child","toExpression","find","string","escapeStringRegexp","toFunction","replace2","inConstruct","notInConstruct","enterLiteralAutolink","token","enter","title","url","enterLiteralAutolinkValue","config","autolinkProtocol","exitLiteralAutolinkHttp","exit","exitLiteralAutolinkWww","stack","sliceSerialize","exitLiteralAutolinkEmail","autolinkEmail","exitLiteralAutolink","transformGfmAutolinkLiterals","options","ignored","ignore","pairs","tupleOrList","tuple","push","toPairs","pairIndex","grandparent","siblings","start","change","nodes","lastIndex","position","matchObject","input","global","handler","findAndReplace","findUrl","findEmail","_","protocol","domain2","path2","prefix","previous","parts","isCorrectDomain","trailExec","trail2","closingParenIndex","openingParens","closingParens","splitUrl","atext","label","email","charCodeAt","normalizeIdentifier","toLowerCase","toUpperCase","enterFootnoteDefinition","identifier","enterFootnoteDefinitionLabelString","buffer","exitFootnoteDefinitionLabelString","resume","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","footnoteReference","state","info","tracker","createTracker","move","exit2","subexit","safe","associationId","current","before","after","footnoteDefinition","shift","indentLines","containerFlow","map$2","line","blank","peek","constructsWithoutStrikethrough","enterStrikethrough","exitStrikethrough","handleDelete","containerPhrasing","serialize","defaultStringLength","toAlignment","codePointAt","map$1","patternInScope","pattern","listInScope","none","hardBreak","_1","unsafe","checkQuote","marker","quote","emphasis","checkEmphasis","emptyOptions$1","toString","one","includeImageAlt","includeHtml","node","alt","all","join","html","image","suffix","imageReference","referenceType","inlineCode","sequence","expression","compilePattern","atBreak","formatLinkAsAutolink","raw","resourceLink","value2","linkReference","text2","checkBullet","bullet","checkRule","rule","phrasing","strong","checkStrong","handle","blockquote","break","code","fence","checkFence","fences","lang","formatCodeAsIndented","exit3","repeat","Math","max","substring","expected","longestStreak","encode","meta","definition","heading","rank","min","depth","literalWithBreak","node3","setext","formatHeadingAsSetext","subexit2","lastIndexOf","closeAtx","list","bulletCurrent","ordered","bulletOrdered","checkBulletOrdered","bulletOther","checkBulletOther","useDifferentMarker","bulletLastUsed","firstListItem","indexStack","item","listItem","listItemIndent","style","checkListItemIndent","incrementListMarker","size","spread","ceil","paragraph","root","some","d","thematicBreak","ruleSpaces","repetition","ruleRepetition","checkRuleRepetition","enterTable","align","_align","inTable","exitTable","enterRow","enterCell","exitCodeText","$0","$1","gfmTableToMarkdown","settings","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","handlers","table","serializeData","handleTableRowAsData","handleTableAsData","tableCell","handleTableCell","tableRow","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","row2","sizes2","columnIndex2","cell","columnIndex","row","sizes","lines","delimiterStart","delimiterEnd","markdownTable","exitCheck","checked","exitParagraphWithTaskListItem","head","firstParaghraph","sibling","column","assign","listItemWithTaskListItem","checkable","checkbox","remove","items","end","chunkStart","from","unshift","hasOwnProperty","syntaxExtension","all2","extension","hook","left","right","constructs","existing","add","wwwPrefix","tokenize","effects","ok2","nok","wwwPrefixInside","consume","wwwPrefixAfter","partial","domain","underscoreInLastSegment","underscoreInLastLastSegment","seen","domainInside","trail","domainAfter","domainAtPunctuation","path","sizeOpen","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","self","previousWww","previousUnbalanced","events","attempt","wwwAfter","protocolAutolink","previousProtocol","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","asciiControl","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","emailDomain","emailDomainAfter","emailDomainDot","_balanced","_gfmAutolinkLiteralWalkedInto","classifyCharacter","resolveAll","constructs2","context","called","factorySpace","POSITIVE_INFINITY","blankLine","indent","tail","tokenizePotentialGfmFootnoteCall","defined","parser","gfmFootnotes","labelStart","now","resolveToPotentialGfmFootnoteCall","_bufferIndex","chunk","contentType","replacement","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","_container","labelAtMarker","labelInside","labelAfter","labelEscape","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","tokenizer","previous2","more","_open","_close","open","strikethrough","nextEvents","insideSpan","null","attentionMarkers","EditMap","constructor","editMap","at","addImpl","sort","a","b","vecs","pop","gfmTableAlign","inDelimiterRow","event","alignIndex","tokenizeTable","sizeB","next","bodyRowStart","headRowBefore","lazy","headRowBreak","headRowStart","interrupt","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","disable","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","resolveTable","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","map2","flushTableEnd","flushCell","range","rowEnd","previousCell","groupName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","side","tasklistCheck","_gfmTasklistFirstContentOfListItem","inside","close","spaceThenNonSpace","emptyOptions","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","extensions","combineExtensions","document","continuation","resolveTo","flow","gfm","transforms","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","canContainEols","tableData","tableHeader","codeText","taskListCheckValueChecked","taskListCheckValueUnchecked","delete","gfmToMarkdown","LINK_PROTOCOLS","rehypeHighlight","_sfc_main","arguments","referenceLimit","referenceInteractive","referenceInteractiveOptIn","useMarkdown","useExtendedMarkdown","autolink","emits","parentId","G","renderPlaintext","h","p","componentClass","prepareTextNode","argumentId","argument","flat","renderMarkdown","renderedMarkdown","use","r","except","toHast","target","rel","createElement","tag","startsWith","async","module","importRehypeHighlightLibrary","nestedNode","inputNode","labelParts","nestedNodeIndex","findIndex","inputComponent","N","disabled","on","route","g","$router","href","to","placeholder","processSync","render","NcRichText","_sfc_main$8","NcButton","required","setup","widgetRoot","width","isIntersecting","showInteractive","rendered","idleTimeout","isInteractive","hasFullWidth","hasCustomWidget","i","hasInteractiveView","noAccess","descriptionStyle","numberOfLines","display","lineClamp","webkitLineClamp","Infinity","compactLink","referenceWidgetLinkComponent","referenceWidgetLinkProps","val","clearTimeout","renderWidget","setTimeout","destroyWidget","immediate","beforeDestroy","t","enableInteractive","$refs","customWidget","innerHTML","widget","appendChild","$nextTick","$el","_sfc_render$8","ref","_b","thumb","_v","_s","description","_sfc_staticRenderFns$8","_sfc_main$7","provider","isRegistered","renderResult","renderElement","domElement","renderFunctionResult","providerId","Promise","object","_isVue","$on","onSubmit","onCancel","element","addEventListener","e","detail","_sfc_render$7","_sfc_staticRenderFns$7","NcCustomPickerElement","anyLinkProviderId","anyLinkProvider","icon_url","getProvider","getProviders","window","_vue_richtext_reference_providers","filter","keep","search_providers_ids","debug","sortProviders","providerList","timestamps","_vue_richtext_reference_provider_timestamps","order","ta","tb","searchProvider","query","providers","escapedQuery","regexp","filteredSortedProviders","searchResult","mytimer","delay","callback","ms","args","isUrl","str","URL","_sfc_main$6","fillColor","_sfc_render$6","$event","$attrs","_sfc_staticRenderFns$6","LinkVariantIcon","_sfc_main$5","NcSelect","NcHighlight","NcEmptyContent","selectedProvider","multiselectPlaceholder","providerIconAlt","isLink","focus","querySelector","onProviderSelected","onSearch","_sfc_render$5","scopedSlots","_u","fn","option","model","$$v","proxy","_sfc_staticRenderFns$5","NcProviderList","_sfc_main$4","NcLoadingIcon","NcTextField","inputValue","abortController","inputPlaceholder","isLinkValid","getElementsByTagName","onClear","onInput","abort","updateReference","AbortController","signal","_sfc_render$4","nativeOn","_k","keyCode","_sfc_staticRenderFns$4","NcRawLinkInput","_sfc_main$3","_sfc_render$3","icon","rounded","thumbnailUrl","subline","_sfc_staticRenderFns$3","NcSearchResult","_sfc_main$2","DotsHorizontalIcon","showEmptyContent","searchPlaceholder","searchQuery","selectedResult","resultsBySearchProvider","searching","searchingMoreOf","noOptionsText","mySearchPlaceholder","searchProviderIds","rawLinkEntry","formattedSearchResults","resourceUrl","isRawLink","results","forEach","pid","entries","isCustomGroupTitle","providerEntriesWithId","isPaginated","isMore","isLoading","resetResults","cancelSearchRequests","onSearchInput","updateSearch","onSelectResultSelected","searchMoreOf","searchProviderId","searchProviders","searchPromises","searchOneProvider","cursor","allSettled","promises","status","reason","term","_sfc_render$2","_sfc_staticRenderFns$2","NcSearch","MODES","standardLinkInput","searchInput","customElement","initialProvider","focusOnCreate","mode","pickerWrapperStyle","onEscapePressed","deselectProvider","cancelProviderSelection","cancelCustomElement","cancelSearch","cancelRawLinkInput","submitLink","timestamp","floor","Date","params","put","touchProvider","stopPropagation","preventDefault","NcReferencePicker","NcModal","ArrowLeftIcon","A","CloseIcon","C","isInsideViewer","show","backButtonTitle","closeButtonTitle","closeButtonLabel","isProviderSelected","showBackButton","modalSize","showModalName","modalName","elem","modal_content","onProviderSelect","onBackClicked","referencePicker","_sfc_render","_sfc_staticRenderFns","NcReferencePickerModal","getLinkWithPicker","reject","modalElement","body","append","view","extend","propsData","$mount","$destroy"],"sourceRoot":""}