( compute: () => T, comparator?: (a: T, b: T) => boolean )
| 4 | } from '@preact/signals-core'; |
| 5 | |
| 6 | export function computed<T>( |
| 7 | compute: () => T, |
| 8 | comparator?: (a: T, b: T) => boolean |
| 9 | ): ReadonlySignal<T> { |
| 10 | if (comparator) { |
| 11 | let previousValue: T | undefined; |
| 12 | |
| 13 | return computedSignal(() => { |
| 14 | const value = compute(); |
| 15 | |
| 16 | if (value && previousValue && comparator(previousValue, value)) { |
| 17 | return previousValue; |
| 18 | } |
| 19 | |
| 20 | previousValue = value; |
| 21 | return value; |
| 22 | }); |
| 23 | } |
| 24 | |
| 25 | return computedSignal<T>(compute); |
| 26 | } |
no outgoing calls
no test coverage detected