{"version":3,"sources":["jsdelivr-header.js","/npm/gitbook-plugin-katex-custom@0.1.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,KAAO,QAAQ,QACf,GAAK,QAAQ,MACnB,IAAI,MAAQ,KACZ,MAAM,YAAc,sCAEpB,SAAS,UAAU,EAAS,EAAU,GAElC,OADa,EAAQ,OAAmB,EAAQ,OAAmB,EAAQ,KAAK,QAClE,IAAI,8BAA8B,EAAU,EAC9D,CAEA,MAAM,KAAO,CACT,SAAS,EACT,WAAW,GAGf,OAAO,QAAU,CACb,MAAO,CACH,KAAM,WACF,IAEI,IAAI,EAAa,UAAU,KAAM,QAAS,SACxB,SAAd,GACA,KAAK,IAAI,KAAK,GAAG,2BAA4B,GAEjD,KAAK,IAAM,UAAU,KAAM,MAAO,CAAC,kBACnC,MAAQ,QAAQ,EACpB,CAAE,MAAO,GACL,KAAK,IAAI,MAAM,GAAG,kDACtB,CACJ,EACA,OAAQ,WACJ,GAAI,KAAK,QAAS,CAEd,IAAI,EAAa,UAAU,KAAM,QAAS,SACtC,EAAQ,UAAU,KAAM,YAAa,CAAC,gBAAiB,UAEvD,EAAU,QAAQ,QAAQ,GAC1B,EAAY,KAAK,QAAQ,GAEzB,EAAO,KAAK,OAAO,QAAQ,aAC/B,GAAG,UAAU,GAEb,IAAK,IAAI,KAAY,EAAO,CACxB,IAAI,EAAM,KAAK,KAAK,EAAW,GAC3B,EAAM,KAAK,KAAK,EAAM,GAGtB,EAAO,EAAS,MAAM,UAC1B,IAAK,IAAI,EAAE,EAAG,EAAE,EAAK,OAAQ,IACzB,IACI,GAAG,UAAU,KAAK,KAAK,KAAS,EAAK,MAAM,EAAG,IAClD,CAAE,MAAO,GAAM,CAGnB,GAAI,GAAG,SAAS,GAAK,SAEjB,GAAG,aAAa,EAAK,OAEpB,CAED,GAAG,UAAU,GACb,IAAI,EAAQ,GAAG,YAAY,EAAK,CAAC,eAAe,IAChD,IAAK,IAAI,KAAM,EACX,GAAI,EAAG,SAAU,CACb,IAAI,EAAO,EAAG,KACd,GAAG,aAAa,EAAM,IAAM,EAAM,EAAM,IAAM,EAClD,CAER,CACJ,CACJ,CACJ,EACA,KAAM,eAAe,GACjB,GAAI,KAAK,UAAW,CAChB,KAAK,WAAY,EACjB,IAAI,EAAO,KAAK,QAAQ,EAAK,MAC7B,IAAK,IAAI,KAAQ,KAAK,IAClB,EAAO,KAAK,SAAS,EAAM,YAAc,IAAM,GAC/C,EAAK,QAAU,gCAAgC,QAAW,EAAK,SAEvE,CACA,OAAO,CACX,GAEJ,OAAQ,CACJ,KAAM,CACF,UAAW,CACP,QAAS,CAAC,WAAY,WAAY,oBAClC,MAAO,KACP,IAAK,MAET,QAAS,SAAS,GACd,IAAI,EAAS,EAAI,KACb,IAA0B,MAAb,EAAO,IACxB,OAAI,OACA,KAAK,SAAU,EACf,KAAK,WAAY,EAEV,MAAM,eAAe,EAAQ,CAChC,aAAc,KAGb,EACE,SAAW,EAAS,UAEpB,QAAU,EAAS,QAElC","file":"/npm/gitbook-plugin-katex-custom@0.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/gitbook-plugin-katex-custom@0.1.0/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","const path = require('path');\nconst fs = require('fs');\nvar Katex = null;\nconst OUTPUT_PATH = 'gitbook/gitbook-plugin-katex-custom';\n\nfunction getConfig(context, property, defaultValue) {\n    var config = context.config ? /* 3.x */ context.config : /* 2.x */ context.book.config;\n    return config.get('pluginsConfig.katex-custom.'+property, defaultValue);\n}\n\nconst STAT = {\n    require: false,\n    has_block: false\n};\n\nmodule.exports = {\n    hooks: {\n        init: function() {\n            try {\n                // custom the katex plugin name or path\n                let katex_path = getConfig(this, 'katex', 'katex');\n                if (katex_path != 'katex') {\n                    this.log.info.ln('Use module <%s> as katex', katex_path);\n                }\n                STAT.css = getConfig(this, 'css', ['katex.min.css']);\n                Katex = require(katex_path);\n            } catch (e) {\n                this.log.error.ln('Module <katex> not found. please install first!');\n            }\n        },\n        finish: function() {\n            if (STAT.require) {\n                // copy assets file to output\n                let katex_path = getConfig(this, 'katex', 'katex');\n                let paths = getConfig(this, 'resources', ['katex.min.css', 'fonts']);\n\n                let node_id = require.resolve(katex_path);\n                let dist_path = path.dirname(node_id);\n\n                let root = this.output.resolve(OUTPUT_PATH);\n                fs.mkdirSync(root);\n\n                for (let res_path of paths) {\n                    let src = path.join(dist_path, res_path);\n                    let dst = path.join(root, res_path);\n\n                    // create file parent folder\n                    let dirs = res_path.split(/[\\\\/]+/);\n                    for (let i=1; i<dirs.length; i++) {\n                        try {\n                            fs.mkdirSync(path.join(root, ...dirs.slice(0, i)));\n                        } catch (err) {}\n                    }\n\n                    if (fs.statSync(src).isFile()) {\n                        // copy signle file\n                        fs.copyFileSync(src, dst);\n                    }\n                    else {\n                        // copy folder, but just zhe first level file\n                        fs.mkdirSync(dst);\n                        let files = fs.readdirSync(src, {withFileTypes: true});\n                        for (let it of files) {\n                            if (it.isFile()) {\n                                let file = it.name;\n                                fs.copyFileSync(src + '/' + file, dst + '/' + file);\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        page: async function(page) {\n            if (STAT.has_block) {\n                STAT.has_block = false;\n                let base = path.dirname(page.path);\n                for (let file of STAT.css) {\n                    file = path.relative(base, OUTPUT_PATH + '/' + file);\n                    page.content = `<link rel=\"stylesheet\" href=\"${file}\">\\n${page.content}`;\n                }\n            }\n            return page;\n        }\n    },\n    blocks: {\n        math: {\n            shortcuts: {\n                parsers: [\"markdown\", \"asciidoc\", \"restructuredtext\"],\n                start: \"$$\",\n                end: \"$$\"\n            },\n            process: function(blk) {\n                let output = blk.body;\n                let isInline = !(output[0] == \"\\n\");\n                if (Katex) {\n                    STAT.require = true;\n                    STAT.has_block = true;\n\n                    return Katex.renderToString(output, {\n                        displayMode: !isInline\n                    });\n                }\n                else if (isInline) {\n                    return '<code>' + output + '</code>';\n                } else {\n                    return '<pre>' + output + '</pre>';\n                }\n            }\n        }\n    }\n};"]}