{"version":3,"file":"europa.mjs","mappings":"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","sources":["webpack://europa/webpack/bootstrap","webpack://europa/webpack/runtime/define property getters","webpack://europa/webpack/runtime/hasOwnProperty shorthand","webpack://europa/../europa-preset-default/lib/esm/index.js","webpack://europa/../europa-plugin-bold/lib/esm/index.js","webpack://europa/../europa-plugin-code/lib/esm/index.js","webpack://europa/../europa-plugin-description/lib/esm/index.js","webpack://europa/../europa-plugin-details/lib/esm/index.js","webpack://europa/../europa-plugin-header/lib/esm/index.js","webpack://europa/../europa-plugin-horizontal-rule/lib/esm/index.js","webpack://europa/../europa-plugin-image/lib/esm/index.js","webpack://europa/../europa-plugin-italic/lib/esm/index.js","webpack://europa/../europa-plugin-line-break/lib/esm/index.js","webpack://europa/../europa-plugin-link/lib/esm/index.js","webpack://europa/../europa-plugin-list/lib/esm/index.js","webpack://europa/../europa-plugin-paragraph/lib/esm/index.js","webpack://europa/../europa-plugin-preformatted/lib/esm/index.js","webpack://europa/../europa-plugin-quote/lib/esm/index.js","webpack://europa/../europa-core/lib/esm/ConversionContext.js","webpack://europa/../europa-core/lib/esm/Conversion.js","webpack://europa/../europa-core/lib/esm/EuropaOptionsParser.js","webpack://europa/../europa-core/lib/esm/plugin/PluginApi.js","webpack://europa/../europa-core/lib/esm/plugin/PluginManager.js","webpack://europa/../europa-core/lib/esm/EuropaCore.js","webpack://europa/../europa-dom-web/lib/esm/AbstractWebDomNode.js","webpack://europa/../europa-dom-web/lib/esm/AbstractWebDomParentNode.js","webpack://europa/../europa-dom-web/lib/esm/WebDomElement.js","webpack://europa/../europa-dom-web/lib/esm/WebDomNode.js","webpack://europa/../europa-dom-web/lib/esm/WebDomRoot.js","webpack://europa/../europa-dom-web/lib/esm/WebDom.js","webpack://europa/../europa-environment-web/lib/esm/WebEnvironment.js","webpack://europa/./src/Europa.ts","webpack://europa/./src/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport boldPluginProvider from 'europa-plugin-bold';\nimport codePluginProvider from 'europa-plugin-code';\nimport descriptionPluginProvider from 'europa-plugin-description';\nimport detailsPluginProvider from 'europa-plugin-details';\nimport headerPluginProvider from 'europa-plugin-header';\nimport horizontalRulePluginProvider from 'europa-plugin-horizontal-rule';\nimport imagePluginProvider from 'europa-plugin-image';\nimport italicPluginProvider from 'europa-plugin-italic';\nimport lineBreakPluginProvider from 'europa-plugin-line-break';\nimport linkPluginProvider from 'europa-plugin-link';\nimport listPluginProvider from 'europa-plugin-list';\nimport paragraphPluginProvider from 'europa-plugin-paragraph';\nimport preformattedPluginProvider from 'europa-plugin-preformatted';\nimport quotePluginProvider from 'europa-plugin-quote';\nconst pluginProviders = [\n    boldPluginProvider,\n    codePluginProvider,\n    descriptionPluginProvider,\n    detailsPluginProvider,\n    headerPluginProvider,\n    horizontalRulePluginProvider,\n    imagePluginProvider,\n    italicPluginProvider,\n    lineBreakPluginProvider,\n    linkPluginProvider,\n    listPluginProvider,\n    paragraphPluginProvider,\n    preformattedPluginProvider,\n    quotePluginProvider,\n];\nexport default function (api) {\n    return {\n        plugins: pluginProviders.map((pluginProvider) => pluginProvider(api)),\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function (api) {\n    const boldConverter = api.createBoldConverter();\n    return {\n        converters: {\n            B: boldConverter,\n            STRONG: boldConverter,\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    const _inCodeBlock = Symbol();\n    const _previousInCodeBlock = Symbol();\n    const codeConverter = {\n        startTag(conversion, context) {\n            const previousInCodeBlock = conversion.context.get(_inCodeBlock);\n            context.set(_previousInCodeBlock, previousInCodeBlock);\n            conversion.append(previousInCodeBlock ? '\\\\`' : '`');\n            conversion.context.set(_inCodeBlock, true);\n            return true;\n        },\n        endTag(conversion, context) {\n            const previousInCodeBlock = context.get(_previousInCodeBlock);\n            conversion.context.set(_inCodeBlock, previousInCodeBlock);\n            conversion.append(previousInCodeBlock ? '\\\\`' : '`');\n        },\n    };\n    return {\n        converters: {\n            CODE: codeConverter,\n            KBD: codeConverter,\n            SAMP: codeConverter,\n        },\n        startConversion(conversion) {\n            conversion.context.set(_inCodeBlock, false);\n        },\n        convertText(value, conversion) {\n            if (conversion.context.get(_inCodeBlock)) {\n                conversion.output(conversion.escape(value, '`'));\n                return true;\n            }\n            return false;\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function (api) {\n    return {\n        converters: {\n            DD: api.createBlockQuoteConverter(),\n            DT: {\n                startTag(conversion) {\n                    conversion.appendParagraph();\n                    conversion.output('**');\n                    conversion.atNoWhitespace = true;\n                    return true;\n                },\n                endTag(conversion) {\n                    conversion.output('**');\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    return {\n        converters: {\n            DETAILS: {\n                startTag(conversion, context) {\n                    const { element } = conversion;\n                    conversion.appendParagraph();\n                    if (element.hasAttr('open')) {\n                        return true;\n                    }\n                    conversion.convertNode(element.find('summary'));\n                    return false;\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    const headingConverter = {\n        startTag(conversion) {\n            const level = parseInt(conversion.element.tagName().match(/([1-6])$/)[1], 10);\n            let headerPrefix = '';\n            for (let i = 0; i < level; i++) {\n                headerPrefix += '#';\n            }\n            conversion.appendParagraph().output(`${headerPrefix} `);\n            return true;\n        },\n        endTag(conversion) {\n            conversion.appendParagraph();\n        },\n    };\n    return {\n        converters: {\n            H1: headingConverter,\n            H2: headingConverter,\n            H3: headingConverter,\n            H4: headingConverter,\n            H5: headingConverter,\n            H6: headingConverter,\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    return {\n        converters: {\n            HR: {\n                startTag(conversion) {\n                    conversion.appendParagraph().output('---').appendParagraph();\n                    return false;\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    return {\n        converters: {\n            IMG: {\n                startTag(conversion) {\n                    const absolute = conversion.getOption('absolute');\n                    const inline = conversion.getOption('inline');\n                    const { element } = conversion;\n                    const source = element.attr('src');\n                    if (!source) {\n                        return false;\n                    }\n                    const alternativeText = element.attr('alt') || '';\n                    const title = element.attr('title');\n                    const url = absolute ? conversion.resolveUrl(source) : source;\n                    let value = title ? `${url} \"${title}\"` : url;\n                    if (inline) {\n                        value = `(${value})`;\n                    }\n                    else {\n                        const reference = conversion.addReference('image', value);\n                        value = `[${reference}]`;\n                    }\n                    conversion.output(`![${alternativeText}]${value}`);\n                    return false;\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function (api) {\n    const italicConverter = api.createItalicConverter();\n    return {\n        converters: {\n            CITE: italicConverter,\n            DFN: italicConverter,\n            EM: italicConverter,\n            I: italicConverter,\n            U: italicConverter,\n            VAR: italicConverter,\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    return {\n        converters: {\n            BR: {\n                startTag(conversion) {\n                    conversion.append(`  ${conversion.left}`);\n                    conversion.atLeft = true;\n                    conversion.atNoWhitespace = true;\n                    return false;\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    const _value = Symbol();\n    return {\n        converters: {\n            A: {\n                startTag(conversion, context) {\n                    const absolute = conversion.getOption('absolute');\n                    const inline = conversion.getOption('inline');\n                    const { element } = conversion;\n                    const href = element.attr('href');\n                    if (!href) {\n                        return true;\n                    }\n                    const title = element.attr('title');\n                    const url = absolute ? conversion.resolveUrl(href) : href;\n                    let value = title ? `${url} \"${title}\"` : url;\n                    if (inline) {\n                        value = `(${value})`;\n                    }\n                    else {\n                        const reference = conversion.addReference('link', value);\n                        value = `[${reference}]`;\n                    }\n                    context.set(_value, value);\n                    conversion.output('[');\n                    conversion.atNoWhitespace = true;\n                    return true;\n                },\n                endTag(conversion, context) {\n                    if (context.has(_value)) {\n                        conversion.output(`]${context.get(_value)}`);\n                    }\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    const _inOrderedList = Symbol();\n    const _previousInOrderedList = Symbol();\n    const _previousListIndex = Symbol();\n    function createListConverter(ordered) {\n        return {\n            startTag(conversion, context) {\n                context.set(_previousInOrderedList, conversion.context.get(_inOrderedList));\n                context.set(_previousListIndex, conversion.listIndex);\n                if (conversion.listDepth === 0) {\n                    conversion.appendParagraph();\n                }\n                conversion.context.set(_inOrderedList, ordered);\n                conversion.listIndex = 1;\n                conversion.listDepth++;\n                return true;\n            },\n            endTag(conversion, context) {\n                conversion.context.set(_inOrderedList, context.get(_previousInOrderedList));\n                conversion.listIndex = context.get(_previousListIndex);\n                conversion.listDepth--;\n            },\n        };\n    }\n    function leftPad(str = '', times = 0, padding = ' ') {\n        if (!padding) {\n            return str;\n        }\n        for (let i = 0; i < times; i++) {\n            str = padding + str;\n        }\n        return str;\n    }\n    return {\n        converters: {\n            LI: {\n                startTag(conversion) {\n                    const value = conversion.context.get(_inOrderedList) ? `${conversion.listIndex++}. ` : '* ';\n                    if (!conversion.atLeft) {\n                        conversion.append(conversion.left.replace(/ {2,4}$/, conversion.eol));\n                        conversion.atLeft = true;\n                        conversion.atNoWhitespace = true;\n                        conversion.atParagraph = true;\n                    }\n                    else if (conversion.last) {\n                        conversion.last = conversion.last.replace(/ {2,4}$/, conversion.eol);\n                    }\n                    conversion.append(leftPad(value, (conversion.listDepth - 1) * 2));\n                    return true;\n                },\n            },\n            OL: createListConverter(true),\n            UL: createListConverter(false),\n        },\n        startConversion(conversion) {\n            conversion.context.set(_inOrderedList, false);\n        },\n        escapeText(value) {\n            return value.replace(/^\\s*([+-])(\\s+|$)/, '\\\\$1$2').replace(/^\\s*(\\d+)\\.(\\s+|$)/, '$1\\\\.$2');\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    const paragraphConverter = {\n        startTag(conversion) {\n            conversion.appendParagraph();\n            return true;\n        },\n        endTag(conversion) {\n            conversion.appendParagraph();\n        },\n    };\n    return {\n        converters: {\n            ADDRESS: paragraphConverter,\n            ARTICLE: paragraphConverter,\n            ASIDE: paragraphConverter,\n            DIV: paragraphConverter,\n            FIELDSET: paragraphConverter,\n            FOOTER: paragraphConverter,\n            HEADER: paragraphConverter,\n            MAIN: paragraphConverter,\n            NAV: paragraphConverter,\n            P: paragraphConverter,\n            SECTION: paragraphConverter,\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function () {\n    return {\n        converters: {\n            PRE: {\n                startTag(conversion, context) {\n                    const value = '```';\n                    conversion.appendParagraph().append(value).append(conversion.left);\n                    const content = conversion.element.innerHtml();\n                    if (content) {\n                        conversion.output(content, { preserveLeadingWhitespace: true });\n                    }\n                    if (!conversion.atLeft) {\n                        conversion.append(conversion.left);\n                    }\n                    conversion.atLeft = conversion.atParagraph = false;\n                    conversion.append(value).appendParagraph();\n                    return false;\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport default function (api) {\n    return {\n        converters: {\n            BLOCKQUOTE: api.createBlockQuoteConverter(),\n            Q: {\n                startTag(conversion) {\n                    conversion.output('\"');\n                    conversion.atNoWhitespace = true;\n                    return true;\n                },\n                endTag(conversion) {\n                    conversion.output('\"');\n                },\n            },\n        },\n    };\n}\n//# sourceMappingURL=index.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar _a;\nconst _map = Symbol();\n/**\n * Contains contextual information relating to a {@link Conversion}; either globally or a limited scope single element\n * conversion.\n *\n * The scope of entries can be restricted further by using symbols as keys.\n */\nexport class ConversionContext {\n    constructor() {\n        this[_a] = new Map();\n    }\n    /**\n     * Deletes the entry for the specified `key` from this {@link ConversionContext}.\n     *\n     * @param key - The key whose entry is to be deleted.\n     * @return A reference to this {@link ConversionContext} for chaining purposes.\n     */\n    delete(key) {\n        this[_map].delete(key);\n        return this;\n    }\n    /**\n     * Iterates over all non-private entries within this {@link ConversionContext}, calling `callback` for each entry.\n     *\n     * Private entries are those set using a symbol as a key.\n     *\n     * @param callback - The function to be called for each non-private entry.\n     * @return A reference to this {@link ConversionContext} for chaining purposes.\n     */\n    forEach(callback) {\n        for (const [key, value] of this[_map]) {\n            if (typeof key === 'string') {\n                callback(key, value);\n            }\n        }\n        return this;\n    }\n    /**\n     * Returns the value of the entry with the specified `key` within this {@link ConversionContext}.\n     *\n     * An error is thrown if no entry was found for `key`.\n     *\n     * @param key - The key of the entry whose value is to be returned.\n     * @return The entry value for `key`.\n     * @throws If no entry exists for `key`.\n     */\n    get(key) {\n        const value = this[_map].get(key);\n        if (typeof value === 'undefined') {\n            const keyType = typeof key === 'string' ? '' : 'private ';\n            throw new Error(`Cannot find context value for ${keyType}key: '${String(key)}'`);\n        }\n        return value;\n    }\n    /**\n     * Returns whether an entry for the specified `key` exists within this {@link ConversionContext}.\n     *\n     * @param key - The key to be checked.\n     * @return A reference to this {@link ConversionContext} for chaining purposes.\n     */\n    has(key) {\n        return this[_map].has(key);\n    }\n    /**\n     * Returns the keys for all non-private entries within this {@link ConversionContext}.\n     *\n     * Private entries are those set using a symbol as a key.\n     *\n     * @return The keys for non-private entries.\n     */\n    keys() {\n        return this.map((key) => key);\n    }\n    /**\n     * Iterates over all non-private entries within this {@link ConversionContext}, calling `callback` for each entry in\n     * order to map its key/value pair, returning the results of all mapped entries.\n     *\n     * Private entries are those set using a symbol as a key.\n     *\n     * @param callback - The function to be called for each non-private entry.\n     * @return The mapped non-private entries.\n     */\n    map(callback) {\n        const results = [];\n        this.forEach((key, value) => results.push(callback(key, value)));\n        return results;\n    }\n    /**\n     * Sets the value of the entry with the specified `key` within this {@link ConversionContext} to `value`.\n     *\n     * The entry can be considered private if `key` is a symbol.\n     *\n     * @param key - The key of the entry whose value is to be set.\n     * @param value - The value to be set.\n     * @return A reference to this {@link ConversionContext} for chaining purposes.\n     */\n    set(key, value) {\n        this[_map].set(key, value);\n        return this;\n    }\n    /**\n     * Returns the values for all non-private entries within this {@link ConversionContext}.\n     *\n     * Private entries are those set using a symbol as a key.\n     *\n     * @return The values for non-private entries.\n     */\n    values() {\n        return this.map((_, value) => value);\n    }\n}\n_a = _map;\n//# sourceMappingURL=ConversionContext.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar _a, _b, _c, _d, _e;\nimport { ConversionContext } from \"./ConversionContext\";\nconst _buffer = Symbol();\nconst _context = Symbol();\nconst _environment = Symbol();\nconst _options = Symbol();\nconst _pluginManager = Symbol();\nconst _referenceCache = Symbol();\nconst _references = Symbol();\nconst _skipTagNames = Symbol();\n/**\n * Contains contextual information for a single conversion process.\n */\nexport class Conversion {\n    /**\n     * Creates an instance of {@link Conversion} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        /**\n         * Whether the buffer is at the start of the current line.\n         */\n        this.atLeft = true;\n        /**\n         * Whether any whitespace should be removed from the start of the next output.\n         */\n        this.atNoWhitespace = true;\n        /**\n         * Whether the buffer is at the start of a paragraph.\n         */\n        this.atParagraph = true;\n        /**\n         * The last string to be output next to the buffer.\n         */\n        this.last = null;\n        /**\n         * The depth of nested lists.\n         */\n        this.listDepth = 0;\n        /**\n         * The one-based index for the current list item within the current list.\n         */\n        this.listIndex = 1;\n        this[_a] = '';\n        this[_b] = new ConversionContext();\n        this[_c] = {\n            all: {},\n            last: {},\n        };\n        this[_d] = [];\n        this[_e] = new Set([\n            'APPLET',\n            'AREA',\n            'AUDIO',\n            'BUTTON',\n            'CANVAS',\n            'DATALIST',\n            'EMBED',\n            'HEAD',\n            'INPUT',\n            'MAP',\n            'MENU',\n            'METER',\n            'NOFRAMES',\n            'NOSCRIPT',\n            'OBJECT',\n            'OPTGROUP',\n            'OPTION',\n            'PARAM',\n            'PROGRESS',\n            'RP',\n            'RT',\n            'RUBY',\n            'SCRIPT',\n            'SELECT',\n            'STYLE',\n            'TEXTAREA',\n            'TITLE',\n            'VIDEO',\n        ]);\n        const { element, environment, options: europaOptions, pluginManager } = options;\n        this[_environment] = environment;\n        this[_options] = europaOptions;\n        this[_pluginManager] = pluginManager;\n        this.element = element;\n        this.left = europaOptions.eol;\n    }\n    /**\n     * Adds a reference to this {@link Conversion} using the `key` and `value` provided.\n     *\n     * A numeric ID is associated with `value` and is included in the returned reference. If a reference already exists\n     * for the given `key` and `value` then this ID will be the same as the existing reference in order to avoid\n     * duplications. Otherwise, the ID will be the next number in the sequence for `key`.\n     *\n     * At the end of the conversion, the reference will be appended to the output string.\n     *\n     * @param key - The key (prefix) for the reference.\n     * @param value - The value for the reference.\n     * @return The reference.\n     * @throws If the `inline` option is enabled.\n     */\n    addReference(key, value) {\n        if (this.getOption('inline')) {\n            throw new Error('Cannot add reference when \"inline\" option is enabled');\n        }\n        const cache = this[_referenceCache];\n        const cacheKey = `${key}:${value}`;\n        let id = cache.all[cacheKey];\n        if (id == null) {\n            id = cache.last[key] ? cache.last[key] + 1 : 1;\n            this[_references].push({ id, key, value });\n            cache.all[cacheKey] = cache.last[key] = id;\n        }\n        return `${key}${id}`;\n    }\n    /**\n     * Appends the last output string to the buffer and then queues the specified `str` to be output.\n     *\n     * @param str - The string to be appended.\n     * @return A reference to this {@link Conversion} for chaining purposes.\n     */\n    append(str) {\n        if (this.last != null) {\n            this[_buffer] += this.last;\n        }\n        this.last = str;\n        return this;\n    }\n    /**\n     * Appends a paragraph to the output buffer.\n     *\n     * @return A reference to this {@link Conversion} for chaining purposes.\n     */\n    appendParagraph() {\n        if (this.atParagraph) {\n            return this;\n        }\n        if (!this.atLeft) {\n            this.append(this.left);\n            this.atLeft = true;\n        }\n        this.append(this.left);\n        this.atNoWhitespace = true;\n        this.atParagraph = true;\n        return this;\n    }\n    /**\n     * Converts the specified `node` and it's children into Markdown.\n     *\n     * Nothing happens if `node` is nullable or hidden (see {@link Conversion#isHidden}.\n     *\n     * @param node - The node (along well as it's children) to be converted into Markdown.\n     * @return A reference to this {@link Conversion} for chaining purposes.\n     */\n    convertNode(node) {\n        if (!node) {\n            return this;\n        }\n        const pluginManager = this[_pluginManager];\n        if (node.isElement()) {\n            if (this.isHidden(node)) {\n                return this;\n            }\n            this.element = node;\n            const tagName = node.tagName();\n            if (this.skipTagNames.has(tagName)) {\n                return this;\n            }\n            const context = new ConversionContext();\n            const convertChildren = pluginManager.hasConverterHook(tagName, 'startTag')\n                ? pluginManager.invokeConverterHook(tagName, 'startTag', this, context)\n                : true;\n            if (convertChildren) {\n                node.children().forEach((child) => this.convertNode(child));\n            }\n            pluginManager.invokeConverterHook(tagName, 'endTag', this, context);\n        }\n        else if (node.isText()) {\n            const value = node.text() || '';\n            if (!pluginManager.invokeTextConverterHook(value, this)) {\n                this.output(value, { clean: true });\n            }\n        }\n        return this;\n    }\n    /**\n     * Ensures any recorded references are generated and that output buffer contains last output string before returning\n     * the trimmed output buffer.\n     *\n     * @return The complete output buffer.\n     */\n    end() {\n        if (this[_references].length) {\n            const { eol } = this;\n            this.append(eol.repeat(2));\n            this[_references]\n                .sort((a, b) => {\n                if (a.key < b.key)\n                    return -1;\n                if (a.key > b.key)\n                    return 1;\n                if (a.id < b.id)\n                    return -1;\n                if (a.id > b.id)\n                    return 1;\n                return 0;\n            })\n                .forEach((reference) => this.append(`[${reference.key}${reference.id}]: ${reference.value}${eol}`));\n        }\n        return this.append('')[_buffer].trim();\n    }\n    /**\n     * Escapes special characters from the specified `str`.\n     *\n     * If `character` is provided, this method escapes all occurrences of the specified special `character` within the\n     * `str` provided by prefixing them with a backslash. Otherwise, some special characters in Markdown are escaped using\n     * backslashes, others are simple replacements of potentially confusing Unicode characters, before finally allowing\n     * plugins to hook in and provide any additional escaping.\n     *\n     * @param str - The string to be escaped.\n     * @param [character] - The special character to be escaped by prefixing with a backslash in all cases.\n     * @return The escaped `str`.\n     */\n    escape(str, character) {\n        if (character) {\n            return str.replace(new RegExp(`(${character})`, 'g'), '\\\\$1');\n        }\n        return this[_pluginManager].invokeTextEscaperHook(str\n            .replace(/([\\\\`*_\\[\\]#])/g, (character) => `\\\\${character}`)\n            .replace(/([\\u00a0\\u2002\\u2003\\u2009])|([\\u2018\\u2019])|([\\u201c\\u201d])/g, (character, group1, group2, group3) => {\n            if (group1) {\n                return ' ';\n            }\n            if (group2) {\n                return \"'\";\n            }\n            if (group3) {\n                return '\"';\n            }\n            return character;\n        }), this);\n    }\n    /**\n     * Returns the value of the option for the {@link EuropaCore} instance responsible for this {@link Conversion} with\n     * the specified `name`.\n     *\n     * @param name - The name of the option whose value is to be returned.\n     * @return The value of the named option.\n     */\n    getOption(name) {\n        return this[_options][name];\n    }\n    /**\n     * Checks whether the specified `element` is currently hidden.\n     *\n     * This check is very basic as it checks whether `element` has any of the following styles applied:\n     *\n     * | Style Property | Value    |\n     * | -------------- | -------- |\n     * | `display`      | `none`   |\n     * | `visibility`   | `hidden` |\n     *\n     * The accuracy of the resolution of the styles is left to the active {@link Environment} and may be limited.\n     *\n     * @param element - The element whose visibility is to be checked.\n     * @return `true` if `element` is hidden; otherwise `false`.\n     */\n    isHidden(element) {\n        return element.css('display') === 'none' || element.css('visibility') === 'hidden';\n    }\n    /**\n     * Outputs the specified `str` to the buffer.\n     *\n     * @param str - The string to be output.\n     * @param [options] - The options to be used.\n     * @return A reference to this {@link Conversion} for chaining purposes.\n     */\n    output(str, options = {}) {\n        if (!str) {\n            return this;\n        }\n        const newLine = '\\n';\n        str = str.replace(/\\r\\n/g, newLine);\n        if (options.clean) {\n            str = this.escape(str)\n                .replace(/\\n([ \\t]*\\n)+/g, newLine)\n                .replace(/\\n[ \\t]+/g, newLine)\n                .replace(/[ \\t]+/g, ' ');\n        }\n        if (!options.preserveLeadingWhitespace) {\n            if (this.atNoWhitespace) {\n                str = str.replace(/^[ \\t\\n]+/, '');\n            }\n            else if (/^[ \\t]*\\n/.test(str)) {\n                str = str.replace(/^[ \\t\\n]+/, newLine);\n            }\n            else {\n                str = str.replace(/^[ \\t]+/, ' ');\n            }\n        }\n        if (!str) {\n            return this;\n        }\n        this.atLeft = /\\n$/.test(str);\n        this.atNoWhitespace = /[ \\t\\n]$/.test(str);\n        this.atParagraph = /\\n{2}$/.test(str);\n        return this.append(str.replace(/\\n/g, this.left));\n    }\n    /**\n     * Returns the specified `url` relative to the `baseUri` option in a manner similar to that of a browser resolving an\n     * anchor element.\n     *\n     * A relative URL may still be returned but only if the `baseUri` option is relative.\n     *\n     * @param url - The target URL to resolve.\n     * @return The resolved `url`.\n     */\n    resolveUrl(url) {\n        return this[_environment].resolveUrl(this.getOption('baseUri'), url);\n    }\n    /**\n     * The global context for this {@link Conversion}.\n     */\n    get context() {\n        return this[_context];\n    }\n    /**\n     * The end of line character to be used by this {@link Conversion}.\n     */\n    get eol() {\n        return this[_options].eol;\n    }\n    /**\n     * The options for the {@link EuropaCore} instance responsible for this {@link Conversion}.\n     */\n    get options() {\n        return Object.assign({}, this[_options]);\n    }\n    /**\n     * The set of tag upper-case names for which conversion should be skipped for this {@link Conversion}.\n     */\n    get skipTagNames() {\n        return this[_skipTagNames];\n    }\n}\n_a = _buffer, _b = _context, _c = _referenceCache, _d = _references, _e = _skipTagNames;\n//# sourceMappingURL=Conversion.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nconst _environment = Symbol();\n/**\n * A parser for {@link EuropaOptions} that provides null safety and supports default value resolution.\n */\nexport class EuropaOptionsParser {\n    /**\n     * Creates an instance of {@link EuropaOptionsParser} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        this[_environment] = options.environment;\n    }\n    /**\n     * Parses the specified `options`, extracting only properties that match valid options and applying default values\n     * where required.\n     *\n     * @param options - The options to be parsed.\n     * @return The parsed options.\n     */\n    parse(options) {\n        function setOption(options, name, value) {\n            options[name] = value;\n        }\n        const definitions = {\n            absolute: false,\n            baseUri: () => this[_environment].getDefaultBaseUri(),\n            eol: () => this[_environment].getDefaultEndOfLineCharacter(),\n            inline: false,\n        };\n        return Object.entries(definitions).reduce((acc, [name, defaultValue]) => {\n            var _a;\n            const optionName = name;\n            const optionValue = (_a = options === null || options === void 0 ? void 0 : options[optionName]) !== null && _a !== void 0 ? _a : (typeof defaultValue === 'function' ? defaultValue() : defaultValue);\n            setOption(acc, optionName, optionValue);\n            return acc;\n        }, {});\n    }\n}\n//# sourceMappingURL=EuropaOptionsParser.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/**\n * Contains API methods that passed to plugin providers upon initialization.\n */\nexport class PluginApi {\n    /**\n     * Creates a plugin converter that can be used for converting HTML elements to Markdown block quotes.\n     *\n     * @return A block quote {@link PluginConverter}.\n     */\n    createBlockQuoteConverter() {\n        const _previousLeft = Symbol();\n        return {\n            startTag(conversion, context) {\n                const value = '> ';\n                conversion.appendParagraph();\n                context.set(_previousLeft, conversion.left);\n                conversion.left += value;\n                if (conversion.atParagraph) {\n                    conversion.append(value);\n                }\n                else {\n                    conversion.appendParagraph();\n                }\n                return true;\n            },\n            endTag(conversion, context) {\n                conversion.atLeft = false;\n                conversion.atParagraph = false;\n                conversion.left = context.get(_previousLeft);\n                conversion.appendParagraph();\n            },\n        };\n    }\n    /**\n     * Creates a plugin converter that can be used for converting HTML elements to Markdown bold text.\n     *\n     * @return A bold {@link PluginConverter}.\n     */\n    createBoldConverter() {\n        return {\n            startTag(conversion) {\n                conversion.output('**');\n                conversion.atNoWhitespace = true;\n                return true;\n            },\n            endTag(conversion) {\n                conversion.output('**');\n            },\n        };\n    }\n    /**\n     * Creates a plugin converter that can be used for converting HTML elements to Markdown italic text.\n     *\n     * @return An italic {@link PluginConverter}.\n     */\n    createItalicConverter() {\n        return {\n            startTag(conversion) {\n                conversion.output('_');\n                conversion.atNoWhitespace = true;\n                return true;\n            },\n            endTag(conversion) {\n                conversion.output('_');\n            },\n        };\n    }\n}\n//# sourceMappingURL=PluginApi.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar _a, _b, _c, _d;\nimport { PluginApi } from \"./PluginApi\";\nconst _addProvidedPlugin = Symbol();\nconst _api = Symbol();\nconst _converters = Symbol();\nconst _hookCache = Symbol();\nconst _getHookCache = Symbol();\nconst _plugins = Symbol();\n/**\n * A basic manager for plugins and presets (collections of plugins) that can be hooked into {@link EuropaCore}.\n */\nexport class PluginManager {\n    constructor() {\n        this[_a] = new PluginApi();\n        this[_b] = {};\n        this[_c] = [];\n        this[_d] = null;\n    }\n    /**\n     * Invokes the specified plugin `provider` and adds the resulting plugin to this {@link PluginManager}.\n     *\n     * If the plugin contains any converters, they will be associated with their corresponding tag names, overriding any\n     * previously converters associated with those tag names.\n     *\n     * If an error occurs when invoking `provider`, the plugin will not be added to this {@link PluginManager}.\n     *\n     * @param provider - The provider for the plugin to be added.\n     * @return A reference to this {@link PluginManager} for chaining purposes.\n     * @throws If a problem occurs while invoking `provider`.\n     */\n    addPlugin(provider) {\n        const plugin = provider(this[_api]);\n        this[_addProvidedPlugin](plugin);\n        return this;\n    }\n    /**\n     * Invokes the specified preset `provider` and adds the resulting preset to this {@link PluginManager}.\n     *\n     * This method is effectively just a shortcut for calling {@link PluginManager#addPlugin} for multiple plugin\n     * providers, however, the main benefit is that it supports the concept of presets, which are a useful mechanism for\n     * bundling and distributing plugins.\n     *\n     * If an error occurs when invoking `provider`, the preset and all of its plugins will not be added to this\n     * {@link PluginManager}.\n     *\n     * @param provider - The provider for the preset whose plugins are to be added.\n     * @return A reference to this {@link PluginManager} for chaining purposes.\n     * @throws If a problem occurs while invoking `provider`.\n     */\n    addPreset(provider) {\n        var _e;\n        const preset = provider(this[_api]);\n        (_e = preset.plugins) === null || _e === void 0 ? void 0 : _e.forEach((plugin) => this[_addProvidedPlugin](plugin));\n        return this;\n    }\n    /**\n     * Returns whether this {@link PluginManager} contains a converter for the specified `tagName` and that the converter\n     * has a hook with the name provided.\n     *\n     * @param tagName - The name of the tag to be checked.\n     * @param hookName - The name of the hook to be checked.\n     * @return `true` if a converter for `tagName` exists and has the named hook; otherwise `false`.\n     */\n    hasConverterHook(tagName, hookName) {\n        const converter = this[_converters][tagName];\n        return typeof (converter === null || converter === void 0 ? void 0 : converter[hookName]) === 'function';\n    }\n    /**\n     * Invokes the hook with the specified name on with the `conversion` and `context` provided on the converter for the\n     * given `tagName` within this {@link PluginManager}.\n     *\n     * If there is no converter for `tagName` or the converter does not have the named hook, nothing happens and one of\n     * the following values will be returned based on `hookName`:\n     *\n     * | Hook Name  | Return Value |\n     * | ---------- | ------------ |\n     * | `endTag`   | `undefined`  |\n     * | `startTag` | `false`      |\n     *\n     * Otherwise, it will return the result of invoking the named hook. For this reason it is highly recommended that,\n     * if the return value is important, {@link PluginManager#hasConverterHook} is called with the same `tagName` and\n     * `hookName` combination to check whether the converter hook exists before calling\n     * {@link PluginManager#invokeConverterHook}.\n     *\n     * @param tagName - The name of the tag whose converter (if any) the named hook is to be invoked on.\n     * @param hookName - The name of the hook to be invoked.\n     * @param conversion - The current {@link Conversion}.\n     * @param context - The context for the current element within the {@link Conversion}.\n     * @return The result of calling the hook or a default value based on `hookName` (see above table) if there is no\n     * converter for `tagName` or the converter does not have the named hook.\n     */\n    invokeConverterHook(tagName, hookName, conversion, context) {\n        var _e;\n        const hook = (_e = this[_converters][tagName]) === null || _e === void 0 ? void 0 : _e[hookName];\n        if (typeof hook !== 'function') {\n            return hookName === 'startTag' ? false : undefined;\n        }\n        return hook(conversion, context);\n    }\n    /**\n     * Invokes the hook with the specified name with the `conversion` provided on each of the plugins within this\n     * {@link PluginManager}.\n     *\n     * Any plugins that do not have the named hook are skipped.\n     *\n     * @param hookName - The name of the hook to be invoked.\n     * @param conversion - The current {@link Conversion}.\n     */\n    invokeHook(hookName, conversion) {\n        this[_plugins].forEach((plugin) => {\n            const hook = plugin[hookName];\n            if (typeof hook === 'function') {\n                hook(conversion);\n            }\n        });\n    }\n    /**\n     * Invokes a special hook on all plugins within this {@link PluginManager} that allows plugins to conditionally\n     * perform an alternative conversion of the specified `value` which has been taken from a text node being converted by\n     * the given `conversion`.\n     *\n     * This relies entirely on plugins ensuring that, if they perform any alternative conversion of the specified `value`,\n     * that their hook returns `true` in order to prevent `conversion` from also processing `value` which would result in\n     * duplication and would likely have other unexpected and unwanted side effects.\n     *\n     * @param value - The text value to potentially be converted.\n     * @param conversion - The current {@link Conversion}.\n     * @return `true` if `value` has been converted by a plugin; otherwise `false`.\n     */\n    invokeTextConverterHook(value, conversion) {\n        const hookCache = this[_getHookCache]();\n        return hookCache.textConverters.some((textConverter) => textConverter(value, conversion));\n    }\n    /**\n     * Invokes a special hook on all plugins within this {@link PluginManager} that allows plugins to perform any\n     * additional escaping of special characters within the specified `value` which has been taken from a text node being\n     * converted by the given `conversion`.\n     *\n     * This relies on plugins ensuring that they do not double-escape characters that have either been previously escaped\n     * by `conversion` or another plugin.\n     *\n     * @param value - The text value to be escaped.\n     * @param conversion - The current {@link Conversion}.\n     * @return The escaped `str` or `str` if no escaping is required.\n     */\n    invokeTextEscaperHook(value, conversion) {\n        const hookCache = this[_getHookCache]();\n        return hookCache.textEscapers.reduce((acc, textEscaper) => textEscaper(acc, conversion), value);\n    }\n    [(_a = _api, _b = _converters, _c = _plugins, _d = _hookCache, _addProvidedPlugin)](plugin) {\n        if (plugin.converters) {\n            Object.entries(plugin.converters).forEach(([tagName, converter]) => {\n                this[_converters][tagName.toUpperCase()] = converter;\n            });\n        }\n        if (typeof plugin.convertText === 'function' || typeof plugin.escapeText === 'function') {\n            this[_hookCache] = null;\n        }\n        this[_plugins].push(plugin);\n    }\n    [_getHookCache]() {\n        let hookCache = this[_hookCache];\n        if (hookCache) {\n            return hookCache;\n        }\n        const textConverters = [];\n        const textEscapers = [];\n        this[_plugins].forEach((plugin) => {\n            if (typeof plugin.convertText === 'function') {\n                textConverters.push(plugin.convertText);\n            }\n            if (typeof plugin.escapeText === 'function') {\n                textEscapers.push(plugin.escapeText);\n            }\n        });\n        hookCache = { textConverters, textEscapers };\n        this[_hookCache] = hookCache;\n        return hookCache;\n    }\n}\n//# sourceMappingURL=PluginManager.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar _a;\nimport { Conversion } from \"./Conversion\";\nimport { EuropaOptionsParser } from \"./EuropaOptionsParser\";\nimport { PluginManager } from \"./plugin/PluginManager\";\nconst _environment = Symbol();\nconst _options = Symbol();\nconst _pluginManager = Symbol();\n/**\n * A transformer capable of converting HTML into Markdown that supports HTML strings and DOM elements and nodes.\n */\nexport class EuropaCore {\n    /**\n     * Creates an instance of {@link EuropaCore} using the `options` provided.\n     *\n     * @param [options] - The options to be used.\n     */\n    constructor(options) {\n        const { environment, options: implementationOptions } = options;\n        this[_environment] = environment;\n        this[_options] = new EuropaOptionsParser({ environment }).parse(implementationOptions);\n    }\n    /**\n     * Converts the specified `input` into Markdown based on the options configured for this {@link EuropaCore} instance.\n     *\n     * `input` can either be an HTML string or DOM node(s) to be converted into Markdown.\n     *\n     * @param input - The HTML string or DOM node(s) to be converted into Markdown.\n     * @return The Markdown converted from `input`.\n     */\n    convert(input) {\n        if (!input) {\n            return '';\n        }\n        const root = this[_environment].getDom().createRoot(input);\n        const pluginManager = EuropaCore[_pluginManager];\n        const conversion = new Conversion({\n            element: root.body(),\n            environment: this[_environment],\n            options: this[_options],\n            pluginManager,\n        });\n        pluginManager.invokeHook('startConversion', conversion);\n        conversion.convertNode(root.body());\n        pluginManager.invokeHook('endConversion', conversion);\n        return conversion.end();\n    }\n    /**\n     * Invokes the specified plugin `provider` and registers the resulting plugin.\n     *\n     * If the plugin contains any converters, they will be associated with their corresponding tag names, overriding any\n     * previously converters associated with those tag names.\n     *\n     * If an error occurs when invoking `provider`, the plugin will not be registered.\n     *\n     * @param provider - The provider for the plugin to be registered.\n     * @throws If a problem occurs while invoking `provider`.\n     */\n    static registerPlugin(provider) {\n        EuropaCore[_pluginManager].addPlugin(provider);\n    }\n    /**\n     * Invokes the specified plugin `provider` and registers the resulting preset.\n     *\n     * This method is effectively just a shortcut for calling {@link EuropaCore.registerPlugin} for multiple plugin\n     * providers, however, the main benefit is that it supports the concept of presets, which are a useful mechanism for\n     * bundling and distributing plugins.\n     *\n     * If an error occurs when invoking `provider`, the preset and all of its plugins will not be registered.\n     *\n     * @param provider - The provider for the preset whose plugins are to be registered.\n     * @throws If a problem occurs while invoking `provider`.\n     */\n    static registerPreset(provider) {\n        EuropaCore[_pluginManager].addPreset(provider);\n    }\n}\n_a = _pluginManager;\nEuropaCore[_a] = new PluginManager();\n//# sourceMappingURL=EuropaCore.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nconst _dom = Symbol();\nconst _node = Symbol();\n/**\n * An abstract implementation of {@link DomNode} which can be used to meet most of the contract for DOM nodes within a\n * web browser.\n */\nexport class AbstractWebDomNode {\n    /**\n     * Creates an instance of {@link AbstractWebDomNode} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        this[_dom] = options.dom;\n        this[_node] = options.node;\n    }\n    children() {\n        return this.map(this[_node].childNodes, (node, root) => this[_dom].createNode(node, root));\n    }\n    /**\n     * Returns the DOM wrapper for a web browser.\n     *\n     * @return The DOM wrapper.\n     */\n    dom() {\n        return this[_dom];\n    }\n    isElement() {\n        return false;\n    }\n    isRoot() {\n        return false;\n    }\n    isText() {\n        return this[_dom].isText(this[_node], this.root());\n    }\n    /**\n     * Maps all the specified DOM `nodes` using the `mapper` provided into a new array of DOM node wrappers.\n     *\n     * @param nodes - The DOM node list to be mapped.\n     * @param mapper - A function to map a DOM node within `nodes` to the desired type.\n     * @return An array containing the mapped DOM node wrappers.\n     */\n    map(nodes, mapper) {\n        const results = [];\n        const root = this.root();\n        for (let i = 0; i < nodes.length; i++) {\n            results.push(mapper(nodes[i], root));\n        }\n        return results;\n    }\n    node() {\n        return this[_node];\n    }\n    parent() {\n        const { parentNode } = this[_node];\n        if (!parentNode) {\n            return this.root();\n        }\n        return this[_dom].createNode(parentNode, this.root());\n    }\n    text() {\n        return this[_node].textContent || '';\n    }\n    type() {\n        return this[_node].nodeType;\n    }\n}\n//# sourceMappingURL=AbstractWebDomNode.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { AbstractWebDomNode } from \"./AbstractWebDomNode\";\n/**\n * An abstract implementation of {@link DomParentNode} which can be used to meet most of the contract for DOM parent\n * nodes within a web browser.\n */\nexport class AbstractWebDomParentNode extends AbstractWebDomNode {\n    /**\n     * Creates an instance of {@link AbstractWebDomParentNode} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        super(options);\n    }\n    find(selector) {\n        const node = this.node().querySelector(selector);\n        if (!node) {\n            return;\n        }\n        return this.dom().createElement(node, this.root());\n    }\n    findAll(selector) {\n        const dom = this.dom();\n        const nodes = this.node().querySelectorAll(selector);\n        return this.map(nodes, (node, root) => dom.createElement(node, root));\n    }\n}\n//# sourceMappingURL=AbstractWebDomParentNode.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { AbstractWebDomParentNode } from \"./AbstractWebDomParentNode\";\nconst _root = Symbol();\nconst _tagName = Symbol();\n/**\n * An implementation of {@link DomElement} for DOM elements within a web browser.\n */\nexport class WebDomElement extends AbstractWebDomParentNode {\n    /**\n     * Creates an instance of {@link WebDomElement} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        super(options);\n        this[_root] = options.root;\n        this[_tagName] = options.node.tagName.toUpperCase();\n    }\n    attr(name) {\n        var _a;\n        return (_a = this.node().getAttribute(name)) !== null && _a !== void 0 ? _a : undefined;\n    }\n    css(name) {\n        if (!name) {\n            return;\n        }\n        const { style } = this.node();\n        return style[name] || undefined;\n    }\n    hasAttr(name) {\n        return this.node().hasAttribute(name);\n    }\n    innerHtml() {\n        return this.node().innerHTML;\n    }\n    isElement() {\n        return true;\n    }\n    outerHtml() {\n        return this.node().outerHTML;\n    }\n    prop(name) {\n        const node = this.node();\n        if (!(name in node)) {\n            return;\n        }\n        const value = node[name];\n        return value != null ? value : undefined;\n    }\n    root() {\n        return this[_root];\n    }\n    tagName() {\n        return this[_tagName];\n    }\n}\n//# sourceMappingURL=WebDomElement.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { AbstractWebDomNode } from \"./AbstractWebDomNode\";\nconst _root = Symbol();\n/**\n * An implementation of {@link DomNode} for DOM nodes within a web browser.\n */\nexport class WebDomNode extends AbstractWebDomNode {\n    /**\n     * Creates an instance of {@link WebDomNode} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        super(options);\n        this[_root] = options.root;\n    }\n    root() {\n        return this[_root];\n    }\n}\n//# sourceMappingURL=WebDomNode.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { AbstractWebDomParentNode } from \"./AbstractWebDomParentNode\";\n/**\n * An implementation of {@link DomRoot} for DOM roots within a web browser.\n */\nexport class WebDomRoot extends AbstractWebDomParentNode {\n    /**\n     * Creates an instance of {@link WebDomRoot} using the `options` provided.\n     *\n     * @param options - The options to be used.\n     */\n    constructor(options) {\n        super(options);\n    }\n    body() {\n        const body = this.find(':first-child');\n        if (!body) {\n            throw new Error('Unable to find DOM root body');\n        }\n        return body;\n    }\n    isRoot() {\n        return true;\n    }\n    parent() {\n        return this;\n    }\n    root() {\n        return this;\n    }\n}\n//# sourceMappingURL=WebDomRoot.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { WebDomElement } from \"./WebDomElement\";\nimport { WebDomNode } from \"./WebDomNode\";\nimport { WebDomRoot } from \"./WebDomRoot\";\n/**\n * An implementation of {@link Dom} for a web browser.\n */\nexport class WebDom {\n    createElement(element, root) {\n        return new WebDomElement({\n            dom: this,\n            node: element,\n            root,\n        });\n    }\n    createNode(node, root) {\n        if (this.isElement(node, root)) {\n            return this.createElement(node, root);\n        }\n        if (this.isRoot(node, root)) {\n            return root;\n        }\n        return new WebDomNode({\n            dom: this,\n            node,\n            root,\n        });\n    }\n    createRoot(contents) {\n        const bodyNode = document.createElement('span');\n        if (typeof contents === 'string') {\n            bodyNode.innerHTML = contents;\n        }\n        else if (Array.isArray(contents)) {\n            bodyNode.append(...contents);\n        }\n        else {\n            bodyNode.appendChild(contents);\n        }\n        const rootNode = document.createDocumentFragment();\n        rootNode.appendChild(bodyNode);\n        return new WebDomRoot({\n            dom: this,\n            node: rootNode,\n        });\n    }\n    isElement(node, root) {\n        return node.nodeType === Node.ELEMENT_NODE;\n    }\n    isRoot(node, root) {\n        return node === root.node();\n    }\n    isText(node, root) {\n        return node.nodeType === Node.TEXT_NODE;\n    }\n}\n//# sourceMappingURL=WebDom.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar _a;\nimport { WebDom } from 'europa-dom-web';\nconst _dom = Symbol();\n/**\n * An implementation of {@link Environment} intended for use within a web browser.\n */\nexport class WebEnvironment {\n    constructor() {\n        this[_a] = new WebDom();\n    }\n    getDefaultBaseUri() {\n        return window.document.baseURI;\n    }\n    getDefaultEndOfLineCharacter() {\n        return '\\n';\n    }\n    getDom() {\n        return this[_dom];\n    }\n    resolveUrl(baseUri, url) {\n        const resolvedUrl = new URL(url, new URL(baseUri, 'resolve://'));\n        if (resolvedUrl.protocol === 'resolve:') {\n            // `baseUri` is a relative URL\n            const { pathname, search, hash } = resolvedUrl;\n            return `${pathname}${search}${hash}`;\n        }\n        return resolvedUrl.toString();\n    }\n}\n_a = _dom;\n//# sourceMappingURL=WebEnvironment.js.map","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { EuropaCore, EuropaOptions } from 'europa-core';\nimport { WebEnvironment } from 'europa-environment-web';\n\nconst _environment = Symbol();\n\n/**\n * A transformer capable of converting HTML into Markdown that supports HTML strings and DOM elements and nodes.\n *\n * This implementation is intended for use within a web browser.\n */\nexport class Europa extends EuropaCore<Node, Element> {\n  private static readonly [_environment] = new WebEnvironment();\n\n  /**\n   * Creates an instance of {@link Europa} using the `options` provided.\n   *\n   * @param [options] - The options to be used.\n   */\n  constructor(options?: EuropaOptions) {\n    super({\n      environment: Europa[_environment],\n      options,\n    });\n  }\n}\n","/*\n * Copyright (C) 2022 neocotic\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport defaultPresetProvider from 'europa-preset-default';\n\nimport { Europa } from 'europa/Europa';\n\nEuropa.registerPreset(defaultPresetProvider);\n\nexport default Europa;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","pluginProviders","api","boldConverter","createBoldConverter","converters","B","STRONG","_inCodeBlock","Symbol","_previousInCodeBlock","codeConverter","startTag","conversion","context","previousInCodeBlock","set","append","endTag","CODE","KBD","SAMP","startConversion","convertText","value","output","escape","DD","createBlockQuoteConverter","DT","appendParagraph","atNoWhitespace","DETAILS","element","hasAttr","convertNode","find","headingConverter","level","parseInt","tagName","match","headerPrefix","i","H1","H2","H3","H4","H5","H6","HR","IMG","absolute","getOption","inline","source","attr","alternativeText","title","url","resolveUrl","addReference","italicConverter","createItalicConverter","CITE","DFN","EM","I","U","VAR","BR","left","atLeft","_value","A","href","has","_inOrderedList","_previousInOrderedList","_previousListIndex","createListConverter","ordered","listIndex","listDepth","LI","last","replace","eol","atParagraph","str","times","padding","leftPad","OL","UL","escapeText","paragraphConverter","ADDRESS","ARTICLE","ASIDE","DIV","FIELDSET","FOOTER","HEADER","MAIN","NAV","P","SECTION","PRE","content","innerHtml","preserveLeadingWhitespace","BLOCKQUOTE","Q","_a","_map","ConversionContext","constructor","this","Map","delete","forEach","callback","Error","String","keys","map","results","push","values","_","_b","_c","_d","_e","_buffer","_context","_environment","_options","_pluginManager","_referenceCache","_references","_skipTagNames","Conversion","options","all","Set","environment","europaOptions","pluginManager","cache","cacheKey","id","node","isElement","isHidden","skipTagNames","hasConverterHook","invokeConverterHook","children","child","isText","text","invokeTextConverterHook","clean","end","length","repeat","sort","a","b","reference","trim","character","RegExp","invokeTextEscaperHook","group1","group2","group3","name","css","newLine","test","assign","EuropaOptionsParser","parse","definitions","baseUri","getDefaultBaseUri","getDefaultEndOfLineCharacter","entries","reduce","acc","defaultValue","setOption","PluginApi","_previousLeft","_addProvidedPlugin","_api","_converters","_hookCache","_getHookCache","_plugins","PluginManager","addPlugin","provider","plugin","addPreset","plugins","hookName","converter","hook","undefined","invokeHook","textConverters","some","textConverter","textEscapers","textEscaper","toUpperCase","hookCache","EuropaCore","implementationOptions","convert","input","root","getDom","createRoot","body","static","_dom","_node","AbstractWebDomNode","dom","childNodes","createNode","isRoot","nodes","mapper","parent","parentNode","textContent","type","nodeType","AbstractWebDomParentNode","super","selector","querySelector","createElement","findAll","querySelectorAll","_root","_tagName","WebDomElement","getAttribute","style","hasAttribute","innerHTML","outerHtml","outerHTML","WebDomNode","WebDomRoot","WebDom","contents","bodyNode","document","Array","isArray","appendChild","rootNode","createDocumentFragment","Node","ELEMENT_NODE","TEXT_NODE","Europa","window","baseURI","resolvedUrl","URL","protocol","pathname","search","hash","toString","registerPreset","pluginProvider"],"sourceRoot":""}