@react-aria/live-announcer
Advanced tools
Comparing version 3.0.0-nightly.3114 to 3.0.0-nightly-07431f4b1-241030
@@ -20,5 +20,18 @@ | ||
*/ /* Inspired by https://github.com/AlmeroSteyn/react-aria-live */ const $97cebfa4133ebec3$var$LIVEREGION_TIMEOUT_DELAY = 7000; | ||
function $97cebfa4133ebec3$export$a9b970dcc4ae71a9(message, assertiveness = 'assertive', timeout = $97cebfa4133ebec3$var$LIVEREGION_TIMEOUT_DELAY, mode = 'message') { | ||
if (!$97cebfa4133ebec3$var$liveAnnouncer) $97cebfa4133ebec3$var$liveAnnouncer = new $97cebfa4133ebec3$var$LiveAnnouncer(); | ||
$97cebfa4133ebec3$var$liveAnnouncer.announce(message, assertiveness, timeout, mode); | ||
let $97cebfa4133ebec3$var$liveAnnouncer = null; | ||
function $97cebfa4133ebec3$export$a9b970dcc4ae71a9(message, assertiveness = 'assertive', timeout = $97cebfa4133ebec3$var$LIVEREGION_TIMEOUT_DELAY) { | ||
if (!$97cebfa4133ebec3$var$liveAnnouncer) { | ||
$97cebfa4133ebec3$var$liveAnnouncer = new $97cebfa4133ebec3$var$LiveAnnouncer(); | ||
// wait for the live announcer regions to be added to the dom, then announce | ||
// otherwise Safari won't announce the message if it's added too quickly | ||
// found most times less than 100ms were not consistent when announcing with Safari | ||
// IS_REACT_ACT_ENVIRONMENT is used by React 18. Previous versions checked for the `jest` global. | ||
// https://github.com/reactwg/react-18/discussions/102 | ||
// if we're in a test environment, announce without waiting | ||
// @ts-ignore | ||
if (!(typeof IS_REACT_ACT_ENVIRONMENT === 'boolean' ? IS_REACT_ACT_ENVIRONMENT : typeof jest !== 'undefined')) setTimeout(()=>{ | ||
if ($97cebfa4133ebec3$var$liveAnnouncer === null || $97cebfa4133ebec3$var$liveAnnouncer === void 0 ? void 0 : $97cebfa4133ebec3$var$liveAnnouncer.isAttached()) $97cebfa4133ebec3$var$liveAnnouncer === null || $97cebfa4133ebec3$var$liveAnnouncer === void 0 ? void 0 : $97cebfa4133ebec3$var$liveAnnouncer.announce(message, assertiveness, timeout); | ||
}, 100); | ||
else $97cebfa4133ebec3$var$liveAnnouncer.announce(message, assertiveness, timeout); | ||
} else $97cebfa4133ebec3$var$liveAnnouncer.announce(message, assertiveness, timeout); | ||
} | ||
@@ -41,2 +54,6 @@ function $97cebfa4133ebec3$export$d10ae4f68404609a(assertiveness) { | ||
class $97cebfa4133ebec3$var$LiveAnnouncer { | ||
isAttached() { | ||
var _this_node; | ||
return (_this_node = this.node) === null || _this_node === void 0 ? void 0 : _this_node.isConnected; | ||
} | ||
createLog(ariaLive) { | ||
@@ -54,12 +71,11 @@ let node = document.createElement('div'); | ||
} | ||
announce(message, assertiveness = 'assertive', timeout = $97cebfa4133ebec3$var$LIVEREGION_TIMEOUT_DELAY, mode = 'message') { | ||
announce(message, assertiveness = 'assertive', timeout = $97cebfa4133ebec3$var$LIVEREGION_TIMEOUT_DELAY) { | ||
var _this_assertiveLog, _this_politeLog; | ||
if (!this.node) return; | ||
let node = document.createElement('div'); | ||
if (mode === 'message') node.textContent = message; | ||
else { | ||
if (typeof message === 'object') { | ||
// To read an aria-labelledby, the element must have an appropriate role, such as img. | ||
node.setAttribute('role', 'img'); | ||
node.setAttribute('aria-labelledby', message); | ||
} | ||
node.setAttribute('aria-labelledby', message['aria-labelledby']); | ||
} else node.textContent = message; | ||
if (assertiveness === 'assertive') (_this_assertiveLog = this.assertiveLog) === null || _this_assertiveLog === void 0 ? void 0 : _this_assertiveLog.appendChild(node); | ||
@@ -104,7 +120,4 @@ else (_this_politeLog = this.politeLog) === null || _this_politeLog === void 0 ? void 0 : _this_politeLog.appendChild(node); | ||
} | ||
// singleton, setup immediately so that the DOM is primed for the first announcement as soon as possible | ||
// Safari has a race condition where the first announcement is not read if we wait until the first announce call | ||
let $97cebfa4133ebec3$var$liveAnnouncer = new $97cebfa4133ebec3$var$LiveAnnouncer(); | ||
//# sourceMappingURL=LiveAnnouncer.main.js.map |
@@ -12,5 +12,18 @@ /* | ||
*/ /* Inspired by https://github.com/AlmeroSteyn/react-aria-live */ const $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY = 7000; | ||
function $319e236875307eab$export$a9b970dcc4ae71a9(message, assertiveness = 'assertive', timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY, mode = 'message') { | ||
if (!$319e236875307eab$var$liveAnnouncer) $319e236875307eab$var$liveAnnouncer = new $319e236875307eab$var$LiveAnnouncer(); | ||
$319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout, mode); | ||
let $319e236875307eab$var$liveAnnouncer = null; | ||
function $319e236875307eab$export$a9b970dcc4ae71a9(message, assertiveness = 'assertive', timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY) { | ||
if (!$319e236875307eab$var$liveAnnouncer) { | ||
$319e236875307eab$var$liveAnnouncer = new $319e236875307eab$var$LiveAnnouncer(); | ||
// wait for the live announcer regions to be added to the dom, then announce | ||
// otherwise Safari won't announce the message if it's added too quickly | ||
// found most times less than 100ms were not consistent when announcing with Safari | ||
// IS_REACT_ACT_ENVIRONMENT is used by React 18. Previous versions checked for the `jest` global. | ||
// https://github.com/reactwg/react-18/discussions/102 | ||
// if we're in a test environment, announce without waiting | ||
// @ts-ignore | ||
if (!(typeof IS_REACT_ACT_ENVIRONMENT === 'boolean' ? IS_REACT_ACT_ENVIRONMENT : typeof jest !== 'undefined')) setTimeout(()=>{ | ||
if ($319e236875307eab$var$liveAnnouncer === null || $319e236875307eab$var$liveAnnouncer === void 0 ? void 0 : $319e236875307eab$var$liveAnnouncer.isAttached()) $319e236875307eab$var$liveAnnouncer === null || $319e236875307eab$var$liveAnnouncer === void 0 ? void 0 : $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout); | ||
}, 100); | ||
else $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout); | ||
} else $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout); | ||
} | ||
@@ -33,2 +46,6 @@ function $319e236875307eab$export$d10ae4f68404609a(assertiveness) { | ||
class $319e236875307eab$var$LiveAnnouncer { | ||
isAttached() { | ||
var _this_node; | ||
return (_this_node = this.node) === null || _this_node === void 0 ? void 0 : _this_node.isConnected; | ||
} | ||
createLog(ariaLive) { | ||
@@ -46,12 +63,11 @@ let node = document.createElement('div'); | ||
} | ||
announce(message, assertiveness = 'assertive', timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY, mode = 'message') { | ||
announce(message, assertiveness = 'assertive', timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY) { | ||
var _this_assertiveLog, _this_politeLog; | ||
if (!this.node) return; | ||
let node = document.createElement('div'); | ||
if (mode === 'message') node.textContent = message; | ||
else { | ||
if (typeof message === 'object') { | ||
// To read an aria-labelledby, the element must have an appropriate role, such as img. | ||
node.setAttribute('role', 'img'); | ||
node.setAttribute('aria-labelledby', message); | ||
} | ||
node.setAttribute('aria-labelledby', message['aria-labelledby']); | ||
} else node.textContent = message; | ||
if (assertiveness === 'assertive') (_this_assertiveLog = this.assertiveLog) === null || _this_assertiveLog === void 0 ? void 0 : _this_assertiveLog.appendChild(node); | ||
@@ -96,5 +112,2 @@ else (_this_politeLog = this.politeLog) === null || _this_politeLog === void 0 ? void 0 : _this_politeLog.appendChild(node); | ||
} | ||
// singleton, setup immediately so that the DOM is primed for the first announcement as soon as possible | ||
// Safari has a race condition where the first announcement is not read if we wait until the first announce call | ||
let $319e236875307eab$var$liveAnnouncer = new $319e236875307eab$var$LiveAnnouncer(); | ||
@@ -101,0 +114,0 @@ |
type Assertiveness = 'assertive' | 'polite'; | ||
type Message = string | { | ||
'aria-labelledby': string; | ||
}; | ||
/** | ||
* Announces the message using screen reader technology. | ||
*/ | ||
export function announce(message: string, assertiveness?: Assertiveness, timeout?: number, mode?: 'message' | 'ids'): void; | ||
export function announce(message: Message, assertiveness?: Assertiveness, timeout?: number): void; | ||
/** | ||
@@ -7,0 +10,0 @@ * Stops all queued announcements. |
{ | ||
"name": "@react-aria/live-announcer", | ||
"version": "3.0.0-nightly.3114+68403fe55", | ||
"version": "3.0.0-nightly-07431f4b1-241030", | ||
"description": "Spectrum UI components in React", | ||
@@ -30,3 +30,3 @@ "license": "Apache-2.0", | ||
}, | ||
"gitHead": "68403fe55489dce3de1b3094c957d598ad719861" | ||
} | ||
"stableVersion": "3.4.0" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
563
0
49075
16