Skip to content

Commit d025915

Browse files
committed
fix: refactor waitForThemed function to improve timeout handling and clarity
1 parent 18b7a60 commit d025915

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

packages/components/src/utils/element-focus.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,25 @@ const MAX_TIMEOUT_DURATION = 5000;
1010
* @see MAX_TIMEOUT_DURATION
1111
*/
1212
function waitForThemed(host: HTMLElement): Promise<void> {
13-
const observed = new Promise<void>((resolve) => {
13+
return new Promise<void>((resolve, reject) => {
1414
const observer = new MutationObserver(() => {
15-
observer.disconnect();
16-
resolve();
15+
if (host.hasAttribute('data-themed')) {
16+
clearTimeout(timeoutId);
17+
observer.disconnect();
18+
resolve();
19+
}
1720
});
21+
22+
const timeoutId = setTimeout(() => {
23+
observer.disconnect();
24+
reject(new Error('Timeout waiting for data-themed attribute'));
25+
}, MAX_TIMEOUT_DURATION);
26+
1827
observer.observe(host, {
1928
attributes: true,
2029
attributeFilter: ['data-themed'],
2130
});
2231
});
23-
24-
const timeout = new Promise<void>((_, reject) => {
25-
setTimeout(() => reject(new Error('Timeout waiting for data-themed attribute')), MAX_TIMEOUT_DURATION);
26-
});
27-
28-
return Promise.race([observed, timeout]);
2932
}
3033

3134
/**

0 commit comments

Comments
 (0)