{"version":3,"sources":["jsdelivr-header.js","/npm/markdown-it-furigana@1.0.1/src/furigana-plugin.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,OAAO,QAAU,SAAU,GAEvB,MAAM,EAAiB,yCAEvB,SAAS,EAAS,EAAO,EAAK,GAC1B,MAAO,CACH,IAAI,EAAM,MAAM,GAAG,SAAY,EAAK,GACpC,OAAO,OAAO,IAAI,EAAM,MAAM,OAAQ,GAAI,GAAI,CAAE,YAChD,IAAI,EAAM,MAAM,GAAG,UAAa,GAAM,GAE9C,CAaA,SAAS,EAAM,EAAM,EAAO,GACxB,MAAM,EAAU,EAAK,OAAO,GAE5B,GAAgB,IAAZ,EAAe,CACf,MAAO,EAAO,EAAO,GAAY,EAAe,KAAK,GACrD,EAAM,QAhBd,SAA6B,EAAO,EAAO,GACvC,MAAO,CACH,IAAI,EAAM,MAAM,YAAa,OAAQ,MAClC,EAAS,EAAO,KAAM,MACtB,EAAS,EAAO,KAAM,QACtB,EAAS,EAAO,KAAM,MACtB,EAAS,EAAO,KAAM,KACzB,IAAI,EAAM,MAAM,aAAc,QAAS,GAE/C,CAOsB,CAAoB,EAAO,EAAO,IAChD,EAAM,EAAK,MAAM,EAAM,QAAS,EAAO,EAC3C,MAAW,EAAU,EACjB,EAAM,KAAK,OAAO,OAAO,IAAI,EAAM,MAAM,OAAQ,GAAI,GAAI,CAAE,QAAS,MAEpE,EAAM,KAAK,OAAO,OAAO,IAAI,EAAM,MAAM,OAAQ,GAAI,GAAI,CAAE,QAAS,EAAK,MAAM,EAAG,MAClF,EAAM,EAAK,MAAM,GAAU,EAAO,GAE1C,CAYA,EAAG,KAAK,MAAM,KAAK,YAAa,IAE5B,EAAM,OACD,QAAO,GAAgB,WAAX,EAAE,OACd,SAAQ,IACL,MAAM,EAAW,GACjB,EAAE,SAAS,SAAQ,GAAS,EAAS,QAhBjD,SAA0B,EAAO,GAC7B,GAAmB,SAAf,EAAM,MAAmB,EAAe,KAAK,EAAM,SAAU,CAC7D,MAAM,EAAQ,GAEd,OADA,EAAM,EAAM,QAAS,EAAO,GACrB,CACX,CACI,MAAO,CAAC,EAEhB,CAQyD,CAAiB,EAAO,MACrE,EAAE,SAAW,CAAQ,GACvB,GAEd","file":"/npm/markdown-it-furigana@1.0.1/src/furigana-plugin.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/markdown-it-furigana@1.0.1/src/furigana-plugin.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","module.exports = function (md) {\n\n    const furiganaScanRE = /([\\u4e00-\\u9faf])（([\\u3040-\\u3096]+?)）/;\n\n    function buildTag(state, tag, content) {\n        return [\n            new state.Token(`${tag}-open`, tag, 1),\n            Object.assign(new state.Token('text', '', 0), { content }),\n            new state.Token(`${tag}-close`, tag, -1)\n        ]\n    }\n\n    function buildFuriganaTokens(state, kanji, hiragana) {\n        return [\n            new state.Token('ruby-open', 'ruby', 1),\n            ...buildTag(state, 'rb', kanji),\n            ...buildTag(state, 'rp', '（'),\n            ...buildTag(state, 'rt', hiragana),\n            ...buildTag(state, 'rp', '）'),\n            new state.Token('ruby-close', 'ruby', -1)\n        ]\n    }\n\n    function split(text, state, nodes) {\n        const indexOf = text.search(furiganaScanRE);\n\n        if (indexOf === 0) {\n            const [match, kanji, hiragana] = furiganaScanRE.exec(text);\n            nodes.push(...buildFuriganaTokens(state, kanji, hiragana));\n            split(text.slice(match.length), state, nodes);\n        } else if (indexOf < 0) {\n            nodes.push(Object.assign(new state.Token('text', '', 0), { content: text }));\n        } else {\n            nodes.push(Object.assign(new state.Token('text', '', 0), { content: text.slice(0, indexOf) }));\n            split(text.slice(indexOf), state, nodes);\n        }\n    }\n\n    function searchAndReplace(token, state) {\n        if (token.type === 'text' && furiganaScanRE.test(token.content)) {\n            const nodes = [];\n            split(token.content, state, nodes);\n            return nodes;\n        } else {\n            return [token]\n        }\n    }\n\n    md.core.ruler.push('furigana', (state) => {\n\n        state.tokens\n            .filter(t => t.type === 'inline')\n            .forEach(t => {\n                const children = [];\n                t.children.forEach(child => children.push(...searchAndReplace(child, state)));\n                t.children = children;\n            });\n    });\n};"]}