{"version":3,"file":"markdownItAnchor.mjs","sources":["../permalink.js","../index.js"],"sourcesContent":["let emittedWarning = false\n\nconst position = {\n  false: 'push',\n  true: 'unshift',\n  after: 'push',\n  before: 'unshift'\n}\n\nconst permalinkSymbolMeta = {\n  isPermalinkSymbol: true\n}\n\nexport function legacy (slug, opts, state, idx) {\n  if (!emittedWarning) {\n    const warningText = 'Using deprecated markdown-it-anchor permalink option, see https://github.com/valeriangalliat/markdown-it-anchor#permalinks'\n\n    if (typeof process === 'object' && process && process.emitWarning) {\n      process.emitWarning(warningText)\n    } else {\n      console.warn(warningText)\n    }\n\n    emittedWarning = true\n  }\n\n  const linkTokens = [\n    Object.assign(new state.Token('link_open', 'a', 1), {\n      attrs: [\n        ...(opts.permalinkClass ? [['class', opts.permalinkClass]] : []),\n        ['href', opts.permalinkHref(slug, state)],\n        ...Object.entries(opts.permalinkAttrs(slug, state))\n      ]\n    }),\n    Object.assign(new state.Token('html_block', '', 0), { content: opts.permalinkSymbol, meta: permalinkSymbolMeta }),\n    new state.Token('link_close', 'a', -1)\n  ]\n\n  if (opts.permalinkSpace) {\n    state.tokens[idx + 1].children[position[opts.permalinkBefore]](Object.assign(new state.Token('text', '', 0), { content: ' ' }))\n  }\n\n  state.tokens[idx + 1].children[position[opts.permalinkBefore]](...linkTokens)\n}\n\nexport function renderHref (slug) {\n  return `#${slug}`\n}\n\nexport function renderAttrs (slug) {\n  return {}\n}\n\nconst commonDefaults = {\n  class: 'header-anchor',\n  symbol: '#',\n  renderHref,\n  renderAttrs\n}\n\nexport function makePermalink (renderPermalinkImpl) {\n  function renderPermalink (opts) {\n    opts = Object.assign({}, renderPermalink.defaults, opts)\n\n    return (slug, anchorOpts, state, idx) => {\n      return renderPermalinkImpl(slug, opts, anchorOpts, state, idx)\n    }\n  }\n\n  renderPermalink.defaults = Object.assign({}, commonDefaults)\n  renderPermalink.renderPermalinkImpl = renderPermalinkImpl\n\n  return renderPermalink\n}\n\nfunction mergeDuplicateClassAttrs(attrs) {\n  const classValues = [];\n  const mergedAttrs = attrs.filter(([key, value]) => {\n      if (key !== 'class') {\n        return true;\n      }\n      classValues.push(value);\n  });\n\n  if (classValues.length > 0) {\n      mergedAttrs.unshift(['class', classValues.join(' ')]);\n  }\n\n  return mergedAttrs;\n}\n\nexport const linkInsideHeader = makePermalink((slug, opts, anchorOpts, state, idx) => {\n  const linkTokens = [\n    Object.assign(new state.Token('link_open', 'a', 1), {\n      attrs: mergeDuplicateClassAttrs([\n        ...(opts.class ? [['class', opts.class]] : []),\n        ['href', opts.renderHref(slug, state)],\n        ...(opts.ariaHidden ? [['aria-hidden', 'true']] : []),\n        ...Object.entries(opts.renderAttrs(slug, state))\n      ])\n    }),\n    Object.assign(new state.Token('html_inline', '', 0), { content: opts.symbol, meta: permalinkSymbolMeta }),\n    new state.Token('link_close', 'a', -1)\n  ]\n\n  if (opts.space) {\n    const space = typeof opts.space === 'string' ? opts.space : ' '\n    const type = typeof opts.space === 'string' ? 'html_inline' : 'text'\n    state.tokens[idx + 1].children[position[opts.placement]](Object.assign(new state.Token(type, '', 0), { content: space }))\n  }\n\n  state.tokens[idx + 1].children[position[opts.placement]](...linkTokens)\n})\n\nObject.assign(linkInsideHeader.defaults, {\n  space: true,\n  placement: 'after',\n  ariaHidden: false\n})\n\nexport const ariaHidden = makePermalink(linkInsideHeader.renderPermalinkImpl)\n\nariaHidden.defaults = Object.assign({}, linkInsideHeader.defaults, {\n  ariaHidden: true\n})\n\nexport const headerLink = makePermalink((slug, opts, anchorOpts, state, idx) => {\n  const linkTokens = [\n    Object.assign(new state.Token('link_open', 'a', 1), {\n      attrs: mergeDuplicateClassAttrs([\n        ...(opts.class ? [['class', opts.class]] : []),\n        ['href', opts.renderHref(slug, state)],\n        ...Object.entries(opts.renderAttrs(slug, state))\n      ])\n    }),\n    ...(opts.safariReaderFix ? [new state.Token('span_open', 'span', 1)] : []),\n    ...state.tokens[idx + 1].children,\n    ...(opts.safariReaderFix ? [new state.Token('span_close', 'span', -1)] : []),\n    new state.Token('link_close', 'a', -1)\n  ]\n\n  state.tokens[idx + 1].children = linkTokens\n})\n\nObject.assign(headerLink.defaults, {\n  safariReaderFix: false\n})\n\nexport const linkAfterHeader = makePermalink((slug, opts, anchorOpts, state, idx) => {\n  if (!['visually-hidden', 'aria-label', 'aria-describedby', 'aria-labelledby'].includes(opts.style)) {\n    throw new Error(`\\`permalink.linkAfterHeader\\` called with unknown style option \\`${opts.style}\\``)\n  }\n\n  if (!['aria-describedby', 'aria-labelledby'].includes(opts.style) && !opts.assistiveText) {\n    throw new Error(`\\`permalink.linkAfterHeader\\` called without the \\`assistiveText\\` option in \\`${opts.style}\\` style`)\n  }\n\n  if (opts.style === 'visually-hidden' && !opts.visuallyHiddenClass) {\n    throw new Error('`permalink.linkAfterHeader` called without the `visuallyHiddenClass` option in `visually-hidden` style')\n  }\n\n  const title = state.tokens[idx + 1]\n    .children\n    .filter(token => token.type === 'text' || token.type === 'code_inline')\n    .reduce((acc, t) => acc + t.content, '')\n\n  const subLinkTokens = []\n  const linkAttrs = []\n\n  if (opts.class) {\n    linkAttrs.push(['class', opts.class])\n  }\n\n  linkAttrs.push(['href', opts.renderHref(slug, state)])\n  linkAttrs.push(...Object.entries(opts.renderAttrs(slug, state)))\n\n  if (opts.style === 'visually-hidden') {\n    subLinkTokens.push(\n      Object.assign(new state.Token('span_open', 'span', 1), {\n        attrs: [['class', opts.visuallyHiddenClass]],\n      }),\n      Object.assign(new state.Token('text', '', 0), {\n        content: opts.assistiveText(title)\n      }),\n      new state.Token('span_close', 'span', -1)\n    )\n\n    if (opts.space) {\n      const space = typeof opts.space === 'string' ? opts.space : ' '\n      const type = typeof opts.space === 'string' ? 'html_inline' : 'text'\n      subLinkTokens[position[opts.placement]](Object.assign(new state.Token(type, '', 0), { content: space }))\n    }\n\n    subLinkTokens[position[opts.placement]](\n      Object.assign(new state.Token('span_open', 'span', 1), {\n        attrs: [['aria-hidden', 'true']],\n      }),\n      Object.assign(new state.Token('html_inline', '', 0), {\n        content: opts.symbol,\n        meta: permalinkSymbolMeta\n      }),\n      new state.Token('span_close', 'span', -1)\n    )\n  } else {\n    subLinkTokens.push(\n      Object.assign(new state.Token('html_inline', '', 0), {\n        content: opts.symbol,\n        meta: permalinkSymbolMeta\n      })\n    )\n  }\n\n  if (opts.style === 'aria-label') {\n    linkAttrs.push(['aria-label', opts.assistiveText(title)])\n  } else if (['aria-describedby', 'aria-labelledby'].includes(opts.style)) {\n    linkAttrs.push([opts.style, slug])\n  }\n\n  const linkTokens = [\n    Object.assign(new state.Token('link_open', 'a', 1), {\n      attrs:  mergeDuplicateClassAttrs(linkAttrs)\n    }),\n    ...subLinkTokens,\n    new state.Token('link_close', 'a', -1),\n  ]\n\n  state.tokens.splice(idx + 3, 0, ...linkTokens)\n\n  if (opts.wrapper) {\n    state.tokens.splice(idx, 0, Object.assign(new state.Token('html_block', '', 0), {\n      content: opts.wrapper[0] + '\\n'\n    }))\n\n    state.tokens.splice(idx + 3 + linkTokens.length + 1, 0, Object.assign(new state.Token('html_block', '', 0), {\n      content: opts.wrapper[1] + '\\n'\n    }))\n  }\n})\n\nObject.assign(linkAfterHeader.defaults, {\n  style: 'visually-hidden',\n  space: true,\n  placement: 'after',\n  wrapper: null\n})\n","import * as permalink from './permalink'\n\nconst slugify = (s) => encodeURIComponent(String(s).trim().toLowerCase().replace(/\\s+/g, '-'))\n\nfunction getTokensText (tokens) {\n  return tokens\n    .filter(t => ['text', 'code_inline'].includes(t.type))\n    .map(t => t.content)\n    .join('')\n}\n\nfunction uniqueSlug (slug, slugs, failOnNonUnique, startIndex) {\n  let uniq = slug\n  let i = startIndex\n\n  if (failOnNonUnique && Object.prototype.hasOwnProperty.call(slugs, uniq)) {\n    throw new Error(`User defined \\`id\\` attribute \\`${slug}\\` is not unique. Please fix it in your Markdown to continue.`)\n  } else {\n    while (Object.prototype.hasOwnProperty.call(slugs, uniq)) {\n      uniq = `${slug}-${i}`\n      i += 1\n    }\n  }\n\n  slugs[uniq] = true\n\n  return uniq\n}\n\nconst isLevelSelectedNumber = selection => level => level >= selection\nconst isLevelSelectedArray = selection => level => selection.includes(level)\n\nfunction anchor (md, opts) {\n  opts = Object.assign({}, anchor.defaults, opts)\n\n  md.core.ruler.push('anchor', state => {\n    const slugs = {}\n    const tokens = state.tokens\n\n    const isLevelSelected = Array.isArray(opts.level)\n      ? isLevelSelectedArray(opts.level)\n      : isLevelSelectedNumber(opts.level)\n\n    for (let idx = 0; idx < tokens.length; idx++) {\n      const token = tokens[idx]\n\n      if (token.type !== 'heading_open') {\n        continue\n      }\n\n      if (!isLevelSelected(Number(token.tag.substr(1)))) {\n        continue\n      }\n\n      // Aggregate the next token children text.\n      const title = opts.getTokensText(tokens[idx + 1].children)\n\n      let slug = token.attrGet('id')\n\n      if (slug == null) {\n        if (opts.slugifyWithState) {\n          slug = opts.slugifyWithState(title, state)\n        } else {\n          slug = opts.slugify(title)\n        }\n\n        slug = uniqueSlug(slug, slugs, false, opts.uniqueSlugStartIndex)\n      } else {\n        slug = uniqueSlug(slug, slugs, true, opts.uniqueSlugStartIndex)\n      }\n\n      token.attrSet('id', slug)\n\n      if (opts.tabIndex !== false) {\n        token.attrSet('tabindex', `${opts.tabIndex}`)\n      }\n\n      if (typeof opts.permalink === 'function') {\n        opts.permalink(slug, opts, state, idx)\n      } else if (opts.permalink) {\n        opts.renderPermalink(slug, opts, state, idx)\n      } else if (opts.renderPermalink && opts.renderPermalink !== permalink.legacy) {\n        opts.renderPermalink(slug, opts, state, idx)\n      }\n\n      // A permalink renderer could modify the `tokens` array so\n      // make sure to get the up-to-date index on each iteration.\n      idx = tokens.indexOf(token)\n\n      if (opts.callback) {\n        opts.callback(token, { slug, title })\n      }\n    }\n  })\n}\n\nanchor.permalink = permalink\n\nanchor.defaults = {\n  level: 1,\n  slugify,\n  uniqueSlugStartIndex: 1,\n  tabIndex: '-1',\n  getTokensText,\n\n  // Legacy options.\n  permalink: false,\n  renderPermalink: permalink.legacy,\n  permalinkClass: permalink.ariaHidden.defaults.class,\n  permalinkSpace: permalink.ariaHidden.defaults.space,\n  permalinkSymbol: '¶',\n  permalinkBefore: permalink.ariaHidden.defaults.placement === 'before',\n  permalinkHref: permalink.ariaHidden.defaults.renderHref,\n  permalinkAttrs: permalink.ariaHidden.defaults.renderAttrs\n}\n\n// Dirty hack to make `import anchor from 'markdown-it-anchor'` work with\n// TypeScript which doesn't support the `module` field of `package.json` and\n// will always get the CommonJS version which otherwise wouldn't have a\n// `default` key, resulting in markdown-it-anchor being undefined when being\n// imported that way.\nanchor.default = anchor\n\nexport default anchor\n"],"names":["emittedWarning","position","false","true","after","before","permalinkSymbolMeta","isPermalinkSymbol","legacy","slug","opts","state","idx","_state$tokens$childre","warningText","process","emitWarning","console","warn","linkTokens","Object","assign","Token","attrs","concat","permalinkClass","permalinkHref","entries","permalinkAttrs","content","permalinkSymbol","meta","permalinkSpace","tokens","children","permalinkBefore","apply","renderHref","renderAttrs","commonDefaults","class","symbol","makePermalink","renderPermalinkImpl","renderPermalink","defaults","anchorOpts","mergeDuplicateClassAttrs","classValues","mergedAttrs","filter","_ref","value","push","length","unshift","join","linkInsideHeader","_state$tokens$childre2","ariaHidden","space","placement","headerLink","safariReaderFix","linkAfterHeader","_state$tokens","includes","style","Error","assistiveText","visuallyHiddenClass","title","token","type","reduce","acc","t","subLinkTokens","linkAttrs","splice","wrapper","uniqueSlug","slugs","failOnNonUnique","startIndex","uniq","i","prototype","hasOwnProperty","call","anchor","md","core","ruler","selection","isLevelSelected","Array","isArray","level","isLevelSelectedNumber","Number","tag","substr","getTokensText","attrGet","slugifyWithState","slugify","uniqueSlugStartIndex","attrSet","tabIndex","permalink","indexOf","callback","s","encodeURIComponent","String","trim","toLowerCase","replace","map"],"mappings":"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"}