function loadStylesheets(stylesheets, { 
 | 
    before: beforeDefault, after: afterDefault, favicon: faviconDefault, 
 | 
    canvas: canvasDefault, image: imageDefault = true, 
 | 
    acceptErrors 
 | 
} = {}) { 
 | 
    stylesheets = Array.isArray(stylesheets) ? stylesheets : [stylesheets]; 
 | 
  
 | 
    function setupLink(stylesheetURL) { 
 | 
        let options = {}; 
 | 
        if (Array.isArray(stylesheetURL)) { 
 | 
            [stylesheetURL, options = {}] = stylesheetURL; 
 | 
        } 
 | 
        let { favicon = faviconDefault } = options; 
 | 
        const { 
 | 
            before = beforeDefault, 
 | 
            after = afterDefault, 
 | 
            canvas = canvasDefault, 
 | 
            image = imageDefault 
 | 
        } = options; 
 | 
        function addLink() { 
 | 
            if (before) { 
 | 
                before.before(link); 
 | 
            } else if (after) { 
 | 
                after.after(link); 
 | 
            } else { 
 | 
                document.head.appendChild(link); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        const link = document.createElement('link'); 
 | 
        return new Promise((resolve, reject) => { 
 | 
            let rej = reject; 
 | 
            if (acceptErrors) { 
 | 
                rej = typeof acceptErrors === 'function' ? error => { 
 | 
                    acceptErrors({ error, stylesheetURL, options, resolve, reject }); 
 | 
                } : resolve; 
 | 
            } 
 | 
            if (stylesheetURL.endsWith('.css')) { 
 | 
                favicon = false; 
 | 
            } else if (stylesheetURL.endsWith('.ico')) { 
 | 
                favicon = true; 
 | 
            } 
 | 
            if (favicon) { 
 | 
                link.rel = 'shortcut icon'; 
 | 
                link.type = 'image/x-icon'; 
 | 
  
 | 
                if (image === false) { 
 | 
                    link.href = stylesheetURL; 
 | 
                    addLink(); 
 | 
                    resolve(link); 
 | 
                    return; 
 | 
                } 
 | 
  
 | 
                const cnv = document.createElement('canvas'); 
 | 
                cnv.width = 16; 
 | 
                cnv.height = 16; 
 | 
                const context = cnv.getContext('2d'); 
 | 
                const img = document.createElement('img'); 
 | 
                img.addEventListener('error', error => { 
 | 
                    reject(error); 
 | 
                }); 
 | 
                img.addEventListener('load', () => { 
 | 
                    context.drawImage(img, 0, 0); 
 | 
                    link.href = canvas ? cnv.toDataURL('image/x-icon') : stylesheetURL; 
 | 
                    addLink(); 
 | 
                    resolve(link); 
 | 
                }); 
 | 
                img.src = stylesheetURL; 
 | 
                return; 
 | 
            } 
 | 
            link.rel = 'stylesheet'; 
 | 
            link.type = 'text/css'; 
 | 
            link.href = stylesheetURL; 
 | 
            addLink(); 
 | 
            link.addEventListener('error', error => { 
 | 
                rej(error); 
 | 
            }); 
 | 
            link.addEventListener('load', () => { 
 | 
                resolve(link); 
 | 
            }); 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    return Promise.all(stylesheets.map(setupLink)); 
 | 
} 
 | 
  
 | 
export default loadStylesheets; 
 |