vscroll 1.5.2 → 1.5.3-passive
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles/vscroll.esm5.js +120 -62
- package/dist/bundles/vscroll.esm5.js.map +1 -1
- package/dist/bundles/vscroll.esm5.min.js +2 -2
- package/dist/bundles/vscroll.esm5.min.js.map +1 -1
- package/dist/bundles/vscroll.esm6.js +115 -56
- package/dist/bundles/vscroll.esm6.js.map +1 -1
- package/dist/bundles/vscroll.esm6.min.js +2 -2
- package/dist/bundles/vscroll.esm6.min.js.map +1 -1
- package/dist/bundles/vscroll.umd.js +121 -63
- package/dist/bundles/vscroll.umd.js.map +1 -1
- package/dist/bundles/vscroll.umd.min.js +2 -2
- package/dist/bundles/vscroll.umd.min.js.map +1 -1
- package/dist/esm2015/classes/adapter/context.js +11 -5
- package/dist/esm2015/classes/adapter/context.js.map +1 -1
- package/dist/esm2015/classes/adapter/props.js +4 -2
- package/dist/esm2015/classes/adapter/props.js.map +1 -1
- package/dist/esm2015/classes/adapter/wanted.js +29 -0
- package/dist/esm2015/classes/adapter/wanted.js.map +1 -0
- package/dist/esm2015/classes/adapter.js +65 -29
- package/dist/esm2015/classes/adapter.js.map +1 -1
- package/dist/esm2015/classes/datasource.js +2 -0
- package/dist/esm2015/classes/datasource.js.map +1 -1
- package/dist/esm2015/classes/domRoutines.js +1 -1
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/classes/logger.js +1 -1
- package/dist/esm2015/classes/logger.js.map +1 -1
- package/dist/esm2015/inputs/validation.js.map +1 -1
- package/dist/esm2015/interfaces/adapter.js.map +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/process.js.map +1 -1
- package/dist/esm2015/interfaces/workflow.js.map +1 -1
- package/dist/esm2015/processes/end.js +5 -18
- package/dist/esm2015/processes/end.js.map +1 -1
- package/dist/esm2015/scroller.js +1 -1
- package/dist/esm2015/scroller.js.map +1 -1
- package/dist/esm2015/version.js +1 -1
- package/dist/esm2015/version.js.map +1 -1
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/adapter/context.js +11 -6
- package/dist/esm5/classes/adapter/context.js.map +1 -1
- package/dist/esm5/classes/adapter/props.js +4 -2
- package/dist/esm5/classes/adapter/props.js.map +1 -1
- package/dist/esm5/classes/adapter/wanted.js +30 -0
- package/dist/esm5/classes/adapter/wanted.js.map +1 -0
- package/dist/esm5/classes/adapter.js +69 -34
- package/dist/esm5/classes/adapter.js.map +1 -1
- package/dist/esm5/classes/datasource.js +2 -0
- package/dist/esm5/classes/datasource.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +1 -1
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/classes/logger.js +1 -1
- package/dist/esm5/classes/logger.js.map +1 -1
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/interfaces/adapter.js.map +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/process.js.map +1 -1
- package/dist/esm5/interfaces/workflow.js.map +1 -1
- package/dist/esm5/processes/end.js +5 -18
- package/dist/esm5/processes/end.js.map +1 -1
- package/dist/esm5/scroller.js +1 -1
- package/dist/esm5/scroller.js.map +1 -1
- package/dist/esm5/version.js +1 -1
- package/dist/esm5/version.js.map +1 -1
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/adapter/wanted.d.ts +14 -0
- package/dist/typings/classes/adapter.d.ts +7 -4
- package/dist/typings/classes/logger.d.ts +1 -1
- package/dist/typings/interfaces/adapter.d.ts +6 -0
- package/dist/typings/interfaces/index.d.ts +2 -2
- package/dist/typings/interfaces/workflow.d.ts +1 -1
- package/dist/typings/processes/end.d.ts +1 -2
- package/dist/typings/workflow.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AdapterPropName, AdapterPropType, getDefaultAdapterProps, reactiveConfigStorage } from './props';
|
|
2
2
|
import core from '../../version';
|
|
3
|
+
import { wantedStorage, wantedUtils } from './wanted';
|
|
3
4
|
let instanceCount = 0;
|
|
4
5
|
export class AdapterContext {
|
|
5
6
|
constructor(config) {
|
|
@@ -7,6 +8,7 @@ export class AdapterContext {
|
|
|
7
8
|
const id = ++instanceCount;
|
|
8
9
|
const conf = { configurable: true };
|
|
9
10
|
const reactivePropsStore = {};
|
|
11
|
+
wantedStorage.set(id, { box: {}, block: false });
|
|
10
12
|
// set up permanent props
|
|
11
13
|
Object.defineProperty(this, AdapterPropName.id, Object.assign({ get: () => id }, conf));
|
|
12
14
|
Object.defineProperty(this, AdapterPropName.mock, Object.assign({ get: () => mock }, conf));
|
|
@@ -15,20 +17,24 @@ export class AdapterContext {
|
|
|
15
17
|
// set up default props, they will be reassigned during the Adapter instantiation
|
|
16
18
|
getDefaultAdapterProps()
|
|
17
19
|
.filter(({ permanent }) => !permanent)
|
|
18
|
-
.forEach(
|
|
20
|
+
.forEach(prop => {
|
|
21
|
+
let { value } = prop;
|
|
19
22
|
// reactive props might be reconfigured by the vscroll consumer
|
|
20
|
-
if (reactive && type === AdapterPropType.Reactive) {
|
|
21
|
-
const react = reactive[name];
|
|
23
|
+
if (reactive && prop.type === AdapterPropType.Reactive) {
|
|
24
|
+
const react = reactive[prop.name];
|
|
22
25
|
if (react) {
|
|
23
26
|
// here we have a configured reactive property that came from the outer config
|
|
24
27
|
// this prop must be exposed via Adapter, but at the same time we need to
|
|
25
28
|
// persist the original default value as it will be used by the Adapter internally
|
|
26
|
-
reactivePropsStore[name] = Object.assign(Object.assign({}, react), { default: value // persisting the default native Reactive prop
|
|
29
|
+
reactivePropsStore[prop.name] = Object.assign(Object.assign({}, react), { default: value // persisting the default native Reactive prop
|
|
27
30
|
});
|
|
28
31
|
value = react.source; // exposing the configured prop instead of the default one
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
|
-
Object.defineProperty(this, name, Object.assign({ get: () =>
|
|
34
|
+
Object.defineProperty(this, prop.name, Object.assign({ get: () => {
|
|
35
|
+
wantedUtils.setBox(prop, id);
|
|
36
|
+
return value;
|
|
37
|
+
} }, conf));
|
|
32
38
|
});
|
|
33
39
|
if (reactive) { // save both configured and default reactive props in the store
|
|
34
40
|
reactiveConfigStorage.set(id, reactivePropsStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/classes/adapter/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,IAAI,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/classes/adapter/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,IAAI,MAAM,eAAe,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGtD,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,MAAM,OAAO,cAAc;IAEzB,YAAY,MAAsB;QAChC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAClC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC;QAC3B,MAAM,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACpC,MAAM,kBAAkB,GAAwB,EAAE,CAAC;QACnD,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjD,yBAAyB;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,kBAAI,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAK,IAAI,EAAG,CAAC;QAC5E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,kBAAI,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAK,IAAI,EAAG,CAAC;QAChF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,kBAAI,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,IAAK,IAAI,EAAG,CAAC;QACtF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,kBAAI,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,IAAK,IAAI,EAAG,CAAC;QAE3F,iFAAiF;QACjF,sBAAsB,EAAE;aACrB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;aACrC,OAAO,CAAC,IAAI,CAAC,EAAE;YACd,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAErB,+DAA+D;YAC/D,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,QAAQ,EAAE;gBACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,KAAK,EAAE;oBACT,8EAA8E;oBAC9E,yEAAyE;oBACzE,kFAAkF;oBAClF,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,mCACxB,KAAK,KACR,OAAO,EAAE,KAA0B,CAAC,8CAA8C;uBACnF,CAAC;oBACF,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,0DAA0D;iBACjF;aACF;YAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,kBACnC,GAAG,EAAE,GAAG,EAAE;oBACR,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7B,OAAO,KAAK,CAAC;gBACf,CAAC,IACE,IAAI,EACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,IAAI,QAAQ,EAAE,EAAE,+DAA+D;YAC7E,qBAAqB,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;SACnD;IACH,CAAC;CACF","sourcesContent":["import { AdapterPropName, AdapterPropType, getDefaultAdapterProps, reactiveConfigStorage } from './props';\nimport core from '../../version';\nimport { Reactive } from '../reactive';\nimport { wantedStorage, wantedUtils } from './wanted';\nimport { IReactivePropsStore, IAdapterConfig } from '../../interfaces/index';\n\nlet instanceCount = 0;\n\nexport class AdapterContext {\n\n constructor(config: IAdapterConfig) {\n const { mock, reactive } = config;\n const id = ++instanceCount;\n const conf = { configurable: true };\n const reactivePropsStore: IReactivePropsStore = {};\n wantedStorage.set(id, { box: {}, block: false });\n\n // set up permanent props\n Object.defineProperty(this, AdapterPropName.id, { get: () => id, ...conf });\n Object.defineProperty(this, AdapterPropName.mock, { get: () => mock, ...conf });\n Object.defineProperty(this, AdapterPropName.augmented, { get: () => false, ...conf });\n Object.defineProperty(this, AdapterPropName.version, { get: () => core.version, ...conf });\n\n // set up default props, they will be reassigned during the Adapter instantiation\n getDefaultAdapterProps()\n .filter(({ permanent }) => !permanent)\n .forEach(prop => {\n let { value } = prop;\n\n // reactive props might be reconfigured by the vscroll consumer\n if (reactive && prop.type === AdapterPropType.Reactive) {\n const react = reactive[prop.name];\n if (react) {\n // here we have a configured reactive property that came from the outer config\n // this prop must be exposed via Adapter, but at the same time we need to\n // persist the original default value as it will be used by the Adapter internally\n reactivePropsStore[prop.name] = {\n ...react,\n default: value as Reactive<unknown> // persisting the default native Reactive prop\n };\n value = react.source; // exposing the configured prop instead of the default one\n }\n }\n\n Object.defineProperty(this, prop.name, {\n get: () => {\n wantedUtils.setBox(prop, id);\n return value;\n },\n ...conf\n });\n });\n\n if (reactive) { // save both configured and default reactive props in the store\n reactiveConfigStorage.set(id, reactivePropsStore);\n }\n }\n}\n"]}
|
|
@@ -245,12 +245,14 @@ export const getDefaultAdapterProps = () => [
|
|
|
245
245
|
{
|
|
246
246
|
type: Type.Reactive,
|
|
247
247
|
name: Name.firstVisible$,
|
|
248
|
-
value: new Reactive(EMPTY_ITEM, { emitOnSubscribe: true })
|
|
248
|
+
value: new Reactive(EMPTY_ITEM, { emitOnSubscribe: true }),
|
|
249
|
+
wanted: true
|
|
249
250
|
},
|
|
250
251
|
{
|
|
251
252
|
type: Type.Reactive,
|
|
252
253
|
name: Name.lastVisible$,
|
|
253
|
-
value: new Reactive(EMPTY_ITEM, { emitOnSubscribe: true })
|
|
254
|
+
value: new Reactive(EMPTY_ITEM, { emitOnSubscribe: true }),
|
|
255
|
+
wanted: true
|
|
254
256
|
},
|
|
255
257
|
{
|
|
256
258
|
type: Type.Reactive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../src/classes/adapter/props.ts"],"names":[],"mappings":"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","sourcesContent":["import { Reactive } from '../reactive';\nimport {\n IAdapterProp, IBufferInfo, ItemAdapter, IPackages, AdapterMethodResult, IReactivePropsStore\n} from '../../interfaces/index';\n\nexport enum AdapterPropName {\n id = 'id',\n mock = 'mock',\n augmented = 'augmented',\n version = 'version',\n init = 'init',\n init$ = 'init$',\n packageInfo = 'packageInfo',\n itemsCount = 'itemsCount',\n bufferInfo = 'bufferInfo',\n isLoading = 'isLoading',\n isLoading$ = 'isLoading$',\n loopPending = 'loopPending',\n loopPending$ = 'loopPending$',\n firstVisible = 'firstVisible',\n firstVisible$ = 'firstVisible$',\n lastVisible = 'lastVisible',\n lastVisible$ = 'lastVisible$',\n bof = 'bof',\n bof$ = 'bof$',\n eof = 'eof',\n eof$ = 'eof$',\n reset = 'reset',\n reload = 'reload',\n append = 'append',\n prepend = 'prepend',\n check = 'check',\n remove = 'remove',\n clip = 'clip',\n insert = 'insert',\n replace = 'replace',\n update = 'update',\n fix = 'fix',\n relax = 'relax',\n showLog = 'showLog',\n}\n\nexport enum AdapterPropType {\n Scalar,\n Reactive,\n WorkflowRunner,\n Function,\n}\n\nconst Name = AdapterPropName;\nconst Type = AdapterPropType;\n\nconst noop = () => null;\n\nexport const methodPreResult: AdapterMethodResult = {\n immediate: true,\n success: true,\n details: 'Adapter is not initialized'\n};\n\nconst noopWF = () => Promise.resolve(methodPreResult);\n\nconst emptyPackageInfo: IPackages = {\n core: {\n name: '',\n version: ''\n },\n consumer: {\n name: '',\n version: ''\n }\n};\n\nconst bufferInfoDefault: IBufferInfo = {\n firstIndex: NaN,\n lastIndex: NaN,\n minIndex: NaN,\n maxIndex: NaN,\n absMinIndex: -Infinity,\n absMaxIndex: +Infinity,\n defaultSize: NaN,\n};\n\nexport const EMPTY_ITEM = {\n data: {},\n element: {}\n} as ItemAdapter;\n\nexport const getDefaultAdapterProps = (): IAdapterProp[] => [\n {\n type: Type.Scalar,\n name: Name.id,\n value: 0,\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.mock,\n value: true,\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.augmented,\n value: false,\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.version,\n value: '',\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.init,\n value: false,\n reactive: Name.init$\n },\n {\n type: Type.Scalar,\n name: Name.packageInfo,\n value: emptyPackageInfo,\n onDemand: true\n },\n {\n type: Type.Scalar,\n name: Name.itemsCount,\n value: 0,\n onDemand: true\n },\n {\n type: Type.Scalar,\n name: Name.bufferInfo,\n value: bufferInfoDefault,\n onDemand: true\n },\n {\n type: Type.Scalar,\n name: Name.isLoading,\n value: false,\n reactive: Name.isLoading$\n },\n {\n type: Type.Scalar,\n name: Name.loopPending,\n value: false,\n reactive: Name.loopPending$\n },\n {\n type: Type.Scalar,\n name: Name.firstVisible,\n value: EMPTY_ITEM,\n reactive: Name.firstVisible$,\n wanted: true\n },\n {\n type: Type.Scalar,\n name: Name.lastVisible,\n value: EMPTY_ITEM,\n reactive: Name.lastVisible$,\n wanted: true\n },\n {\n type: Type.Scalar,\n name: Name.bof,\n value: false,\n reactive: Name.bof$\n },\n {\n type: Type.Scalar,\n name: Name.eof,\n value: false,\n reactive: Name.eof$\n },\n {\n type: Type.WorkflowRunner,\n name: Name.reset,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.reload,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.append,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.prepend,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.check,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.remove,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.clip,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.insert,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.replace,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.update,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.fix,\n value: noopWF\n },\n {\n type: Type.Function,\n name: Name.relax,\n value: noop\n },\n {\n type: Type.Function,\n name: Name.showLog,\n value: noop\n },\n {\n type: Type.Reactive,\n name: Name.init$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.isLoading$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.loopPending$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.firstVisible$,\n value: new Reactive<ItemAdapter>(EMPTY_ITEM, { emitOnSubscribe: true })\n },\n {\n type: Type.Reactive,\n name: Name.lastVisible$,\n value: new Reactive<ItemAdapter>(EMPTY_ITEM, { emitOnSubscribe: true })\n },\n {\n type: Type.Reactive,\n name: Name.bof$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.eof$,\n value: new Reactive<boolean>()\n }\n];\n\nexport const reactiveConfigStorage = new Map<number, IReactivePropsStore>();\n"]}
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../src/classes/adapter/props.ts"],"names":[],"mappings":"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","sourcesContent":["import { Reactive } from '../reactive';\nimport {\n IAdapterProp, IBufferInfo, ItemAdapter, IPackages, AdapterMethodResult, IReactivePropsStore\n} from '../../interfaces/index';\n\nexport enum AdapterPropName {\n id = 'id',\n mock = 'mock',\n augmented = 'augmented',\n version = 'version',\n init = 'init',\n init$ = 'init$',\n packageInfo = 'packageInfo',\n itemsCount = 'itemsCount',\n bufferInfo = 'bufferInfo',\n isLoading = 'isLoading',\n isLoading$ = 'isLoading$',\n loopPending = 'loopPending',\n loopPending$ = 'loopPending$',\n firstVisible = 'firstVisible',\n firstVisible$ = 'firstVisible$',\n lastVisible = 'lastVisible',\n lastVisible$ = 'lastVisible$',\n bof = 'bof',\n bof$ = 'bof$',\n eof = 'eof',\n eof$ = 'eof$',\n reset = 'reset',\n reload = 'reload',\n append = 'append',\n prepend = 'prepend',\n check = 'check',\n remove = 'remove',\n clip = 'clip',\n insert = 'insert',\n replace = 'replace',\n update = 'update',\n fix = 'fix',\n relax = 'relax',\n showLog = 'showLog',\n}\n\nexport enum AdapterPropType {\n Scalar,\n Reactive,\n WorkflowRunner,\n Function,\n}\n\nconst Name = AdapterPropName;\nconst Type = AdapterPropType;\n\nconst noop = () => null;\n\nexport const methodPreResult: AdapterMethodResult = {\n immediate: true,\n success: true,\n details: 'Adapter is not initialized'\n};\n\nconst noopWF = () => Promise.resolve(methodPreResult);\n\nconst emptyPackageInfo: IPackages = {\n core: {\n name: '',\n version: ''\n },\n consumer: {\n name: '',\n version: ''\n }\n};\n\nconst bufferInfoDefault: IBufferInfo = {\n firstIndex: NaN,\n lastIndex: NaN,\n minIndex: NaN,\n maxIndex: NaN,\n absMinIndex: -Infinity,\n absMaxIndex: +Infinity,\n defaultSize: NaN,\n};\n\nexport const EMPTY_ITEM = {\n data: {},\n element: {}\n} as ItemAdapter;\n\nexport const getDefaultAdapterProps = (): IAdapterProp[] => [\n {\n type: Type.Scalar,\n name: Name.id,\n value: 0,\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.mock,\n value: true,\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.augmented,\n value: false,\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.version,\n value: '',\n permanent: true\n },\n {\n type: Type.Scalar,\n name: Name.init,\n value: false,\n reactive: Name.init$\n },\n {\n type: Type.Scalar,\n name: Name.packageInfo,\n value: emptyPackageInfo,\n onDemand: true\n },\n {\n type: Type.Scalar,\n name: Name.itemsCount,\n value: 0,\n onDemand: true\n },\n {\n type: Type.Scalar,\n name: Name.bufferInfo,\n value: bufferInfoDefault,\n onDemand: true\n },\n {\n type: Type.Scalar,\n name: Name.isLoading,\n value: false,\n reactive: Name.isLoading$\n },\n {\n type: Type.Scalar,\n name: Name.loopPending,\n value: false,\n reactive: Name.loopPending$\n },\n {\n type: Type.Scalar,\n name: Name.firstVisible,\n value: EMPTY_ITEM,\n reactive: Name.firstVisible$,\n wanted: true\n },\n {\n type: Type.Scalar,\n name: Name.lastVisible,\n value: EMPTY_ITEM,\n reactive: Name.lastVisible$,\n wanted: true\n },\n {\n type: Type.Scalar,\n name: Name.bof,\n value: false,\n reactive: Name.bof$\n },\n {\n type: Type.Scalar,\n name: Name.eof,\n value: false,\n reactive: Name.eof$\n },\n {\n type: Type.WorkflowRunner,\n name: Name.reset,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.reload,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.append,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.prepend,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.check,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.remove,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.clip,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.insert,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.replace,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.update,\n value: noopWF\n },\n {\n type: Type.WorkflowRunner,\n name: Name.fix,\n value: noopWF\n },\n {\n type: Type.Function,\n name: Name.relax,\n value: noop\n },\n {\n type: Type.Function,\n name: Name.showLog,\n value: noop\n },\n {\n type: Type.Reactive,\n name: Name.init$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.isLoading$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.loopPending$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.firstVisible$,\n value: new Reactive<ItemAdapter>(EMPTY_ITEM, { emitOnSubscribe: true }),\n wanted: true\n },\n {\n type: Type.Reactive,\n name: Name.lastVisible$,\n value: new Reactive<ItemAdapter>(EMPTY_ITEM, { emitOnSubscribe: true }),\n wanted: true\n },\n {\n type: Type.Reactive,\n name: Name.bof$,\n value: new Reactive<boolean>()\n },\n {\n type: Type.Reactive,\n name: Name.eof$,\n value: new Reactive<boolean>()\n }\n];\n\nexport const reactiveConfigStorage = new Map<number, IReactivePropsStore>();\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AdapterPropName } from './props';
|
|
2
|
+
const getBox = (id) => {
|
|
3
|
+
var _a;
|
|
4
|
+
return (_a = wantedStorage.get(id || -1)) === null || _a === void 0 ? void 0 : _a.box;
|
|
5
|
+
};
|
|
6
|
+
const setBox = ({ name, wanted }, id) => {
|
|
7
|
+
const Wanted = wantedStorage.get(id || -1);
|
|
8
|
+
if (wanted && Wanted && !Wanted.box[name] && !Wanted.block) {
|
|
9
|
+
const { firstVisible: a, firstVisible$: a$ } = AdapterPropName;
|
|
10
|
+
const { lastVisible: b, lastVisible$: b$ } = AdapterPropName;
|
|
11
|
+
Wanted.box[a] = Wanted.box[a$] = [a, a$].some(n => n === name) || Wanted.box[a];
|
|
12
|
+
Wanted.box[b] = Wanted.box[b$] = [b, b$].some(n => n === name) || Wanted.box[b];
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
};
|
|
17
|
+
const setBlock = (value, id) => {
|
|
18
|
+
const Wanted = wantedStorage.get(id || -1);
|
|
19
|
+
if (Wanted) {
|
|
20
|
+
Wanted.block = value;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export const wantedUtils = {
|
|
24
|
+
getBox,
|
|
25
|
+
setBox,
|
|
26
|
+
setBlock
|
|
27
|
+
};
|
|
28
|
+
export const wantedStorage = new Map();
|
|
29
|
+
//# sourceMappingURL=wanted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wanted.js","sourceRoot":"","sources":["../../../../src/classes/adapter/wanted.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO1C,MAAM,MAAM,GAAG,CAAC,EAAW,EAA8B,EAAE;;IACzD,OAAO,MAAA,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAgB,EAAE,EAAW,EAAW,EAAE;IACtE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QAC1D,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAC/D,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAW,EAAQ,EAAE;IACrD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,MAAM;IACN,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAmB,CAAC","sourcesContent":["import { IAdapterProp } from '../../interfaces/index';\nimport { AdapterPropName } from './props';\n\ninterface IWanted {\n box: { [key: string]: boolean };\n block: boolean;\n}\n\nconst getBox = (id?: number): IWanted['box'] | undefined => {\n return wantedStorage.get(id || -1)?.box;\n};\n\nconst setBox = ({ name, wanted }: IAdapterProp, id?: number): boolean => {\n const Wanted = wantedStorage.get(id || -1);\n if (wanted && Wanted && !Wanted.box[name] && !Wanted.block) {\n const { firstVisible: a, firstVisible$: a$ } = AdapterPropName;\n const { lastVisible: b, lastVisible$: b$ } = AdapterPropName;\n Wanted.box[a] = Wanted.box[a$] = [a, a$].some(n => n === name) || Wanted.box[a];\n Wanted.box[b] = Wanted.box[b$] = [b, b$].some(n => n === name) || Wanted.box[b];\n return true;\n }\n return false;\n};\n\nconst setBlock = (value: boolean, id?: number): void => {\n const Wanted = wantedStorage.get(id || -1);\n if (Wanted) {\n Wanted.block = value;\n }\n};\n\nexport const wantedUtils = {\n getBox,\n setBox,\n setBlock\n};\n\nexport const wantedStorage = new Map<number, IWanted>();\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Reactive } from './reactive';
|
|
2
|
-
import { AdapterPropName, AdapterPropType, getDefaultAdapterProps, methodPreResult, reactiveConfigStorage } from './adapter/props';
|
|
2
|
+
import { AdapterPropName, AdapterPropType, EMPTY_ITEM, getDefaultAdapterProps, methodPreResult, reactiveConfigStorage } from './adapter/props';
|
|
3
|
+
import { wantedUtils } from './adapter/wanted';
|
|
4
|
+
import { Direction } from '../inputs/index';
|
|
3
5
|
import { AdapterProcess, ProcessStatus } from '../processes/index';
|
|
4
6
|
const ADAPTER_PROPS_STUB = getDefaultAdapterProps();
|
|
5
7
|
const _has = (obj, prop) => typeof obj === 'object' && obj !== null && Object.prototype.hasOwnProperty.call(obj, prop);
|
|
@@ -23,14 +25,19 @@ export class Adapter {
|
|
|
23
25
|
this.source = {}; // for Reactive props
|
|
24
26
|
this.box = {}; // for Scalars over Reactive props
|
|
25
27
|
this.demand = {}; // for Scalars on demand
|
|
26
|
-
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
29
|
+
this.setFirstOrLastVisible = (_) => { };
|
|
27
30
|
this.getWorkflow = getWorkflow;
|
|
28
31
|
this.logger = logger;
|
|
29
32
|
this.relax$ = null;
|
|
30
33
|
this.relaxRun = null;
|
|
31
34
|
this.reloadCounter = 0;
|
|
32
|
-
|
|
35
|
+
const contextId = (context === null || context === void 0 ? void 0 : context.id) || -1;
|
|
36
|
+
// public context (if exists) should provide access to Reactive props config by id
|
|
33
37
|
const reactivePropsStore = context && reactiveConfigStorage.get(context.id) || {};
|
|
38
|
+
// the Adapter initialization should not trigger "wanted" props setting;
|
|
39
|
+
// after the initialization is completed, "wanted" functionality must be unblocked
|
|
40
|
+
wantedUtils.setBlock(true, contextId);
|
|
34
41
|
// make array of the original values from public context if present
|
|
35
42
|
const adapterProps = context
|
|
36
43
|
? ADAPTER_PROPS_STUB.map(prop => {
|
|
@@ -59,34 +66,37 @@ export class Adapter {
|
|
|
59
66
|
configurable: true,
|
|
60
67
|
get: () => value
|
|
61
68
|
}));
|
|
62
|
-
// Reactive props
|
|
63
|
-
// 1) store original values in "source" container, to avoid extra .get() calls on scalar twins set
|
|
64
|
-
// 2) "wanted" container is bound with scalars; get() updates it
|
|
69
|
+
// Reactive props: store original values in "source" container, to avoid extra .get() calls on scalar twins set
|
|
65
70
|
adapterProps
|
|
66
71
|
.filter(prop => prop.type === AdapterPropType.Reactive)
|
|
67
72
|
.forEach(({ name, value }) => {
|
|
68
73
|
this.source[name] = value;
|
|
69
74
|
Object.defineProperty(this, name, {
|
|
70
75
|
configurable: true,
|
|
71
|
-
get: () =>
|
|
72
|
-
const scalarWanted = ADAPTER_PROPS_STUB.find(({ wanted, reactive }) => wanted && reactive === name);
|
|
73
|
-
if (scalarWanted && this.externalContext) {
|
|
74
|
-
this.wanted[scalarWanted.name] = true;
|
|
75
|
-
}
|
|
76
|
-
return this.source[name];
|
|
77
|
-
}
|
|
76
|
+
get: () => this.source[name]
|
|
78
77
|
});
|
|
79
78
|
});
|
|
79
|
+
// for "wanted" props that can be explicitly requested for the first time after the Adapter initialization,
|
|
80
|
+
// an implicit calculation of the initial value is required;
|
|
81
|
+
// so this method should be called when accessing the "wanted" props through one of the following getters
|
|
82
|
+
const processWanted = (prop) => {
|
|
83
|
+
if (wantedUtils.setBox(prop, contextId)) {
|
|
84
|
+
if ([AdapterPropName.firstVisible, AdapterPropName.firstVisible$].some(n => n === prop.name)) {
|
|
85
|
+
this.setFirstOrLastVisible({ first: true });
|
|
86
|
+
}
|
|
87
|
+
else if ([AdapterPropName.lastVisible, AdapterPropName.lastVisible$].some(n => n === prop.name)) {
|
|
88
|
+
this.setFirstOrLastVisible({ last: true });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
80
92
|
// Scalar props that have Reactive twins
|
|
81
|
-
// 1)
|
|
82
|
-
// 2)
|
|
83
|
-
// 3)
|
|
93
|
+
// 1) reactive props (from "source") should be triggered on set
|
|
94
|
+
// 2) scalars should use "box" container on get
|
|
95
|
+
// 3) "wanted" scalars should also run wanted-related logic on get
|
|
84
96
|
adapterProps
|
|
85
97
|
.filter(prop => prop.type === AdapterPropType.Scalar && !!prop.reactive)
|
|
86
|
-
.forEach((
|
|
87
|
-
|
|
88
|
-
this.wanted[name] = false;
|
|
89
|
-
}
|
|
98
|
+
.forEach((prop) => {
|
|
99
|
+
const { name, value, reactive } = prop;
|
|
90
100
|
this.box[name] = value;
|
|
91
101
|
Object.defineProperty(this, name, {
|
|
92
102
|
configurable: true,
|
|
@@ -102,9 +112,7 @@ export class Adapter {
|
|
|
102
112
|
}
|
|
103
113
|
},
|
|
104
114
|
get: () => {
|
|
105
|
-
|
|
106
|
-
this.wanted[name] = true;
|
|
107
|
-
}
|
|
115
|
+
processWanted(prop);
|
|
108
116
|
return this.box[name];
|
|
109
117
|
}
|
|
110
118
|
});
|
|
@@ -126,7 +134,8 @@ export class Adapter {
|
|
|
126
134
|
}
|
|
127
135
|
// Adapter public context augmentation
|
|
128
136
|
adapterProps
|
|
129
|
-
.forEach((
|
|
137
|
+
.forEach((prop) => {
|
|
138
|
+
const { name, type, value: defaultValue, permanent } = prop;
|
|
130
139
|
let value = this[name];
|
|
131
140
|
if (type === AdapterPropType.Function) {
|
|
132
141
|
value = value.bind(this);
|
|
@@ -140,14 +149,20 @@ export class Adapter {
|
|
|
140
149
|
else if (name === AdapterPropName.augmented) {
|
|
141
150
|
value = true;
|
|
142
151
|
}
|
|
152
|
+
const nonPermanentScalar = !permanent && type === AdapterPropType.Scalar;
|
|
143
153
|
Object.defineProperty(context, name, {
|
|
144
154
|
configurable: true,
|
|
145
|
-
get: () =>
|
|
146
|
-
|
|
147
|
-
|
|
155
|
+
get: () => {
|
|
156
|
+
processWanted(prop); // consider accessing "wanted" Reactive props
|
|
157
|
+
if (nonPermanentScalar) {
|
|
158
|
+
return this[name]; // non-permanent Scalars should be taken in runtime
|
|
159
|
+
}
|
|
160
|
+
return value; // other props (Reactive/Functions/WorkflowRunners) can be defined once
|
|
161
|
+
}
|
|
148
162
|
});
|
|
149
163
|
});
|
|
150
164
|
this.externalContext = context;
|
|
165
|
+
wantedUtils.setBlock(false, contextId);
|
|
151
166
|
}
|
|
152
167
|
get workflow() {
|
|
153
168
|
return this.getWorkflow();
|
|
@@ -168,7 +183,7 @@ export class Adapter {
|
|
|
168
183
|
})
|
|
169
184
|
: defaultMethod.apply(this, args);
|
|
170
185
|
}
|
|
171
|
-
initialize(buffer, state, logger, adapterRun$) {
|
|
186
|
+
initialize(buffer, state, viewport, logger, adapterRun$) {
|
|
172
187
|
// buffer
|
|
173
188
|
Object.defineProperty(this.demand, AdapterPropName.itemsCount, {
|
|
174
189
|
get: () => buffer.getVisibleItemsCount()
|
|
@@ -196,6 +211,26 @@ export class Adapter {
|
|
|
196
211
|
state.cycle.innerLoop.busy.on(busy => this.loopPending = busy);
|
|
197
212
|
this.isLoading = state.cycle.busy.get();
|
|
198
213
|
state.cycle.busy.on(busy => this.isLoading = busy);
|
|
214
|
+
//viewport
|
|
215
|
+
this.setFirstOrLastVisible = ({ first, last, workflow }) => {
|
|
216
|
+
var _a, _b, _c;
|
|
217
|
+
if ((!first && !last) || ((_a = workflow === null || workflow === void 0 ? void 0 : workflow.call) === null || _a === void 0 ? void 0 : _a.interrupted)) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const token = first ? AdapterPropName.firstVisible : AdapterPropName.lastVisible;
|
|
221
|
+
if (!((_c = wantedUtils.getBox((_b = this.externalContext) === null || _b === void 0 ? void 0 : _b.id)) === null || _c === void 0 ? void 0 : _c[token])) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
if (buffer.items.some(({ element }) => !element)) {
|
|
225
|
+
logger.log('skipping first/lastVisible set because not all buffered items are rendered at this moment');
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const direction = first ? Direction.backward : Direction.forward;
|
|
229
|
+
const { item } = viewport.getEdgeVisibleItem(buffer.items, direction);
|
|
230
|
+
if (!item || item.element !== this[token].element) {
|
|
231
|
+
this[token] = (item ? item.get() : EMPTY_ITEM);
|
|
232
|
+
}
|
|
233
|
+
};
|
|
199
234
|
// logger
|
|
200
235
|
this.logger = logger;
|
|
201
236
|
// self-pending subscription; set up only on the very first init
|
|
@@ -239,7 +274,8 @@ export class Adapter {
|
|
|
239
274
|
});
|
|
240
275
|
}
|
|
241
276
|
resetContext() {
|
|
242
|
-
|
|
277
|
+
var _a;
|
|
278
|
+
const reactiveStore = reactiveConfigStorage.get((_a = this.externalContext) === null || _a === void 0 ? void 0 : _a.id);
|
|
243
279
|
ADAPTER_PROPS_STUB
|
|
244
280
|
.forEach(({ type, permanent, name, value }) => {
|
|
245
281
|
// assign initial values to non-reactive non-permanent props
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/classes/adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from './logger';\r\nimport { Buffer } from './buffer';\r\nimport { Reactive } from './reactive';\r\nimport {\r\n AdapterPropName, AdapterPropType, getDefaultAdapterProps, methodPreResult, reactiveConfigStorage\r\n} from './adapter/props';\r\nimport { AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport {\r\n WorkflowGetter,\r\n IAdapterProp,\r\n AdapterMethodResult,\r\n IAdapter,\r\n ItemAdapter,\r\n ItemsPredicate,\r\n AdapterPrependOptions,\r\n AdapterAppendOptions,\r\n AdapterRemoveOptions,\r\n AdapterClipOptions,\r\n AdapterInsertOptions,\r\n AdapterReplaceOptions,\r\n AdapterUpdateOptions,\r\n AdapterFixOptions,\r\n ScrollerWorkflow,\r\n IDatasourceOptional,\r\n IPackages,\r\n IBufferInfo,\r\n State,\r\n ProcessSubject,\r\n} from '../interfaces/index';\r\n\r\ntype MethodResolver = (...args: any[]) => Promise<AdapterMethodResult>;\r\n\r\nconst ADAPTER_PROPS_STUB = getDefaultAdapterProps();\r\n\r\nconst _has = (obj: unknown, prop: string): boolean =>\r\n typeof obj === 'object' && obj !== null && Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\nconst convertAppendArgs = <Item>(prepend: boolean, options: unknown, eof?: boolean) => {\r\n let result = options as AdapterAppendOptions<Item> & AdapterPrependOptions<Item>;\r\n if (!_has(options, 'items')) {\r\n const items = !Array.isArray(options) ? [options] : options;\r\n result = prepend ? { items, bof: eof } : { items, eof: eof };\r\n }\r\n return result;\r\n};\r\n\r\nconst convertRemoveArgs = <Item>(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>) => {\r\n if (!(_has(options, 'predicate') || _has(options, 'indexes'))) {\r\n const predicate = options as ItemsPredicate<Item>;\r\n options = { predicate };\r\n }\r\n return options;\r\n};\r\n\r\nexport class Adapter<Item = unknown> implements IAdapter<Item> {\r\n private externalContext: IAdapter<Item>;\r\n private logger: Logger;\r\n private getWorkflow: WorkflowGetter<Item>;\r\n private reloadCounter: number;\r\n private source: { [key: string]: Reactive<unknown> } = {}; // for Reactive props\r\n private box: { [key: string]: unknown } = {}; // for Scalars over Reactive props\r\n private demand: { [key: string]: unknown } = {}; // for Scalars on demand\r\n public wanted: { [key: string]: boolean } = {};\r\n\r\n get workflow(): ScrollerWorkflow<Item> {\r\n return this.getWorkflow();\r\n }\r\n get reloadCount(): number {\r\n return this.reloadCounter;\r\n }\r\n get reloadId(): string {\r\n return this.id + '.' + this.reloadCounter;\r\n }\r\n\r\n id: number;\r\n mock: boolean;\r\n augmented: boolean;\r\n version: string;\r\n init: boolean;\r\n init$: Reactive<boolean>;\r\n packageInfo: IPackages;\r\n itemsCount: number;\r\n bufferInfo: IBufferInfo;\r\n isLoading: boolean;\r\n isLoading$: Reactive<boolean>;\r\n loopPending: boolean;\r\n loopPending$: Reactive<boolean>;\r\n firstVisible: ItemAdapter<Item>;\r\n firstVisible$: Reactive<ItemAdapter<Item>>;\r\n lastVisible: ItemAdapter<Item>;\r\n lastVisible$: Reactive<ItemAdapter<Item>>;\r\n bof: boolean;\r\n bof$: Reactive<boolean>;\r\n eof: boolean;\r\n eof$: Reactive<boolean>;\r\n\r\n private relax$: Reactive<AdapterMethodResult> | null;\r\n private relaxRun: Promise<AdapterMethodResult> | null;\r\n\r\n private getPromisifiedMethod(method: MethodResolver, defaultMethod: MethodResolver) {\r\n return (...args: any[]): Promise<AdapterMethodResult> =>\r\n this.relax$\r\n ? new Promise(resolve => {\r\n if (this.relax$) {\r\n this.relax$.once(value => resolve(value));\r\n }\r\n method.apply(this, args);\r\n })\r\n : defaultMethod.apply(this, args);\r\n }\r\n\r\n constructor(context: IAdapter<Item> | null, getWorkflow: WorkflowGetter<Item>, logger: Logger) {\r\n this.getWorkflow = getWorkflow;\r\n this.logger = logger;\r\n this.relax$ = null;\r\n this.relaxRun = null;\r\n this.reloadCounter = 0;\r\n\r\n // public context (if exists) should provide access Reactive props configuration by id\r\n const reactivePropsStore = context && reactiveConfigStorage.get(context.id) || {};\r\n\r\n // make array of the original values from public context if present\r\n const adapterProps = context\r\n ? ADAPTER_PROPS_STUB.map(prop => {\r\n let value = context[prop.name];\r\n // if context is augmented, we need to replace external reactive props with inner ones\r\n if (context.augmented) {\r\n const reactiveProp = reactivePropsStore[prop.name];\r\n if (reactiveProp) {\r\n value = reactiveProp.default as Reactive<boolean>; // boolean doesn't matter here\r\n }\r\n }\r\n return ({ ...prop, value });\r\n })\r\n : getDefaultAdapterProps();\r\n\r\n // restore default reactive props if they were configured\r\n Object.entries(reactivePropsStore).forEach(([key, value]) => {\r\n const prop = adapterProps.find(({ name }) => name === key);\r\n if (prop && value) {\r\n prop.value = value.default;\r\n }\r\n });\r\n\r\n // Scalar permanent props\r\n adapterProps\r\n .filter(({ type, permanent }) => type === AdapterPropType.Scalar && permanent)\r\n .forEach(({ name, value }: IAdapterProp) =>\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => value\r\n })\r\n );\r\n\r\n // Reactive props\r\n // 1) store original values in \"source\" container, to avoid extra .get() calls on scalar twins set\r\n // 2) \"wanted\" container is bound with scalars; get() updates it\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Reactive)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.source[name] = value as Reactive<unknown>;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => {\r\n const scalarWanted = ADAPTER_PROPS_STUB.find(\r\n ({ wanted, reactive }) => wanted && reactive === name\r\n );\r\n if (scalarWanted && this.externalContext) {\r\n this.wanted[scalarWanted.name] = true;\r\n }\r\n return this.source[name];\r\n }\r\n });\r\n });\r\n\r\n // Scalar props that have Reactive twins\r\n // 1) scalars should use \"box\" container\r\n // 2) \"wanted\" should be updated on get\r\n // 3) reactive props (from \"source\") are triggered on set\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && !!prop.reactive)\r\n .forEach(({ name, value, reactive, wanted }: IAdapterProp) => {\r\n if (wanted) {\r\n this.wanted[name] = false;\r\n }\r\n this.box[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n set: (newValue: unknown) => {\r\n if (newValue !== this.box[name]) {\r\n this.box[name] = newValue;\r\n this.source[reactive as AdapterPropName].set(newValue);\r\n // need to emit new value through the configured reactive prop if present\r\n const reactiveProp = reactivePropsStore[reactive as AdapterPropName];\r\n if (reactiveProp) {\r\n reactiveProp.emit(reactiveProp.source, newValue);\r\n }\r\n }\r\n },\r\n get: () => {\r\n if (wanted && this.externalContext) {\r\n this.wanted[name] = true;\r\n }\r\n return this.box[name];\r\n }\r\n });\r\n });\r\n\r\n // Scalar props on-demand\r\n // these scalars should use \"demand\" container\r\n // setting defaults should be overridden on init()\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && prop.onDemand)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.demand[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.demand[name]\r\n });\r\n });\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n // Adapter public context augmentation\r\n adapterProps\r\n .forEach(({ name, type, value: defaultValue, permanent }: IAdapterProp) => {\r\n let value = (this as IAdapter)[name];\r\n if (type === AdapterPropType.Function) {\r\n value = (value as () => void).bind(this);\r\n } else if (type === AdapterPropType.WorkflowRunner) {\r\n value = this.getPromisifiedMethod(value as MethodResolver, defaultValue as MethodResolver);\r\n } else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {\r\n value = (context as IAdapter)[name];\r\n } else if (name === AdapterPropName.augmented) {\r\n value = true;\r\n }\r\n Object.defineProperty(context, name, {\r\n configurable: true,\r\n get: () => !permanent && type === AdapterPropType.Scalar\r\n ? (this as IAdapter)[name] // non-permanent Scalars should be taken in runtime\r\n : value // Reactive props and methods (Functions/WorkflowRunners) can be defined once\r\n });\r\n });\r\n\r\n this.externalContext = context;\r\n }\r\n\r\n initialize(buffer: Buffer<Item>, state: State, logger: Logger, adapterRun$?: Reactive<ProcessSubject>): void {\r\n // buffer\r\n Object.defineProperty(this.demand, AdapterPropName.itemsCount, {\r\n get: () => buffer.getVisibleItemsCount()\r\n });\r\n Object.defineProperty(this.demand, AdapterPropName.bufferInfo, {\r\n get: (): IBufferInfo => ({\r\n firstIndex: buffer.firstIndex,\r\n lastIndex: buffer.lastIndex,\r\n minIndex: buffer.minIndex,\r\n maxIndex: buffer.maxIndex,\r\n absMinIndex: buffer.absMinIndex,\r\n absMaxIndex: buffer.absMaxIndex,\r\n defaultSize: buffer.defaultSize,\r\n })\r\n });\r\n this.bof = buffer.bof.get();\r\n buffer.bof.on(bof => this.bof = bof);\r\n this.eof = buffer.eof.get();\r\n buffer.eof.on(eof => this.eof = eof);\r\n\r\n // state\r\n Object.defineProperty(this.demand, AdapterPropName.packageInfo, {\r\n get: () => state.packageInfo\r\n });\r\n this.loopPending = state.cycle.innerLoop.busy.get();\r\n state.cycle.innerLoop.busy.on(busy => this.loopPending = busy);\r\n this.isLoading = state.cycle.busy.get();\r\n state.cycle.busy.on(busy => this.isLoading = busy);\r\n\r\n // logger\r\n this.logger = logger;\r\n\r\n // self-pending subscription; set up only on the very first init\r\n if (adapterRun$) {\r\n if (!this.relax$) {\r\n this.relax$ = new Reactive();\r\n }\r\n const relax$ = this.relax$;\r\n adapterRun$.on(({ status, payload }) => {\r\n let unSubRelax = () => { };\r\n if (status === ProcessStatus.start) {\r\n unSubRelax = this.isLoading$.on(value => {\r\n if (!value) {\r\n unSubRelax();\r\n relax$.set({ success: true, immediate: false, details: null });\r\n }\r\n });\r\n } else if (status === ProcessStatus.done || status === ProcessStatus.error) {\r\n unSubRelax();\r\n relax$.set({\r\n success: status !== ProcessStatus.error,\r\n immediate: true,\r\n details: status === ProcessStatus.error && payload ? String(payload.error) : null\r\n });\r\n }\r\n });\r\n }\r\n\r\n // init\r\n this.init = true;\r\n }\r\n\r\n dispose(): void {\r\n if (this.relax$) {\r\n this.relax$.dispose();\r\n }\r\n if (this.externalContext) {\r\n this.resetContext();\r\n }\r\n Object.getOwnPropertyNames(this).forEach(prop => {\r\n delete (this as Record<string, unknown>)[prop];\r\n });\r\n }\r\n\r\n resetContext(): void {\r\n const reactiveStore = reactiveConfigStorage.get(this.externalContext.id);\r\n ADAPTER_PROPS_STUB\r\n .forEach(({ type, permanent, name, value }) => {\r\n // assign initial values to non-reactive non-permanent props\r\n if (type !== AdapterPropType.Reactive && !permanent) {\r\n Object.defineProperty(this.externalContext, name, {\r\n configurable: true,\r\n get: () => value\r\n });\r\n }\r\n // reset reactive props\r\n if (type === AdapterPropType.Reactive && reactiveStore) {\r\n const property = reactiveStore[name];\r\n if (property) {\r\n property.default.reset();\r\n property.emit(property.source, property.default.get());\r\n }\r\n }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reset(options?: IDatasourceOptional): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reset', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reset,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reload(options?: number | string): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reload', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reload,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n append(_options: AdapterAppendOptions<Item> | unknown, eof?: boolean): any {\r\n const options = convertAppendArgs(false, _options, eof); // support old signature\r\n this.logger.logAdapterMethod('append', [options.items, options.eof]);\r\n this.workflow.call({\r\n process: AdapterProcess.append,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prepend(_options: AdapterPrependOptions<Item> | unknown, bof?: boolean): any {\r\n const options = convertAppendArgs(true, _options, bof); // support old signature\r\n this.logger.logAdapterMethod('prepend', [options.items, options.bof]);\r\n this.workflow.call({\r\n process: AdapterProcess.prepend,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n check(): any {\r\n this.logger.logAdapterMethod('check');\r\n this.workflow.call({\r\n process: AdapterProcess.check,\r\n status: ProcessStatus.start\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n remove(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>): any {\r\n options = convertRemoveArgs(options); // support old signature\r\n this.logger.logAdapterMethod('remove', options);\r\n this.workflow.call({\r\n process: AdapterProcess.remove,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clip(options?: AdapterClipOptions): any {\r\n this.logger.logAdapterMethod('clip', options);\r\n this.workflow.call({\r\n process: AdapterProcess.clip,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n insert(options: AdapterInsertOptions<Item>): any {\r\n this.logger.logAdapterMethod('insert', options);\r\n this.workflow.call({\r\n process: AdapterProcess.insert,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n replace(options: AdapterReplaceOptions<Item>): any {\r\n this.logger.logAdapterMethod('replace', options);\r\n this.workflow.call({\r\n process: AdapterProcess.replace,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n update(options: AdapterUpdateOptions<Item>): any {\r\n this.logger.logAdapterMethod('update', options);\r\n this.workflow.call({\r\n process: AdapterProcess.update,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n fix(options: AdapterFixOptions<Item>): any {\r\n this.logger.logAdapterMethod('fix', options);\r\n this.workflow.call({\r\n process: AdapterProcess.fix,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n relaxUnchained(callback: (() => void) | undefined, reloadId: string): Promise<AdapterMethodResult> {\r\n const runCallback = () => typeof callback === 'function' && reloadId === this.reloadId && callback();\r\n if (!this.isLoading) {\r\n runCallback();\r\n }\r\n return new Promise<boolean>(resolve => {\r\n if (!this.isLoading) {\r\n resolve(true);\r\n return;\r\n }\r\n this.isLoading$.once(() => {\r\n runCallback();\r\n resolve(false);\r\n });\r\n }).then(immediate => {\r\n const success = reloadId === this.reloadId;\r\n this.logger.log(() => !success ? `relax promise cancelled due to ${reloadId} != ${this.reloadId}` : void 0);\r\n return {\r\n immediate,\r\n success,\r\n details: !success ? 'Interrupted by reload or reset' : null\r\n };\r\n });\r\n }\r\n\r\n relax(callback?: () => void): Promise<AdapterMethodResult> {\r\n const reloadId = this.reloadId;\r\n this.logger.logAdapterMethod('relax', callback, ` of ${reloadId}`);\r\n if (!this.init) {\r\n return Promise.resolve(methodPreResult);\r\n }\r\n return this.relaxRun = this.relaxRun\r\n ? this.relaxRun.then(() => this.relaxUnchained(callback, reloadId))\r\n : this.relaxUnchained(callback, reloadId).then((result) => {\r\n this.relaxRun = null;\r\n return result;\r\n });\r\n }\r\n\r\n showLog(): void {\r\n this.logger.logAdapterMethod('showLog');\r\n this.logger.logForce();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/classes/adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from './logger';\r\nimport { Buffer } from './buffer';\r\nimport { Reactive } from './reactive';\r\nimport {\r\n AdapterPropName, AdapterPropType, EMPTY_ITEM, getDefaultAdapterProps, methodPreResult, reactiveConfigStorage\r\n} from './adapter/props';\r\nimport { wantedUtils } from './adapter/wanted';\r\nimport { Viewport } from './viewport';\r\nimport { Direction } from '../inputs/index';\r\nimport { AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport {\r\n WorkflowGetter,\r\n IAdapterProp,\r\n AdapterMethodResult,\r\n IAdapter,\r\n ItemAdapter,\r\n ItemsPredicate,\r\n AdapterPrependOptions,\r\n AdapterAppendOptions,\r\n AdapterRemoveOptions,\r\n AdapterClipOptions,\r\n AdapterInsertOptions,\r\n AdapterReplaceOptions,\r\n AdapterUpdateOptions,\r\n AdapterFixOptions,\r\n ScrollerWorkflow,\r\n IDatasourceOptional,\r\n IPackages,\r\n IBufferInfo,\r\n State,\r\n ProcessSubject,\r\n} from '../interfaces/index';\r\n\r\ntype MethodResolver = (...args: unknown[]) => Promise<AdapterMethodResult>;\r\n\r\nconst ADAPTER_PROPS_STUB = getDefaultAdapterProps();\r\n\r\nconst _has = (obj: unknown, prop: string): boolean =>\r\n typeof obj === 'object' && obj !== null && Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\nconst convertAppendArgs = <Item>(prepend: boolean, options: unknown, eof?: boolean) => {\r\n let result = options as AdapterAppendOptions<Item> & AdapterPrependOptions<Item>;\r\n if (!_has(options, 'items')) {\r\n const items = !Array.isArray(options) ? [options] : options;\r\n result = prepend ? { items, bof: eof } : { items, eof: eof };\r\n }\r\n return result;\r\n};\r\n\r\nconst convertRemoveArgs = <Item>(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>) => {\r\n if (!(_has(options, 'predicate') || _has(options, 'indexes'))) {\r\n const predicate = options as ItemsPredicate<Item>;\r\n options = { predicate };\r\n }\r\n return options;\r\n};\r\n\r\nexport class Adapter<Item = unknown> implements IAdapter<Item> {\r\n private externalContext: IAdapter<Item>;\r\n private logger: Logger;\r\n private getWorkflow: WorkflowGetter<Item>;\r\n private reloadCounter: number;\r\n private source: { [key: string]: Reactive<unknown> } = {}; // for Reactive props\r\n private box: { [key: string]: unknown } = {}; // for Scalars over Reactive props\r\n private demand: { [key: string]: unknown } = {}; // for Scalars on demand\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n setFirstOrLastVisible = (_: { first?: boolean, last?: boolean, workflow?: ScrollerWorkflow }) => { };\r\n\r\n get workflow(): ScrollerWorkflow<Item> {\r\n return this.getWorkflow();\r\n }\r\n get reloadCount(): number {\r\n return this.reloadCounter;\r\n }\r\n get reloadId(): string {\r\n return this.id + '.' + this.reloadCounter;\r\n }\r\n\r\n id: number;\r\n mock: boolean;\r\n augmented: boolean;\r\n version: string;\r\n init: boolean;\r\n init$: Reactive<boolean>;\r\n packageInfo: IPackages;\r\n itemsCount: number;\r\n bufferInfo: IBufferInfo;\r\n isLoading: boolean;\r\n isLoading$: Reactive<boolean>;\r\n loopPending: boolean;\r\n loopPending$: Reactive<boolean>;\r\n firstVisible: ItemAdapter<Item>;\r\n firstVisible$: Reactive<ItemAdapter<Item>>;\r\n lastVisible: ItemAdapter<Item>;\r\n lastVisible$: Reactive<ItemAdapter<Item>>;\r\n bof: boolean;\r\n bof$: Reactive<boolean>;\r\n eof: boolean;\r\n eof$: Reactive<boolean>;\r\n\r\n private relax$: Reactive<AdapterMethodResult> | null;\r\n private relaxRun: Promise<AdapterMethodResult> | null;\r\n\r\n private getPromisifiedMethod(method: MethodResolver, defaultMethod: MethodResolver) {\r\n return (...args: unknown[]): Promise<AdapterMethodResult> =>\r\n this.relax$\r\n ? new Promise(resolve => {\r\n if (this.relax$) {\r\n this.relax$.once(value => resolve(value));\r\n }\r\n method.apply(this, args);\r\n })\r\n : defaultMethod.apply(this, args);\r\n }\r\n\r\n constructor(context: IAdapter<Item> | null, getWorkflow: WorkflowGetter<Item>, logger: Logger) {\r\n this.getWorkflow = getWorkflow;\r\n this.logger = logger;\r\n this.relax$ = null;\r\n this.relaxRun = null;\r\n this.reloadCounter = 0;\r\n const contextId = context?.id || -1;\r\n\r\n // public context (if exists) should provide access to Reactive props config by id\r\n const reactivePropsStore = context && reactiveConfigStorage.get(context.id) || {};\r\n\r\n // the Adapter initialization should not trigger \"wanted\" props setting;\r\n // after the initialization is completed, \"wanted\" functionality must be unblocked\r\n wantedUtils.setBlock(true, contextId);\r\n\r\n // make array of the original values from public context if present\r\n const adapterProps = context\r\n ? ADAPTER_PROPS_STUB.map(prop => {\r\n let value = context[prop.name];\r\n // if context is augmented, we need to replace external reactive props with inner ones\r\n if (context.augmented) {\r\n const reactiveProp = reactivePropsStore[prop.name];\r\n if (reactiveProp) {\r\n value = reactiveProp.default as Reactive<boolean>; // boolean doesn't matter here\r\n }\r\n }\r\n return ({ ...prop, value });\r\n })\r\n : getDefaultAdapterProps();\r\n\r\n // restore default reactive props if they were configured\r\n Object.entries(reactivePropsStore).forEach(([key, value]) => {\r\n const prop = adapterProps.find(({ name }) => name === key);\r\n if (prop && value) {\r\n prop.value = value.default;\r\n }\r\n });\r\n\r\n // Scalar permanent props\r\n adapterProps\r\n .filter(({ type, permanent }) => type === AdapterPropType.Scalar && permanent)\r\n .forEach(({ name, value }: IAdapterProp) =>\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => value\r\n })\r\n );\r\n\r\n // Reactive props: store original values in \"source\" container, to avoid extra .get() calls on scalar twins set\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Reactive)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.source[name] = value as Reactive<unknown>;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.source[name]\r\n });\r\n });\r\n\r\n // for \"wanted\" props that can be explicitly requested for the first time after the Adapter initialization,\r\n // an implicit calculation of the initial value is required;\r\n // so this method should be called when accessing the \"wanted\" props through one of the following getters\r\n const processWanted = (prop: IAdapterProp) => {\r\n if (wantedUtils.setBox(prop, contextId)) {\r\n if ([AdapterPropName.firstVisible, AdapterPropName.firstVisible$].some(n => n === prop.name)) {\r\n this.setFirstOrLastVisible({ first: true });\r\n } else if ([AdapterPropName.lastVisible, AdapterPropName.lastVisible$].some(n => n === prop.name)) {\r\n this.setFirstOrLastVisible({ last: true });\r\n }\r\n }\r\n };\r\n\r\n // Scalar props that have Reactive twins\r\n // 1) reactive props (from \"source\") should be triggered on set\r\n // 2) scalars should use \"box\" container on get\r\n // 3) \"wanted\" scalars should also run wanted-related logic on get\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && !!prop.reactive)\r\n .forEach((prop: IAdapterProp) => {\r\n const { name, value, reactive } = prop;\r\n this.box[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n set: (newValue: unknown) => {\r\n if (newValue !== this.box[name]) {\r\n this.box[name] = newValue;\r\n this.source[reactive as AdapterPropName].set(newValue);\r\n // need to emit new value through the configured reactive prop if present\r\n const reactiveProp = reactivePropsStore[reactive as AdapterPropName];\r\n if (reactiveProp) {\r\n reactiveProp.emit(reactiveProp.source, newValue);\r\n }\r\n }\r\n },\r\n get: () => {\r\n processWanted(prop);\r\n return this.box[name];\r\n }\r\n });\r\n });\r\n\r\n // Scalar props on-demand\r\n // these scalars should use \"demand\" container\r\n // setting defaults should be overridden on init()\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && prop.onDemand)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.demand[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.demand[name]\r\n });\r\n });\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n // Adapter public context augmentation\r\n adapterProps\r\n .forEach((prop: IAdapterProp) => {\r\n const { name, type, value: defaultValue, permanent } = prop;\r\n let value = (this as IAdapter)[name];\r\n if (type === AdapterPropType.Function) {\r\n value = (value as () => void).bind(this);\r\n } else if (type === AdapterPropType.WorkflowRunner) {\r\n value = this.getPromisifiedMethod(value as MethodResolver, defaultValue as MethodResolver);\r\n } else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {\r\n value = (context as IAdapter)[name];\r\n } else if (name === AdapterPropName.augmented) {\r\n value = true;\r\n }\r\n const nonPermanentScalar = !permanent && type === AdapterPropType.Scalar;\r\n Object.defineProperty(context, name, {\r\n configurable: true,\r\n get: () => {\r\n processWanted(prop); // consider accessing \"wanted\" Reactive props\r\n if (nonPermanentScalar) {\r\n return (this as IAdapter)[name]; // non-permanent Scalars should be taken in runtime\r\n }\r\n return value; // other props (Reactive/Functions/WorkflowRunners) can be defined once\r\n }\r\n });\r\n });\r\n\r\n this.externalContext = context;\r\n wantedUtils.setBlock(false, contextId);\r\n }\r\n\r\n initialize(\r\n buffer: Buffer<Item>, state: State, viewport: Viewport, logger: Logger, adapterRun$?: Reactive<ProcessSubject>\r\n ): void {\r\n // buffer\r\n Object.defineProperty(this.demand, AdapterPropName.itemsCount, {\r\n get: () => buffer.getVisibleItemsCount()\r\n });\r\n Object.defineProperty(this.demand, AdapterPropName.bufferInfo, {\r\n get: (): IBufferInfo => ({\r\n firstIndex: buffer.firstIndex,\r\n lastIndex: buffer.lastIndex,\r\n minIndex: buffer.minIndex,\r\n maxIndex: buffer.maxIndex,\r\n absMinIndex: buffer.absMinIndex,\r\n absMaxIndex: buffer.absMaxIndex,\r\n defaultSize: buffer.defaultSize,\r\n })\r\n });\r\n this.bof = buffer.bof.get();\r\n buffer.bof.on(bof => this.bof = bof);\r\n this.eof = buffer.eof.get();\r\n buffer.eof.on(eof => this.eof = eof);\r\n\r\n // state\r\n Object.defineProperty(this.demand, AdapterPropName.packageInfo, {\r\n get: () => state.packageInfo\r\n });\r\n this.loopPending = state.cycle.innerLoop.busy.get();\r\n state.cycle.innerLoop.busy.on(busy => this.loopPending = busy);\r\n this.isLoading = state.cycle.busy.get();\r\n state.cycle.busy.on(busy => this.isLoading = busy);\r\n\r\n //viewport\r\n this.setFirstOrLastVisible = ({ first, last, workflow }) => {\r\n if ((!first && !last) || workflow?.call?.interrupted) {\r\n return;\r\n }\r\n const token = first ? AdapterPropName.firstVisible : AdapterPropName.lastVisible;\r\n if (!wantedUtils.getBox(this.externalContext?.id)?.[token]) {\r\n return;\r\n }\r\n if (buffer.items.some(({ element }) => !element)) {\r\n logger.log('skipping first/lastVisible set because not all buffered items are rendered at this moment');\r\n return;\r\n }\r\n const direction = first ? Direction.backward : Direction.forward;\r\n const { item } = viewport.getEdgeVisibleItem(buffer.items, direction);\r\n if (!item || item.element !== this[token].element) {\r\n this[token] = (item ? item.get() : EMPTY_ITEM) as ItemAdapter<Item>;\r\n }\r\n };\r\n\r\n // logger\r\n this.logger = logger;\r\n\r\n // self-pending subscription; set up only on the very first init\r\n if (adapterRun$) {\r\n if (!this.relax$) {\r\n this.relax$ = new Reactive();\r\n }\r\n const relax$ = this.relax$;\r\n adapterRun$.on(({ status, payload }) => {\r\n let unSubRelax = () => { };\r\n if (status === ProcessStatus.start) {\r\n unSubRelax = this.isLoading$.on(value => {\r\n if (!value) {\r\n unSubRelax();\r\n relax$.set({ success: true, immediate: false, details: null });\r\n }\r\n });\r\n } else if (status === ProcessStatus.done || status === ProcessStatus.error) {\r\n unSubRelax();\r\n relax$.set({\r\n success: status !== ProcessStatus.error,\r\n immediate: true,\r\n details: status === ProcessStatus.error && payload ? String(payload.error) : null\r\n });\r\n }\r\n });\r\n }\r\n\r\n // init\r\n this.init = true;\r\n }\r\n\r\n dispose(): void {\r\n if (this.relax$) {\r\n this.relax$.dispose();\r\n }\r\n if (this.externalContext) {\r\n this.resetContext();\r\n }\r\n Object.getOwnPropertyNames(this).forEach(prop => {\r\n delete (this as Record<string, unknown>)[prop];\r\n });\r\n }\r\n\r\n resetContext(): void {\r\n const reactiveStore = reactiveConfigStorage.get(this.externalContext?.id);\r\n ADAPTER_PROPS_STUB\r\n .forEach(({ type, permanent, name, value }) => {\r\n // assign initial values to non-reactive non-permanent props\r\n if (type !== AdapterPropType.Reactive && !permanent) {\r\n Object.defineProperty(this.externalContext, name, {\r\n configurable: true,\r\n get: () => value\r\n });\r\n }\r\n // reset reactive props\r\n if (type === AdapterPropType.Reactive && reactiveStore) {\r\n const property = reactiveStore[name];\r\n if (property) {\r\n property.default.reset();\r\n property.emit(property.source, property.default.get());\r\n }\r\n }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reset(options?: IDatasourceOptional): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reset', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reset,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reload(options?: number | string): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reload', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reload,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n append(_options: AdapterAppendOptions<Item> | unknown, eof?: boolean): any {\r\n const options = convertAppendArgs(false, _options, eof); // support old signature\r\n this.logger.logAdapterMethod('append', [options.items, options.eof]);\r\n this.workflow.call({\r\n process: AdapterProcess.append,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prepend(_options: AdapterPrependOptions<Item> | unknown, bof?: boolean): any {\r\n const options = convertAppendArgs(true, _options, bof); // support old signature\r\n this.logger.logAdapterMethod('prepend', [options.items, options.bof]);\r\n this.workflow.call({\r\n process: AdapterProcess.prepend,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n check(): any {\r\n this.logger.logAdapterMethod('check');\r\n this.workflow.call({\r\n process: AdapterProcess.check,\r\n status: ProcessStatus.start\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n remove(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>): any {\r\n options = convertRemoveArgs(options); // support old signature\r\n this.logger.logAdapterMethod('remove', options);\r\n this.workflow.call({\r\n process: AdapterProcess.remove,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clip(options?: AdapterClipOptions): any {\r\n this.logger.logAdapterMethod('clip', options);\r\n this.workflow.call({\r\n process: AdapterProcess.clip,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n insert(options: AdapterInsertOptions<Item>): any {\r\n this.logger.logAdapterMethod('insert', options);\r\n this.workflow.call({\r\n process: AdapterProcess.insert,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n replace(options: AdapterReplaceOptions<Item>): any {\r\n this.logger.logAdapterMethod('replace', options);\r\n this.workflow.call({\r\n process: AdapterProcess.replace,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n update(options: AdapterUpdateOptions<Item>): any {\r\n this.logger.logAdapterMethod('update', options);\r\n this.workflow.call({\r\n process: AdapterProcess.update,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n fix(options: AdapterFixOptions<Item>): any {\r\n this.logger.logAdapterMethod('fix', options);\r\n this.workflow.call({\r\n process: AdapterProcess.fix,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n relaxUnchained(callback: (() => void) | undefined, reloadId: string): Promise<AdapterMethodResult> {\r\n const runCallback = () => typeof callback === 'function' && reloadId === this.reloadId && callback();\r\n if (!this.isLoading) {\r\n runCallback();\r\n }\r\n return new Promise<boolean>(resolve => {\r\n if (!this.isLoading) {\r\n resolve(true);\r\n return;\r\n }\r\n this.isLoading$.once(() => {\r\n runCallback();\r\n resolve(false);\r\n });\r\n }).then(immediate => {\r\n const success = reloadId === this.reloadId;\r\n this.logger.log(() => !success ? `relax promise cancelled due to ${reloadId} != ${this.reloadId}` : void 0);\r\n return {\r\n immediate,\r\n success,\r\n details: !success ? 'Interrupted by reload or reset' : null\r\n };\r\n });\r\n }\r\n\r\n relax(callback?: () => void): Promise<AdapterMethodResult> {\r\n const reloadId = this.reloadId;\r\n this.logger.logAdapterMethod('relax', callback, ` of ${reloadId}`);\r\n if (!this.init) {\r\n return Promise.resolve(methodPreResult);\r\n }\r\n return this.relaxRun = this.relaxRun\r\n ? this.relaxRun.then(() => this.relaxUnchained(callback, reloadId))\r\n : this.relaxUnchained(callback, reloadId).then((result) => {\r\n this.relaxRun = null;\r\n return result;\r\n });\r\n }\r\n\r\n showLog(): void {\r\n this.logger.logAdapterMethod('showLog');\r\n this.logger.logForce();\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AdapterContext } from './adapter/context';
|
|
2
2
|
import { reactiveConfigStorage } from './adapter/props';
|
|
3
|
+
import { wantedStorage } from './adapter/wanted';
|
|
3
4
|
export class DatasourceGeneric {
|
|
4
5
|
constructor(datasource, config) {
|
|
5
6
|
this.get = datasource.get;
|
|
@@ -14,6 +15,7 @@ export class DatasourceGeneric {
|
|
|
14
15
|
}
|
|
15
16
|
dispose() {
|
|
16
17
|
reactiveConfigStorage.delete(this.adapter.id);
|
|
18
|
+
wantedStorage.delete(this.adapter.id);
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../../src/classes/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../../src/classes/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWjD,MAAM,OAAO,iBAAiB;IAM5B,YAAY,UAA6B,EAAE,MAAuB;QAChE,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAC1B,IAAI,UAAU,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;SACrC;QACD,IAAI,UAAU,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;SAC3C;QACD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,cAA2C,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAgC,EAAE,EAAE,CACjE,KAAuB,SAAQ,iBAAuB;IACpD,YAAY,UAA6B;QACvC,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEJ,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC","sourcesContent":["import { AdapterContext } from './adapter/context';\r\nimport { reactiveConfigStorage } from './adapter/props';\r\nimport { wantedStorage } from './adapter/wanted';\r\nimport {\r\n IDatasource,\r\n IDatasourceConstructed,\r\n DatasourceGet,\r\n Settings,\r\n DevSettings,\r\n IAdapter,\r\n IAdapterConfig,\r\n} from '../interfaces/index';\r\n\r\nexport class DatasourceGeneric<Data> implements IDatasourceConstructed<Data> {\r\n get: DatasourceGet<Data>;\r\n settings?: Settings<Data>;\r\n devSettings?: DevSettings;\r\n adapter: IAdapter<Data>;\r\n\r\n constructor(datasource: IDatasource<Data>, config?: IAdapterConfig) {\r\n this.get = datasource.get;\r\n if (datasource.settings) {\r\n this.settings = datasource.settings;\r\n }\r\n if (datasource.devSettings) {\r\n this.devSettings = datasource.devSettings;\r\n }\r\n const adapterContext = new AdapterContext(config || { mock: false });\r\n this.adapter = adapterContext as unknown as IAdapter<Data>;\r\n }\r\n\r\n dispose(): void { // todo: should it be published?\r\n reactiveConfigStorage.delete(this.adapter.id);\r\n wantedStorage.delete(this.adapter.id);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nexport const makeDatasource = (getConfig?: () => IAdapterConfig) =>\r\n class <Data = unknown> extends DatasourceGeneric<Data> {\r\n constructor(datasource: IDatasource<Data>) {\r\n const config = typeof getConfig === 'function' ? getConfig() : void 0;\r\n super(datasource, config);\r\n }\r\n };\r\n\r\nexport const Datasource = makeDatasource();\r\n"]}
|
|
@@ -160,7 +160,7 @@ export class Routines {
|
|
|
160
160
|
}
|
|
161
161
|
onScroll(handler) {
|
|
162
162
|
const eventReceiver = this.settings.window ? window : this.viewport;
|
|
163
|
-
eventReceiver.addEventListener('scroll', handler);
|
|
163
|
+
eventReceiver.addEventListener('scroll', handler, { passive: true });
|
|
164
164
|
return () => eventReceiver.removeEventListener('scroll', handler);
|
|
165
165
|
}
|
|
166
166
|
}
|