1 | import {
|
2 | IArrayDidChange,
|
3 | IComputedValue,
|
4 | IMapDidChange,
|
5 | IObjectDidChange,
|
6 | IObservableArray,
|
7 | IObservableValue,
|
8 | IValueDidChange,
|
9 | Lambda,
|
10 | ObservableMap,
|
11 | getAdministration,
|
12 | ObservableSet,
|
13 | ISetDidChange,
|
14 | isFunction
|
15 | } from "../internal"
|
16 |
|
17 | export function observe<T>(
|
18 | value: IObservableValue<T> | IComputedValue<T>,
|
19 | listener: (change: IValueDidChange<T>) => void,
|
20 | fireImmediately?: boolean
|
21 | ): Lambda
|
22 | export function observe<T>(
|
23 | observableArray: IObservableArray<T>,
|
24 | listener: (change: IArrayDidChange<T>) => void,
|
25 | fireImmediately?: boolean
|
26 | ): Lambda
|
27 | export function observe<V>(
|
28 |
|
29 | observableSet: ObservableSet<V> | Set<V>,
|
30 | listener: (change: ISetDidChange<V>) => void,
|
31 | fireImmediately?: boolean
|
32 | ): Lambda
|
33 | export function observe<K, V>(
|
34 | observableMap: ObservableMap<K, V> | Map<K, V>,
|
35 | listener: (change: IMapDidChange<K, V>) => void,
|
36 | fireImmediately?: boolean
|
37 | ): Lambda
|
38 | export function observe<K, V>(
|
39 | observableMap: ObservableMap<K, V> | Map<K, V>,
|
40 | property: K,
|
41 | listener: (change: IValueDidChange<V>) => void,
|
42 | fireImmediately?: boolean
|
43 | ): Lambda
|
44 | export function observe(
|
45 | object: Object,
|
46 | listener: (change: IObjectDidChange) => void,
|
47 | fireImmediately?: boolean
|
48 | ): Lambda
|
49 | export function observe<T, K extends keyof T>(
|
50 | object: T,
|
51 | property: K,
|
52 | listener: (change: IValueDidChange<T[K]>) => void,
|
53 | fireImmediately?: boolean
|
54 | ): Lambda
|
55 | export function observe(thing, propOrCb?, cbOrFire?, fireImmediately?): Lambda {
|
56 | if (isFunction(cbOrFire))
|
57 | return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately)
|
58 | else return observeObservable(thing, propOrCb, cbOrFire)
|
59 | }
|
60 |
|
61 | function observeObservable(thing, listener, fireImmediately: boolean) {
|
62 | return getAdministration(thing).observe_(listener, fireImmediately)
|
63 | }
|
64 |
|
65 | function observeObservableProperty(thing, property, listener, fireImmediately: boolean) {
|
66 | return getAdministration(thing, property).observe_(listener, fireImmediately)
|
67 | }
|
68 |
|
\ | No newline at end of file |