{
  "version": 3,
  "sources": ["../src/index.ts"],
  "sourcesContent": ["'use strict'\n\nexport type AnchorOpts = {\n    // Characters like  '#', '\u00B6', '\u2761', or '\u00A7'.\n    icon:string;\n    visible:'hover'|'always'|'touch';\n    placement:'right'|'left';\n    ariaLabel:string;  // any text, default \"Anchor\"\n    class:string;  // css class name\n    base:string;  // any base URI\n    // Using Math.floor here will ensure the value is Number-cast and an integer.\n    truncate:number;\n    titleText:string;  // any text\n}\n\nexport function anchor (\n    opts:Partial<AnchorOpts> = {},\n    selector?:string|Array<Node>|NodeList\n):Anchor {\n    const a = new Anchor(opts)\n    if (document.readyState !== 'loading') {\n        a.add(selector)\n    } else {\n        document.addEventListener('DOMContentLoaded', () => {\n            a.add(selector)\n        }, { once: true })\n    }\n\n    return a\n}\n\nexport class Anchor {\n    opts:Partial<AnchorOpts>\n    els:HTMLElement[] = []\n\n    constructor (opts:Partial<AnchorOpts> = {\n        icon: '\\uE9CB',\n        visible: 'always'\n    }) {\n        this.opts = opts\n        this._applyRemainingDefaultOptions(this.opts)\n    }\n\n    /**\n     * Assign options to the internal options object, and provide defaults.\n     * @param {AnchorOpts} opts - Options object. This will be mutated.\n     */\n    private _applyRemainingDefaultOptions (opts:Partial<AnchorOpts>):void {\n        // Accepts characters (and also URLs?), like  '#', '\u00B6', '\u2761', or '\u00A7'.\n        opts.icon = opts.icon || '\\uE9CB'\n        opts.visible = opts.visible || 'hover'\n        opts.placement = opts.placement || 'right'\n        opts.ariaLabel = opts.ariaLabel || 'Anchor'\n        opts.class = opts.class || ''\n        // Accepts any base URI.\n        opts.base = opts.base || ''\n        // Using Math.floor here will ensure the value is Number-cast and\n        // an integer.\n        opts.truncate = opts.truncate ? Math.floor(opts.truncate) : 64\n        opts.titleText = opts.titleText || ''  // any text.\n    }\n\n    /**\n     * Check to see if this device supports touch. Uses criteria pulled\n     * from Modernizr:\n     * https://github.com/Modernizr/Modernizr/blob/da22eb27631fc4957f67607fe6042e85c0a84656/feature-detects/touchevents.js#L40\n     *\n     * @return {boolean} - true if the current device supports touch.\n     */\n    isTouchDevice ():boolean {\n        return Boolean(\n            'ontouchstart' in window ||\n            // @ts-expect-error old\n            (window.DocumentTouch &&\n            // @ts-expect-error old\n            document instanceof window.DocumentTouch)\n        )\n    }\n\n    /**\n     * Determine if this element already has an AnchorJS link on it.\n     * Uses this technique: https://stackoverflow.com/a/5898748/1154642\n     * @param    {HTMLElement}  el - a DOM node\n     * @return   {Boolean}     true/false\n     */\n    hasAnchorJSLink (el:HTMLElement):boolean {\n        const firstClass = (el.firstChild as HTMLElement).className\n        const lastClass = (el.lastChild as HTMLElement).className\n        const hasLeftAnchor = (el.firstChild &&\n            (' ' + firstClass + ' ').indexOf(' anchorjs-link ') > -1)\n        const hasRightAnchor = (el.lastChild &&\n            (' ' + lastClass + ' ').indexOf(' anchorjs-link ') > -1)\n\n        return hasLeftAnchor || hasRightAnchor || false\n    }\n\n    /**\n     * Urlify - Refine text so it makes a good ID.\n     *\n     * To do this, we remove apostrophes, replace non-safe characters\n     * with hyphens, remove extra hyphens, truncate, trim hyphens, and\n     * make lowercase.\n     *\n     * @param  {string} text - Any text. Usually pulled from the webpage element\n     *   we are linking to.\n     * @return {string} - hyphen-delimited text for use in IDs and URLs.\n     */\n    urlify (text:string):string {\n        // Decode HTML characters such as '&nbsp;' first.\n        const textareaElement = document.createElement('textarea')\n        textareaElement.innerHTML = text\n        text = textareaElement.value\n\n        // Regex for finding the non-safe URL characters (many need escaping):\n        //   & +$,:;=?@\"#{}|^~[`%!'<>]./()*\\ (newlines, tabs, backspace,\n        //   vertical tabs, and non-breaking space)\n        const nonsafeChars = /[& +$,:;=?@\"#{}|^~[`%!'<>\\]./()*\\\\\\n\\t\\b\\v\\u00A0]/g\n\n        // The reason we include this _applyRemainingDefaultOptions is so urlify\n        // can be called independently,\n        // even after setting options. This can be useful for tests or\n        // other applications.\n        if (!this.opts.truncate) {\n            this._applyRemainingDefaultOptions(this.opts)\n        }\n\n        // Note: we trim hyphens after truncating because truncating can cause\n        // dangling hyphens.\n        // Example string:                      // \" \u26A1\u26A1 Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean.\"\n        return text.trim()                      // \"\u26A1\u26A1 Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean.\"\n            .replace(/'/gi, '')                   // \"\u26A1\u26A1 Dont forget: URL fragments should be i18n-friendly, hyphenated, short, and clean.\"\n            .replace(nonsafeChars, '-')           // \"\u26A1\u26A1-Dont-forget--URL-fragments-should-be-i18n-friendly--hyphenated--short--and-clean-\"\n            .replace(/-{2,}/g, '-')               // \"\u26A1\u26A1-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-short-and-clean-\"\n            .substring(0, this.opts.truncate)  // \"\u26A1\u26A1-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated\"\n            .replace(/^-+|-+$/gm, '')             // \"\u26A1\u26A1-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated\"\n            .toLowerCase()                       // \"\u26A1\u26A1-dont-forget-url-fragments-should-be-i18n-friendly-hyphenated\"\n    }\n\n    /**\n     * Add anchor links to page elements.\n     *\n     * @param  {string|Array<Node>|NodeList} [selector] - A CSS selector for targeting\n     * the elements you wish to add anchor links to. Also accepts an array or\n     * nodeList containing the relavant elements.\n     * @return {this}\n     */\n    add (selector?:string|Array<Node>|NodeList):this {\n        let elementID\n        let index\n        let count\n        let tidyText\n        let newTidyText\n        let anchor\n        let hrefBase\n        const indexesToDrop:number[] = []\n\n        // We reapply options here because somebody may have overwritten the\n        // default options object when setting options.\n        // For example, this overwrites all options but visible:\n        //\n        // anchors.options = { visible: 'always'; }\n        this._applyRemainingDefaultOptions(this.opts)\n\n        // Provide a sensible default selector, if none is given.\n        if (!selector) {\n            selector = 'h2, h3, h4, h5, h6'\n        }\n\n        const elements = _getElements(selector)\n\n        if (elements.length === 0) {\n            return this\n        }\n\n        _addBaselineStyles()\n\n        // We produce a list of existing IDs so we don't generate a duplicate.\n        const elsWithIds = document.querySelectorAll('[id]')\n        const idList = Array.prototype.map.call(elsWithIds, (el) => {\n            return el.id as string\n        })\n\n        for (let i = 0; i < elements.length; i++) {\n            if (this.hasAnchorJSLink(elements[i])) {\n                indexesToDrop.push(i)\n                continue\n            }\n\n            if (elements[i].hasAttribute('id')) {\n                elementID = elements[i].getAttribute('id')\n            } else if (elements[i].hasAttribute('data-anchor-id')) {\n                elementID = elements[i].getAttribute('data-anchor-id')\n            } else {\n                tidyText = this.urlify(elements[i].textContent!)\n\n                // Compare our generated ID to existing IDs (and increment it\n                // if needed)\n                // before we add it to the page.\n                newTidyText = tidyText\n                count = 0\n                do {\n                    if (index !== undefined) {\n                        newTidyText = tidyText + '-' + count\n                    }\n\n                    index = idList.indexOf(newTidyText)\n                    count += 1\n                } while (index !== -1)\n\n                index = undefined\n                idList.push(newTidyText)\n\n                elements[i].setAttribute('id', newTidyText)\n                elementID = newTidyText\n            }\n\n            // The following code efficiently builds this DOM structure:\n            // `<a class=\"anchorjs-link ${this.options.class}\"\n            //     aria-label=\"${this.options.ariaLabel}\"\n            //     data-anchorjs-icon=\"${this.options.icon}\"\n            //     title=\"${this.options.titleText}\"\n            //     href=\"this.options.base#${elementID}\">\n            // </a>;`\n            anchor = document.createElement('a')\n            anchor.className = 'anchorjs-link ' + this.opts.class\n            anchor.setAttribute('aria-label', this.opts.ariaLabel)\n            anchor.setAttribute('data-anchorjs-icon', this.opts.icon)\n            if (this.opts.titleText) {\n                anchor.title = this.opts.titleText\n            }\n\n            // Adjust the href if there's a <base> tag.\n            // See https://github.com/bryanbraun/anchorjs/issues/98\n            hrefBase = (document.querySelector('base') ?\n                window.location.pathname + window.location.search :\n                '')\n            hrefBase = this.opts.base || hrefBase\n            anchor.href = hrefBase + '#' + elementID\n\n            if (this.opts.visible === 'always') {\n                anchor.style.opacity = '1'\n            }\n\n            if (this.opts.visible === 'touch' && this.isTouchDevice()) {\n                anchor.style.opacity = '1'\n            }\n\n            if (this.opts.icon === '\\uE9CB') {\n                anchor.style.font = '1em/1 anchorjs-icons'\n\n                // We set lineHeight = 1 here because the `anchorjs-icons` font\n                // family could otherwise affect the\n                // height of the heading. This isn't the case for icons with\n                // `placement: left`, so we restore\n                // line-height: inherit in that case, ensuring they remain\n                // positioned correctly. For more info,\n                // see https://github.com/bryanbraun/anchorjs/issues/39.\n                if (this.opts.placement === 'left') {\n                    anchor.style.lineHeight = 'inherit'\n                }\n            }\n\n            if (this.opts.placement === 'left') {\n                anchor.style.position = 'absolute'\n                anchor.style.marginLeft = '-1.25em'\n                anchor.style.paddingRight = '.25em'\n                anchor.style.paddingLeft = '.25em'\n                elements[i].insertBefore(anchor, elements[i].firstChild)\n            } else { // if the option provided is `right` (or anything else).\n                anchor.style.marginLeft = '.1875em'\n                anchor.style.paddingRight = '.1875em'\n                anchor.style.paddingLeft = '.1875em'\n                elements[i].appendChild(anchor)\n            }\n        }\n\n        for (let i = 0; i < indexesToDrop.length; i++) {\n            elements.splice(indexesToDrop[i] - i, 1)\n        }\n\n        this.els = this.els.concat(elements)\n\n        return this\n    }\n\n    /**\n     * Remove all anchorjs-links from elements targeted by the selector.\n     *\n     * @param  {string|Array|Nodelist} selector - A CSS selector string\n     *   targeting elements with anchor links,\n     *   OR a nodeList / array containing the DOM elements.\n     * @return {this} The AnchorJS object\n     */\n    remove (selector:string|Node[]|NodeList):this {\n        let index:number\n        let domAnchor:HTMLElement\n        const elements = _getElements(selector)\n\n        for (let i = 0; i < elements.length; i++) {\n            domAnchor = elements[i].querySelector('.anchorjs-link')!\n            if (domAnchor) {\n                // Drop the element from our main list, if it's in there.\n                index = this.els.indexOf(elements[i])\n                if (index !== -1) {\n                    this.els.splice(index, 1)\n                }\n\n                // Remove the anchor from the DOM.\n                elements[i].removeChild(domAnchor)\n            }\n        }\n\n        return this\n    }\n\n    /**\n     * Remove all anchorjs links. Mostly used for tests.\n     */\n    removeAll () {\n        this.remove(this.els)\n    }\n}\n\n/**\n * _addBaselineStyles\n * Adds baseline styles to the page, used by all AnchorJS links regardless of\n * configuration.\n */\nfunction _addBaselineStyles () {\n    // We don't want to add global baseline styles if they've been added before.\n    if (document.head.querySelector('style.anchorjs') !== null) {\n        return\n    }\n\n    const style = document.createElement('style')\n    const linkRule =\n    '.anchorjs-link{' +\n        'opacity:0;' +\n        'text-decoration:none;' +\n        '-webkit-font-smoothing:antialiased;' +\n        '-moz-osx-font-smoothing:grayscale' +\n    '}'\n    const hoverRule =\n    ':hover>.anchorjs-link,' +\n    '.anchorjs-link:focus{' +\n        'opacity:1' +\n    '}'\n    const anchorjsLinkFontFace = '@font-face{' +\n        // Icon from icomoon; 10px wide & 10px tall; 2 empty below & 4 above\n        'font-family:anchorjs-icons;' +\n        'src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format(\"truetype\")' +\n    '}'\n    const pseudoElContent =\n    '[data-anchorjs-icon]::after{' +\n        'content:attr(data-anchorjs-icon)' +\n    '}'\n\n    style.className = 'anchorjs'\n    style.appendChild(document.createTextNode('')) // Necessary for Webkit.\n\n    // We place it in the head with the other style tags, if possible, so as to\n    // not look out of place. We insert before the others so these styles can be\n    // overridden if necessary.\n    const firstStyleEl = document.head.querySelector('[rel=\"stylesheet\"],style')\n    if (firstStyleEl === undefined) {\n        document.head.appendChild(style)\n    } else {\n        document.head.insertBefore(style, firstStyleEl)\n    }\n\n    style.sheet?.insertRule(linkRule, style.sheet?.cssRules.length)\n    style.sheet?.insertRule(hoverRule, style.sheet?.cssRules.length)\n    style.sheet?.insertRule(pseudoElContent, style.sheet?.cssRules.length)\n    style.sheet?.insertRule(anchorjsLinkFontFace, style.sheet?.cssRules.length)\n}\n\n/**\n * Turns a selector, nodeList, or array of elements into an array of elements\n * (so we can use array methods).\n * It also throws errors on any other inputs. Used to handle inputs to\n * .add and .remove.\n *\n * @param  {string|Array|Nodelist} input A CSS selector string targeting\n * elements with anchor links, OR a nodeList / array containing the DOM elements.\n * @return {Array<HTMLElement>} - An array containing the elements we want.\n */\nfunction _getElements (input:string|Array<Node>|NodeList):Array<HTMLElement> {\n    let elements\n    if (typeof input === 'string') {\n        // See https://davidwalsh.name/nodelist-array for the technique\n        // transforming nodeList -> Array.\n        elements = [].slice.call(document.querySelectorAll(input))\n    } else if (Array.isArray(input) || input instanceof NodeList) {\n        elements = [].slice.call(input)\n    } else {\n        throw new TypeError('The selector provided to AnchorJS was invalid.')\n    }\n\n    return elements\n}\n"],
  "mappings": "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",
  "names": ["index_exports", "__export", "Anchor", "anchor", "__toCommonJS", "anchor", "opts", "selector", "a", "Anchor", "__name", "el", "firstClass", "lastClass", "hasLeftAnchor", "hasRightAnchor", "text", "textareaElement", "nonsafeChars", "elementID", "index", "count", "tidyText", "newTidyText", "hrefBase", "indexesToDrop", "elements", "_getElements", "_addBaselineStyles", "elsWithIds", "idList", "i", "domAnchor", "style", "linkRule", "hoverRule", "anchorjsLinkFontFace", "pseudoElContent", "firstStyleEl", "input"]
}
