/* IMPORT */ import {OBSERVER, setObserver} from '~/context'; import {isFunction} from '~/utils'; import type {FunctionMaybe, UntrackFunction} from '~/types'; /* MAIN */ function untrack ( fn: FunctionMaybe ): T; function untrack ( fn: UntrackFunction ): T; function untrack ( fn: T ): T; function untrack ( fn: UntrackFunction | T ) { if ( isFunction ( fn ) ) { const observerPrev = OBSERVER; if ( observerPrev ) { try { setObserver ( undefined ); return fn (); } finally { setObserver ( observerPrev ); } } else { return fn (); } } else { return fn; } } /* EXPORT */ export default untrack;