50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
// packages/a11y/build-module/shared/clear.mjs
|
||
function clear() {
|
||
const regions = document.getElementsByClassName("a11y-speak-region");
|
||
const introText = document.getElementById("a11y-speak-intro-text");
|
||
for (let i = 0; i < regions.length; i++) {
|
||
regions[i].textContent = "";
|
||
}
|
||
if (introText) {
|
||
introText.setAttribute("hidden", "hidden");
|
||
}
|
||
}
|
||
|
||
// packages/a11y/build-module/shared/filter-message.mjs
|
||
var previousMessage = "";
|
||
function filterMessage(message) {
|
||
message = message.replace(/<[^<>]+>/g, " ");
|
||
if (previousMessage === message) {
|
||
message += " ";
|
||
}
|
||
previousMessage = message;
|
||
return message;
|
||
}
|
||
|
||
// packages/a11y/build-module/shared/index.mjs
|
||
function speak(message, ariaLive) {
|
||
clear();
|
||
message = filterMessage(message);
|
||
const introText = document.getElementById("a11y-speak-intro-text");
|
||
const containerAssertive = document.getElementById(
|
||
"a11y-speak-assertive"
|
||
);
|
||
const containerPolite = document.getElementById("a11y-speak-polite");
|
||
if (containerAssertive && ariaLive === "assertive") {
|
||
containerAssertive.textContent = message;
|
||
} else if (containerPolite) {
|
||
containerPolite.textContent = message;
|
||
}
|
||
if (introText) {
|
||
introText.removeAttribute("hidden");
|
||
}
|
||
}
|
||
|
||
// packages/a11y/build-module/module/index.mjs
|
||
var setup = () => {
|
||
};
|
||
export {
|
||
setup,
|
||
speak
|
||
};
|