aboutsummaryrefslogtreecommitdiffstats
path: root/dist/files-reference-files.js.map
blob: 9e2b964d536820d660cf76b31a046dc21224fb1e (plain)
1
{"version":3,"file":"files-reference-files.js?v=e1a1325adc53e2341c37","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue?vue&type=style&index=0&id=f5ca5316&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/referencePickerModal-sscttPbK.mjs","webpack:///nextcloud/node_modules/@nextcloud/dialogs/dist/chunks/index-BC-7VPxC.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/NcRichText-BWY0OxW9.mjs","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?75e6","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?1c02","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?71ed","webpack:///nextcloud/apps/files/src/reference-files.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { o as logger } from \"./chunks/dav-CQDyL7M_.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-CQDyL7M_.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n  DefaultType2[\"DEFAULT\"] = \"default\";\n  DefaultType2[\"HIDDEN\"] = \"hidden\";\n  return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n  _action;\n  constructor(action) {\n    this.validateAction(action);\n    this._action = action;\n  }\n  get id() {\n    return this._action.id;\n  }\n  get displayName() {\n    return this._action.displayName;\n  }\n  get title() {\n    return this._action.title;\n  }\n  get iconSvgInline() {\n    return this._action.iconSvgInline;\n  }\n  get enabled() {\n    return this._action.enabled;\n  }\n  get exec() {\n    return this._action.exec;\n  }\n  get execBatch() {\n    return this._action.execBatch;\n  }\n  get hotkey() {\n    return this._action.hotkey;\n  }\n  get order() {\n    return this._action.order;\n  }\n  get parent() {\n    return this._action.parent;\n  }\n  get default() {\n    return this._action.default;\n  }\n  get destructive() {\n    return this._action.destructive;\n  }\n  get inline() {\n    return this._action.inline;\n  }\n  get renderInline() {\n    return this._action.renderInline;\n  }\n  validateAction(action) {\n    if (!action.id || typeof action.id !== \"string\") {\n      throw new Error(\"Invalid id\");\n    }\n    if (!action.displayName || typeof action.displayName !== \"function\") {\n      throw new Error(\"Invalid displayName function\");\n    }\n    if (\"title\" in action && typeof action.title !== \"function\") {\n      throw new Error(\"Invalid title function\");\n    }\n    if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n      throw new Error(\"Invalid iconSvgInline function\");\n    }\n    if (!action.exec || typeof action.exec !== \"function\") {\n      throw new Error(\"Invalid exec function\");\n    }\n    if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled function\");\n    }\n    if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n      throw new Error(\"Invalid execBatch function\");\n    }\n    if (\"order\" in action && typeof action.order !== \"number\") {\n      throw new Error(\"Invalid order\");\n    }\n    if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n      throw new Error(\"Invalid destructive flag\");\n    }\n    if (\"parent\" in action && typeof action.parent !== \"string\") {\n      throw new Error(\"Invalid parent\");\n    }\n    if (action.default && !Object.values(DefaultType).includes(action.default)) {\n      throw new Error(\"Invalid default\");\n    }\n    if (\"inline\" in action && typeof action.inline !== \"function\") {\n      throw new Error(\"Invalid inline function\");\n    }\n    if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n      throw new Error(\"Invalid renderInline function\");\n    }\n    if (\"hotkey\" in action && action.hotkey !== void 0) {\n      if (typeof action.hotkey !== \"object\") {\n        throw new Error(\"Invalid hotkey configuration\");\n      }\n      if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n        throw new Error(\"Missing or invalid hotkey key\");\n      }\n      if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n        throw new Error(\"Missing or invalid hotkey description\");\n      }\n    }\n  }\n}\nconst registerFileAction = function(action) {\n  if (typeof window._nc_fileactions === \"undefined\") {\n    window._nc_fileactions = [];\n    logger.debug(\"FileActions initialized\");\n  }\n  if (window._nc_fileactions.find((search) => search.id === action.id)) {\n    logger.error(`FileAction ${action.id} already registered`, { action });\n    return;\n  }\n  window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n  if (typeof window._nc_fileactions === \"undefined\") {\n    window._nc_fileactions = [];\n    logger.debug(\"FileActions initialized\");\n  }\n  return window._nc_fileactions;\n};\nclass FileListAction {\n  _action;\n  constructor(action) {\n    this.validateAction(action);\n    this._action = action;\n  }\n  get id() {\n    return this._action.id;\n  }\n  get displayName() {\n    return this._action.displayName;\n  }\n  get iconSvgInline() {\n    return this._action.iconSvgInline;\n  }\n  get order() {\n    return this._action.order;\n  }\n  get enabled() {\n    return this._action.enabled;\n  }\n  get exec() {\n    return this._action.exec;\n  }\n  validateAction(action) {\n    if (!action.id || typeof action.id !== \"string\") {\n      throw new Error(\"Invalid id\");\n    }\n    if (!action.displayName || typeof action.displayName !== \"function\") {\n      throw new Error(\"Invalid displayName function\");\n    }\n    if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n      throw new Error(\"Invalid iconSvgInline function\");\n    }\n    if (\"order\" in action && typeof action.order !== \"number\") {\n      throw new Error(\"Invalid order\");\n    }\n    if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled function\");\n    }\n    if (!action.exec || typeof action.exec !== \"function\") {\n      throw new Error(\"Invalid exec function\");\n    }\n  }\n}\nconst registerFileListAction = (action) => {\n  if (typeof window._nc_filelistactions === \"undefined\") {\n    window._nc_filelistactions = [];\n  }\n  if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n    logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n    return;\n  }\n  window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n  if (typeof window._nc_filelistactions === \"undefined\") {\n    window._nc_filelistactions = [];\n  }\n  return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n  if (hasRequiredDebug) return debug_1;\n  hasRequiredDebug = 1;\n  const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n  };\n  debug_1 = debug;\n  return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n  if (hasRequiredConstants) return constants;\n  hasRequiredConstants = 1;\n  const SEMVER_SPEC_VERSION = \"2.0.0\";\n  const MAX_LENGTH = 256;\n  const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n  9007199254740991;\n  const MAX_SAFE_COMPONENT_LENGTH = 16;\n  const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n  const RELEASE_TYPES = [\n    \"major\",\n    \"premajor\",\n    \"minor\",\n    \"preminor\",\n    \"patch\",\n    \"prepatch\",\n    \"prerelease\"\n  ];\n  constants = {\n    MAX_LENGTH,\n    MAX_SAFE_COMPONENT_LENGTH,\n    MAX_SAFE_BUILD_LENGTH,\n    MAX_SAFE_INTEGER,\n    RELEASE_TYPES,\n    SEMVER_SPEC_VERSION,\n    FLAG_INCLUDE_PRERELEASE: 1,\n    FLAG_LOOSE: 2\n  };\n  return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n  if (hasRequiredRe) return re.exports;\n  hasRequiredRe = 1;\n  (function(module, exports) {\n    const {\n      MAX_SAFE_COMPONENT_LENGTH,\n      MAX_SAFE_BUILD_LENGTH,\n      MAX_LENGTH\n    } = requireConstants();\n    const debug = requireDebug();\n    exports = module.exports = {};\n    const re2 = exports.re = [];\n    const safeRe = exports.safeRe = [];\n    const src = exports.src = [];\n    const t2 = exports.t = {};\n    let R = 0;\n    const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n    const safeRegexReplacements = [\n      [\"\\\\s\", 1],\n      [\"\\\\d\", MAX_LENGTH],\n      [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n    ];\n    const makeSafeRegex = (value) => {\n      for (const [token, max] of safeRegexReplacements) {\n        value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n      }\n      return value;\n    };\n    const createToken = (name, value, isGlobal) => {\n      const safe = makeSafeRegex(value);\n      const index = R++;\n      debug(name, index, value);\n      t2[name] = index;\n      src[index] = value;\n      re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n      safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n    };\n    createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n    createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n    createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n    createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n    createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n    createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n    createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n    createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n    createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n    createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n    createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n    createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n    createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n    createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n    createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n    createToken(\"GTLT\", \"((?:<|>)?=?)\");\n    createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n    createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n    createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n    createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n    createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n    createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n    createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n    createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n    createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n    createToken(\"COERCERTL\", src[t2.COERCE], true);\n    createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n    createToken(\"LONETILDE\", \"(?:~>?)\");\n    createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n    exports.tildeTrimReplace = \"$1~\";\n    createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n    createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n    createToken(\"LONECARET\", \"(?:\\\\^)\");\n    createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n    exports.caretTrimReplace = \"$1^\";\n    createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n    createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n    createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n    createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n    createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n    exports.comparatorTrimReplace = \"$1$2$3\";\n    createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n    createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n    createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n    createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n    createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n  })(re, re.exports);\n  return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n  if (hasRequiredParseOptions) return parseOptions_1;\n  hasRequiredParseOptions = 1;\n  const looseOption = Object.freeze({ loose: true });\n  const emptyOpts = Object.freeze({});\n  const parseOptions = (options) => {\n    if (!options) {\n      return emptyOpts;\n    }\n    if (typeof options !== \"object\") {\n      return looseOption;\n    }\n    return options;\n  };\n  parseOptions_1 = parseOptions;\n  return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n  if (hasRequiredIdentifiers) return identifiers;\n  hasRequiredIdentifiers = 1;\n  const numeric = /^[0-9]+$/;\n  const compareIdentifiers = (a2, b2) => {\n    const anum = numeric.test(a2);\n    const bnum = numeric.test(b2);\n    if (anum && bnum) {\n      a2 = +a2;\n      b2 = +b2;\n    }\n    return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n  };\n  const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n  identifiers = {\n    compareIdentifiers,\n    rcompareIdentifiers\n  };\n  return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n  if (hasRequiredSemver) return semver;\n  hasRequiredSemver = 1;\n  const debug = requireDebug();\n  const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n  const { safeRe: re2, t: t2 } = requireRe();\n  const parseOptions = requireParseOptions();\n  const { compareIdentifiers } = requireIdentifiers();\n  class SemVer {\n    constructor(version, options) {\n      options = parseOptions(options);\n      if (version instanceof SemVer) {\n        if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n          return version;\n        } else {\n          version = version.version;\n        }\n      } else if (typeof version !== \"string\") {\n        throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n      }\n      if (version.length > MAX_LENGTH) {\n        throw new TypeError(\n          `version is longer than ${MAX_LENGTH} characters`\n        );\n      }\n      debug(\"SemVer\", version, options);\n      this.options = options;\n      this.loose = !!options.loose;\n      this.includePrerelease = !!options.includePrerelease;\n      const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n      if (!m2) {\n        throw new TypeError(`Invalid Version: ${version}`);\n      }\n      this.raw = version;\n      this.major = +m2[1];\n      this.minor = +m2[2];\n      this.patch = +m2[3];\n      if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n        throw new TypeError(\"Invalid major version\");\n      }\n      if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n        throw new TypeError(\"Invalid minor version\");\n      }\n      if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n        throw new TypeError(\"Invalid patch version\");\n      }\n      if (!m2[4]) {\n        this.prerelease = [];\n      } else {\n        this.prerelease = m2[4].split(\".\").map((id) => {\n          if (/^[0-9]+$/.test(id)) {\n            const num = +id;\n            if (num >= 0 && num < MAX_SAFE_INTEGER) {\n              return num;\n            }\n          }\n          return id;\n        });\n      }\n      this.build = m2[5] ? m2[5].split(\".\") : [];\n      this.format();\n    }\n    format() {\n      this.version = `${this.major}.${this.minor}.${this.patch}`;\n      if (this.prerelease.length) {\n        this.version += `-${this.prerelease.join(\".\")}`;\n      }\n      return this.version;\n    }\n    toString() {\n      return this.version;\n    }\n    compare(other) {\n      debug(\"SemVer.compare\", this.version, this.options, other);\n      if (!(other instanceof SemVer)) {\n        if (typeof other === \"string\" && other === this.version) {\n          return 0;\n        }\n        other = new SemVer(other, this.options);\n      }\n      if (other.version === this.version) {\n        return 0;\n      }\n      return this.compareMain(other) || this.comparePre(other);\n    }\n    compareMain(other) {\n      if (!(other instanceof SemVer)) {\n        other = new SemVer(other, this.options);\n      }\n      return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n    }\n    comparePre(other) {\n      if (!(other instanceof SemVer)) {\n        other = new SemVer(other, this.options);\n      }\n      if (this.prerelease.length && !other.prerelease.length) {\n        return -1;\n      } else if (!this.prerelease.length && other.prerelease.length) {\n        return 1;\n      } else if (!this.prerelease.length && !other.prerelease.length) {\n        return 0;\n      }\n      let i2 = 0;\n      do {\n        const a2 = this.prerelease[i2];\n        const b2 = other.prerelease[i2];\n        debug(\"prerelease compare\", i2, a2, b2);\n        if (a2 === void 0 && b2 === void 0) {\n          return 0;\n        } else if (b2 === void 0) {\n          return 1;\n        } else if (a2 === void 0) {\n          return -1;\n        } else if (a2 === b2) {\n          continue;\n        } else {\n          return compareIdentifiers(a2, b2);\n        }\n      } while (++i2);\n    }\n    compareBuild(other) {\n      if (!(other instanceof SemVer)) {\n        other = new SemVer(other, this.options);\n      }\n      let i2 = 0;\n      do {\n        const a2 = this.build[i2];\n        const b2 = other.build[i2];\n        debug(\"build compare\", i2, a2, b2);\n        if (a2 === void 0 && b2 === void 0) {\n          return 0;\n        } else if (b2 === void 0) {\n          return 1;\n        } else if (a2 === void 0) {\n          return -1;\n        } else if (a2 === b2) {\n          continue;\n        } else {\n          return compareIdentifiers(a2, b2);\n        }\n      } while (++i2);\n    }\n    // preminor will bump the version up to the next minor release, and immediately\n    // down to pre-release. premajor and prepatch work the same way.\n    inc(release, identifier, identifierBase) {\n      switch (release) {\n        case \"premajor\":\n          this.prerelease.length = 0;\n          this.patch = 0;\n          this.minor = 0;\n          this.major++;\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        case \"preminor\":\n          this.prerelease.length = 0;\n          this.patch = 0;\n          this.minor++;\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        case \"prepatch\":\n          this.prerelease.length = 0;\n          this.inc(\"patch\", identifier, identifierBase);\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        // If the input is a non-prerelease version, this acts the same as\n        // prepatch.\n        case \"prerelease\":\n          if (this.prerelease.length === 0) {\n            this.inc(\"patch\", identifier, identifierBase);\n          }\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        case \"major\":\n          if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n            this.major++;\n          }\n          this.minor = 0;\n          this.patch = 0;\n          this.prerelease = [];\n          break;\n        case \"minor\":\n          if (this.patch !== 0 || this.prerelease.length === 0) {\n            this.minor++;\n          }\n          this.patch = 0;\n          this.prerelease = [];\n          break;\n        case \"patch\":\n          if (this.prerelease.length === 0) {\n            this.patch++;\n          }\n          this.prerelease = [];\n          break;\n        // This probably shouldn't be used publicly.\n        // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n        case \"pre\": {\n          const base = Number(identifierBase) ? 1 : 0;\n          if (!identifier && identifierBase === false) {\n            throw new Error(\"invalid increment argument: identifier is empty\");\n          }\n          if (this.prerelease.length === 0) {\n            this.prerelease = [base];\n          } else {\n            let i2 = this.prerelease.length;\n            while (--i2 >= 0) {\n              if (typeof this.prerelease[i2] === \"number\") {\n                this.prerelease[i2]++;\n                i2 = -2;\n              }\n            }\n            if (i2 === -1) {\n              if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n                throw new Error(\"invalid increment argument: identifier already exists\");\n              }\n              this.prerelease.push(base);\n            }\n          }\n          if (identifier) {\n            let prerelease = [identifier, base];\n            if (identifierBase === false) {\n              prerelease = [identifier];\n            }\n            if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n              if (isNaN(this.prerelease[1])) {\n                this.prerelease = prerelease;\n              }\n            } else {\n              this.prerelease = prerelease;\n            }\n          }\n          break;\n        }\n        default:\n          throw new Error(`invalid increment argument: ${release}`);\n      }\n      this.raw = this.format();\n      if (this.build.length) {\n        this.raw += `+${this.build.join(\".\")}`;\n      }\n      return this;\n    }\n  }\n  semver = SemVer;\n  return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n  if (hasRequiredParse) return parse_1;\n  hasRequiredParse = 1;\n  const SemVer = requireSemver();\n  const parse = (version, options, throwErrors = false) => {\n    if (version instanceof SemVer) {\n      return version;\n    }\n    try {\n      return new SemVer(version, options);\n    } catch (er) {\n      if (!throwErrors) {\n        return null;\n      }\n      throw er;\n    }\n  };\n  parse_1 = parse;\n  return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n  if (hasRequiredValid) return valid_1;\n  hasRequiredValid = 1;\n  const parse = requireParse();\n  const valid2 = (version, options) => {\n    const v = parse(version, options);\n    return v ? v.version : null;\n  };\n  valid_1 = valid2;\n  return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n  if (hasRequiredMajor) return major_1;\n  hasRequiredMajor = 1;\n  const SemVer = requireSemver();\n  const major2 = (a2, loose) => new SemVer(a2, loose).major;\n  major_1 = major2;\n  return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n  bus;\n  constructor(bus2) {\n    if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n      console.warn(\"Proxying an event bus with an unknown or invalid version\");\n    } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n      console.warn(\n        \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n      );\n    }\n    this.bus = bus2;\n  }\n  getVersion() {\n    return \"3.3.2\";\n  }\n  subscribe(name, handler) {\n    this.bus.subscribe(name, handler);\n  }\n  unsubscribe(name, handler) {\n    this.bus.unsubscribe(name, handler);\n  }\n  emit(name, ...event) {\n    this.bus.emit(name, ...event);\n  }\n}\nclass SimpleBus {\n  handlers = /* @__PURE__ */ new Map();\n  getVersion() {\n    return \"3.3.2\";\n  }\n  subscribe(name, handler) {\n    this.handlers.set(\n      name,\n      (this.handlers.get(name) || []).concat(\n        handler\n      )\n    );\n  }\n  unsubscribe(name, handler) {\n    this.handlers.set(\n      name,\n      (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n    );\n  }\n  emit(name, ...event) {\n    const handlers = this.handlers.get(name) || [];\n    handlers.forEach((h2) => {\n      try {\n        ;\n        h2(event[0]);\n      } catch (e2) {\n        console.error(\"could not invoke event listener\", e2);\n      }\n    });\n  }\n}\nlet bus = null;\nfunction getBus() {\n  if (bus !== null) {\n    return bus;\n  }\n  if (typeof window === \"undefined\") {\n    return new Proxy({}, {\n      get: () => {\n        return () => console.error(\n          \"Window not available, EventBus can not be established!\"\n        );\n      }\n    });\n  }\n  if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n    console.warn(\n      \"found old event bus instance at OC._eventBus. Update your version!\"\n    );\n    window._nc_event_bus = window.OC._eventBus;\n  }\n  if (typeof window?._nc_event_bus !== \"undefined\") {\n    bus = new ProxyBus(window._nc_event_bus);\n  } else {\n    bus = window._nc_event_bus = new SimpleBus();\n  }\n  return bus;\n}\nfunction emit(name, ...event) {\n  getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n  id;\n  order;\n  constructor(id, order = 100) {\n    super();\n    this.id = id;\n    this.order = order;\n  }\n  filter(nodes) {\n    throw new Error(\"Not implemented\");\n  }\n  updateChips(chips) {\n    this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n  }\n  filterUpdated() {\n    this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n  }\n}\nfunction registerFileListFilter(filter) {\n  if (!window._nc_filelist_filters) {\n    window._nc_filelist_filters = /* @__PURE__ */ new Map();\n  }\n  if (window._nc_filelist_filters.has(filter.id)) {\n    throw new Error(`File list filter \"${filter.id}\" already registered`);\n  }\n  window._nc_filelist_filters.set(filter.id, filter);\n  emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n  if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n    window._nc_filelist_filters.delete(filterId);\n    emit(\"files:filter:removed\", filterId);\n  }\n}\nfunction getFileListFilters() {\n  if (!window._nc_filelist_filters) {\n    return [];\n  }\n  return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n  _header;\n  constructor(header) {\n    this.validateHeader(header);\n    this._header = header;\n  }\n  get id() {\n    return this._header.id;\n  }\n  get order() {\n    return this._header.order;\n  }\n  get enabled() {\n    return this._header.enabled;\n  }\n  get render() {\n    return this._header.render;\n  }\n  get updated() {\n    return this._header.updated;\n  }\n  validateHeader(header) {\n    if (!header.id || !header.render || !header.updated) {\n      throw new Error(\"Invalid header: id, render and updated are required\");\n    }\n    if (typeof header.id !== \"string\") {\n      throw new Error(\"Invalid id property\");\n    }\n    if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled property\");\n    }\n    if (header.render && typeof header.render !== \"function\") {\n      throw new Error(\"Invalid render property\");\n    }\n    if (header.updated && typeof header.updated !== \"function\") {\n      throw new Error(\"Invalid updated property\");\n    }\n  }\n}\nconst registerFileListHeaders = function(header) {\n  if (typeof window._nc_filelistheader === \"undefined\") {\n    window._nc_filelistheader = [];\n    logger.debug(\"FileListHeaders initialized\");\n  }\n  if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n    logger.error(`Header ${header.id} already registered`, { header });\n    return;\n  }\n  window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n  if (typeof window._nc_filelistheader === \"undefined\") {\n    window._nc_filelistheader = [];\n    logger.debug(\"FileListHeaders initialized\");\n  }\n  return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n  _views = [];\n  _currentView = null;\n  /**\n   * Register a new view on the navigation\n   * @param view The view to register\n   * @throws `Error` is thrown if a view with the same id is already registered\n   */\n  register(view) {\n    if (this._views.find((search) => search.id === view.id)) {\n      throw new Error(`View id ${view.id} is already registered`);\n    }\n    this._views.push(view);\n    this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n  }\n  /**\n   * Remove a registered view\n   * @param id The id of the view to remove\n   */\n  remove(id) {\n    const index = this._views.findIndex((view) => view.id === id);\n    if (index !== -1) {\n      this._views.splice(index, 1);\n      this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n    }\n  }\n  /**\n   * Set the currently active view\n   * @fires UpdateActiveViewEvent\n   * @param view New active view\n   */\n  setActive(view) {\n    this._currentView = view;\n    const event = new CustomEvent(\"updateActive\", { detail: view });\n    this.dispatchTypedEvent(\"updateActive\", event);\n  }\n  /**\n   * The currently active files view\n   */\n  get active() {\n    return this._currentView;\n  }\n  /**\n   * All registered views\n   */\n  get views() {\n    return this._views;\n  }\n}\nconst getNavigation = function() {\n  if (typeof window._nc_navigation === \"undefined\") {\n    window._nc_navigation = new Navigation();\n    logger.debug(\"Navigation service initialized\");\n  }\n  return window._nc_navigation;\n};\nclass Column {\n  _column;\n  constructor(column) {\n    isValidColumn(column);\n    this._column = column;\n  }\n  get id() {\n    return this._column.id;\n  }\n  get title() {\n    return this._column.title;\n  }\n  get render() {\n    return this._column.render;\n  }\n  get sort() {\n    return this._column.sort;\n  }\n  get summary() {\n    return this._column.summary;\n  }\n}\nconst isValidColumn = function(column) {\n  if (!column.id || typeof column.id !== \"string\") {\n    throw new Error(\"A column id is required\");\n  }\n  if (!column.title || typeof column.title !== \"string\") {\n    throw new Error(\"A column title is required\");\n  }\n  if (!column.render || typeof column.render !== \"function\") {\n    throw new Error(\"A render function is required\");\n  }\n  if (column.sort && typeof column.sort !== \"function\") {\n    throw new Error(\"Column sortFunction must be a function\");\n  }\n  if (column.summary && typeof column.summary !== \"function\") {\n    throw new Error(\"Column summary must be a function\");\n  }\n  return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n  if (hasRequiredSax) return sax$1;\n  hasRequiredSax = 1;\n  (function(exports) {\n    (function(sax2) {\n      sax2.parser = function(strict, opt) {\n        return new SAXParser(strict, opt);\n      };\n      sax2.SAXParser = SAXParser;\n      sax2.SAXStream = SAXStream;\n      sax2.createStream = createStream;\n      sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n      var buffers = [\n        \"comment\",\n        \"sgmlDecl\",\n        \"textNode\",\n        \"tagName\",\n        \"doctype\",\n        \"procInstName\",\n        \"procInstBody\",\n        \"entity\",\n        \"attribName\",\n        \"attribValue\",\n        \"cdata\",\n        \"script\"\n      ];\n      sax2.EVENTS = [\n        \"text\",\n        \"processinginstruction\",\n        \"sgmldeclaration\",\n        \"doctype\",\n        \"comment\",\n        \"opentagstart\",\n        \"attribute\",\n        \"opentag\",\n        \"closetag\",\n        \"opencdata\",\n        \"cdata\",\n        \"closecdata\",\n        \"error\",\n        \"end\",\n        \"ready\",\n        \"script\",\n        \"opennamespace\",\n        \"closenamespace\"\n      ];\n      function SAXParser(strict, opt) {\n        if (!(this instanceof SAXParser)) {\n          return new SAXParser(strict, opt);\n        }\n        var parser = this;\n        clearBuffers(parser);\n        parser.q = parser.c = \"\";\n        parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n        parser.opt = opt || {};\n        parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n        parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n        parser.tags = [];\n        parser.closed = parser.closedRoot = parser.sawRoot = false;\n        parser.tag = parser.error = null;\n        parser.strict = !!strict;\n        parser.noscript = !!(strict || parser.opt.noscript);\n        parser.state = S.BEGIN;\n        parser.strictEntities = parser.opt.strictEntities;\n        parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n        parser.attribList = [];\n        if (parser.opt.xmlns) {\n          parser.ns = Object.create(rootNS);\n        }\n        if (parser.opt.unquotedAttributeValues === void 0) {\n          parser.opt.unquotedAttributeValues = !strict;\n        }\n        parser.trackPosition = parser.opt.position !== false;\n        if (parser.trackPosition) {\n          parser.position = parser.line = parser.column = 0;\n        }\n        emit2(parser, \"onready\");\n      }\n      if (!Object.create) {\n        Object.create = function(o) {\n          function F2() {\n          }\n          F2.prototype = o;\n          var newf = new F2();\n          return newf;\n        };\n      }\n      if (!Object.keys) {\n        Object.keys = function(o) {\n          var a2 = [];\n          for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n          return a2;\n        };\n      }\n      function checkBufferLength(parser) {\n        var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n        var maxActual = 0;\n        for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n          var len = parser[buffers[i2]].length;\n          if (len > maxAllowed) {\n            switch (buffers[i2]) {\n              case \"textNode\":\n                closeText(parser);\n                break;\n              case \"cdata\":\n                emitNode(parser, \"oncdata\", parser.cdata);\n                parser.cdata = \"\";\n                break;\n              case \"script\":\n                emitNode(parser, \"onscript\", parser.script);\n                parser.script = \"\";\n                break;\n              default:\n                error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n            }\n          }\n          maxActual = Math.max(maxActual, len);\n        }\n        var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n        parser.bufferCheckPosition = m2 + parser.position;\n      }\n      function clearBuffers(parser) {\n        for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n          parser[buffers[i2]] = \"\";\n        }\n      }\n      function flushBuffers(parser) {\n        closeText(parser);\n        if (parser.cdata !== \"\") {\n          emitNode(parser, \"oncdata\", parser.cdata);\n          parser.cdata = \"\";\n        }\n        if (parser.script !== \"\") {\n          emitNode(parser, \"onscript\", parser.script);\n          parser.script = \"\";\n        }\n      }\n      SAXParser.prototype = {\n        end: function() {\n          end(this);\n        },\n        write,\n        resume: function() {\n          this.error = null;\n          return this;\n        },\n        close: function() {\n          return this.write(null);\n        },\n        flush: function() {\n          flushBuffers(this);\n        }\n      };\n      var Stream;\n      try {\n        Stream = require(\"stream\").Stream;\n      } catch (ex) {\n        Stream = function() {\n        };\n      }\n      if (!Stream) Stream = function() {\n      };\n      var streamWraps = sax2.EVENTS.filter(function(ev) {\n        return ev !== \"error\" && ev !== \"end\";\n      });\n      function createStream(strict, opt) {\n        return new SAXStream(strict, opt);\n      }\n      function SAXStream(strict, opt) {\n        if (!(this instanceof SAXStream)) {\n          return new SAXStream(strict, opt);\n        }\n        Stream.apply(this);\n        this._parser = new SAXParser(strict, opt);\n        this.writable = true;\n        this.readable = true;\n        var me = this;\n        this._parser.onend = function() {\n          me.emit(\"end\");\n        };\n        this._parser.onerror = function(er) {\n          me.emit(\"error\", er);\n          me._parser.error = null;\n        };\n        this._decoder = null;\n        streamWraps.forEach(function(ev) {\n          Object.defineProperty(me, \"on\" + ev, {\n            get: function() {\n              return me._parser[\"on\" + ev];\n            },\n            set: function(h2) {\n              if (!h2) {\n                me.removeAllListeners(ev);\n                me._parser[\"on\" + ev] = h2;\n                return h2;\n              }\n              me.on(ev, h2);\n            },\n            enumerable: true,\n            configurable: false\n          });\n        });\n      }\n      SAXStream.prototype = Object.create(Stream.prototype, {\n        constructor: {\n          value: SAXStream\n        }\n      });\n      SAXStream.prototype.write = function(data) {\n        if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n          if (!this._decoder) {\n            var SD = require$$1.StringDecoder;\n            this._decoder = new SD(\"utf8\");\n          }\n          data = this._decoder.write(data);\n        }\n        this._parser.write(data.toString());\n        this.emit(\"data\", data);\n        return true;\n      };\n      SAXStream.prototype.end = function(chunk) {\n        if (chunk && chunk.length) {\n          this.write(chunk);\n        }\n        this._parser.end();\n        return true;\n      };\n      SAXStream.prototype.on = function(ev, handler) {\n        var me = this;\n        if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n          me._parser[\"on\" + ev] = function() {\n            var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n            args.splice(0, 0, ev);\n            me.emit.apply(me, args);\n          };\n        }\n        return Stream.prototype.on.call(me, ev, handler);\n      };\n      var CDATA = \"[CDATA[\";\n      var DOCTYPE = \"DOCTYPE\";\n      var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n      var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n      var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n      var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n      var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n      var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n      var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n      function isWhitespace(c2) {\n        return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n      }\n      function isQuote(c2) {\n        return c2 === '\"' || c2 === \"'\";\n      }\n      function isAttribEnd(c2) {\n        return c2 === \">\" || isWhitespace(c2);\n      }\n      function isMatch(regex, c2) {\n        return regex.test(c2);\n      }\n      function notMatch(regex, c2) {\n        return !isMatch(regex, c2);\n      }\n      var S = 0;\n      sax2.STATE = {\n        BEGIN: S++,\n        // leading byte order mark or whitespace\n        BEGIN_WHITESPACE: S++,\n        // leading whitespace\n        TEXT: S++,\n        // general stuff\n        TEXT_ENTITY: S++,\n        // &amp and such.\n        OPEN_WAKA: S++,\n        // <\n        SGML_DECL: S++,\n        // <!BLARG\n        SGML_DECL_QUOTED: S++,\n        // <!BLARG foo \"bar\n        DOCTYPE: S++,\n        // <!DOCTYPE\n        DOCTYPE_QUOTED: S++,\n        // <!DOCTYPE \"//blah\n        DOCTYPE_DTD: S++,\n        // <!DOCTYPE \"//blah\" [ ...\n        DOCTYPE_DTD_QUOTED: S++,\n        // <!DOCTYPE \"//blah\" [ \"foo\n        COMMENT_STARTING: S++,\n        // <!-\n        COMMENT: S++,\n        // <!--\n        COMMENT_ENDING: S++,\n        // <!-- blah -\n        COMMENT_ENDED: S++,\n        // <!-- blah --\n        CDATA: S++,\n        // <![CDATA[ something\n        CDATA_ENDING: S++,\n        // ]\n        CDATA_ENDING_2: S++,\n        // ]]\n        PROC_INST: S++,\n        // <?hi\n        PROC_INST_BODY: S++,\n        // <?hi there\n        PROC_INST_ENDING: S++,\n        // <?hi \"there\" ?\n        OPEN_TAG: S++,\n        // <strong\n        OPEN_TAG_SLASH: S++,\n        // <strong /\n        ATTRIB: S++,\n        // <a\n        ATTRIB_NAME: S++,\n        // <a foo\n        ATTRIB_NAME_SAW_WHITE: S++,\n        // <a foo _\n        ATTRIB_VALUE: S++,\n        // <a foo=\n        ATTRIB_VALUE_QUOTED: S++,\n        // <a foo=\"bar\n        ATTRIB_VALUE_CLOSED: S++,\n        // <a foo=\"bar\"\n        ATTRIB_VALUE_UNQUOTED: S++,\n        // <a foo=bar\n        ATTRIB_VALUE_ENTITY_Q: S++,\n        // <foo bar=\"&quot;\"\n        ATTRIB_VALUE_ENTITY_U: S++,\n        // <foo bar=&quot\n        CLOSE_TAG: S++,\n        // </a\n        CLOSE_TAG_SAW_WHITE: S++,\n        // </a   >\n        SCRIPT: S++,\n        // <script> ...\n        SCRIPT_ENDING: S++\n        // <script> ... <\n      };\n      sax2.XML_ENTITIES = {\n        \"amp\": \"&\",\n        \"gt\": \">\",\n        \"lt\": \"<\",\n        \"quot\": '\"',\n        \"apos\": \"'\"\n      };\n      sax2.ENTITIES = {\n        \"amp\": \"&\",\n        \"gt\": \">\",\n        \"lt\": \"<\",\n        \"quot\": '\"',\n        \"apos\": \"'\",\n        \"AElig\": 198,\n        \"Aacute\": 193,\n        \"Acirc\": 194,\n        \"Agrave\": 192,\n        \"Aring\": 197,\n        \"Atilde\": 195,\n        \"Auml\": 196,\n        \"Ccedil\": 199,\n        \"ETH\": 208,\n        \"Eacute\": 201,\n        \"Ecirc\": 202,\n        \"Egrave\": 200,\n        \"Euml\": 203,\n        \"Iacute\": 205,\n        \"Icirc\": 206,\n        \"Igrave\": 204,\n        \"Iuml\": 207,\n        \"Ntilde\": 209,\n        \"Oacute\": 211,\n        \"Ocirc\": 212,\n        \"Ograve\": 210,\n        \"Oslash\": 216,\n        \"Otilde\": 213,\n        \"Ouml\": 214,\n        \"THORN\": 222,\n        \"Uacute\": 218,\n        \"Ucirc\": 219,\n        \"Ugrave\": 217,\n        \"Uuml\": 220,\n        \"Yacute\": 221,\n        \"aacute\": 225,\n        \"acirc\": 226,\n        \"aelig\": 230,\n        \"agrave\": 224,\n        \"aring\": 229,\n        \"atilde\": 227,\n        \"auml\": 228,\n        \"ccedil\": 231,\n        \"eacute\": 233,\n        \"ecirc\": 234,\n        \"egrave\": 232,\n        \"eth\": 240,\n        \"euml\": 235,\n        \"iacute\": 237,\n        \"icirc\": 238,\n        \"igrave\": 236,\n        \"iuml\": 239,\n        \"ntilde\": 241,\n        \"oacute\": 243,\n        \"ocirc\": 244,\n        \"ograve\": 242,\n        \"oslash\": 248,\n        \"otilde\": 245,\n        \"ouml\": 246,\n        \"szlig\": 223,\n        \"thorn\": 254,\n        \"uacute\": 250,\n        \"ucirc\": 251,\n        \"ugrave\": 249,\n        \"uuml\": 252,\n        \"yacute\": 253,\n        \"yuml\": 255,\n        \"copy\": 169,\n        \"reg\": 174,\n        \"nbsp\": 160,\n        \"iexcl\": 161,\n        \"cent\": 162,\n        \"pound\": 163,\n        \"curren\": 164,\n        \"yen\": 165,\n        \"brvbar\": 166,\n        \"sect\": 167,\n        \"uml\": 168,\n        \"ordf\": 170,\n        \"laquo\": 171,\n        \"not\": 172,\n        \"shy\": 173,\n        \"macr\": 175,\n        \"deg\": 176,\n        \"plusmn\": 177,\n        \"sup1\": 185,\n        \"sup2\": 178,\n        \"sup3\": 179,\n        \"acute\": 180,\n        \"micro\": 181,\n        \"para\": 182,\n        \"middot\": 183,\n        \"cedil\": 184,\n        \"ordm\": 186,\n        \"raquo\": 187,\n        \"frac14\": 188,\n        \"frac12\": 189,\n        \"frac34\": 190,\n        \"iquest\": 191,\n        \"times\": 215,\n        \"divide\": 247,\n        \"OElig\": 338,\n        \"oelig\": 339,\n        \"Scaron\": 352,\n        \"scaron\": 353,\n        \"Yuml\": 376,\n        \"fnof\": 402,\n        \"circ\": 710,\n        \"tilde\": 732,\n        \"Alpha\": 913,\n        \"Beta\": 914,\n        \"Gamma\": 915,\n        \"Delta\": 916,\n        \"Epsilon\": 917,\n        \"Zeta\": 918,\n        \"Eta\": 919,\n        \"Theta\": 920,\n        \"Iota\": 921,\n        \"Kappa\": 922,\n        \"Lambda\": 923,\n        \"Mu\": 924,\n        \"Nu\": 925,\n        \"Xi\": 926,\n        \"Omicron\": 927,\n        \"Pi\": 928,\n        \"Rho\": 929,\n        \"Sigma\": 931,\n        \"Tau\": 932,\n        \"Upsilon\": 933,\n        \"Phi\": 934,\n        \"Chi\": 935,\n        \"Psi\": 936,\n        \"Omega\": 937,\n        \"alpha\": 945,\n        \"beta\": 946,\n        \"gamma\": 947,\n        \"delta\": 948,\n        \"epsilon\": 949,\n        \"zeta\": 950,\n        \"eta\": 951,\n        \"theta\": 952,\n        \"iota\": 953,\n        \"kappa\": 954,\n        \"lambda\": 955,\n        \"mu\": 956,\n        \"nu\": 957,\n        \"xi\": 958,\n        \"omicron\": 959,\n        \"pi\": 960,\n        \"rho\": 961,\n        \"sigmaf\": 962,\n        \"sigma\": 963,\n        \"tau\": 964,\n        \"upsilon\": 965,\n        \"phi\": 966,\n        \"chi\": 967,\n        \"psi\": 968,\n        \"omega\": 969,\n        \"thetasym\": 977,\n        \"upsih\": 978,\n        \"piv\": 982,\n        \"ensp\": 8194,\n        \"emsp\": 8195,\n        \"thinsp\": 8201,\n        \"zwnj\": 8204,\n        \"zwj\": 8205,\n        \"lrm\": 8206,\n        \"rlm\": 8207,\n        \"ndash\": 8211,\n        \"mdash\": 8212,\n        \"lsquo\": 8216,\n        \"rsquo\": 8217,\n        \"sbquo\": 8218,\n        \"ldquo\": 8220,\n        \"rdquo\": 8221,\n        \"bdquo\": 8222,\n        \"dagger\": 8224,\n        \"Dagger\": 8225,\n        \"bull\": 8226,\n        \"hellip\": 8230,\n        \"permil\": 8240,\n        \"prime\": 8242,\n        \"Prime\": 8243,\n        \"lsaquo\": 8249,\n        \"rsaquo\": 8250,\n        \"oline\": 8254,\n        \"frasl\": 8260,\n        \"euro\": 8364,\n        \"image\": 8465,\n        \"weierp\": 8472,\n        \"real\": 8476,\n        \"trade\": 8482,\n        \"alefsym\": 8501,\n        \"larr\": 8592,\n        \"uarr\": 8593,\n        \"rarr\": 8594,\n        \"darr\": 8595,\n        \"harr\": 8596,\n        \"crarr\": 8629,\n        \"lArr\": 8656,\n        \"uArr\": 8657,\n        \"rArr\": 8658,\n        \"dArr\": 8659,\n        \"hArr\": 8660,\n        \"forall\": 8704,\n        \"part\": 8706,\n        \"exist\": 8707,\n        \"empty\": 8709,\n        \"nabla\": 8711,\n        \"isin\": 8712,\n        \"notin\": 8713,\n        \"ni\": 8715,\n        \"prod\": 8719,\n        \"sum\": 8721,\n        \"minus\": 8722,\n        \"lowast\": 8727,\n        \"radic\": 8730,\n        \"prop\": 8733,\n        \"infin\": 8734,\n        \"ang\": 8736,\n        \"and\": 8743,\n        \"or\": 8744,\n        \"cap\": 8745,\n        \"cup\": 8746,\n        \"int\": 8747,\n        \"there4\": 8756,\n        \"sim\": 8764,\n        \"cong\": 8773,\n        \"asymp\": 8776,\n        \"ne\": 8800,\n        \"equiv\": 8801,\n        \"le\": 8804,\n        \"ge\": 8805,\n        \"sub\": 8834,\n        \"sup\": 8835,\n        \"nsub\": 8836,\n        \"sube\": 8838,\n        \"supe\": 8839,\n        \"oplus\": 8853,\n        \"otimes\": 8855,\n        \"perp\": 8869,\n        \"sdot\": 8901,\n        \"lceil\": 8968,\n        \"rceil\": 8969,\n        \"lfloor\": 8970,\n        \"rfloor\": 8971,\n        \"lang\": 9001,\n        \"rang\": 9002,\n        \"loz\": 9674,\n        \"spades\": 9824,\n        \"clubs\": 9827,\n        \"hearts\": 9829,\n        \"diams\": 9830\n      };\n      Object.keys(sax2.ENTITIES).forEach(function(key) {\n        var e2 = sax2.ENTITIES[key];\n        var s3 = typeof e2 === \"number\" ? String.fromCharCode(e2) : e2;\n        sax2.ENTITIES[key] = s3;\n      });\n      for (var s2 in sax2.STATE) {\n        sax2.STATE[sax2.STATE[s2]] = s2;\n      }\n      S = sax2.STATE;\n      function emit2(parser, event, data) {\n        parser[event] && parser[event](data);\n      }\n      function emitNode(parser, nodeType, data) {\n        if (parser.textNode) closeText(parser);\n        emit2(parser, nodeType, data);\n      }\n      function closeText(parser) {\n        parser.textNode = textopts(parser.opt, parser.textNode);\n        if (parser.textNode) emit2(parser, \"ontext\", parser.textNode);\n        parser.textNode = \"\";\n      }\n      function textopts(opt, text) {\n        if (opt.trim) text = text.trim();\n        if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n        return text;\n      }\n      function error(parser, er) {\n        closeText(parser);\n        if (parser.trackPosition) {\n          er += \"\\nLine: \" + parser.line + \"\\nColumn: \" + parser.column + \"\\nChar: \" + parser.c;\n        }\n        er = new Error(er);\n        parser.error = er;\n        emit2(parser, \"onerror\", er);\n        return parser;\n      }\n      function end(parser) {\n        if (parser.sawRoot && !parser.closedRoot) strictFail(parser, \"Unclosed root tag\");\n        if (parser.state !== S.BEGIN && parser.state !== S.BEGIN_WHITESPACE && parser.state !== S.TEXT) {\n          error(parser, \"Unexpected end\");\n        }\n        closeText(parser);\n        parser.c = \"\";\n        parser.closed = true;\n        emit2(parser, \"onend\");\n        SAXParser.call(parser, parser.strict, parser.opt);\n        return parser;\n      }\n      function strictFail(parser, message) {\n        if (typeof parser !== \"object\" || !(parser instanceof SAXParser)) {\n          throw new Error(\"bad call to strictFail\");\n        }\n        if (parser.strict) {\n          error(parser, message);\n        }\n      }\n      function newTag(parser) {\n        if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]();\n        var parent = parser.tags[parser.tags.length - 1] || parser;\n        var tag = parser.tag = { name: parser.tagName, attributes: {} };\n        if (parser.opt.xmlns) {\n          tag.ns = parent.ns;\n        }\n        parser.attribList.length = 0;\n        emitNode(parser, \"onopentagstart\", tag);\n      }\n      function qname(name, attribute) {\n        var i2 = name.indexOf(\":\");\n        var qualName = i2 < 0 ? [\"\", name] : name.split(\":\");\n        var prefix = qualName[0];\n        var local = qualName[1];\n        if (attribute && name === \"xmlns\") {\n          prefix = \"xmlns\";\n          local = \"\";\n        }\n        return { prefix, local };\n      }\n      function attrib(parser) {\n        if (!parser.strict) {\n          parser.attribName = parser.attribName[parser.looseCase]();\n        }\n        if (parser.attribList.indexOf(parser.attribName) !== -1 || parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n          parser.attribName = parser.attribValue = \"\";\n          return;\n        }\n        if (parser.opt.xmlns) {\n          var qn = qname(parser.attribName, true);\n          var prefix = qn.prefix;\n          var local = qn.local;\n          if (prefix === \"xmlns\") {\n            if (local === \"xml\" && parser.attribValue !== XML_NAMESPACE) {\n              strictFail(\n                parser,\n                \"xml: prefix must be bound to \" + XML_NAMESPACE + \"\\nActual: \" + parser.attribValue\n              );\n            } else if (local === \"xmlns\" && parser.attribValue !== XMLNS_NAMESPACE) {\n              strictFail(\n                parser,\n                \"xmlns: prefix must be bound to \" + XMLNS_NAMESPACE + \"\\nActual: \" + parser.attribValue\n              );\n            } else {\n              var tag = parser.tag;\n              var parent = parser.tags[parser.tags.length - 1] || parser;\n              if (tag.ns === parent.ns) {\n                tag.ns = Object.create(parent.ns);\n              }\n              tag.ns[local] = parser.attribValue;\n            }\n          }\n          parser.attribList.push([parser.attribName, parser.attribValue]);\n        } else {\n          parser.tag.attributes[parser.attribName] = parser.attribValue;\n          emitNode(parser, \"onattribute\", {\n            name: parser.attribName,\n            value: parser.attribValue\n          });\n        }\n        parser.attribName = parser.attribValue = \"\";\n      }\n      function openTag(parser, selfClosing) {\n        if (parser.opt.xmlns) {\n          var tag = parser.tag;\n          var qn = qname(parser.tagName);\n          tag.prefix = qn.prefix;\n          tag.local = qn.local;\n          tag.uri = tag.ns[qn.prefix] || \"\";\n          if (tag.prefix && !tag.uri) {\n            strictFail(parser, \"Unbound namespace prefix: \" + JSON.stringify(parser.tagName));\n            tag.uri = qn.prefix;\n          }\n          var parent = parser.tags[parser.tags.length - 1] || parser;\n          if (tag.ns && parent.ns !== tag.ns) {\n            Object.keys(tag.ns).forEach(function(p2) {\n              emitNode(parser, \"onopennamespace\", {\n                prefix: p2,\n                uri: tag.ns[p2]\n              });\n            });\n          }\n          for (var i2 = 0, l2 = parser.attribList.length; i2 < l2; i2++) {\n            var nv = parser.attribList[i2];\n            var name = nv[0];\n            var value = nv[1];\n            var qualName = qname(name, true);\n            var prefix = qualName.prefix;\n            var local = qualName.local;\n            var uri = prefix === \"\" ? \"\" : tag.ns[prefix] || \"\";\n            var a2 = {\n              name,\n              value,\n              prefix,\n              local,\n              uri\n            };\n            if (prefix && prefix !== \"xmlns\" && !uri) {\n              strictFail(parser, \"Unbound namespace prefix: \" + JSON.stringify(prefix));\n              a2.uri = prefix;\n            }\n            parser.tag.attributes[name] = a2;\n            emitNode(parser, \"onattribute\", a2);\n          }\n          parser.attribList.length = 0;\n        }\n        parser.tag.isSelfClosing = !!selfClosing;\n        parser.sawRoot = true;\n        parser.tags.push(parser.tag);\n        emitNode(parser, \"onopentag\", parser.tag);\n        if (!selfClosing) {\n          if (!parser.noscript && parser.tagName.toLowerCase() === \"script\") {\n            parser.state = S.SCRIPT;\n          } else {\n            parser.state = S.TEXT;\n          }\n          parser.tag = null;\n          parser.tagName = \"\";\n        }\n        parser.attribName = parser.attribValue = \"\";\n        parser.attribList.length = 0;\n      }\n      function closeTag(parser) {\n        if (!parser.tagName) {\n          strictFail(parser, \"Weird empty close tag.\");\n          parser.textNode += \"</>\";\n          parser.state = S.TEXT;\n          return;\n        }\n        if (parser.script) {\n          if (parser.tagName !== \"script\") {\n            parser.script += \"</\" + parser.tagName + \">\";\n            parser.tagName = \"\";\n            parser.state = S.SCRIPT;\n            return;\n          }\n          emitNode(parser, \"onscript\", parser.script);\n          parser.script = \"\";\n        }\n        var t2 = parser.tags.length;\n        var tagName = parser.tagName;\n        if (!parser.strict) {\n          tagName = tagName[parser.looseCase]();\n        }\n        var closeTo = tagName;\n        while (t2--) {\n          var close = parser.tags[t2];\n          if (close.name !== closeTo) {\n            strictFail(parser, \"Unexpected close tag\");\n          } else {\n            break;\n          }\n        }\n        if (t2 < 0) {\n          strictFail(parser, \"Unmatched closing tag: \" + parser.tagName);\n          parser.textNode += \"</\" + parser.tagName + \">\";\n          parser.state = S.TEXT;\n          return;\n        }\n        parser.tagName = tagName;\n        var s3 = parser.tags.length;\n        while (s3-- > t2) {\n          var tag = parser.tag = parser.tags.pop();\n          parser.tagName = parser.tag.name;\n          emitNode(parser, \"onclosetag\", parser.tagName);\n          var x = {};\n          for (var i2 in tag.ns) {\n            x[i2] = tag.ns[i2];\n          }\n          var parent = parser.tags[parser.tags.length - 1] || parser;\n          if (parser.opt.xmlns && tag.ns !== parent.ns) {\n            Object.keys(tag.ns).forEach(function(p2) {\n              var n2 = tag.ns[p2];\n              emitNode(parser, \"onclosenamespace\", { prefix: p2, uri: n2 });\n            });\n          }\n        }\n        if (t2 === 0) parser.closedRoot = true;\n        parser.tagName = parser.attribValue = parser.attribName = \"\";\n        parser.attribList.length = 0;\n        parser.state = S.TEXT;\n      }\n      function parseEntity(parser) {\n        var entity = parser.entity;\n        var entityLC = entity.toLowerCase();\n        var num;\n        var numStr = \"\";\n        if (parser.ENTITIES[entity]) {\n          return parser.ENTITIES[entity];\n        }\n        if (parser.ENTITIES[entityLC]) {\n          return parser.ENTITIES[entityLC];\n        }\n        entity = entityLC;\n        if (entity.charAt(0) === \"#\") {\n          if (entity.charAt(1) === \"x\") {\n            entity = entity.slice(2);\n            num = parseInt(entity, 16);\n            numStr = num.toString(16);\n          } else {\n            entity = entity.slice(1);\n            num = parseInt(entity, 10);\n            numStr = num.toString(10);\n          }\n        }\n        entity = entity.replace(/^0+/, \"\");\n        if (isNaN(num) || numStr.toLowerCase() !== entity) {\n          strictFail(parser, \"Invalid character entity\");\n          return \"&\" + parser.entity + \";\";\n        }\n        return String.fromCodePoint(num);\n      }\n      function beginWhiteSpace(parser, c2) {\n        if (c2 === \"<\") {\n          parser.state = S.OPEN_WAKA;\n          parser.startTagPosition = parser.position;\n        } else if (!isWhitespace(c2)) {\n          strictFail(parser, \"Non-whitespace before first tag.\");\n          parser.textNode = c2;\n          parser.state = S.TEXT;\n        }\n      }\n      function charAt(chunk, i2) {\n        var result = \"\";\n        if (i2 < chunk.length) {\n          result = chunk.charAt(i2);\n        }\n        return result;\n      }\n      function write(chunk) {\n        var parser = this;\n        if (this.error) {\n          throw this.error;\n        }\n        if (parser.closed) {\n          return error(\n            parser,\n            \"Cannot write after close. Assign an onready handler.\"\n          );\n        }\n        if (chunk === null) {\n          return end(parser);\n        }\n        if (typeof chunk === \"object\") {\n          chunk = chunk.toString();\n        }\n        var i2 = 0;\n        var c2 = \"\";\n        while (true) {\n          c2 = charAt(chunk, i2++);\n          parser.c = c2;\n          if (!c2) {\n            break;\n          }\n          if (parser.trackPosition) {\n            parser.position++;\n            if (c2 === \"\\n\") {\n              parser.line++;\n              parser.column = 0;\n            } else {\n              parser.column++;\n            }\n          }\n          switch (parser.state) {\n            case S.BEGIN:\n              parser.state = S.BEGIN_WHITESPACE;\n              if (c2 === \"\\uFEFF\") {\n                continue;\n              }\n              beginWhiteSpace(parser, c2);\n              continue;\n            case S.BEGIN_WHITESPACE:\n              beginWhiteSpace(parser, c2);\n              continue;\n            case S.TEXT:\n              if (parser.sawRoot && !parser.closedRoot) {\n                var starti = i2 - 1;\n                while (c2 && c2 !== \"<\" && c2 !== \"&\") {\n                  c2 = charAt(chunk, i2++);\n                  if (c2 && parser.trackPosition) {\n                    parser.position++;\n                    if (c2 === \"\\n\") {\n                      parser.line++;\n                      parser.column = 0;\n                    } else {\n                      parser.column++;\n                    }\n                  }\n                }\n                parser.textNode += chunk.substring(starti, i2 - 1);\n              }\n              if (c2 === \"<\" && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n                parser.state = S.OPEN_WAKA;\n                parser.startTagPosition = parser.position;\n              } else {\n                if (!isWhitespace(c2) && (!parser.sawRoot || parser.closedRoot)) {\n                  strictFail(parser, \"Text data outside of root node.\");\n                }\n                if (c2 === \"&\") {\n                  parser.state = S.TEXT_ENTITY;\n                } else {\n                  parser.textNode += c2;\n                }\n              }\n              continue;\n            case S.SCRIPT:\n              if (c2 === \"<\") {\n                parser.state = S.SCRIPT_ENDING;\n              } else {\n                parser.script += c2;\n              }\n              continue;\n            case S.SCRIPT_ENDING:\n              if (c2 === \"/\") {\n                parser.state = S.CLOSE_TAG;\n              } else {\n                parser.script += \"<\" + c2;\n                parser.state = S.SCRIPT;\n              }\n              continue;\n            case S.OPEN_WAKA:\n              if (c2 === \"!\") {\n                parser.state = S.SGML_DECL;\n                parser.sgmlDecl = \"\";\n              } else if (isWhitespace(c2)) ;\n              else if (isMatch(nameStart, c2)) {\n                parser.state = S.OPEN_TAG;\n                parser.tagName = c2;\n              } else if (c2 === \"/\") {\n                parser.state = S.CLOSE_TAG;\n                parser.tagName = \"\";\n              } else if (c2 === \"?\") {\n                parser.state = S.PROC_INST;\n                parser.procInstName = parser.procInstBody = \"\";\n              } else {\n                strictFail(parser, \"Unencoded <\");\n                if (parser.startTagPosition + 1 < parser.position) {\n                  var pad = parser.position - parser.startTagPosition;\n                  c2 = new Array(pad).join(\" \") + c2;\n                }\n                parser.textNode += \"<\" + c2;\n                parser.state = S.TEXT;\n              }\n              continue;\n            case S.SGML_DECL:\n              if (parser.sgmlDecl + c2 === \"--\") {\n                parser.state = S.COMMENT;\n                parser.comment = \"\";\n                parser.sgmlDecl = \"\";\n                continue;\n              }\n              if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n                parser.state = S.DOCTYPE_DTD;\n                parser.doctype += \"<!\" + parser.sgmlDecl + c2;\n                parser.sgmlDecl = \"\";\n              } else if ((parser.sgmlDecl + c2).toUpperCase() === CDATA) {\n                emitNode(parser, \"onopencdata\");\n                parser.state = S.CDATA;\n                parser.sgmlDecl = \"\";\n                parser.cdata = \"\";\n              } else if ((parser.sgmlDecl + c2).toUpperCase() === DOCTYPE) {\n                parser.state = S.DOCTYPE;\n                if (parser.doctype || parser.sawRoot) {\n                  strictFail(\n                    parser,\n                    \"Inappropriately located doctype declaration\"\n                  );\n                }\n                parser.doctype = \"\";\n                parser.sgmlDecl = \"\";\n              } else if (c2 === \">\") {\n                emitNode(parser, \"onsgmldeclaration\", parser.sgmlDecl);\n                parser.sgmlDecl = \"\";\n                parser.state = S.TEXT;\n              } else if (isQuote(c2)) {\n                parser.state = S.SGML_DECL_QUOTED;\n                parser.sgmlDecl += c2;\n              } else {\n                parser.sgmlDecl += c2;\n              }\n              continue;\n            case S.SGML_DECL_QUOTED:\n              if (c2 === parser.q) {\n                parser.state = S.SGML_DECL;\n                parser.q = \"\";\n              }\n              parser.sgmlDecl += c2;\n              continue;\n            case S.DOCTYPE:\n              if (c2 === \">\") {\n                parser.state = S.TEXT;\n                emitNode(parser, \"ondoctype\", parser.doctype);\n                parser.doctype = true;\n              } else {\n                parser.doctype += c2;\n                if (c2 === \"[\") {\n                  parser.state = S.DOCTYPE_DTD;\n                } else if (isQuote(c2)) {\n                  parser.state = S.DOCTYPE_QUOTED;\n                  parser.q = c2;\n                }\n              }\n              continue;\n            case S.DOCTYPE_QUOTED:\n              parser.doctype += c2;\n              if (c2 === parser.q) {\n                parser.q = \"\";\n                parser.state = S.DOCTYPE;\n              }\n              continue;\n            case S.DOCTYPE_DTD:\n              if (c2 === \"]\") {\n                parser.doctype += c2;\n                parser.state = S.DOCTYPE;\n              } else if (c2 === \"<\") {\n                parser.state = S.OPEN_WAKA;\n                parser.startTagPosition = parser.position;\n              } else if (isQuote(c2)) {\n                parser.doctype += c2;\n                parser.state = S.DOCTYPE_DTD_QUOTED;\n                parser.q = c2;\n              } else {\n                parser.doctype += c2;\n              }\n              continue;\n            case S.DOCTYPE_DTD_QUOTED:\n              parser.doctype += c2;\n              if (c2 === parser.q) {\n                parser.state = S.DOCTYPE_DTD;\n                parser.q = \"\";\n              }\n              continue;\n            case S.COMMENT:\n              if (c2 === \"-\") {\n                parser.state = S.COMMENT_ENDING;\n              } else {\n                parser.comment += c2;\n              }\n              continue;\n            case S.COMMENT_ENDING:\n              if (c2 === \"-\") {\n                parser.state = S.COMMENT_ENDED;\n                parser.comment = textopts(parser.opt, parser.comment);\n                if (parser.comment) {\n                  emitNode(parser, \"oncomment\", parser.comment);\n                }\n                parser.comment = \"\";\n              } else {\n                parser.comment += \"-\" + c2;\n                parser.state = S.COMMENT;\n              }\n              continue;\n            case S.COMMENT_ENDED:\n              if (c2 !== \">\") {\n                strictFail(parser, \"Malformed comment\");\n                parser.comment += \"--\" + c2;\n                parser.state = S.COMMENT;\n              } else if (parser.doctype && parser.doctype !== true) {\n                parser.state = S.DOCTYPE_DTD;\n              } else {\n                parser.state = S.TEXT;\n              }\n              continue;\n            case S.CDATA:\n              if (c2 === \"]\") {\n                parser.state = S.CDATA_ENDING;\n              } else {\n                parser.cdata += c2;\n              }\n              continue;\n            case S.CDATA_ENDING:\n              if (c2 === \"]\") {\n                parser.state = S.CDATA_ENDING_2;\n              } else {\n                parser.cdata += \"]\" + c2;\n                parser.state = S.CDATA;\n              }\n              continue;\n            case S.CDATA_ENDING_2:\n              if (c2 === \">\") {\n                if (parser.cdata) {\n                  emitNode(parser, \"oncdata\", parser.cdata);\n                }\n                emitNode(parser, \"onclosecdata\");\n                parser.cdata = \"\";\n                parser.state = S.TEXT;\n              } else if (c2 === \"]\") {\n                parser.cdata += \"]\";\n              } else {\n                parser.cdata += \"]]\" + c2;\n                parser.state = S.CDATA;\n              }\n              continue;\n            case S.PROC_INST:\n              if (c2 === \"?\") {\n                parser.state = S.PROC_INST_ENDING;\n              } else if (isWhitespace(c2)) {\n                parser.state = S.PROC_INST_BODY;\n              } else {\n                parser.procInstName += c2;\n              }\n              continue;\n            case S.PROC_INST_BODY:\n              if (!parser.procInstBody && isWhitespace(c2)) {\n                continue;\n              } else if (c2 === \"?\") {\n                parser.state = S.PROC_INST_ENDING;\n              } else {\n                parser.procInstBody += c2;\n              }\n              continue;\n            case S.PROC_INST_ENDING:\n              if (c2 === \">\") {\n                emitNode(parser, \"onprocessinginstruction\", {\n                  name: parser.procInstName,\n                  body: parser.procInstBody\n                });\n                parser.procInstName = parser.procInstBody = \"\";\n                parser.state = S.TEXT;\n              } else {\n                parser.procInstBody += \"?\" + c2;\n                parser.state = S.PROC_INST_BODY;\n              }\n              continue;\n            case S.OPEN_TAG:\n              if (isMatch(nameBody, c2)) {\n                parser.tagName += c2;\n              } else {\n                newTag(parser);\n                if (c2 === \">\") {\n                  openTag(parser);\n                } else if (c2 === \"/\") {\n                  parser.state = S.OPEN_TAG_SLASH;\n                } else {\n                  if (!isWhitespace(c2)) {\n                    strictFail(parser, \"Invalid character in tag name\");\n                  }\n                  parser.state = S.ATTRIB;\n                }\n              }\n              continue;\n            case S.OPEN_TAG_SLASH:\n              if (c2 === \">\") {\n                openTag(parser, true);\n                closeTag(parser);\n              } else {\n                strictFail(parser, \"Forward-slash in opening tag not followed by >\");\n                parser.state = S.ATTRIB;\n              }\n              continue;\n            case S.ATTRIB:\n              if (isWhitespace(c2)) {\n                continue;\n              } else if (c2 === \">\") {\n                openTag(parser);\n              } else if (c2 === \"/\") {\n                parser.state = S.OPEN_TAG_SLASH;\n              } else if (isMatch(nameStart, c2)) {\n                parser.attribName = c2;\n                parser.attribValue = \"\";\n                parser.state = S.ATTRIB_NAME;\n              } else {\n                strictFail(parser, \"Invalid attribute name\");\n              }\n              continue;\n            case S.ATTRIB_NAME:\n              if (c2 === \"=\") {\n                parser.state = S.ATTRIB_VALUE;\n              } else if (c2 === \">\") {\n                strictFail(parser, \"Attribute without value\");\n                parser.attribValue = parser.attribName;\n                attrib(parser);\n                openTag(parser);\n              } else if (isWhitespace(c2)) {\n                parser.state = S.ATTRIB_NAME_SAW_WHITE;\n              } else if (isMatch(nameBody, c2)) {\n                parser.attribName += c2;\n              } else {\n                strictFail(parser, \"Invalid attribute name\");\n              }\n              continue;\n            case S.ATTRIB_NAME_SAW_WHITE:\n              if (c2 === \"=\") {\n                parser.state = S.ATTRIB_VALUE;\n              } else if (isWhitespace(c2)) {\n                continue;\n              } else {\n                strictFail(parser, \"Attribute without value\");\n                parser.tag.attributes[parser.attribName] = \"\";\n                parser.attribValue = \"\";\n                emitNode(parser, \"onattribute\", {\n                  name: parser.attribName,\n                  value: \"\"\n                });\n                parser.attribName = \"\";\n                if (c2 === \">\") {\n                  openTag(parser);\n                } else if (isMatch(nameStart, c2)) {\n                  parser.attribName = c2;\n                  parser.state = S.ATTRIB_NAME;\n                } else {\n                  strictFail(parser, \"Invalid attribute name\");\n                  parser.state = S.ATTRIB;\n                }\n              }\n              continue;\n            case S.ATTRIB_VALUE:\n              if (isWhitespace(c2)) {\n                continue;\n              } else if (isQuote(c2)) {\n                parser.q = c2;\n                parser.state = S.ATTRIB_VALUE_QUOTED;\n              } else {\n                if (!parser.opt.unquotedAttributeValues) {\n                  error(parser, \"Unquoted attribute value\");\n                }\n                parser.state = S.ATTRIB_VALUE_UNQUOTED;\n                parser.attribValue = c2;\n              }\n              continue;\n            case S.ATTRIB_VALUE_QUOTED:\n              if (c2 !== parser.q) {\n                if (c2 === \"&\") {\n                  parser.state = S.ATTRIB_VALUE_ENTITY_Q;\n                } else {\n                  parser.attribValue += c2;\n                }\n                continue;\n              }\n              attrib(parser);\n              parser.q = \"\";\n              parser.state = S.ATTRIB_VALUE_CLOSED;\n              continue;\n            case S.ATTRIB_VALUE_CLOSED:\n              if (isWhitespace(c2)) {\n                parser.state = S.ATTRIB;\n              } else if (c2 === \">\") {\n                openTag(parser);\n              } else if (c2 === \"/\") {\n                parser.state = S.OPEN_TAG_SLASH;\n              } else if (isMatch(nameStart, c2)) {\n                strictFail(parser, \"No whitespace between attributes\");\n                parser.attribName = c2;\n                parser.attribValue = \"\";\n                parser.state = S.ATTRIB_NAME;\n              } else {\n                strictFail(parser, \"Invalid attribute name\");\n              }\n              continue;\n            case S.ATTRIB_VALUE_UNQUOTED:\n              if (!isAttribEnd(c2)) {\n                if (c2 === \"&\") {\n                  parser.state = S.ATTRIB_VALUE_ENTITY_U;\n                } else {\n                  parser.attribValue += c2;\n                }\n                continue;\n              }\n              attrib(parser);\n              if (c2 === \">\") {\n                openTag(parser);\n              } else {\n                parser.state = S.ATTRIB;\n              }\n              continue;\n            case S.CLOSE_TAG:\n              if (!parser.tagName) {\n                if (isWhitespace(c2)) {\n                  continue;\n                } else if (notMatch(nameStart, c2)) {\n                  if (parser.script) {\n                    parser.script += \"</\" + c2;\n                    parser.state = S.SCRIPT;\n                  } else {\n                    strictFail(parser, \"Invalid tagname in closing tag.\");\n                  }\n                } else {\n                  parser.tagName = c2;\n                }\n              } else if (c2 === \">\") {\n                closeTag(parser);\n              } else if (isMatch(nameBody, c2)) {\n                parser.tagName += c2;\n              } else if (parser.script) {\n                parser.script += \"</\" + parser.tagName;\n                parser.tagName = \"\";\n                parser.state = S.SCRIPT;\n              } else {\n                if (!isWhitespace(c2)) {\n                  strictFail(parser, \"Invalid tagname in closing tag\");\n                }\n                parser.state = S.CLOSE_TAG_SAW_WHITE;\n              }\n              continue;\n            case S.CLOSE_TAG_SAW_WHITE:\n              if (isWhitespace(c2)) {\n                continue;\n              }\n              if (c2 === \">\") {\n                closeTag(parser);\n              } else {\n                strictFail(parser, \"Invalid characters in closing tag\");\n              }\n              continue;\n            case S.TEXT_ENTITY:\n            case S.ATTRIB_VALUE_ENTITY_Q:\n            case S.ATTRIB_VALUE_ENTITY_U:\n              var returnState;\n              var buffer;\n              switch (parser.state) {\n                case S.TEXT_ENTITY:\n                  returnState = S.TEXT;\n                  buffer = \"textNode\";\n                  break;\n                case S.ATTRIB_VALUE_ENTITY_Q:\n                  returnState = S.ATTRIB_VALUE_QUOTED;\n                  buffer = \"attribValue\";\n                  break;\n                case S.ATTRIB_VALUE_ENTITY_U:\n                  returnState = S.ATTRIB_VALUE_UNQUOTED;\n                  buffer = \"attribValue\";\n                  break;\n              }\n              if (c2 === \";\") {\n                var parsedEntity = parseEntity(parser);\n                if (parser.opt.unparsedEntities && !Object.values(sax2.XML_ENTITIES).includes(parsedEntity)) {\n                  parser.entity = \"\";\n                  parser.state = returnState;\n                  parser.write(parsedEntity);\n                } else {\n                  parser[buffer] += parsedEntity;\n                  parser.entity = \"\";\n                  parser.state = returnState;\n                }\n              } else if (isMatch(parser.entity.length ? entityBody : entityStart, c2)) {\n                parser.entity += c2;\n              } else {\n                strictFail(parser, \"Invalid character in entity name\");\n                parser[buffer] += \"&\" + parser.entity + c2;\n                parser.entity = \"\";\n                parser.state = returnState;\n              }\n              continue;\n            default: {\n              throw new Error(parser, \"Unknown state: \" + parser.state);\n            }\n          }\n        }\n        if (parser.position >= parser.bufferCheckPosition) {\n          checkBufferLength(parser);\n        }\n        return parser;\n      }\n      /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n      if (!String.fromCodePoint) {\n        (function() {\n          var stringFromCharCode = String.fromCharCode;\n          var floor = Math.floor;\n          var fromCodePoint = function() {\n            var MAX_SIZE = 16384;\n            var codeUnits = [];\n            var highSurrogate;\n            var lowSurrogate;\n            var index = -1;\n            var length = arguments.length;\n            if (!length) {\n              return \"\";\n            }\n            var result = \"\";\n            while (++index < length) {\n              var codePoint = Number(arguments[index]);\n              if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n              codePoint < 0 || // not a valid Unicode code point\n              codePoint > 1114111 || // not a valid Unicode code point\n              floor(codePoint) !== codePoint) {\n                throw RangeError(\"Invalid code point: \" + codePoint);\n              }\n              if (codePoint <= 65535) {\n                codeUnits.push(codePoint);\n              } else {\n                codePoint -= 65536;\n                highSurrogate = (codePoint >> 10) + 55296;\n                lowSurrogate = codePoint % 1024 + 56320;\n                codeUnits.push(highSurrogate, lowSurrogate);\n              }\n              if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n                result += stringFromCharCode.apply(null, codeUnits);\n                codeUnits.length = 0;\n              }\n            }\n            return result;\n          };\n          if (Object.defineProperty) {\n            Object.defineProperty(String, \"fromCodePoint\", {\n              value: fromCodePoint,\n              configurable: true,\n              writable: true\n            });\n          } else {\n            String.fromCodePoint = fromCodePoint;\n          }\n        })();\n      }\n    })(exports);\n  })(sax$1);\n  return sax$1;\n}\nvar saxExports = requireSax();\nconst sax = /* @__PURE__ */ getDefaultExportFromCjs(saxExports);\nconst namespaceMapping = {\n  \"http://www.w3.org/2000/svg\": {\n    ext: \"svg\",\n    mime: \"image/svg+xml\"\n  },\n  \"http://www.w3.org/1999/xhtml\": {\n    ext: \"xhtml\",\n    mime: \"application/xhtml+xml\"\n  },\n  \"http://www.opengis.net/kml/2.2\": {\n    ext: \"kml\",\n    mime: \"application/vnd.google-earth.kml+xml\"\n  },\n  \"http://www.opengis.net/gml\": {\n    ext: \"gml\",\n    mime: \"application/gml+xml\"\n  }\n};\nconst rootNameMapping = {\n  rss: {\n    ext: \"rss\",\n    mime: \"application/rss+xml\"\n  },\n  \"score-partwise\": {\n    ext: \"musicxml\",\n    mime: \"application/vnd.recordare.musicxml+xml\"\n  },\n  svg: {\n    ext: \"svg\",\n    mime: \"image/svg+xml\"\n  }\n};\nclass XmlTextDetector {\n  constructor(options) {\n    this.options = options ?? {};\n    this.firstTag = true;\n    this.onEnd = false;\n    this.parser = sax.parser(true, { xmlns: true });\n    this.nesting = 0;\n    this.parser.onerror = (e2) => {\n      if (e2.message.startsWith(\"Invalid character entity\")) {\n        return;\n      }\n      this.fileType = void 0;\n      this.onEnd = true;\n    };\n    this.parser.onopentag = (node) => {\n      ++this.nesting;\n      if (!this.firstTag || this.onEnd) {\n        return;\n      }\n      this.firstTag = false;\n      if (node.uri) {\n        this.fileType = namespaceMapping[node.uri];\n      } else if (node.name) {\n        this.fileType = rootNameMapping[node.name.toLowerCase()];\n      }\n      if (this.fileType && !this.options.fullScan) {\n        this.onEnd = true;\n      }\n    };\n    this.parser.onclosetag = () => {\n      --this.nesting;\n    };\n  }\n  write(text) {\n    this.parser.write(text);\n  }\n  close() {\n    this.parser.close();\n    this.onEnd = true;\n  }\n  isValid() {\n    return this.nesting === 0;\n  }\n}\nfunction isSvg(string) {\n  if (typeof string !== \"string\") {\n    throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n  }\n  string = string.trim();\n  if (string.length === 0) {\n    return false;\n  }\n  const xmlTextDetector = new XmlTextDetector();\n  xmlTextDetector.write(string);\n  return xmlTextDetector.isValid() && xmlTextDetector.fileType?.ext === \"svg\";\n}\nclass View {\n  _view;\n  constructor(view) {\n    isValidView(view);\n    this._view = view;\n  }\n  get id() {\n    return this._view.id;\n  }\n  get name() {\n    return this._view.name;\n  }\n  get caption() {\n    return this._view.caption;\n  }\n  get emptyTitle() {\n    return this._view.emptyTitle;\n  }\n  get emptyCaption() {\n    return this._view.emptyCaption;\n  }\n  get getContents() {\n    return this._view.getContents;\n  }\n  get hidden() {\n    return this._view.hidden;\n  }\n  get icon() {\n    return this._view.icon;\n  }\n  set icon(icon) {\n    this._view.icon = icon;\n  }\n  get order() {\n    return this._view.order;\n  }\n  set order(order) {\n    this._view.order = order;\n  }\n  get params() {\n    return this._view.params;\n  }\n  set params(params) {\n    this._view.params = params;\n  }\n  get columns() {\n    return this._view.columns;\n  }\n  get emptyView() {\n    return this._view.emptyView;\n  }\n  get parent() {\n    return this._view.parent;\n  }\n  get sticky() {\n    return this._view.sticky;\n  }\n  get expanded() {\n    return this._view.expanded;\n  }\n  set expanded(expanded) {\n    this._view.expanded = expanded;\n  }\n  get defaultSortKey() {\n    return this._view.defaultSortKey;\n  }\n  get loadChildViews() {\n    return this._view.loadChildViews;\n  }\n}\nconst isValidView = function(view) {\n  if (!view.id || typeof view.id !== \"string\") {\n    throw new Error(\"View id is required and must be a string\");\n  }\n  if (!view.name || typeof view.name !== \"string\") {\n    throw new Error(\"View name is required and must be a string\");\n  }\n  if (\"caption\" in view && typeof view.caption !== \"string\") {\n    throw new Error(\"View caption must be a string\");\n  }\n  if (!view.getContents || typeof view.getContents !== \"function\") {\n    throw new Error(\"View getContents is required and must be a function\");\n  }\n  if (\"hidden\" in view && typeof view.hidden !== \"boolean\") {\n    throw new Error(\"View hidden must be a boolean\");\n  }\n  if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n    throw new Error(\"View icon is required and must be a valid svg string\");\n  }\n  if (\"order\" in view && typeof view.order !== \"number\") {\n    throw new Error(\"View order must be a number\");\n  }\n  if (view.columns) {\n    view.columns.forEach((column) => {\n      if (!(column instanceof Column)) {\n        throw new Error(\"View columns must be an array of Column. Invalid column found\");\n      }\n    });\n  }\n  if (view.emptyView && typeof view.emptyView !== \"function\") {\n    throw new Error(\"View emptyView must be a function\");\n  }\n  if (view.parent && typeof view.parent !== \"string\") {\n    throw new Error(\"View parent must be a string\");\n  }\n  if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n    throw new Error(\"View sticky must be a boolean\");\n  }\n  if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n    throw new Error(\"View expanded must be a boolean\");\n  }\n  if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n    throw new Error(\"View defaultSortKey must be a string\");\n  }\n  if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n    throw new Error(\"View loadChildViews must be a function\");\n  }\n  return true;\n};\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n  NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n  NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n  NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n  return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewMenu {\n  _entries = [];\n  registerEntry(entry) {\n    this.validateEntry(entry);\n    entry.category = entry.category ?? 1;\n    this._entries.push(entry);\n  }\n  unregisterEntry(entry) {\n    const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n    if (entryIndex === -1) {\n      logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n      return;\n    }\n    this._entries.splice(entryIndex, 1);\n  }\n  /**\n   * Get the list of registered entries\n   *\n   * @param {Folder} context the creation context. Usually the current folder\n   */\n  getEntries(context) {\n    if (context) {\n      return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n    }\n    return this._entries;\n  }\n  getEntryIndex(id) {\n    return this._entries.findIndex((entry) => entry.id === id);\n  }\n  validateEntry(entry) {\n    if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n      throw new Error(\"Invalid entry\");\n    }\n    if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n      throw new Error(\"Invalid id or displayName property\");\n    }\n    if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n      throw new Error(\"Invalid icon provided\");\n    }\n    if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled property\");\n    }\n    if (typeof entry.handler !== \"function\") {\n      throw new Error(\"Invalid handler property\");\n    }\n    if (\"order\" in entry && typeof entry.order !== \"number\") {\n      throw new Error(\"Invalid order property\");\n    }\n    if (this.getEntryIndex(entry.id) !== -1) {\n      throw new Error(\"Duplicate entry\");\n    }\n  }\n}\nfunction getNewFileMenu() {\n  if (typeof window._nc_newfilemenu === \"undefined\") {\n    window._nc_newfilemenu = new NewMenu();\n    logger.debug(\"NewFileMenu initialized\");\n  }\n  return window._nc_newfilemenu;\n}\nfunction addNewFileMenuEntry(entry) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.registerEntry(entry);\n}\nfunction removeNewFileMenuEntry(entry) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.unregisterEntry(entry);\n}\nfunction getNewFileMenuEntries(context) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.getEntries(context).sort((a2, b2) => {\n    if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n      return a2.order - b2.order;\n    }\n    return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n  });\n}\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n  InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n  InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n  InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n  return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n  constructor(options) {\n    super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n  }\n  /**\n   * The filename that was validated\n   */\n  get filename() {\n    return this.cause.filename;\n  }\n  /**\n   * Reason why the validation failed\n   */\n  get reason() {\n    return this.cause.reason;\n  }\n  /**\n   * Part of the filename that caused this error\n   */\n  get segment() {\n    return this.cause.segment;\n  }\n}\nfunction validateFilename(filename) {\n  const capabilities = getCapabilities().files;\n  const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n  for (const character of forbiddenCharacters) {\n    if (filename.includes(character)) {\n      throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n    }\n  }\n  filename = filename.toLocaleLowerCase();\n  const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n  if (forbiddenFilenames.includes(filename)) {\n    throw new InvalidFilenameError({\n      filename,\n      segment: filename,\n      reason: \"reserved name\"\n      /* ReservedName */\n    });\n  }\n  const endOfBasename = filename.indexOf(\".\", 1);\n  const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n  const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n  if (forbiddenFilenameBasenames.includes(basename2)) {\n    throw new InvalidFilenameError({\n      filename,\n      segment: basename2,\n      reason: \"reserved name\"\n      /* ReservedName */\n    });\n  }\n  const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n  for (const extension of forbiddenFilenameExtensions) {\n    if (filename.length > extension.length && filename.endsWith(extension)) {\n      throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n    }\n  }\n}\nfunction isFilenameValid(filename) {\n  try {\n    validateFilename(filename);\n    return true;\n  } catch (error) {\n    if (error instanceof InvalidFilenameError) {\n      return false;\n    }\n    throw error;\n  }\n}\nfunction getUniqueName(name, otherNames, options) {\n  const opts = {\n    suffix: (n2) => `(${n2})`,\n    ignoreFileExtension: false,\n    ...options\n  };\n  let newName = name;\n  let i2 = 1;\n  while (otherNames.includes(newName)) {\n    const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n    const base = basename(name, ext);\n    newName = `${base} ${opts.suffix(i2++)}${ext}`;\n  }\n  return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n  binaryPrefixes = binaryPrefixes && !base1000;\n  if (typeof size === \"string\") {\n    size = Number(size);\n  }\n  let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n  order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n  const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n  let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n  if (skipSmallSizes === true && order === 0) {\n    return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n  }\n  if (order < 2) {\n    relativeSize = parseFloat(relativeSize).toFixed(0);\n  } else {\n    relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n  }\n  return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n  try {\n    value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n  } catch (e2) {\n    return null;\n  }\n  const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n  if (match === null || match[1] === \".\" || match[1] === \"\") {\n    return null;\n  }\n  const bytesArray = {\n    \"\": 0,\n    k: 1,\n    m: 2,\n    g: 3,\n    t: 4,\n    p: 5,\n    e: 6\n  };\n  const decimalString = `${match[1]}`;\n  const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n  return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n  if (value instanceof Date) {\n    return value.toISOString();\n  }\n  return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n  identifiers2 = identifiers2 ?? [(value) => value];\n  orders = orders ?? [];\n  const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n  const collator = Intl.Collator(\n    [getLanguage(), getCanonicalLocale()],\n    {\n      // handle 10 as ten and not as one-zero\n      numeric: true,\n      usage: \"sort\"\n    }\n  );\n  return [...collection].sort((a2, b2) => {\n    for (const [index, identifier] of identifiers2.entries()) {\n      const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n      if (value !== 0) {\n        return value * sorting[index];\n      }\n    }\n    return 0;\n  });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n  FilesSortingMode2[\"Name\"] = \"basename\";\n  FilesSortingMode2[\"Modified\"] = \"mtime\";\n  FilesSortingMode2[\"Size\"] = \"size\";\n  return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n  const sortingOptions = {\n    // Default to sort by name\n    sortingMode: \"basename\",\n    // Default to sort ascending\n    sortingOrder: \"asc\",\n    ...options\n  };\n  const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n  const identifiers2 = [\n    // 1: Sort favorites first if enabled\n    ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n    // 2: Sort folders first if sorting by name\n    ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n    // 3: Use sorting mode if NOT basename (to be able to use display name too)\n    ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode] ?? v.attributes[sortingOptions.sortingMode]] : [],\n    // 4: Use display name if available, fallback to name\n    (v) => basename2(v.displayname || v.attributes?.displayname || v.basename || \"\"),\n    // 5: Finally, use basename if all previous sorting methods failed\n    (v) => v.basename\n  ];\n  const orders = [\n    // (for 1): always sort favorites before normal files\n    ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n    // (for 2): always sort folders before files\n    ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n    // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n    ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n    // (also for 3 so make sure not to conflict with 2 and 3)\n    ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n    // for 4: use configured sorting direction\n    sortingOptions.sortingOrder,\n    // for 5: use configured sorting direction\n    sortingOptions.sortingOrder\n  ];\n  return orderBy(nodes, identifiers2, orders);\n}\nexport {\n  Column,\n  DefaultType,\n  q as File,\n  FileAction,\n  FileListAction,\n  FileListFilter,\n  F as FileType,\n  FilesSortingMode,\n  s as Folder,\n  Header,\n  InvalidFilenameError,\n  InvalidFilenameErrorReason,\n  Navigation,\n  NewMenuEntryCategory,\n  N as Node,\n  t as NodeStatus,\n  P as Permission,\n  View,\n  addNewFileMenuEntry,\n  c as davGetClient,\n  l as davGetDefaultPropfind,\n  m as davGetFavoritesReport,\n  n as davGetRecentSearch,\n  a as davGetRemoteURL,\n  g as davGetRootPath,\n  p as davParsePermissions,\n  b as davRemoteURL,\n  r as davResultToNode,\n  d as davRootPath,\n  h as defaultDavNamespaces,\n  f as defaultDavProperties,\n  formatFileSize,\n  k as getDavNameSpaces,\n  j as getDavProperties,\n  e as getFavoriteNodes,\n  getFileActions,\n  getFileListActions,\n  getFileListFilters,\n  getFileListHeaders,\n  getNavigation,\n  getNewFileMenu,\n  getNewFileMenuEntries,\n  getUniqueName,\n  isFilenameValid,\n  orderBy,\n  parseFileSize,\n  i as registerDavProperty,\n  registerFileAction,\n  registerFileListAction,\n  registerFileListFilter,\n  registerFileListHeaders,\n  removeNewFileMenuEntry,\n  sortNodes,\n  unregisterFileListFilter,\n  validateFilename\n};\n//# sourceMappingURL=index.mjs.map\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.widget-file[data-v-f5ca5316]{display:flex;flex-grow:1;color:var(--color-main-text) !important;text-decoration:none !important;padding:0 !important}.widget-file__image[data-v-f5ca5316]{width:30%;min-width:160px;max-width:320px;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-file__image--icon[data-v-f5ca5316]{min-width:88px;max-width:88px;padding:12px;padding-inline-end:0;display:flex;align-items:center;justify-content:center}.widget-file__title[data-v-f5ca5316]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:bold}.widget-file__details[data-v-f5ca5316]{padding:12px;flex-grow:1;display:flex;flex-direction:column}.widget-file__details p[data-v-f5ca5316]{margin:0;padding:0}.widget-file__description[data-v-f5ca5316]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-file--link[data-v-f5ca5316]{color:var(--color-text-maxcontrast)}.widget-file--interactive[data-v-f5ca5316]{position:relative;height:400px;max-height:50vh;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/ReferenceFileWidget.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CACA,WAAA,CACA,uCAAA,CACA,+BAAA,CACA,oBAAA,CAEA,qCACC,SAAA,CACA,eAAA,CACA,eAAA,CACA,0BAAA,CACA,qBAAA,CACA,2BAAA,CAEA,2CACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAIF,qCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,gBAAA,CAGD,uCACC,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,yCACC,QAAA,CACA,SAAA,CAIF,2CACC,eAAA,CACA,sBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CACA,2BAAA,CAID,oCACC,mCAAA,CAGD,2CACC,iBAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.widget-file {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tcolor: var(--color-main-text) !important;\\n\\ttext-decoration: none !important;\\n\\tpadding: 0 !important;\\n\\n\\t&__image {\\n\\t\\twidth: 30%;\\n\\t\\tmin-width: 160px;\\n\\t\\tmax-width: 320px;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-repeat: no-repeat;\\n\\n\\t\\t&--icon {\\n\\t\\t\\tmin-width: 88px;\\n\\t\\t\\tmax-width: 88px;\\n\\t\\t\\tpadding: 12px;\\n\\t\\t\\tpadding-inline-end: 0;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\twhite-space: nowrap;\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t&__details {\\n\\t\\tpadding: 12px;\\n\\t\\tflex-grow: 1;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__description {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tdisplay: -webkit-box;\\n\\t\\t-webkit-line-clamp: 3;\\n\\t\\tline-clamp: 3;\\n\\t\\t-webkit-box-orient: vertical;\\n\\t}\\n\\n\\t// No preview, standard link to ressource\\n\\t&--link {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&--interactive {\\n\\t\\tposition: relative;\\n\\t\\theight: 400px;\\n\\t\\tmax-height: 50vh;\\n\\t\\tmargin: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import '../assets/referencePickerModal-Ba6soz9w.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, B as t40, _ as t29, n as t17, $ as t11 } from \"./_l10n-DIOHNc85.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-DmIaznJY.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-Cd_RjGj6.mjs\";\nimport { D as DotsHorizontal } from \"./DotsHorizontal-C6LNsw4N.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: DotsHorizontal,\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  \"c66449c1\"\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-sscttPbK.mjs.map\n","import { defineAsyncComponent } from \"vue\";\nconst FilePickerVue = defineAsyncComponent(() => import(\"./FilePicker-CsU6FfAP.mjs\"));\nexport {\n  FilePickerVue\n};\n//# sourceMappingURL=index-BC-7VPxC.mjs.map\n","import '../assets/NcRichText-CWVHZl8s.css';\nimport { ref } from \"vue\";\nimport { N as NcReferenceWidget } from \"./referencePickerModal-sscttPbK.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-BIEYfWtF.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-BWY0OxW9.mjs.map\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.accessible)?_c('div',{staticClass:\"widget-file widget-file--no-access\"},[_c('span',{staticClass:\"widget-file__image widget-file__image--icon\"},[(_vm.isFolder)?_c('FolderIcon',{attrs:{\"size\":88}}):_c('FileIcon',{attrs:{\"size\":88}})],1),_vm._v(\" \"),_c('span',{staticClass:\"widget-file__details\"},[_c('p',{staticClass:\"widget-file__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'File cannot be accessed'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file__description\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'The file could not be found or you do not have permissions to view it. Ask the sender to share it.'))+\"\\n\\t\\t\")])])]):(_vm.interactive && _vm.viewerHandler && !_vm.failedViewer)?_c(_vm.viewerHandler.component,_vm._b({tag:\"component\",staticClass:\"widget-file widget-file--interactive\",attrs:{\"active\":false /* prevent video from autoplaying */,\"can-swipe\":false,\"can-zoom\":false,\"is-embedded\":true,\"file-list\":[_vm.viewerFile],\"is-full-screen\":false,\"is-sidebar-shown\":false},on:{\"error\":function($event){_vm.failedViewer = true}}},'component',_vm.viewerFile,false)):_c('a',{staticClass:\"widget-file widget-file--link\",attrs:{\"href\":_vm.richObject.link,\"target\":\"_blank\"},on:{\"click\":_vm.navigate}},[_c('span',{staticClass:\"widget-file__image\",class:_vm.filePreviewClass,style:(_vm.filePreviewStyle)},[(!_vm.previewUrl)?[(_vm.isFolder)?_c('FolderIcon',{attrs:{\"size\":88,\"fill-color\":\"var(--color-primary-element)\"}}):_c('FileIcon',{attrs:{\"size\":88}})]:_vm._e()],2),_vm._v(\" \"),_c('span',{staticClass:\"widget-file__details\"},[_c('p',{staticClass:\"widget-file__title\"},[_vm._v(_vm._s(_vm.richObject.name))]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file__description\"},[_vm._v(_vm._s(_vm.fileSize)),_c('br'),_vm._v(_vm._s(_vm.fileMtime))]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file__link\"},[_vm._v(_vm._s(_vm.filePath))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.vue?vue&type=style&index=0&id=f5ca5316&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.vue?vue&type=style&index=0&id=f5ca5316&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ReferenceFileWidget.vue?vue&type=template&id=f5ca5316&scoped=true\"\nimport script from \"./ReferenceFileWidget.vue?vue&type=script&lang=ts\"\nexport * from \"./ReferenceFileWidget.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ReferenceFileWidget.vue?vue&type=style&index=0&id=f5ca5316&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"f5ca5316\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":_vm.containerId}},[_c('FilePicker',_vm._b({on:{\"close\":_vm.onClose}},'FilePicker',_vm.filepickerOptions,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileReferencePickerElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileReferencePickerElement.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileReferencePickerElement.vue?vue&type=template&id=444a075a\"\nimport script from \"./FileReferencePickerElement.vue?vue&type=script&lang=ts\"\nexport * from \"./FileReferencePickerElement.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport { t } from '@nextcloud/l10n';\nimport { registerWidget, registerCustomPickerElement, NcCustomPickerRenderResult } from '@nextcloud/vue/components/NcRichText';\nimport FileWidget from './views/ReferenceFileWidget.vue';\nimport FileReferencePickerElement from './views/FileReferencePickerElement.vue';\nVue.mixin({\n    methods: {\n        t,\n    },\n});\nregisterWidget('file', (el, { richObjectType, richObject, accessible, interactive }) => {\n    const Widget = Vue.extend(FileWidget);\n    new Widget({\n        propsData: {\n            richObjectType,\n            richObject,\n            accessible,\n            interactive,\n        },\n    }).$mount(el);\n}, () => { }, { hasInteractiveView: true });\nregisterCustomPickerElement('files', (el, { providerId, accessible }) => {\n    const Element = Vue.extend(FileReferencePickerElement);\n    const vueElement = new Element({\n        propsData: {\n            providerId,\n            accessible,\n        },\n    }).$mount(el);\n    return new NcCustomPickerRenderResult(vueElement.$el, vueElement);\n}, (el, renderResult) => {\n    renderResult.object.$destroy();\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"640\":\"b2fa23a809053c6305c5\",\"5771\":\"a4e2a98efcfb7393c5bd\",\"5810\":\"e0ecfcd31fb108c51bfd\",\"5862\":\"142cd48ca8ec32e57725\",\"7432\":\"1f201e1e5efef3bbb343\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 54;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t54: 0,\n\t640: 0,\n\t1820: 0,\n\t5810: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(75673)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","debug","process","env","NODE_DEBUG","test","args","console","error","requireConstants","MAX_SAFE_INTEGER","Number","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","exports","requireSemver","safeRe","re2","t","t2","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","name","value","isGlobal","safe","token","max","split","join","makeSafeRegex","index","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","Object","freeze","loose","emptyOpts","options","requireParseOptions","compareIdentifiers","numeric","a2","b2","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","constructor","version","includePrerelease","TypeError","length","this","m2","trim","match","LOOSE","FULL","raw","major","minor","patch","prerelease","map","id","num","build","format","toString","compare","other","compareMain","comparePre","i2","compareBuild","inc","release","identifier","identifierBase","base","Error","push","isNaN","parse","throwErrors","er","requireParse","v","requireValid","requireMajor","hasRequiredSax","sax2","parser","strict","opt","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","Stream","buffers","l2","clearBuffers","q","c","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closed","closedRoot","sawRoot","tag","noscript","state","S","BEGIN","strictEntities","ENTITIES","create","XML_ENTITIES","attribList","xmlns","ns","rootNS","unquotedAttributeValues","trackPosition","position","line","column","emit2","EVENTS","o","F2","prototype","keys","hasOwnProperty","end","write","chunk","c2","charAt","BEGIN_WHITESPACE","beginWhiteSpace","TEXT","starti","textNode","substring","isWhitespace","strictFail","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT","SCRIPT_ENDING","script","CLOSE_TAG","SGML_DECL","sgmlDecl","isMatch","nameStart","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","pad","Array","COMMENT","comment","doctype","DOCTYPE_DTD","toUpperCase","CDATA","emitNode","cdata","DOCTYPE","isQuote","SGML_DECL_QUOTED","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","body","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","closeTag","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","attributes","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","isAttribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","notMatch","returnState","buffer","parsedEntity","parseEntity","unparsedEntities","values","includes","entity","entityBody","entityStart","maxAllowed","Math","maxActual","len","closeText","checkBufferLength","resume","close","flush","require","ex","streamWraps","filter","ev","apply","_parser","writable","readable","me","onend","emit","onerror","_decoder","forEach","defineProperty","get","set","h2","removeAllListeners","on","enumerable","configurable","data","Buffer","isBuffer","SD","handler","indexOf","arguments","splice","call","XML_NAMESPACE","XMLNS_NAMESPACE","xml","regex","stringFromCharCode","floor","fromCodePoint","s2","STATE","COMMENT_STARTING","key","e2","s3","String","fromCharCode","event","nodeType","text","normalize","replace","message","parent","qname","attribute","qualName","prefix","local","qn","selfClosing","uri","JSON","stringify","p2","nv","isSelfClosing","toLowerCase","closeTo","pop","x","n2","entityLC","numStr","slice","parseInt","result","highSurrogate","lowSurrogate","codeUnits","codePoint","isFinite","RangeError","InvalidFilenameErrorReason","InvalidFilenameErrorReason2","InvalidFilenameError","super","reason","segment","filename","cause","validateFilename","capabilities","files","forbiddenCharacters","forbidden_filename_characters","window","_oc_config","forbidden_filenames_characters","character","toLocaleLowerCase","forbidden_filenames","endOfBasename","basename2","forbidden_filename_basenames","forbiddenFilenameExtensions","forbidden_filename_extensions","extension","endsWith","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","order","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","sorting","_","collator","Intl","Collator","usage","sort","entries","orderBy","sortFavoritesFirst","favorite","sortFoldersFirst","type","displayname","basename","lastIndexOf","___CSS_LOADER_EXPORT___","r","_sfc_main$8","components","NcButton","props","reference","required","interactive","Boolean","default","interactiveOptIn","setup","isVisible","widgetRoot","width","entry","isIntersecting","showInteractive","rendered","idleTimeout","computed","isInteractive","hasFullWidth","richObjectType","hasCustomWidget","i","hasInteractiveView","h","noAccess","accessible","descriptionStyle","numberOfLines","display","lineClamp","webkitLineClamp","Infinity","findIndex","compactLink","link","openGraphObject","startsWith","route","g","$router","referenceWidgetLinkComponent","referenceWidgetLinkProps","to","href","target","watch","val","clearTimeout","renderWidget","setTimeout","destroyWidget","immediate","beforeDestroy","methods","enableInteractive","$refs","customWidget","innerHTML","widget","document","createElement","style","appendChild","$nextTick","$el","_sfc_render$8","_vm","_c","_self","ref","class","staticClass","_b","attrs","thumb","_e","_v","_s","description","_sfc_staticRenderFns$8","NcReferenceWidget","n","_sfc_main$7","provider","emits","isRegistered","renderResult","mounted","renderElement","domElement","renderFunctionResult","providerId","Promise","resolve","then","object","_isVue","$on","onSubmit","onCancel","element","addEventListener","e","detail","$emit","_sfc_render$7","_sfc_staticRenderFns$7","NcCustomPickerElement","anyLinkProvider","title","icon_url","searchProvider","query","limit","providers","_vue_richtext_reference_providers","p","keep","search_providers_ids","escapedQuery","regexp","filteredSortedProviders","providerList","timestamps","_vue_richtext_reference_provider_timestamps","a","b","ta","tb","sortProviders","searchResult","mytimer","delay","callback","ms","context","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","loading","_sfc_render$5","scopedSlots","_u","fn","option","model","$$v","expression","proxy","_sfc_staticRenderFns$5","NcProviderList","_sfc_main$4","NcLoadingIcon","NcTextField","inputValue","abortController","inputPlaceholder","isLinkValid","getElementsByTagName","onClear","onInput","abort","updateReference","AbortController","encodeURIComponent","signal","response","ocs","references","catch","_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","D","showEmptyContent","searchPlaceholder","searchQuery","selectedResult","resultsBySearchProvider","searching","searchingMoreOf","noOptionsText","mySearchPlaceholder","searchProviderIds","rawLinkEntry","formattedSearchResults","resourceUrl","isRawLink","results","pid","isCustomGroupTitle","providerEntriesWithId","isPaginated","isMore","isLoading","resetResults","cancelSearchRequests","onSearchInput","updateSearch","onSelectResultSelected","item","searchMoreOf","searchProviderId","searchProviders","searchPromises","searchOneProvider","cursor","allSettled","promises","find","status","code","url","term","_sfc_render$2","_sfc_staticRenderFns$2","NcSearch","MODES","standardLinkInput","searchInput","customElement","_sfc_main$1","initialProvider","focusOnCreate","mode","pickerWrapperStyle","onEscapePressed","deselectProvider","cancelProviderSelection","cancelCustomElement","cancelSearch","cancelRawLinkInput","submitLink","timestamp","now","params","put","touchProvider","_sfc_render$1","stopPropagation","preventDefault","_sfc_staticRenderFns$1","NcReferencePicker","_sfc_main","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","FilePickerVue","referenceData","displayFallback","displayedReferences","fallbackReference","firstReference","fetch","U","exec","isPublic","post","sharingToken","_l","NcReferenceList","remarkPlaceholder","ast","node2","placeholders","index2","list2","matches","u","component","children","remarkUnescape","tree","ccount","source","count","asciiAlpha","regexCheck","asciiAlphanumeric","markdownLineEnding","code2","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","convert","ok","castFactory","isArray","tests","checks","parameters","anyFactory","check","checkAsRecord","nodeAsRecord","propsFactory","testFunction","looksLikeANode","empty","CONTINUE","EXIT","SKIP","visitParents","visitor","reverse","is","factory","parents","visit2","subresult","offset","grandparents","toResult","nodeAsParent","concat","child","toFunction","replace2","inConstruct","notInConstruct","enterLiteralAutolink","enter","enterLiteralAutolinkValue","config","autolinkProtocol","exitLiteralAutolinkHttp","exit","exitLiteralAutolinkWww","stack","sliceSerialize","exitLiteralAutolinkEmail","autolinkEmail","exitLiteralAutolink","transformGfmAutolinkLiterals","ignored","ignore","pairs","tupleOrList","tuple","string","escapeStringRegexp","toPairs","pairIndex","grandparent","siblings","start","change","lastIndex","matchObject","input","global","findAndReplace","findUrl","findEmail","protocol","domain2","path2","previous","parts","isCorrectDomain","trailExec","trail2","closingParenIndex","openingParens","closingParens","splitUrl","atext","label","email","charCodeAt","normalizeIdentifier","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","footnoteReference","info","tracker","createTracker","move","exit2","subexit","associationId","current","before","after","footnoteDefinition","shift","indentLines","containerFlow","map$2","blank","peek","constructsWithoutStrikethrough","enterStrikethrough","exitStrikethrough","handleDelete","containerPhrasing","defaultStringLength","toAlignment","codePointAt","map$1","listInScope","none","hardBreak","_1","unsafe","pattern","checkQuote","marker","quote","emphasis","checkEmphasis","emptyOptions$1","settings","one","includeImageAlt","includeHtml","node","alt","all","html","image","suffix","imageReference","referenceType","inlineCode","sequence","compilePattern","atBreak","formatLinkAsAutolink","resourceLink","value2","linkReference","text2","checkBullet","bullet","checkRule","rule","phrasing","strong","checkStrong","handle","blockquote","break","fence","checkFence","fences","lang","formatCodeAsIndented","exit3","repeat","expected","longestStreak","encode","meta","definition","heading","rank","depth","literalWithBreak","node3","setext","formatHeadingAsSetext","subexit2","closeAtx","list","bulletCurrent","ordered","bulletOrdered","checkBulletOrdered","bulletOther","checkBulletOther","useDifferentMarker","bulletLastUsed","firstListItem","indexStack","listItem","listItemIndent","checkListItemIndent","incrementListMarker","spread","ceil","paragraph","root","some","d","thematicBreak","ruleSpaces","repetition","ruleRepetition","checkRuleRepetition","enterTable","align","_align","inTable","exitTable","enterRow","enterCell","exitCodeText","$0","$1","gfmTableToMarkdown","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","assign","listItemWithTaskListItem","checkable","checkbox","remove","items","chunkStart","from","unshift","syntaxExtension","all2","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","protocolPrefixInside","protocolSlashesInside","afterProtocol","asciiControl","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","emailDomain","emailDomainAfter","emailDomainDot","_balanced","_gfmAutolinkLiteralWalkedInto","classifyCharacter","resolveAll","constructs2","called","factorySpace","POSITIVE_INFINITY","blankLine","indent","tail","tokenizePotentialGfmFootnoteCall","defined","gfmFootnotes","labelStart","resolveToPotentialGfmFootnoteCall","_bufferIndex","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","editMap","at","addImpl","vecs","gfmTableAlign","inDelimiterRow","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","spaceThenNonSpace","emptyOptions","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","extensions","combineExtensions","continuation","resolveTo","flow","gfm","transforms","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","canContainEols","tableData","tableHeader","codeText","taskListCheckValueChecked","taskListCheckValueUnchecked","delete","gfmToMarkdown","LINK_PROTOCOLS","rehypeHighlight","referenceLimit","referenceInteractive","referenceInteractiveOptIn","useMarkdown","useExtendedMarkdown","autolink","parentId","G","renderPlaintext","componentClass","prepareTextNode","argumentId","argument","flat","renderMarkdown","renderedMarkdown","use","except","toHast","rel","async","importRehypeHighlightLibrary","nestedNode","inputNode","labelParts","nestedNodeIndex","inputComponent","N","disabled","placeholder","processSync","render","defineComponent","FolderIcon","FileIcon","richObject","previewUrl","failedViewer","availableViewerHandlers","OCA","Viewer","availableHandlers","viewerHandler","mimes","mimetype","viewerFile","davSource","generateRemoteUrl","getCurrentUser","uid","lastmod","mtime","mime","fileid","failed","loaded","davPath","fileSize","OC","Util","humanFileSize","fileMtime","relativeModifiedDate","filePath","filePreviewStyle","backgroundImage","filePreviewClass","isFolder","generateUrl","fileId","img","Image","onload","err","navigate","openFilePicker","mimetypes","file","getFilePickerBuilder","allowDirectories","setMultiSelect","addButton","disableNavigation","startAt","pick","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","FilePicker","containerId","random","filepickerOptions","allowPickDirectory","buttons","buttonFactory","container","multiselect","selected","onClose","undefined","location","pathname","search","Vue","mixin","registerWidget","el","_ref","extend","FileWidget","propsData","$mount","registerCustomPickerElement","_ref2","vueElement","FileReferencePickerElement","NcCustomPickerRenderResult","$destroy","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","every","getter","__esModule","f","chunkId","reduce","globalThis","Function","obj","prop","l","done","needAttach","scripts","s","getAttribute","charset","timeout","nc","setAttribute","onScriptComplete","prev","doneFns","parentNode","removeChild","bind","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}