"use strict";
const getTarget = function getTarget() {
    const memo = {};
    return function memorize(target) {
        if (typeof memo[target] === "undefined") {
            let styleTarget = document.querySelector(target);
            // Special case to return head of iframe instead of iframe itself
            if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
                try {
                    // This will throw an exception if access to iframe is blocked
                    // due to cross-origin restrictions
                    styleTarget = styleTarget.contentDocument.head;
                } catch (e) {
                    // istanbul ignore next
                    styleTarget = null;
                }
            }
            memo[target] = styleTarget;
        }
        return memo[target];
    };
}();
module.exports = (url, options)=>{
    options = options || {};
    options.attributes = typeof options.attributes === "object" ? options.attributes : {};
    if (typeof options.attributes.nonce === "undefined") {
        const nonce = // eslint-disable-next-line no-undef
        typeof __webpack_nonce__ !== "undefined" ? __webpack_nonce__ : null;
        if (nonce) {
            options.attributes.nonce = nonce;
        }
    }
    const link = document.createElement("link");
    link.rel = "stylesheet";
    link.href = url;
    Object.keys(options.attributes).forEach((key)=>{
        link.setAttribute(key, options.attributes[key]);
    });
    if (typeof options.insert === "function") {
        options.insert(link);
    } else {
        const target = getTarget(options.insert || "head");
        if (!target) {
            throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
        }
        target.appendChild(link);
    }
    return (newUrl)=>{
        if (typeof newUrl === "string") {
            link.href = newUrl;
        } else {
            link.parentNode.removeChild(link);
        }
    };
};

//# sourceMappingURL=injectStylesIntoLinkTag.js.map