vscroll 1.5.1 → 1.5.3

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.
Files changed (71) hide show
  1. package/dist/bundles/vscroll.esm5.js +119 -61
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +114 -55
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +120 -62
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/adapter/context.js +11 -5
  14. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/props.js +4 -2
  16. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/wanted.js +29 -0
  18. package/dist/esm2015/classes/adapter/wanted.js.map +1 -0
  19. package/dist/esm2015/classes/adapter.js +65 -29
  20. package/dist/esm2015/classes/adapter.js.map +1 -1
  21. package/dist/esm2015/classes/datasource.js +2 -0
  22. package/dist/esm2015/classes/datasource.js.map +1 -1
  23. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  24. package/dist/esm2015/classes/logger.js +1 -1
  25. package/dist/esm2015/classes/logger.js.map +1 -1
  26. package/dist/esm2015/inputs/validation.js.map +1 -1
  27. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  28. package/dist/esm2015/interfaces/index.js.map +1 -1
  29. package/dist/esm2015/interfaces/process.js.map +1 -1
  30. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  31. package/dist/esm2015/processes/end.js +5 -18
  32. package/dist/esm2015/processes/end.js.map +1 -1
  33. package/dist/esm2015/scroller.js +1 -1
  34. package/dist/esm2015/scroller.js.map +1 -1
  35. package/dist/esm2015/version.js +1 -1
  36. package/dist/esm2015/version.js.map +1 -1
  37. package/dist/esm2015/workflow.js.map +1 -1
  38. package/dist/esm5/classes/adapter/context.js +11 -6
  39. package/dist/esm5/classes/adapter/context.js.map +1 -1
  40. package/dist/esm5/classes/adapter/props.js +4 -2
  41. package/dist/esm5/classes/adapter/props.js.map +1 -1
  42. package/dist/esm5/classes/adapter/wanted.js +30 -0
  43. package/dist/esm5/classes/adapter/wanted.js.map +1 -0
  44. package/dist/esm5/classes/adapter.js +69 -34
  45. package/dist/esm5/classes/adapter.js.map +1 -1
  46. package/dist/esm5/classes/datasource.js +2 -0
  47. package/dist/esm5/classes/datasource.js.map +1 -1
  48. package/dist/esm5/classes/domRoutines.js.map +1 -1
  49. package/dist/esm5/classes/logger.js +1 -1
  50. package/dist/esm5/classes/logger.js.map +1 -1
  51. package/dist/esm5/inputs/validation.js.map +1 -1
  52. package/dist/esm5/interfaces/adapter.js.map +1 -1
  53. package/dist/esm5/interfaces/index.js.map +1 -1
  54. package/dist/esm5/interfaces/process.js.map +1 -1
  55. package/dist/esm5/interfaces/workflow.js.map +1 -1
  56. package/dist/esm5/processes/end.js +5 -18
  57. package/dist/esm5/processes/end.js.map +1 -1
  58. package/dist/esm5/scroller.js +1 -1
  59. package/dist/esm5/scroller.js.map +1 -1
  60. package/dist/esm5/version.js +1 -1
  61. package/dist/esm5/version.js.map +1 -1
  62. package/dist/esm5/workflow.js.map +1 -1
  63. package/dist/typings/classes/adapter/wanted.d.ts +14 -0
  64. package/dist/typings/classes/adapter.d.ts +7 -4
  65. package/dist/typings/classes/logger.d.ts +1 -1
  66. package/dist/typings/interfaces/adapter.d.ts +6 -0
  67. package/dist/typings/interfaces/index.d.ts +2 -2
  68. package/dist/typings/interfaces/workflow.d.ts +1 -1
  69. package/dist/typings/processes/end.d.ts +1 -2
  70. package/dist/typings/workflow.d.ts +1 -1
  71. 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(({ name, value, type }) => {
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: () => value }, conf));
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;AAIjC,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;QAEnD,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,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YAEjC,+DAA+D;YAC/D,IAAI,QAAQ,IAAI,IAAI,KAAK,eAAe,CAAC,QAAQ,EAAE;gBACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,KAAK,EAAE;oBACT,8EAA8E;oBAC9E,yEAAyE;oBACzE,kFAAkF;oBAClF,kBAAkB,CAAC,IAAI,CAAC,mCACnB,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,kBAC9B,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,IACb,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 { 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\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(({ name, value, type }) => {\n\n // reactive props might be reconfigured by the vscroll consumer\n if (reactive && type === AdapterPropType.Reactive) {\n const react = reactive[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[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, name, {\n get: () => value,\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"]}
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
- this.wanted = {};
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
- // public context (if exists) should provide access Reactive props configuration by id
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) {
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) scalars should use "box" container
82
- // 2) "wanted" should be updated on get
83
- // 3) reactive props (from "source") are triggered on set
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(({ name, value, reactive, wanted }) => {
87
- if (wanted) {
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
- if (wanted) {
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(({ name, type, value: defaultValue, permanent }) => {
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: () => !permanent && type === AdapterPropType.Scalar
146
- ? this[name] // non-permanent Scalars should be taken in runtime
147
- : value // Reactive props and methods (Functions/WorkflowRunners) can be defined once
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
- const reactiveStore = reactiveConfigStorage.get(this.externalContext.id);
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) {\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) {\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;AAWxD,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,cAAgC,CAAC;IAClD,CAAC;IAED,OAAO;QACL,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChD,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 {\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 IAdapter<Data>;\r\n }\r\n\r\n dispose(): void { // todo: should it be published?\r\n reactiveConfigStorage.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"]}
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"]}