File tree Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -17,3 +17,4 @@ export {reduce} from './operators/Reduce'
17
17
// Sources
18
18
export { fromArray } from './sources/FromArray'
19
19
export { interval } from './sources/Interval'
20
+ export { fromDOM } from './sources/FromDOM'
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Created by tushar.mathur on 14/10/16.
3
+ */
4
+
5
+
6
+ import { IObservable } from '../types/core/IObservable'
7
+ import { IObserver } from '../types/core/IObserver'
8
+ import { IScheduler } from '../types/IScheduler'
9
+ import { ISubscription } from '../types/core/ISubscription'
10
+ import { IListener } from '../types/IListener'
11
+
12
+
13
+ export class DOMSubscription implements ISubscription {
14
+ closed : boolean = false
15
+
16
+ constructor ( private element : HTMLElement , private listener : IListener , private name : string ) {
17
+ }
18
+
19
+ unsubscribe ( ) : void {
20
+ this . element . removeEventListener ( this . name , this . listener )
21
+ }
22
+ }
23
+
24
+ export class DOMObservable implements IObservable < Event > {
25
+ constructor ( private element : HTMLElement , private name : string ) {
26
+ }
27
+
28
+ subscribe ( observer : IObserver < Event > , scheduler : IScheduler ) : ISubscription {
29
+ const listener = ( e : Event ) => observer . next ( e )
30
+ this . element . addEventListener ( this . name , listener )
31
+ return new DOMSubscription ( this . element , listener , this . name )
32
+ }
33
+
34
+ }
35
+
36
+ export function fromDOM ( element : HTMLElement , name : string ) {
37
+ return new DOMObservable ( element , name )
38
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Created by tushar.mathur on 14/10/16.
3
+ */
4
+
5
+ export interface IListener {
6
+ ( e : Event ) : void
7
+ }
You can’t perform that action at this time.
0 commit comments