let componentMapping = { 'dropdown': require('./dropdown'), 'overlay': require('./overlay'), 'back-to-top': require('./back-top-top'), 'notification': require('./notification'), 'chapter-toggle': require('./chapter-toggle'), 'expand-toggle': require('./expand-toggle'), 'entity-selector-popup': require('./entity-selector-popup'), 'entity-selector': require('./entity-selector'), 'sidebar': require('./sidebar'), }; window.components = {}; let componentNames = Object.keys(componentMapping); for (let i = 0, len = componentNames.length; i < len; i++) { let name = componentNames[i]; let elems = document.querySelectorAll(`[${name}]`); if (elems.length === 0) continue; let component = componentMapping[name]; if (typeof window.components[name] === "undefined") window.components[name] = []; for (let j = 0, jLen = elems.length; j < jLen; j++) { let instance = new component(elems[j]); if (typeof elems[j].components === 'undefined') elems[j].components = {}; elems[j].components[name] = instance; window.components[name].push(instance); } }