MCPcopy
hub / github.com/brimdata/zui / createWaitForSelector

Function createWaitForSelector

apps/zui/src/core/create-wait-for-selector.ts:1–32  ·  view source on GitHub ↗
(store)

Source from the content-addressed store, hash-verified

1export function createWaitForSelector(store) {
2 return function waitForSelector(
3 select,
4 options: {signal?: AbortSignal} = {}
5 ) {
6 let resolve
7 let targetValue
8
9 const unsubscribe = store.subscribe(() => {
10 const state = store.getState()
11 if (select(state) === targetValue) {
12 unsubscribe()
13 resolve()
14 }
15 })
16
17 let promise = new Promise((res, reject) => {
18 resolve = res
19 options.signal?.addEventListener("abort", () => {
20 unsubscribe()
21 reject(new DOMException("AbortError"))
22 })
23 })
24
25 return {
26 toReturn(value) {
27 targetValue = value
28 return promise
29 },
30 }
31 }
32}

Callers 1

initializeFunction · 0.90

Calls 1

selectFunction · 0.50

Tested by

no test coverage detected