Files

17 lines
635 B
JavaScript

'use strict';
(function (w) {
const states = new Set(['idle', 'good', 'warn', 'danger']);
const labels = {idle: 'Not available', good: 'Connected', warn: 'Connecting', danger: 'Not working'};
function set(target, state, label) {
const element = typeof target === 'string' ? document.getElementById(target) : target;
if (!element) return;
const next = states.has(state) ? state : 'idle';
const text = label || labels[next];
element.dataset.state = next;
element.setAttribute('role', 'img');
element.setAttribute('aria-label', text);
element.title = text;
}
w.CaptionStatus = {set};
})(window);