UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

33 lines (32 loc) 849 B
import * as React from 'react'; let _React = React; export const useSyncExternalStore = _React.useSyncExternalStore || useSyncExternalStoreShim; function useSyncExternalStoreShim(subscribe, getSnapshot) { let value = getSnapshot(); let [{ instance }, forceUpdate] = React.useState({ instance: { value, getSnapshot, }, }); React.useLayoutEffect(() => { instance.value = value; instance.getSnapshot = getSnapshot; if (!Object.is(value, getSnapshot())) forceUpdate({ instance, }); }, [subscribe, value, getSnapshot]); React.useEffect(() => { let synchronize = () => { if (!Object.is(instance.value, instance.getSnapshot())) forceUpdate({ instance, }); }; synchronize(); return subscribe(synchronize); }, [subscribe]); return value; }