-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathui-scroll.datasource.ts
42 lines (36 loc) · 1.36 KB
/
ui-scroll.datasource.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { BehaviorSubject, Subject } from 'rxjs';
import {
makeDatasource,
AdapterPropName,
EMPTY_ITEM,
IReactivePropConfig,
IAdapterConfig,
IAdapterItem
} from './vscroll';
import { AngularDatasourceClass } from './types';
const getBooleanSubjectPropConfig = (): IReactivePropConfig => ({
source: new Subject<boolean>(),
emit: (source, value) => (source as Subject<boolean>).next(value as boolean)
});
const getItemBehaviorSubjectPropConfig = (): IReactivePropConfig => ({
source: new BehaviorSubject<IAdapterItem>(EMPTY_ITEM),
emit: (source, value) =>
(source as BehaviorSubject<IAdapterItem>).next(value as IAdapterItem)
});
const getAdapterConfig = (): IAdapterConfig => ({
mock: false,
reactive: {
[AdapterPropName.init$]: getBooleanSubjectPropConfig(),
[AdapterPropName.isLoading$]: getBooleanSubjectPropConfig(),
[AdapterPropName.loopPending$]: getBooleanSubjectPropConfig(),
[AdapterPropName.firstVisible$]: getItemBehaviorSubjectPropConfig(),
[AdapterPropName.lastVisible$]: getItemBehaviorSubjectPropConfig(),
[AdapterPropName.bof$]: getBooleanSubjectPropConfig(),
[AdapterPropName.eof$]: getBooleanSubjectPropConfig(),
[AdapterPropName.paused$]: getBooleanSubjectPropConfig()
}
});
const AngularDatasource = makeDatasource(
getAdapterConfig
) as AngularDatasourceClass;
export { AngularDatasource as Datasource };