{"version":3,"file":"utils.mjs","sources":["../../../../../../node_modules/markdown-it/lib/common/utils.mjs"],"sourcesContent":["// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n  return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n  const sources = Array.prototype.slice.call(arguments, 1)\n\n  sources.forEach(function (source) {\n    if (!source) { return }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be object')\n    }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key]\n    })\n  })\n\n  return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n  return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n  /* eslint no-bitwise:0 */\n  // broken sequence\n  if (c >= 0xD800 && c <= 0xDFFF) { return false }\n  // never used\n  if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n  if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n  // control codes\n  if (c >= 0x00 && c <= 0x08) { return false }\n  if (c === 0x0B) { return false }\n  if (c >= 0x0E && c <= 0x1F) { return false }\n  if (c >= 0x7F && c <= 0x9F) { return false }\n  // out of range\n  if (c > 0x10FFFF) { return false }\n  return true\n}\n\nfunction fromCodePoint (c) {\n  /* eslint no-bitwise:0 */\n  if (c > 0xffff) {\n    c -= 0x10000\n    const surrogate1 = 0xd800 + (c >> 10)\n    const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n    return String.fromCharCode(surrogate1, surrogate2)\n  }\n  return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE  = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE       = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n  if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n    const code = name[1].toLowerCase() === 'x'\n      ? parseInt(name.slice(2), 16)\n      : parseInt(name.slice(1), 10)\n\n    if (isValidEntityCode(code)) {\n      return fromCodePoint(code)\n    }\n\n    return match\n  }\n\n  const decoded = decodeHTML(match)\n  if (decoded !== match) {\n    return decoded\n  }\n\n  return match\n}\n\n/* function replaceEntities(str) {\n  if (str.indexOf('&') < 0) { return str; }\n\n  return str.replace(ENTITY_RE, replaceEntityPattern);\n} */\n\nfunction unescapeMd (str) {\n  if (str.indexOf('\\\\') < 0) { return str }\n  return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n  if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n  return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n    if (escaped) { return escaped }\n    return replaceEntityPattern(match, entity)\n  })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;'\n}\n\nfunction replaceUnsafeChar (ch) {\n  return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n  }\n  return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n  return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n  switch (code) {\n    case 0x09:\n    case 0x20:\n      return true\n  }\n  return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n  if (code >= 0x2000 && code <= 0x200A) { return true }\n  switch (code) {\n    case 0x09: // \\t\n    case 0x0A: // \\n\n    case 0x0B: // \\v\n    case 0x0C: // \\f\n    case 0x0D: // \\r\n    case 0x20:\n    case 0xA0:\n    case 0x1680:\n    case 0x202F:\n    case 0x205F:\n    case 0x3000:\n      return true\n  }\n  return false\n}\n\n/* eslint-disable max-len */\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n  return ucmicro.P.test(ch) || ucmicro.S.test(ch)\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n  switch (ch) {\n    case 0x21/* ! */:\n    case 0x22/* \" */:\n    case 0x23/* # */:\n    case 0x24/* $ */:\n    case 0x25/* % */:\n    case 0x26/* & */:\n    case 0x27/* ' */:\n    case 0x28/* ( */:\n    case 0x29/* ) */:\n    case 0x2A/* * */:\n    case 0x2B/* + */:\n    case 0x2C/* , */:\n    case 0x2D/* - */:\n    case 0x2E/* . */:\n    case 0x2F/* / */:\n    case 0x3A/* : */:\n    case 0x3B/* ; */:\n    case 0x3C/* < */:\n    case 0x3D/* = */:\n    case 0x3E/* > */:\n    case 0x3F/* ? */:\n    case 0x40/* @ */:\n    case 0x5B/* [ */:\n    case 0x5C/* \\ */:\n    case 0x5D/* ] */:\n    case 0x5E/* ^ */:\n    case 0x5F/* _ */:\n    case 0x60/* ` */:\n    case 0x7B/* { */:\n    case 0x7C/* | */:\n    case 0x7D/* } */:\n    case 0x7E/* ~ */:\n      return true\n    default:\n      return false\n  }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n  // Trim and collapse whitespace\n  //\n  str = str.trim().replace(/\\s+/g, ' ')\n\n  // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n  // fixed in v12 (couldn't find any details).\n  //\n  // So treat this one as a special case\n  // (remove this when node v10 is no longer supported).\n  //\n  if ('ẞ'.toLowerCase() === 'Ṿ') {\n    str = str.replace(/ẞ/g, 'ß')\n  }\n\n  // .toLowerCase().toUpperCase() should get rid of all differences\n  // between letter variants.\n  //\n  // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n  // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n  // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n  // uppercased versions).\n  //\n  // Here's an example showing how it happens. Lets take greek letter omega:\n  // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n  //\n  // Unicode entries:\n  // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n  // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n  // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n  // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n  //\n  // Case-insensitive comparison should treat all of them as equivalent.\n  //\n  // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n  // and .toUpperCase() doesn't change ϴ (already uppercase).\n  //\n  // Applying first lower then upper case normalizes any character:\n  // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n  //\n  // Note: this is equivalent to unicode case folding; unicode normalization\n  // is a different step that is not required here.\n  //\n  // Final result should be uppercased, because it's later stored in an object\n  // (this avoid a conflict with Object.prototype members,\n  // most notably, `__proto__`)\n  //\n  return str.toLowerCase().toUpperCase()\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n  lib,\n  assign,\n  isString,\n  has,\n  unescapeMd,\n  unescapeAll,\n  isValidEntityCode,\n  fromCodePoint,\n  escapeHtml,\n  arrayReplaceAt,\n  isSpace,\n  isWhiteSpace,\n  isMdAsciiPunct,\n  isPunctChar,\n  escapeRE,\n  normalizeReference\n}\n"],"names":["_class","obj","isString","_hasOwnProperty","has","object","key","assign","source","arrayReplaceAt","src","pos","newElements","isValidEntityCode","c","fromCodePoint","surrogate1","surrogate2","UNESCAPE_MD_RE","ENTITY_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","replaceEntityPattern","match","name","code","decoded","decodeHTML","unescapeMd","str","unescapeAll","escaped","entity","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","ch","escapeHtml","REGEXP_ESCAPE_RE","escapeRE","isSpace","isWhiteSpace","isPunctChar","ucmicro.P","ucmicro.S","isMdAsciiPunct","normalizeReference","lib","mdurl","ucmicro"],"mappings":"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","x_google_ignoreList":[0]}