{"version":3,"sources":["jsdelivr-header.js","/npm/markdown-it-reddit-spoiler@1.0.1/src/index.js"],"names":[],"mappings":"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","file":"/npm/markdown-it-reddit-spoiler@1.0.1/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/markdown-it-reddit-spoiler@1.0.1/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\r\n\r\nconst markdownit = require('markdown-it');\r\nconst markdownitRegexp = require('markdown-it-regexp');\r\n\r\n(function () {\r\n\r\n    function markdownit_reddit_spoiler() {\r\n        var object = {};\r\n\r\n        object.blockquote = function (md) { // Spoilers friendly block quotes\r\n            function isSpace(code) {\r\n                switch (code) {\r\n                    case 0x09:\r\n                    case 0x20:\r\n                        return true;\r\n                }\r\n                return false;\r\n            }\r\n\r\n            function blockquote(state, startLine, endLine, silent) {\r\n                var adjustTab,\r\n                    ch,\r\n                    i,\r\n                    initial,\r\n                    l,\r\n                    lastLineEmpty,\r\n                    lines,\r\n                    nextLine,\r\n                    offset,\r\n                    oldBMarks,\r\n                    oldBSCount,\r\n                    oldIndent,\r\n                    oldParentType,\r\n                    oldSCount,\r\n                    oldTShift,\r\n                    spaceAfterMarker,\r\n                    terminate,\r\n                    terminatorRules,\r\n                    token,\r\n                    wasOutdented,\r\n                    oldLineMax = state.lineMax,\r\n                    pos = state.bMarks[startLine] + state.tShift[startLine],\r\n                    max = state.eMarks[startLine];\r\n\r\n                // if it's indented more than 3 spaces, it should be a code block\r\n                if (state.sCount[startLine] - state.blkIndent >= 4) {\r\n                    return false;\r\n                }\r\n\r\n                // check the block quote marker\r\n                if (state.src.charCodeAt(pos++) !== 0x3E /* > */ ) {\r\n                    return false;\r\n                }\r\n\r\n                // check if it's not a spoiler tag 'Change by ${Mr.DJA}'\r\n                if (state.src.charCodeAt(pos++) === 0x21 /* ! */ ) {\r\n                    return false;\r\n                }\r\n                pos--\r\n\r\n                // we know that it's going to be a valid blockquote,\r\n                // so no point trying to find the end of it in silent mode\r\n                if (silent) {\r\n                    return true;\r\n                }\r\n\r\n                // skip spaces after \">\" and re-calculate offset\r\n                initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);\r\n\r\n                // skip one optional space after '>'\r\n                if (state.src.charCodeAt(pos) === 0x20 /* space */ ) {\r\n                    // ' >   test '\r\n                    //     ^ -- position start of line here:\r\n                    pos++;\r\n                    initial++;\r\n                    offset++;\r\n                    adjustTab = false;\r\n                    spaceAfterMarker = true;\r\n                } else if (state.src.charCodeAt(pos) === 0x09 /* tab */ ) {\r\n                    spaceAfterMarker = true;\r\n\r\n                    if ((state.bsCount[startLine] + offset) % 4 === 3) {\r\n                        // '  >\\t  test '\r\n                        //       ^ -- position start of line here (tab has width===1)\r\n                        pos++;\r\n                        initial++;\r\n                        offset++;\r\n                        adjustTab = false;\r\n                    } else {\r\n                        // ' >\\t  test '\r\n                        //    ^ -- position start of line here + shift bsCount slightly\r\n                        //         to make extra space appear\r\n                        adjustTab = true;\r\n                    }\r\n                } else {\r\n                    spaceAfterMarker = false;\r\n                }\r\n\r\n                oldBMarks = [state.bMarks[startLine]];\r\n                state.bMarks[startLine] = pos;\r\n\r\n                while (pos < max) {\r\n                    ch = state.src.charCodeAt(pos);\r\n\r\n                    if (isSpace(ch)) {\r\n                        if (ch === 0x09) {\r\n                            offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\r\n                        } else {\r\n                            offset++;\r\n                        }\r\n                    } else {\r\n                        break;\r\n                    }\r\n\r\n                    pos++;\r\n                }\r\n\r\n                oldBSCount = [state.bsCount[startLine]];\r\n                state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\r\n\r\n                lastLineEmpty = pos >= max;\r\n\r\n                oldSCount = [state.sCount[startLine]];\r\n                state.sCount[startLine] = offset - initial;\r\n\r\n                oldTShift = [state.tShift[startLine]];\r\n                state.tShift[startLine] = pos - state.bMarks[startLine];\r\n\r\n                terminatorRules = state.md.block.ruler.getRules('blockquote');\r\n\r\n                oldParentType = state.parentType;\r\n                state.parentType = 'blockquote';\r\n                wasOutdented = false;\r\n\r\n                // Search the end of the block\r\n                //\r\n                // Block ends with either:\r\n                //  1. an empty line outside:\r\n                //     ```\r\n                //     > test\r\n                //\r\n                //     ```\r\n                //  2. an empty line inside:\r\n                //     ```\r\n                //     >\r\n                //     test\r\n                //     ```\r\n                //  3. another tag:\r\n                //     ```\r\n                //     > test\r\n                //      - - -\r\n                //     ```\r\n                for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\r\n                    // check if it's outdented, i.e. it's inside list item and indented\r\n                    // less than said list item:\r\n                    //\r\n                    // ```\r\n                    // 1. anything\r\n                    //    > current blockquote\r\n                    // 2. checking this line\r\n                    // ```\r\n                    if (state.sCount[nextLine] < state.blkIndent) wasOutdented = true;\r\n\r\n                    pos = state.bMarks[nextLine] + state.tShift[nextLine];\r\n                    max = state.eMarks[nextLine];\r\n\r\n                    if (pos >= max) {\r\n                        // Case 1: line is not inside the blockquote, and this line is empty.\r\n                        break;\r\n                    }\r\n\r\n                    if (state.src.charCodeAt(pos++) === 0x3E /* > */ && !wasOutdented) {\r\n                        // This line is inside the blockquote.\r\n\r\n                        // skip spaces after \">\" and re-calculate offset\r\n                        initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]);\r\n\r\n                        // skip one optional space after '>'\r\n                        if (state.src.charCodeAt(pos) === 0x20 /* space */ ) {\r\n                            // ' >   test '\r\n                            //     ^ -- position start of line here:\r\n                            pos++;\r\n                            initial++;\r\n                            offset++;\r\n                            adjustTab = false;\r\n                            spaceAfterMarker = true;\r\n                        } else if (state.src.charCodeAt(pos) === 0x09 /* tab */ ) {\r\n                            spaceAfterMarker = true;\r\n\r\n                            if ((state.bsCount[nextLine] + offset) % 4 === 3) {\r\n                                // '  >\\t  test '\r\n                                //       ^ -- position start of line here (tab has width===1)\r\n                                pos++;\r\n                                initial++;\r\n                                offset++;\r\n                                adjustTab = false;\r\n                            } else {\r\n                                // ' >\\t  test '\r\n                                //    ^ -- position start of line here + shift bsCount slightly\r\n                                //         to make extra space appear\r\n                                adjustTab = true;\r\n                            }\r\n                        } else {\r\n                            spaceAfterMarker = false;\r\n                        }\r\n\r\n                        oldBMarks.push(state.bMarks[nextLine]);\r\n                        state.bMarks[nextLine] = pos;\r\n\r\n                        while (pos < max) {\r\n                            ch = state.src.charCodeAt(pos);\r\n\r\n                            if (isSpace(ch)) {\r\n                                if (ch === 0x09) {\r\n                                    offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\r\n                                } else {\r\n                                    offset++;\r\n                                }\r\n                            } else {\r\n                                break;\r\n                            }\r\n\r\n                            pos++;\r\n                        }\r\n\r\n                        lastLineEmpty = pos >= max;\r\n\r\n                        oldBSCount.push(state.bsCount[nextLine]);\r\n                        state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\r\n\r\n                        oldSCount.push(state.sCount[nextLine]);\r\n                        state.sCount[nextLine] = offset - initial;\r\n\r\n                        oldTShift.push(state.tShift[nextLine]);\r\n                        state.tShift[nextLine] = pos - state.bMarks[nextLine];\r\n                        continue;\r\n                    }\r\n\r\n                    // Case 2: line is not inside the blockquote, and the last line was empty.\r\n                    if (lastLineEmpty) {\r\n                        break;\r\n                    }\r\n\r\n                    // Case 3: another tag found.\r\n                    terminate = false;\r\n                    for (i = 0, l = terminatorRules.length; i < l; i++) {\r\n                        if (terminatorRules[i](state, nextLine, endLine, true)) {\r\n                            terminate = true;\r\n                            break;\r\n                        }\r\n                    }\r\n\r\n                    if (terminate) {\r\n                        // Quirk to enforce \"hard termination mode\" for paragraphs;\r\n                        // normally if you call `tokenize(state, startLine, nextLine)`,\r\n                        // paragraphs will look below nextLine for paragraph continuation,\r\n                        // but if blockquote is terminated by another tag, they shouldn't\r\n                        state.lineMax = nextLine;\r\n\r\n                        if (state.blkIndent !== 0) {\r\n                            // state.blkIndent was non-zero, we now set it to zero,\r\n                            // so we need to re-calculate all offsets to appear as\r\n                            // if indent wasn't changed\r\n                            oldBMarks.push(state.bMarks[nextLine]);\r\n                            oldBSCount.push(state.bsCount[nextLine]);\r\n                            oldTShift.push(state.tShift[nextLine]);\r\n                            oldSCount.push(state.sCount[nextLine]);\r\n                            state.sCount[nextLine] -= state.blkIndent;\r\n                        }\r\n\r\n                        break;\r\n                    }\r\n\r\n                    oldBMarks.push(state.bMarks[nextLine]);\r\n                    oldBSCount.push(state.bsCount[nextLine]);\r\n                    oldTShift.push(state.tShift[nextLine]);\r\n                    oldSCount.push(state.sCount[nextLine]);\r\n\r\n                    // A negative indentation means that this is a paragraph continuation\r\n                    //\r\n                    state.sCount[nextLine] = -1;\r\n                }\r\n\r\n                oldIndent = state.blkIndent;\r\n                state.blkIndent = 0;\r\n\r\n                token = state.push('blockquote_open', 'blockquote', 1);\r\n                token.markup = '>';\r\n                token.map = lines = [startLine, 0];\r\n\r\n                state.md.block.tokenize(state, startLine, nextLine);\r\n\r\n                token = state.push('blockquote_close', 'blockquote', -1);\r\n                token.markup = '>';\r\n\r\n                state.lineMax = oldLineMax;\r\n                state.parentType = oldParentType;\r\n                lines[1] = state.line;\r\n\r\n                // Restore original tShift; this might not be necessary since the parser\r\n                // has already been here, but just to make sure we can do that.\r\n                for (i = 0; i < oldTShift.length; i++) {\r\n                    state.bMarks[i + startLine] = oldBMarks[i];\r\n                    state.tShift[i + startLine] = oldTShift[i];\r\n                    state.sCount[i + startLine] = oldSCount[i];\r\n                    state.bsCount[i + startLine] = oldBSCount[i];\r\n                }\r\n                state.blkIndent = oldIndent;\r\n\r\n                return true;\r\n            };\r\n\r\n            md.block.ruler.at('blockquote', blockquote);\r\n        };\r\n\r\n        object.env = {}; //Environment sandbox for links/images references\r\n\r\n        object.nestedRenderer = function () { //Function to render nested tags\r\n            return markdownit({\r\n                linkify: true,\r\n            }).disable('table').disable('list').disable('heading').disable('lheading').disable('fence').disable('blockquote').disable('code').disable('hr');\r\n        };\r\n\r\n        object.openTag = `<span class=\"md-spoiler\" title=\"spoiler\" onclick=\"this.classList.add('md-unhidenspoiler')\"><span>`; //Customizable open tag.\r\n\r\n        object.closeTag = `</span></span>`; //Customizable close tag.\r\n\r\n        object.spoiler = markdownitRegexp( // >!spoiler!<\r\n            /\\>\\!([\\s\\S]+?)\\!\\</,\r\n            function (match) {\r\n                const html = object.nestedRenderer().render(match[1], object.env);\r\n                return `${object.openTag}${html.replace(/\\<p\\>|\\<\\/p\\>\\s/g, '')}${object.closeTag}`;\r\n            }\r\n        )\r\n\r\n        return object;\r\n    }\r\n\r\n    if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n        module.exports = markdownit_reddit_spoiler();\r\n    }\r\n    if (typeof window === 'object') {\r\n        window.markdownitRedditSpoiler = markdownit_reddit_spoiler();\r\n    }\r\n\r\n})();"]}