fradrive/static/js/utils/setup.js
2019-02-16 12:24:01 +01:00

55 lines
1.2 KiB
JavaScript

(function() {
'use strict';
window.utils = window.utils || {};
var registeredSetupListeners = {};
window.utils.setup = function(utilType, scope, options) {
if (!utilType) {
return;
}
var listener = function(event) {
if (event.detail.targetUtil !== utilType) {
return false;
}
if (options && options.setupFunction) {
options.setupFunction(scope, options);
} else {
var util = window.utils[utilType];
if (!util) {
throw new Error('"' + utilType + '" is not a known js util');
}
util(scope, options);
}
};
if (registeredSetupListeners[utilType]) {
registeredSetupListeners[utilType].push(listener);
} else {
registeredSetupListeners[utilType] = [ listener ];
}
document.addEventListener('setup', listener);
document.dispatchEvent(new CustomEvent('setup', {
detail: { targetUtil: utilType, module: 'none' },
bubbles: true,
cancelable: true,
}));
};
window.utils.teardown = function(utilType) {
if (registeredSetupListeners[utilType]) {
registeredSetupListeners[utilType].forEach(function(listener) {
document.removeEventListener('setup', listener);
});
}
}
})();