UNPKG

vue-files-preview-inno

Version:

A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.

1 lines 19.9 kB
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/markdown-it-footnote/index.mjs"],"sourcesContent":["// Process footnotes\n//\n'use strict'\n\n/// /////////////////////////////////////////////////////////////////////////////\n// Renderer partials\n\nfunction render_footnote_anchor_name (tokens, idx, options, env/*, slf */) {\n const n = Number(tokens[idx].meta.id + 1).toString()\n let prefix = ''\n\n if (typeof env.docId === 'string') prefix = `-${env.docId}-`\n\n return prefix + n\n}\n\nfunction render_footnote_caption (tokens, idx/*, options, env, slf */) {\n let n = Number(tokens[idx].meta.id + 1).toString()\n\n if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`\n\n return `[${n}]`\n}\n\nfunction render_footnote_ref (tokens, idx, options, env, slf) {\n const id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf)\n const caption = slf.rules.footnote_caption(tokens, idx, options, env, slf)\n let refid = id\n\n if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`\n\n return `<sup class=\"footnote-ref\"><a href=\"#fn${id}\" id=\"fnref${refid}\">${caption}</a></sup>`\n}\n\nfunction render_footnote_block_open (tokens, idx, options) {\n return (options.xhtmlOut ? '<hr class=\"footnotes-sep\" />\\n' : '<hr class=\"footnotes-sep\">\\n') +\n '<section class=\"footnotes\">\\n' +\n '<ol class=\"footnotes-list\">\\n'\n}\n\nfunction render_footnote_block_close () {\n return '</ol>\\n</section>\\n'\n}\n\nfunction render_footnote_open (tokens, idx, options, env, slf) {\n let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf)\n\n if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`\n\n return `<li id=\"fn${id}\" class=\"footnote-item\">`\n}\n\nfunction render_footnote_close () {\n return '</li>\\n'\n}\n\nfunction render_footnote_anchor (tokens, idx, options, env, slf) {\n let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf)\n\n if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`\n\n /* ↩ with escape code to prevent display as Apple Emoji on iOS */\n return ` <a href=\"#fnref${id}\" class=\"footnote-backref\">\\u21a9\\uFE0E</a>`\n}\n\nexport default function footnote_plugin (md) {\n const parseLinkLabel = md.helpers.parseLinkLabel\n const isSpace = md.utils.isSpace\n\n md.renderer.rules.footnote_ref = render_footnote_ref\n md.renderer.rules.footnote_block_open = render_footnote_block_open\n md.renderer.rules.footnote_block_close = render_footnote_block_close\n md.renderer.rules.footnote_open = render_footnote_open\n md.renderer.rules.footnote_close = render_footnote_close\n md.renderer.rules.footnote_anchor = render_footnote_anchor\n\n // helpers (only used in other rules, no tokens are attached to those)\n md.renderer.rules.footnote_caption = render_footnote_caption\n md.renderer.rules.footnote_anchor_name = render_footnote_anchor_name\n\n // Process footnote block definition\n function footnote_def (state, startLine, endLine, silent) {\n const start = state.bMarks[startLine] + state.tShift[startLine]\n const max = state.eMarks[startLine]\n\n // line should be at least 5 chars - \"[^x]:\"\n if (start + 4 > max) return false\n\n if (state.src.charCodeAt(start) !== 0x5B/* [ */) return false\n if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) return false\n\n let pos\n\n for (pos = start + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x20) return false\n if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n break\n }\n }\n\n if (pos === start + 2) return false // no empty footnote labels\n if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) return false\n if (silent) return true\n pos++\n\n if (!state.env.footnotes) state.env.footnotes = {}\n if (!state.env.footnotes.refs) state.env.footnotes.refs = {}\n const label = state.src.slice(start + 2, pos - 2)\n state.env.footnotes.refs[`:${label}`] = -1\n\n const token_fref_o = new state.Token('footnote_reference_open', '', 1)\n token_fref_o.meta = { label }\n token_fref_o.level = state.level++\n state.tokens.push(token_fref_o)\n\n const oldBMark = state.bMarks[startLine]\n const oldTShift = state.tShift[startLine]\n const oldSCount = state.sCount[startLine]\n const oldParentType = state.parentType\n\n const posAfterColon = pos\n const initial = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine])\n let offset = initial\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4\n } else {\n offset++\n }\n } else {\n break\n }\n\n pos++\n }\n\n state.tShift[startLine] = pos - posAfterColon\n state.sCount[startLine] = offset - initial\n\n state.bMarks[startLine] = posAfterColon\n state.blkIndent += 4\n state.parentType = 'footnote'\n\n if (state.sCount[startLine] < state.blkIndent) {\n state.sCount[startLine] += state.blkIndent\n }\n\n state.md.block.tokenize(state, startLine, endLine, true)\n\n state.parentType = oldParentType\n state.blkIndent -= 4\n state.tShift[startLine] = oldTShift\n state.sCount[startLine] = oldSCount\n state.bMarks[startLine] = oldBMark\n\n const token_fref_c = new state.Token('footnote_reference_close', '', -1)\n token_fref_c.level = --state.level\n state.tokens.push(token_fref_c)\n\n return true\n }\n\n // Process inline footnotes (^[...])\n function footnote_inline (state, silent) {\n const max = state.posMax\n const start = state.pos\n\n if (start + 2 >= max) return false\n if (state.src.charCodeAt(start) !== 0x5E/* ^ */) return false\n if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) return false\n\n const labelStart = start + 2\n const labelEnd = parseLinkLabel(state, start + 1)\n\n // parser failed to find ']', so it's not a valid note\n if (labelEnd < 0) return false\n\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n if (!state.env.footnotes) state.env.footnotes = {}\n if (!state.env.footnotes.list) state.env.footnotes.list = []\n const footnoteId = state.env.footnotes.list.length\n const tokens = []\n\n state.md.inline.parse(\n state.src.slice(labelStart, labelEnd),\n state.md,\n state.env,\n tokens\n )\n\n const token = state.push('footnote_ref', '', 0)\n token.meta = { id: footnoteId }\n\n state.env.footnotes.list[footnoteId] = {\n content: state.src.slice(labelStart, labelEnd),\n tokens\n }\n }\n\n state.pos = labelEnd + 1\n state.posMax = max\n return true\n }\n\n // Process footnote references ([^...])\n function footnote_ref (state, silent) {\n const max = state.posMax\n const start = state.pos\n\n // should be at least 4 chars - \"[^x]\"\n if (start + 3 > max) return false\n\n if (!state.env.footnotes || !state.env.footnotes.refs) return false\n if (state.src.charCodeAt(start) !== 0x5B/* [ */) return false\n if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) return false\n\n let pos\n\n for (pos = start + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x20) return false\n if (state.src.charCodeAt(pos) === 0x0A) return false\n if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n break\n }\n }\n\n if (pos === start + 2) return false // no empty footnote labels\n if (pos >= max) return false\n pos++\n\n const label = state.src.slice(start + 2, pos - 1)\n if (typeof state.env.footnotes.refs[`:${label}`] === 'undefined') return false\n\n if (!silent) {\n if (!state.env.footnotes.list) state.env.footnotes.list = []\n\n let footnoteId\n\n if (state.env.footnotes.refs[`:${label}`] < 0) {\n footnoteId = state.env.footnotes.list.length\n state.env.footnotes.list[footnoteId] = { label, count: 0 }\n state.env.footnotes.refs[`:${label}`] = footnoteId\n } else {\n footnoteId = state.env.footnotes.refs[`:${label}`]\n }\n\n const footnoteSubId = state.env.footnotes.list[footnoteId].count\n state.env.footnotes.list[footnoteId].count++\n\n const token = state.push('footnote_ref', '', 0)\n token.meta = { id: footnoteId, subId: footnoteSubId, label }\n }\n\n state.pos = pos\n state.posMax = max\n return true\n }\n\n // Glue footnote tokens to end of token stream\n function footnote_tail (state) {\n let tokens\n let current\n let currentLabel\n let insideRef = false\n const refTokens = {}\n\n if (!state.env.footnotes) { return }\n\n state.tokens = state.tokens.filter(function (tok) {\n if (tok.type === 'footnote_reference_open') {\n insideRef = true\n current = []\n currentLabel = tok.meta.label\n return false\n }\n if (tok.type === 'footnote_reference_close') {\n insideRef = false\n // prepend ':' to avoid conflict with Object.prototype members\n refTokens[':' + currentLabel] = current\n return false\n }\n if (insideRef) { current.push(tok) }\n return !insideRef\n })\n\n if (!state.env.footnotes.list) { return }\n const list = state.env.footnotes.list\n\n state.tokens.push(new state.Token('footnote_block_open', '', 1))\n\n for (let i = 0, l = list.length; i < l; i++) {\n const token_fo = new state.Token('footnote_open', '', 1)\n token_fo.meta = { id: i, label: list[i].label }\n state.tokens.push(token_fo)\n\n if (list[i].tokens) {\n tokens = []\n\n const token_po = new state.Token('paragraph_open', 'p', 1)\n token_po.block = true\n tokens.push(token_po)\n\n const token_i = new state.Token('inline', '', 0)\n token_i.children = list[i].tokens\n token_i.content = list[i].content\n tokens.push(token_i)\n\n const token_pc = new state.Token('paragraph_close', 'p', -1)\n token_pc.block = true\n tokens.push(token_pc)\n } else if (list[i].label) {\n tokens = refTokens[`:${list[i].label}`]\n }\n\n if (tokens) state.tokens = state.tokens.concat(tokens)\n\n let lastParagraph\n\n if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') {\n lastParagraph = state.tokens.pop()\n } else {\n lastParagraph = null\n }\n\n const t = list[i].count > 0 ? list[i].count : 1\n for (let j = 0; j < t; j++) {\n const token_a = new state.Token('footnote_anchor', '', 0)\n token_a.meta = { id: i, subId: j, label: list[i].label }\n state.tokens.push(token_a)\n }\n\n if (lastParagraph) {\n state.tokens.push(lastParagraph)\n }\n\n state.tokens.push(new state.Token('footnote_close', '', -1))\n }\n\n state.tokens.push(new state.Token('footnote_block_close', '', -1))\n }\n\n md.block.ruler.before('reference', 'footnote_def', footnote_def, { alt: ['paragraph', 'reference'] })\n md.inline.ruler.after('image', 'footnote_inline', footnote_inline)\n md.inline.ruler.after('footnote_inline', 'footnote_ref', footnote_ref)\n md.core.ruler.after('inline', 'footnote_tail', footnote_tail)\n};\n"],"names":["render_footnote_anchor_name","tokens","idx","options","env","n","prefix","render_footnote_caption","render_footnote_ref","slf","id","caption","refid","render_footnote_block_open","render_footnote_block_close","render_footnote_open","render_footnote_close","render_footnote_anchor","footnote_plugin","md","parseLinkLabel","isSpace","footnote_def","state","startLine","endLine","silent","start","max","pos","label","token_fref_o","oldBMark","oldTShift","oldSCount","oldParentType","posAfterColon","initial","offset","ch","token_fref_c","footnote_inline","labelStart","labelEnd","footnoteId","token","footnote_ref","footnoteSubId","footnote_tail","current","currentLabel","insideRef","refTokens","tok","list","i","l","token_fo","token_po","token_i","token_pc","lastParagraph","t","j","token_a"],"mappings":"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","x_google_ignoreList":[0]}