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 6.19 kB
{"version":3,"file":"link.mjs","sources":["../../../../../../node_modules/markdown-it/lib/rules_inline/link.mjs"],"sourcesContent":["// Process [link](<to> \"stuff\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function link (state, silent) {\n let code, label, res, ref\n let href = ''\n let title = ''\n let start = state.pos\n let parseReference = true\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false }\n\n const oldPos = state.pos\n const max = state.posMax\n const labelStart = state.pos + 1\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n let pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true\n }\n pos++\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\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 state.pos = labelStart\n state.posMax = labelEnd\n\n const token_o = state.push('link_open', 'a', 1)\n const attrs = [['href', href]]\n token_o.attrs = attrs\n if (title) {\n attrs.push(['title', title])\n }\n\n state.linkLevel++\n state.md.inline.tokenize(state)\n state.linkLevel--\n\n state.push('link_close', 'a', -1)\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n"],"names":["link","state","silent","code","label","res","ref","href","title","start","parseReference","oldPos","max","labelStart","labelEnd","pos","isSpace","normalizeReference","token_o","attrs"],"mappings":";AAIe,SAASA,EAAMC,GAAOC,GAAQ;AAC3C,MAAIC,GAAMC,GAAOC,GAAKC,GAClBC,IAAO,IACPC,IAAQ,IACRC,IAAQR,EAAM,KACdS,IAAiB;AAErB,MAAIT,EAAM,IAAI,WAAWA,EAAM,GAAG,MAAM;AAAe,WAAO;AAE9D,QAAMU,IAASV,EAAM,KACfW,IAAMX,EAAM,QACZY,IAAaZ,EAAM,MAAM,GACzBa,IAAWb,EAAM,GAAG,QAAQ,eAAeA,GAAOA,EAAM,KAAK,EAAI;AAGvE,MAAIa,IAAW;AAAK,WAAO;AAE3B,MAAIC,IAAMD,IAAW;AACrB,MAAIC,IAAMH,KAAOX,EAAM,IAAI,WAAWc,CAAG,MAAM,IAAa;AAW1D,SALAL,IAAiB,IAIjBK,KACOA,IAAMH,MACXT,IAAOF,EAAM,IAAI,WAAWc,CAAG,GAC3B,GAACC,EAAQb,CAAI,KAAKA,MAAS,MAFfY;AAEhB;AAEF,QAAIA,KAAOH;AAAO,aAAO;AAMzB,QAFAH,IAAQM,GACRV,IAAMJ,EAAM,GAAG,QAAQ,qBAAqBA,EAAM,KAAKc,GAAKd,EAAM,MAAM,GACpEI,EAAI,IAAI;AAWV,WAVAE,IAAON,EAAM,GAAG,cAAcI,EAAI,GAAG,GACjCJ,EAAM,GAAG,aAAaM,CAAI,IAC5BQ,IAAMV,EAAI,MAEVE,IAAO,IAKTE,IAAQM,GACDA,IAAMH,MACXT,IAAOF,EAAM,IAAI,WAAWc,CAAG,GAC3B,GAACC,EAAQb,CAAI,KAAKA,MAAS,MAFfY;AAEhB;AAMF,UADAV,IAAMJ,EAAM,GAAG,QAAQ,eAAeA,EAAM,KAAKc,GAAKd,EAAM,MAAM,GAC9Dc,IAAMH,KAAOH,MAAUM,KAAOV,EAAI;AAMpC,aALAG,IAAQH,EAAI,KACZU,IAAMV,EAAI,KAIHU,IAAMH,MACXT,IAAOF,EAAM,IAAI,WAAWc,CAAG,GAC3B,GAACC,EAAQb,CAAI,KAAKA,MAAS,MAFfY;AAEhB;AAAA,IAGN;AAEA,KAAIA,KAAOH,KAAOX,EAAM,IAAI,WAAWc,CAAG,MAAM,QAE9CL,IAAiB,KAEnBK;AAAA,EACF;AAEA,MAAIL,GAAgB;AAIlB,QAAI,OAAOT,EAAM,IAAI,aAAe;AAAe,aAAO;AAmB1D,QAjBIc,IAAMH,KAAOX,EAAM,IAAI,WAAWc,CAAG,MAAM,MAC7CN,IAAQM,IAAM,GACdA,IAAMd,EAAM,GAAG,QAAQ,eAAeA,GAAOc,CAAG,GAC5CA,KAAO,IACTX,IAAQH,EAAM,IAAI,MAAMQ,GAAOM,GAAK,IAEpCA,IAAMD,IAAW,KAGnBC,IAAMD,IAAW,GAKdV,MAASA,IAAQH,EAAM,IAAI,MAAMY,GAAYC,CAAQ,IAE1DR,IAAML,EAAM,IAAI,WAAWgB,EAAmBb,CAAK,CAAC,GAChD,CAACE;AACH,aAAAL,EAAM,MAAMU,GACL;AAET,IAAAJ,IAAOD,EAAI,MACXE,IAAQF,EAAI;AAAA,EACd;AAMA,MAAI,CAACJ,GAAQ;AACX,IAAAD,EAAM,MAAMY,GACZZ,EAAM,SAASa;AAEf,UAAMI,IAAUjB,EAAM,KAAK,aAAa,KAAK,CAAC,GACxCkB,IAAQ,CAAC,CAAC,QAAQZ,CAAI,CAAC;AAC7B,IAAAW,EAAQ,QAASC,GACbX,KACFW,EAAM,KAAK,CAAC,SAASX,CAAK,CAAC,GAG7BP,EAAM,aACNA,EAAM,GAAG,OAAO,SAASA,CAAK,GAC9BA,EAAM,aAENA,EAAM,KAAK,cAAc,KAAK,EAAE;AAAA,EAClC;AAEA,SAAAA,EAAM,MAAMc,GACZd,EAAM,SAASW,GACR;AACT;","x_google_ignoreList":[0]}