/**
* Heatmap Component Loader
* ========================
* Single entry point for all component scripts.
* Add once to Webflow site settings — never touch again.
*
* Usage:
* 1. Add data-component="script-name" to any Webflow element
* 2. The loader fetches {script-name}.js from the same base URL
* 3. Scripts run in order, after DOM is ready
*
* Example:
*
* → loads overline-rotator.js
*/
(function () {
'use strict';
// Derive base URL from this script's src
// document.currentScript is null with defer, so fall back to querySelector
var currentScript = document.currentScript
|| document.querySelector('script[src*="loader.js"]');
if (!currentScript) return;
var src = currentScript.src;
var baseURL = src.substring(0, src.lastIndexOf('/') + 1);
function loadScript(name) {
var script = document.createElement('script');
script.src = baseURL + name + '.js';
script.async = false; // preserve execution order
document.head.appendChild(script);
}
function init() {
var components = document.querySelectorAll('[data-component]');
var loaded = {};
for (var i = 0; i < components.length; i++) {
var name = components[i].getAttribute('data-component');
if (name && !loaded[name]) {
loaded[name] = true;
loadScript(name);
}
}
}
// Wait for DOM so all data-component attributes are discoverable
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();