vscroll 1.4.0 → 1.4.4
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/LICENSE +1 -1
- package/README.md +17 -16
- package/dist/bundles/vscroll.esm5.js +367 -286
- 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 +325 -244
- 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 +370 -289
- 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/buffer/checkCall.js.map +1 -1
- package/dist/esm2015/classes/domRoutines.js +110 -41
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/classes/item.js +4 -0
- package/dist/esm2015/classes/item.js.map +1 -1
- package/dist/esm2015/classes/logger.js +2 -2
- package/dist/esm2015/classes/logger.js.map +1 -1
- package/dist/esm2015/classes/paddings.js +7 -5
- package/dist/esm2015/classes/paddings.js.map +1 -1
- package/dist/esm2015/classes/state/cycle.js +7 -6
- package/dist/esm2015/classes/state/cycle.js.map +1 -1
- package/dist/esm2015/classes/state/render.js +1 -1
- package/dist/esm2015/classes/state/render.js.map +1 -1
- package/dist/esm2015/classes/state/scroll.js +6 -6
- package/dist/esm2015/classes/state/scroll.js.map +1 -1
- package/dist/esm2015/classes/state.js +23 -15
- package/dist/esm2015/classes/state.js.map +1 -1
- package/dist/esm2015/classes/viewport.js +15 -44
- package/dist/esm2015/classes/viewport.js.map +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/routines.js +2 -0
- package/dist/esm2015/interfaces/routines.js.map +1 -0
- package/dist/esm2015/interfaces/state.js.map +1 -1
- package/dist/esm2015/processes/adapter/reload.js +1 -1
- package/dist/esm2015/processes/adapter/reload.js.map +1 -1
- package/dist/esm2015/processes/adjust.js +44 -15
- package/dist/esm2015/processes/adjust.js.map +1 -1
- package/dist/esm2015/processes/end.js +18 -16
- package/dist/esm2015/processes/end.js.map +1 -1
- package/dist/esm2015/processes/fetch.js +3 -3
- package/dist/esm2015/processes/fetch.js.map +1 -1
- package/dist/esm2015/processes/init.js +2 -2
- package/dist/esm2015/processes/init.js.map +1 -1
- package/dist/esm2015/processes/render.js +8 -11
- package/dist/esm2015/processes/render.js.map +1 -1
- package/dist/esm2015/processes/scroll.js +21 -21
- package/dist/esm2015/processes/scroll.js.map +1 -1
- package/dist/esm2015/scroller.js +3 -3
- 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 +5 -6
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm5/classes/buffer/defaultSize.js +1 -1
- package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
- package/dist/esm5/classes/buffer.js +7 -7
- package/dist/esm5/classes/buffer.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +113 -41
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/classes/item.js +4 -0
- package/dist/esm5/classes/item.js.map +1 -1
- package/dist/esm5/classes/logger.js +7 -7
- package/dist/esm5/classes/logger.js.map +1 -1
- package/dist/esm5/classes/paddings.js +7 -5
- package/dist/esm5/classes/paddings.js.map +1 -1
- package/dist/esm5/classes/state/cycle.js +7 -6
- package/dist/esm5/classes/state/cycle.js.map +1 -1
- package/dist/esm5/classes/state/render.js +1 -1
- package/dist/esm5/classes/state/render.js.map +1 -1
- package/dist/esm5/classes/state/scroll.js +11 -11
- package/dist/esm5/classes/state/scroll.js.map +1 -1
- package/dist/esm5/classes/state.js +23 -15
- package/dist/esm5/classes/state.js.map +1 -1
- package/dist/esm5/classes/viewport.js +16 -46
- package/dist/esm5/classes/viewport.js.map +1 -1
- package/dist/esm5/inputs/validation.js +2 -2
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/routines.js +2 -0
- package/dist/esm5/interfaces/routines.js.map +1 -0
- package/dist/esm5/interfaces/state.js.map +1 -1
- package/dist/esm5/processes/adapter/append.js +1 -1
- package/dist/esm5/processes/adapter/append.js.map +1 -1
- package/dist/esm5/processes/adapter/fix.js +1 -1
- package/dist/esm5/processes/adapter/fix.js.map +1 -1
- package/dist/esm5/processes/adapter/insert.js +1 -1
- package/dist/esm5/processes/adapter/insert.js.map +1 -1
- package/dist/esm5/processes/adapter/reload.js +1 -1
- package/dist/esm5/processes/adapter/reload.js.map +1 -1
- package/dist/esm5/processes/adapter/remove.js +1 -1
- package/dist/esm5/processes/adapter/remove.js.map +1 -1
- package/dist/esm5/processes/adjust.js +44 -15
- package/dist/esm5/processes/adjust.js.map +1 -1
- package/dist/esm5/processes/end.js +18 -16
- package/dist/esm5/processes/end.js.map +1 -1
- package/dist/esm5/processes/fetch.js +3 -3
- package/dist/esm5/processes/fetch.js.map +1 -1
- package/dist/esm5/processes/init.js +2 -2
- package/dist/esm5/processes/init.js.map +1 -1
- package/dist/esm5/processes/preFetch.js +1 -1
- package/dist/esm5/processes/preFetch.js.map +1 -1
- package/dist/esm5/processes/render.js +8 -11
- package/dist/esm5/processes/render.js.map +1 -1
- package/dist/esm5/processes/scroll.js +21 -21
- package/dist/esm5/processes/scroll.js.map +1 -1
- package/dist/esm5/scroller.js +3 -3
- 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 +10 -13
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/domRoutines.d.ts +25 -11
- package/dist/typings/classes/item.d.ts +1 -0
- package/dist/typings/classes/logger.d.ts +1 -1
- package/dist/typings/classes/paddings.d.ts +2 -2
- package/dist/typings/classes/state/cycle.d.ts +1 -1
- package/dist/typings/classes/state/render.d.ts +1 -1
- package/dist/typings/classes/state/scroll.d.ts +4 -4
- package/dist/typings/classes/state.d.ts +6 -3
- package/dist/typings/classes/viewport.d.ts +3 -6
- package/dist/typings/interfaces/index.d.ts +3 -2
- package/dist/typings/interfaces/routines.d.ts +154 -0
- package/dist/typings/interfaces/state.d.ts +2 -15
- package/dist/typings/processes/adjust.d.ts +1 -0
- package/dist/typings/processes/end.d.ts +1 -2
- package/dist/typings/workflow.d.ts +1 -1
- package/package.json +17 -17
|
@@ -13,6 +13,7 @@ var InnerLoopModel = /** @class */ (function () {
|
|
|
13
13
|
configurable: true
|
|
14
14
|
});
|
|
15
15
|
InnerLoopModel.prototype.done = function () {
|
|
16
|
+
this.isInitial = false;
|
|
16
17
|
this.count++;
|
|
17
18
|
this.total++;
|
|
18
19
|
this.busy.set(false);
|
|
@@ -33,7 +34,7 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
33
34
|
this.innerLoop = new InnerLoopModel(loopCount);
|
|
34
35
|
this.interrupter = null;
|
|
35
36
|
this.busy = new Reactive(false);
|
|
36
|
-
this.
|
|
37
|
+
this.end(cycleCount);
|
|
37
38
|
}
|
|
38
39
|
Object.defineProperty(WorkflowCycleModel.prototype, "loopId", {
|
|
39
40
|
get: function () {
|
|
@@ -49,11 +50,6 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
49
50
|
enumerable: false,
|
|
50
51
|
configurable: true
|
|
51
52
|
});
|
|
52
|
-
WorkflowCycleModel.prototype.done = function (count) {
|
|
53
|
-
this.count = count;
|
|
54
|
-
this.isInitial = false;
|
|
55
|
-
this.busy.set(false);
|
|
56
|
-
};
|
|
57
53
|
WorkflowCycleModel.prototype.start = function (isInitial, initiator) {
|
|
58
54
|
this.isInitial = isInitial;
|
|
59
55
|
this.initiator = initiator;
|
|
@@ -62,6 +58,11 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
62
58
|
this.interrupter = null;
|
|
63
59
|
this.busy.set(true);
|
|
64
60
|
};
|
|
61
|
+
WorkflowCycleModel.prototype.end = function (count) {
|
|
62
|
+
this.count = count;
|
|
63
|
+
this.isInitial = false;
|
|
64
|
+
this.busy.set(false);
|
|
65
|
+
};
|
|
65
66
|
WorkflowCycleModel.prototype.dispose = function (forever) {
|
|
66
67
|
if (forever) {
|
|
67
68
|
// otherwise the value will be persisted during re-instantiation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;IAUE,wBAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,sBAAI,iCAAK;aAAT;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OAAA;IAQD,6BAAI,GAAJ;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,8BAAK,GAAL;QACE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gCAAO,GAAP;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IACH,qBAAC;AAAD,CAAC,
|
|
1
|
+
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;IAUE,wBAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,sBAAI,iCAAK;aAAT;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OAAA;IAQD,6BAAI,GAAJ;QACE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,8BAAK,GAAL;QACE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gCAAO,GAAP;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IACH,qBAAC;AAAD,CAAC,AA9BD,IA8BC;AAED;IAiBE,4BAAY,aAAqB,EAAE,KAA0B;QAC3D,IAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAjBD,sBAAI,sCAAM;aAAV;YACE,OAAU,IAAI,CAAC,aAAa,SAAI,IAAI,CAAC,KAAK,SAAI,IAAI,CAAC,SAAS,CAAC,KAAO,CAAC;QACvE,CAAC;;;OAAA;IAED,sBAAI,0CAAU;aAAd;YACE,OAAU,IAAI,CAAC,aAAa,SAAI,IAAI,CAAC,KAAK,UAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;QAC3E,CAAC;;;OAAA;IAaD,kCAAK,GAAL,UAAM,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gCAAG,GAAH,UAAI,KAAa;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,oCAAO,GAAP,UAAQ,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACH,yBAAC;AAAD,CAAC,AAlDD,IAkDC","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.isInitial = false;\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.end(cycleCount);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n end(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA;IAUE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,sBAAI,+BAAM;aAAV;YACE,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;QAC5C,CAAC;;;OAAA;IAMD,2BAAK,GAAL;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA;IAUE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,sBAAI,+BAAM;aAAV;YACE,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;QAC5C,CAAC;;;OAAA;IAMD,2BAAK,GAAL;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACH,kBAAC;AAAD,CAAC,AApBD,IAoBC","sourcesContent":["export class RenderModel {\n sizeBefore: number;\n sizeAfter: number;\n positionBefore: number;\n cancel: (() => void) | null;\n\n get noSize(): boolean {\n return this.sizeBefore === this.sizeAfter;\n }\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.sizeBefore = 0;\n this.sizeAfter = 0;\n this.positionBefore = 0;\n this.cancel = null;\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var
|
|
2
|
-
function
|
|
1
|
+
var ScrollModel = /** @class */ (function () {
|
|
2
|
+
function ScrollModel() {
|
|
3
3
|
this.reset();
|
|
4
4
|
}
|
|
5
|
-
|
|
5
|
+
ScrollModel.prototype.reset = function () {
|
|
6
6
|
this.previous = null;
|
|
7
7
|
this.current = null;
|
|
8
8
|
this.syntheticPosition = null;
|
|
@@ -10,24 +10,24 @@ var ScrollState = /** @class */ (function () {
|
|
|
10
10
|
this.positionBeforeAsync = null;
|
|
11
11
|
this.positionBeforeAdjust = null;
|
|
12
12
|
this.positionAfterAdjust = null;
|
|
13
|
-
this.
|
|
13
|
+
this.stop();
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
ScrollModel.prototype.stop = function () {
|
|
16
16
|
if (this.scrollTimer) {
|
|
17
17
|
clearTimeout(this.scrollTimer);
|
|
18
18
|
this.scrollTimer = null;
|
|
19
19
|
}
|
|
20
|
-
if (this.
|
|
21
|
-
|
|
22
|
-
this.
|
|
20
|
+
if (this.cancelAnimation) {
|
|
21
|
+
this.cancelAnimation();
|
|
22
|
+
this.cancelAnimation = null;
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
ScrollModel.prototype.hasPositionChanged = function (position) {
|
|
26
26
|
var before = this.positionBeforeAdjust;
|
|
27
27
|
var after = this.positionAfterAdjust;
|
|
28
28
|
return before === null || before !== position || after === null || after !== position;
|
|
29
29
|
};
|
|
30
|
-
return
|
|
30
|
+
return ScrollModel;
|
|
31
31
|
}());
|
|
32
|
-
export {
|
|
32
|
+
export { ScrollModel };
|
|
33
33
|
//# sourceMappingURL=scroll.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"AAEA;IAaE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,2BAAK,GAAL;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,0BAAI,GAAJ;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B;IACH,CAAC;IAED,wCAAkB,GAAlB,UAAmB,QAAgB;QACjC,IAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,IAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC;IACxF,CAAC;IACH,kBAAC;AAAD,CAAC,AA5CD,IA4CC","sourcesContent":["import { ScrollEventData as IScrollEventData } from '../../interfaces/index';\n\nexport class ScrollModel {\n previous: IScrollEventData | null;\n current: IScrollEventData | null;\n\n scrollTimer: ReturnType<typeof setTimeout> | null;\n\n syntheticPosition: number | null;\n syntheticFulfill: boolean;\n cancelAnimation: (() => void) | null;\n positionBeforeAsync: number | null;\n positionBeforeAdjust: number | null;\n positionAfterAdjust: number | null;\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.previous = null;\n this.current = null;\n this.syntheticPosition = null;\n this.syntheticFulfill = false;\n this.positionBeforeAsync = null;\n this.positionBeforeAdjust = null;\n this.positionAfterAdjust = null;\n this.stop();\n }\n\n stop(): void {\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n if (this.cancelAnimation) {\n this.cancelAnimation();\n this.cancelAnimation = null;\n }\n }\n\n hasPositionChanged(position: number): boolean {\n const before = this.positionBeforeAdjust;\n const after = this.positionAfterAdjust;\n return before === null || before !== position || after === null || after !== position;\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { WorkflowCycleModel } from './state/cycle';
|
|
|
3
3
|
import { FetchModel } from './state/fetch';
|
|
4
4
|
import { ClipModel } from './state/clip';
|
|
5
5
|
import { RenderModel } from './state/render';
|
|
6
|
-
import {
|
|
6
|
+
import { ScrollModel } from './state/scroll';
|
|
7
7
|
var State = /** @class */ (function () {
|
|
8
8
|
function State(packageInfo, settings, state) {
|
|
9
9
|
this.packageInfo = packageInfo;
|
|
@@ -13,7 +13,7 @@ var State = /** @class */ (function () {
|
|
|
13
13
|
this.fetch = new FetchModel(settings.directionPriority);
|
|
14
14
|
this.clip = new ClipModel();
|
|
15
15
|
this.render = new RenderModel();
|
|
16
|
-
this.
|
|
16
|
+
this.scroll = new ScrollModel();
|
|
17
17
|
}
|
|
18
18
|
Object.defineProperty(State.prototype, "time", {
|
|
19
19
|
get: function () {
|
|
@@ -22,20 +22,14 @@ var State = /** @class */ (function () {
|
|
|
22
22
|
enumerable: false,
|
|
23
23
|
configurable: true
|
|
24
24
|
});
|
|
25
|
-
State.prototype.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
if (render.renderTimer) {
|
|
32
|
-
clearTimeout(render.renderTimer);
|
|
33
|
-
render.renderTimer = null;
|
|
34
|
-
}
|
|
35
|
-
cycle.innerLoop.done();
|
|
25
|
+
State.prototype.startWorkflowCycle = function (isInitial, initiator) {
|
|
26
|
+
this.cycle.start(isInitial, initiator);
|
|
27
|
+
};
|
|
28
|
+
State.prototype.endWorkflowCycle = function (count) {
|
|
29
|
+
this.cycle.end(count);
|
|
36
30
|
};
|
|
37
31
|
State.prototype.startInnerLoop = function () {
|
|
38
|
-
var _a = this, cycle = _a.cycle, scroll = _a.
|
|
32
|
+
var _a = this, cycle = _a.cycle, scroll = _a.scroll, fetch = _a.fetch, render = _a.render, clip = _a.clip;
|
|
39
33
|
cycle.innerLoop.start();
|
|
40
34
|
scroll.positionBeforeAsync = null;
|
|
41
35
|
if (!fetch.simulate) {
|
|
@@ -48,10 +42,24 @@ var State = /** @class */ (function () {
|
|
|
48
42
|
doRender: fetch.simulate && fetch.items.length > 0
|
|
49
43
|
} : {}));
|
|
50
44
|
};
|
|
45
|
+
State.prototype.endInnerLoop = function () {
|
|
46
|
+
var _a = this, fetch = _a.fetch, clip = _a.clip, render = _a.render, cycle = _a.cycle;
|
|
47
|
+
fetch.stopSimulate();
|
|
48
|
+
clip.reset(true);
|
|
49
|
+
if (fetch.cancel) {
|
|
50
|
+
fetch.cancel();
|
|
51
|
+
fetch.cancel = null;
|
|
52
|
+
}
|
|
53
|
+
if (render.cancel) {
|
|
54
|
+
render.cancel();
|
|
55
|
+
render.cancel = null;
|
|
56
|
+
}
|
|
57
|
+
cycle.innerLoop.done();
|
|
58
|
+
};
|
|
51
59
|
State.prototype.dispose = function () {
|
|
60
|
+
this.scroll.stop();
|
|
52
61
|
this.cycle.dispose();
|
|
53
62
|
this.endInnerLoop();
|
|
54
|
-
this.scrollState.cleanupTimers();
|
|
55
63
|
};
|
|
56
64
|
return State;
|
|
57
65
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/classes/state.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/classes/state.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;IAgBE,eAAY,WAAsB,EAAE,QAAkB,EAAE,KAAc;QACpE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,CAAC;IAdD,sBAAI,uBAAI;aAAR;YACE,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5C,CAAC;;;OAAA;IAcD,kCAAkB,GAAlB,UAAmB,SAAkB,EAAE,SAAsB;QAC3D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,gCAAgB,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,8BAAc,GAAd;QACQ,IAAA,KAAiD,IAAI,EAAnD,KAAK,WAAA,EAAU,MAAM,YAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,IAAI,UAAS,CAAC;QAE5D,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAElC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,oBACK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,KAAK,CAAC,SAAS;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;SACnD,CAAC,CAAC,CAAC,EAAE,CAAC,EACP;IACJ,CAAC;IAED,4BAAY,GAAZ;QACQ,IAAA,KAAiC,IAAI,EAAnC,KAAK,WAAA,EAAE,IAAI,UAAA,EAAE,MAAM,YAAA,EAAE,KAAK,WAAS,CAAC;QAC5C,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,uBAAO,GAAP;QACE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEH,YAAC;AAAD,CAAC,AA7ED,IA6EC","sourcesContent":["import { Settings } from './settings';\r\nimport { WorkflowCycleModel } from './state/cycle';\r\nimport { FetchModel } from './state/fetch';\r\nimport { ClipModel } from './state/clip';\r\nimport { RenderModel } from './state/render';\r\nimport { ScrollModel } from './state/scroll';\r\nimport { State as IState, IPackages, ProcessName } from '../interfaces/index';\r\n\r\nexport class State implements IState {\r\n\r\n readonly packageInfo: IPackages;\r\n private settings: Settings;\r\n initTime: number;\r\n\r\n cycle: WorkflowCycleModel;\r\n fetch: FetchModel;\r\n clip: ClipModel;\r\n render: RenderModel;\r\n scroll: ScrollModel;\r\n\r\n get time(): number {\r\n return Number(new Date()) - this.initTime;\r\n }\r\n\r\n constructor(packageInfo: IPackages, settings: Settings, state?: IState) {\r\n this.packageInfo = packageInfo;\r\n this.settings = settings;\r\n this.initTime = Number(new Date());\r\n\r\n this.cycle = new WorkflowCycleModel(this.settings.instanceIndex, state ? state.cycle : void 0);\r\n this.fetch = new FetchModel(settings.directionPriority);\r\n this.clip = new ClipModel();\r\n this.render = new RenderModel();\r\n this.scroll = new ScrollModel();\r\n }\r\n\r\n startWorkflowCycle(isInitial: boolean, initiator: ProcessName): void {\r\n this.cycle.start(isInitial, initiator);\r\n }\r\n\r\n endWorkflowCycle(count: number): void {\r\n this.cycle.end(count);\r\n }\r\n\r\n startInnerLoop(): { process?: ProcessName, doRender?: boolean } {\r\n const { cycle, scroll: scroll, fetch, render, clip } = this;\r\n\r\n cycle.innerLoop.start();\r\n scroll.positionBeforeAsync = null;\r\n\r\n if (!fetch.simulate) {\r\n fetch.reset();\r\n }\r\n clip.reset(clip.force);\r\n render.reset();\r\n\r\n return {\r\n ...(cycle.innerLoop.first ? {\r\n process: cycle.initiator,\r\n doRender: fetch.simulate && fetch.items.length > 0\r\n } : {})\r\n };\r\n }\r\n\r\n endInnerLoop(): void {\r\n const { fetch, clip, render, cycle } = this;\r\n fetch.stopSimulate();\r\n clip.reset(true);\r\n if (fetch.cancel) {\r\n fetch.cancel();\r\n fetch.cancel = null;\r\n }\r\n if (render.cancel) {\r\n render.cancel();\r\n render.cancel = null;\r\n }\r\n cycle.innerLoop.done();\r\n }\r\n\r\n dispose(): void {\r\n this.scroll.stop();\r\n this.cycle.dispose();\r\n this.endInnerLoop();\r\n }\r\n\r\n}\r\n"]}
|
|
@@ -2,34 +2,18 @@ import { __read, __spreadArray } from "tslib";
|
|
|
2
2
|
import { Paddings } from './paddings';
|
|
3
3
|
import { Direction } from '../inputs/index';
|
|
4
4
|
var Viewport = /** @class */ (function () {
|
|
5
|
-
function Viewport(
|
|
6
|
-
this.element = element;
|
|
5
|
+
function Viewport(settings, routines, state, logger) {
|
|
7
6
|
this.settings = settings;
|
|
8
7
|
this.routines = routines;
|
|
9
8
|
this.state = state;
|
|
10
9
|
this.logger = logger;
|
|
11
|
-
this.
|
|
12
|
-
if (settings.windowViewport) {
|
|
13
|
-
this.hostElement = document.documentElement;
|
|
14
|
-
this.scrollEventReceiver = window;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
this.hostElement = settings.viewport || this.element.parentElement;
|
|
18
|
-
this.scrollEventReceiver = this.hostElement;
|
|
19
|
-
}
|
|
20
|
-
this.paddings = new Paddings(this.element, this.routines, settings);
|
|
21
|
-
if (settings.windowViewport && 'scrollRestoration' in history) {
|
|
22
|
-
history.scrollRestoration = 'manual';
|
|
23
|
-
}
|
|
24
|
-
if (settings.dismissOverflowAnchor) {
|
|
25
|
-
this.hostElement.style.overflowAnchor = 'none';
|
|
26
|
-
}
|
|
10
|
+
this.paddings = new Paddings(this.routines, settings);
|
|
27
11
|
}
|
|
28
12
|
Viewport.prototype.reset = function (startIndex) {
|
|
29
13
|
this.setOffset();
|
|
30
14
|
this.paddings.reset(this.getSize(), startIndex, this.offset);
|
|
31
15
|
this.scrollPosition = this.paddings.backward.size || 0;
|
|
32
|
-
this.state.
|
|
16
|
+
this.state.scroll.reset();
|
|
33
17
|
};
|
|
34
18
|
Viewport.prototype.setPosition = function (value) {
|
|
35
19
|
var oldPosition = this.scrollPosition;
|
|
@@ -37,16 +21,16 @@ var Viewport = /** @class */ (function () {
|
|
|
37
21
|
this.logger.log(function () { return ['setting scroll position at', value, '[cancelled]']; });
|
|
38
22
|
return value;
|
|
39
23
|
}
|
|
40
|
-
this.routines.setScrollPosition(
|
|
24
|
+
this.routines.setScrollPosition(value);
|
|
41
25
|
var position = this.scrollPosition;
|
|
42
26
|
this.logger.log(function () { return __spreadArray([
|
|
43
27
|
'setting scroll position at', position
|
|
44
|
-
], __read((position !== value ? ["(" + value + ")"] : []))); });
|
|
28
|
+
], __read((position !== value ? ["(" + value + ")"] : [])), false); });
|
|
45
29
|
return position;
|
|
46
30
|
};
|
|
47
31
|
Object.defineProperty(Viewport.prototype, "scrollPosition", {
|
|
48
32
|
get: function () {
|
|
49
|
-
return this.routines.getScrollPosition(
|
|
33
|
+
return this.routines.getScrollPosition();
|
|
50
34
|
},
|
|
51
35
|
set: function (value) {
|
|
52
36
|
this.setPosition(value);
|
|
@@ -54,40 +38,26 @@ var Viewport = /** @class */ (function () {
|
|
|
54
38
|
enumerable: false,
|
|
55
39
|
configurable: true
|
|
56
40
|
});
|
|
57
|
-
Viewport.prototype.disableScrollForOneLoop = function () {
|
|
58
|
-
var _this = this;
|
|
59
|
-
if (this.disabled) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
var style = this.hostElement.style;
|
|
63
|
-
if (style.overflowY === 'hidden') {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.disabled = true;
|
|
67
|
-
var overflow = style.overflowY;
|
|
68
|
-
setTimeout(function () {
|
|
69
|
-
_this.disabled = false;
|
|
70
|
-
style.overflowY = overflow;
|
|
71
|
-
});
|
|
72
|
-
style.overflowY = 'hidden';
|
|
73
|
-
};
|
|
74
41
|
Viewport.prototype.getSize = function () {
|
|
75
|
-
return this.routines.
|
|
42
|
+
return this.routines.getViewportSize();
|
|
76
43
|
};
|
|
77
44
|
Viewport.prototype.getScrollableSize = function () {
|
|
78
|
-
return this.routines.
|
|
45
|
+
return this.routines.getScrollerSize();
|
|
46
|
+
};
|
|
47
|
+
Viewport.prototype.getMaxScrollPosition = function () {
|
|
48
|
+
return this.getScrollableSize() - this.getSize();
|
|
79
49
|
};
|
|
80
50
|
Viewport.prototype.getBufferPadding = function () {
|
|
81
51
|
return this.getSize() * this.settings.padding;
|
|
82
52
|
};
|
|
83
53
|
Viewport.prototype.getEdge = function (direction) {
|
|
84
|
-
return this.routines.
|
|
54
|
+
return this.routines.getViewportEdge(direction);
|
|
85
55
|
};
|
|
86
56
|
Viewport.prototype.setOffset = function () {
|
|
87
|
-
this.offset = this.routines.getOffset(
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
57
|
+
this.offset = this.routines.getOffset();
|
|
58
|
+
};
|
|
59
|
+
Viewport.prototype.findItemElementById = function (id) {
|
|
60
|
+
return this.routines.findItemElement(id);
|
|
91
61
|
};
|
|
92
62
|
Viewport.prototype.getEdgeVisibleItem = function (items, direction) {
|
|
93
63
|
var bwd = direction === Direction.backward;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../../src/classes/viewport.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;
|
|
1
|
+
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../../src/classes/viewport.ts"],"names":[],"mappings":"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","sourcesContent":["import { Paddings } from './paddings';\nimport { Settings } from './settings';\nimport { Routines } from './domRoutines';\nimport { Item } from './item';\nimport { State } from './state';\nimport { Logger } from './logger';\nimport { Direction } from '../inputs/index';\n\nexport class Viewport {\n\n offset: number;\n paddings: Paddings;\n\n readonly settings: Settings;\n readonly routines: Routines;\n readonly state: State;\n readonly logger: Logger;\n\n constructor(settings: Settings, routines: Routines, state: State, logger: Logger) {\n this.settings = settings;\n this.routines = routines;\n this.state = state;\n this.logger = logger;\n this.paddings = new Paddings(this.routines, settings);\n }\n\n reset(startIndex: number): void {\n this.setOffset();\n this.paddings.reset(this.getSize(), startIndex, this.offset);\n this.scrollPosition = this.paddings.backward.size || 0;\n this.state.scroll.reset();\n }\n\n setPosition(value: number): number {\n const oldPosition = this.scrollPosition;\n if (oldPosition === value) {\n this.logger.log(() => ['setting scroll position at', value, '[cancelled]']);\n return value;\n }\n this.routines.setScrollPosition(value);\n const position = this.scrollPosition;\n this.logger.log(() => [\n 'setting scroll position at', position, ...(position !== value ? [`(${value})`] : [])\n ]);\n return position;\n }\n\n get scrollPosition(): number {\n return this.routines.getScrollPosition();\n }\n\n set scrollPosition(value: number) {\n this.setPosition(value);\n }\n\n getSize(): number {\n return this.routines.getViewportSize();\n }\n\n getScrollableSize(): number {\n return this.routines.getScrollerSize();\n }\n\n getMaxScrollPosition(): number {\n return this.getScrollableSize() - this.getSize();\n }\n\n getBufferPadding(): number {\n return this.getSize() * this.settings.padding;\n }\n\n getEdge(direction: Direction): number {\n return this.routines.getViewportEdge(direction);\n }\n\n setOffset(): void {\n this.offset = this.routines.getOffset();\n }\n\n findItemElementById(id: string): HTMLElement | null {\n return this.routines.findItemElement(id);\n }\n\n getEdgeVisibleItem(items: Item[], direction: Direction): { item?: Item, index: number, diff: number } {\n const bwd = direction === Direction.backward;\n const opposite = bwd ? Direction.forward : Direction.backward;\n const viewportEdge = this.getEdge(direction);\n let item, diff = 0;\n for (\n let i = bwd ? 0 : items.length - 1;\n bwd ? i <= items.length - 1 : i >= 0;\n i += bwd ? 1 : -1\n ) {\n const itemEdge = this.routines.getEdge(items[i].element, opposite);\n diff = itemEdge - viewportEdge;\n if (bwd && diff > 0 || !bwd && diff < 0) {\n item = items[i];\n break;\n }\n }\n return { item, index: item ? item.$index : NaN, diff };\n }\n\n}\n"]}
|
|
@@ -301,7 +301,7 @@ var ValidatedData = /** @class */ (function () {
|
|
|
301
301
|
};
|
|
302
302
|
ValidatedData.prototype.setValidity = function () {
|
|
303
303
|
var _this = this;
|
|
304
|
-
this.errors = Object.keys(this.params).reduce(function (acc, key) { return __spreadArray(__spreadArray([], __read(acc)), __read(_this.params[key].errors)); }, []);
|
|
304
|
+
this.errors = Object.keys(this.params).reduce(function (acc, key) { return __spreadArray(__spreadArray([], __read(acc), false), __read(_this.params[key].errors), false); }, []);
|
|
305
305
|
this.isValid = !this.errors.length;
|
|
306
306
|
};
|
|
307
307
|
ValidatedData.prototype.setCommonError = function (error) {
|
|
@@ -331,7 +331,7 @@ export { ValidatedData };
|
|
|
331
331
|
export var runValidator = function (current, validator, context) {
|
|
332
332
|
var value = current.value, errors = current.errors;
|
|
333
333
|
var result = validator.method(value, context);
|
|
334
|
-
var _errors = __spreadArray(__spreadArray([], __read(errors)), __read(result.errors));
|
|
334
|
+
var _errors = __spreadArray(__spreadArray([], __read(errors), false), __read(result.errors), false);
|
|
335
335
|
return {
|
|
336
336
|
value: result.value,
|
|
337
337
|
isSet: result.isSet,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/inputs/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IValidationContext } from '../interfaces/validation';\nimport {\n IValidator,\n ValidatedValue,\n IValidatedData,\n IValidatedCommonProps,\n ICommonProps,\n ICommonProp,\n} from '../interfaces/index';\n\nexport enum ValidatorType {\n number = 'must be a number',\n integer = 'must be an integer',\n integerUnlimited = 'must be an integer or infinity',\n moreOrEqual = 'must be a number greater than (or equal to) {arg1}',\n itemList = 'must be an array of items {arg1}',\n boolean = 'must be a boolean',\n object = 'must be an object',\n element = 'must be an html element',\n function = 'must be a function',\n funcOfxArguments = 'must have {arg1} argument(s)',\n funcOfxAndMoreArguments = 'must have at least {arg1} argument(s)',\n funcOfXToYArguments = 'must have {arg1} to {arg2} arguments',\n oneOfCan = 'can be present as only one item of {arg1} list',\n oneOfMust = 'must be present as only one item of {arg1} list',\n or = 'must satisfy at least 1 validator from {arg1} list',\n enum = 'must belong to {arg1} list',\n}\n\nconst getError = (msg: ValidatorType, args?: string[]) =>\n (args || ['']).reduce((acc, arg, index) => acc.replace(`{arg${index + 1}}`, arg), msg);\n\nconst getNumber = (value: unknown): number =>\n typeof value === 'number' || (typeof value === 'string' && value !== '')\n ? Number(value)\n : NaN;\n\nconst onNumber = (value: unknown): ValidatedValue => {\n const parsedValue = getNumber(value);\n const errors = [];\n if (Number.isNaN(parsedValue)) {\n errors.push(ValidatorType.number);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onInteger = (value: unknown): ValidatedValue => {\n const errors = [];\n value = getNumber(value);\n const parsedValue = parseInt(String(value), 10);\n if (value !== parsedValue) {\n errors.push(ValidatorType.integer);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onIntegerUnlimited = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n value = getNumber(value);\n if (!Number.isFinite(value)) {\n parsedValue = value;\n } else {\n parsedValue = parseInt(String(value), 10);\n }\n if (value !== parsedValue) {\n errors.push(ValidatorType.integerUnlimited);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onMoreOrEqual = (limit: number, fallback?: boolean) => (value: unknown): ValidatedValue => {\n const result = onNumber(value);\n if (!result.isValid) {\n return result;\n }\n let parsedValue = result.value as number;\n const errors = [];\n if (parsedValue < limit) {\n if (!fallback) {\n errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));\n } else {\n parsedValue = limit;\n }\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onBoolean = (value: unknown): ValidatedValue => {\n const errors = [];\n let parsedValue = value;\n if (value === 'true') {\n parsedValue = true;\n } else if (value === 'false') {\n parsedValue = false;\n }\n if (typeof parsedValue !== 'boolean') {\n errors.push(ValidatorType.boolean);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onObject = (value: unknown): ValidatedValue => {\n const errors = [];\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n errors.push(ValidatorType.object);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onHtmlElement = (value: unknown): ValidatedValue => {\n const errors = [];\n if (!(value instanceof Element) && !(value instanceof HTMLDocument)) {\n errors.push(ValidatorType.element);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onItemList = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n if (!Array.isArray(value)) {\n errors.push(ValidatorType.itemList);\n parsedValue = [];\n } else if (!value.length) {\n errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));\n } else if (value.length > 1) {\n const type = typeof value[0];\n for (let i = value.length - 1; i >= 0; i--) {\n if (typeof value[i] !== type) {\n errors.push(getError(ValidatorType.itemList, ['of items of the same type']));\n break;\n }\n }\n }\n return { value: parsedValue as unknown[], isSet: true, isValid: !errors.length, errors };\n};\n\ntype Func = (...args: any[]) => void;\n\nconst onFunction = (value: unknown): ValidatedValue => {\n const errors = [];\n if (typeof value !== 'function') {\n errors.push(ValidatorType.function);\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXArguments = (argsCount: number) => (value: unknown) => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length !== argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXAndMoreArguments = (argsCount: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXToYArguments = (from: number, to: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < from || (value as Func).length > to) {\n errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onOneOf = (tokens: string[], must: boolean) => (value: unknown, context?: IValidationContext): ValidatedValue => {\n const errors = [];\n const isSet = value !== void 0;\n let noOneIsPresent = !isSet;\n const err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;\n if (!Array.isArray(tokens) || !tokens.length) {\n errors.push(getError(err, ['undefined']));\n } else {\n for (let i = tokens.length - 1; i >= 0; i--) {\n const token = tokens[i];\n if (typeof token !== 'string') {\n errors.push(getError(err, [tokens.join('\", \"')]) + ' (non-string token)');\n break;\n }\n const isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);\n if (isSet && isAnotherPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]) + ` (${token} is present)`);\n break;\n }\n if (noOneIsPresent && isAnotherPresent) {\n noOneIsPresent = false;\n }\n }\n if (must && noOneIsPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]));\n }\n }\n return { value, isSet, isValid: !errors.length, errors };\n};\n\nconst onOr = (validators: IValidator[]) => (value: unknown): ValidatedValue => {\n const errors = [];\n if (validators.every(validator => !validator.method(value).isValid)) {\n errors.push(validators.map(v => v.type).join(' OR '));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nenum AbstractEnum { }\ntype TEnum = typeof AbstractEnum;\n\nconst onEnum = (list: TEnum) => (value: unknown): ValidatedValue => {\n const errors = [];\n const values = Object.keys(list).filter(k => isNaN(Number(k))).map(k => list[k as unknown as number]);\n if (!values.some(item => item === value)) {\n errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nexport const VALIDATORS = {\n NUMBER: {\n type: ValidatorType.number,\n method: onNumber\n },\n INTEGER: {\n type: ValidatorType.integer,\n method: onInteger\n },\n INTEGER_UNLIMITED: {\n type: ValidatorType.integerUnlimited,\n method: onIntegerUnlimited\n },\n MORE_OR_EQUAL: (limit: number, fallback?: boolean): IValidator => ({\n type: ValidatorType.moreOrEqual,\n method: onMoreOrEqual(limit, fallback)\n }),\n BOOLEAN: {\n type: ValidatorType.boolean,\n method: onBoolean\n },\n OBJECT: {\n type: ValidatorType.object,\n method: onObject\n },\n ITEM_LIST: {\n type: ValidatorType.itemList,\n method: onItemList\n },\n ELEMENT: {\n type: ValidatorType.element,\n method: onHtmlElement\n },\n FUNC: {\n type: ValidatorType.function,\n method: onFunction\n },\n FUNC_WITH_X_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxArguments,\n method: onFunctionWithXArguments(count)\n }),\n FUNC_WITH_X_AND_MORE_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxAndMoreArguments,\n method: onFunctionWithXAndMoreArguments(count)\n }),\n FUNC_WITH_X_TO_Y_ARGUMENTS: (from: number, to: number): IValidator => ({\n type: ValidatorType.funcOfXToYArguments,\n method: onFunctionWithXToYArguments(from, to)\n }),\n ONE_OF_CAN: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfCan,\n method: onOneOf(list, false)\n }),\n ONE_OF_MUST: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfMust,\n method: onOneOf(list, true)\n }),\n OR: (list: IValidator[]): IValidator => ({\n type: ValidatorType.or,\n method: onOr(list)\n }),\n ENUM: (list: TEnum): IValidator => ({\n type: ValidatorType.enum,\n method: onEnum(list)\n })\n};\n\nexport class ValidatedData implements IValidatedData {\n\n context: IValidationContext;\n isValidContext: boolean;\n isValid: boolean;\n errors: string[];\n params: IValidatedCommonProps<PropertyKey>;\n\n private contextErrors: string[];\n\n constructor(context: unknown) {\n this.params = {};\n this.contextErrors = [];\n this.errors = [];\n this.isValid = true;\n this.setContext(context);\n }\n\n private setContext(context: unknown): void {\n if (!context || Object.prototype.toString.call(context) !== '[object Object]') {\n this.setCommonError('context is not an object');\n this.isValidContext = false;\n } else {\n this.isValidContext = true;\n }\n this.context = context as IValidationContext;\n }\n\n private setValidity() {\n this.errors = Object.keys(this.params).reduce((acc: string[], key: string) => [\n ...acc, ...this.params[key].errors\n ], []);\n this.isValid = !this.errors.length;\n }\n\n setCommonError(error: string): void {\n this.contextErrors.push(error);\n this.errors.push(error);\n this.isValid = false;\n }\n\n setParam(token: string, value: ValidatedValue): void {\n if (!value.isValid) {\n value.errors = !value.isSet\n ? [`\"${token}\" must be set`]\n : value.errors.map((err: string) =>\n `\"${token}\" ${err}`\n );\n }\n this.params[token] = value;\n this.setValidity();\n }\n\n showErrors(): string {\n return this.errors.length\n ? 'validation failed: ' + this.errors.join(', ')\n : '';\n }\n}\n\nexport const runValidator = (\n current: ValidatedValue,\n validator: IValidator,\n context: IValidationContext\n): ValidatedValue => {\n const { value, errors } = current;\n const result = validator.method(value, context);\n const _errors = [...errors, ...result.errors];\n return {\n value: result.value,\n isSet: result.isSet,\n isValid: !_errors.length,\n errors: _errors\n };\n};\n\nconst getDefault = (value: unknown, prop: ICommonProp): ValidatedValue => {\n const empty = value === void 0;\n const auto = !prop.mandatory && prop.defaultValue !== void 0;\n return {\n value: !empty ? value : (auto ? prop.defaultValue : void 0),\n isSet: !empty || auto,\n isValid: !empty || !prop.mandatory,\n errors: []\n };\n};\n\nexport const validateOne = (\n context: IValidationContext, name: string, prop: ICommonProp\n): ValidatedValue => {\n const result = getDefault(context[name], prop);\n if (!result.isSet) {\n const oneOfMust = prop.validators.find(v => v.type === ValidatorType.oneOfMust);\n if (oneOfMust) {\n return runValidator(result, oneOfMust, context);\n }\n } else {\n for (const validator of Object.values(prop.validators)) {\n const current = runValidator(result, validator, context);\n if (!current.isValid && prop.defaultValue !== void 0) {\n return {\n value: prop.defaultValue,\n isSet: true,\n isValid: true,\n errors: []\n };\n }\n Object.assign(result, current);\n }\n }\n return result;\n};\n\nexport const validate = (\n context: unknown, params: ICommonProps<PropertyKey>\n): IValidatedData => {\n const data = new ValidatedData(context);\n Object.entries(params).forEach(([key, prop]) =>\n data.setParam(key, data.isValidContext\n ? validateOne(data.context, key, prop)\n : getDefault(void 0, prop)\n )\n );\n return data;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/inputs/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IValidationContext } from '../interfaces/validation';\nimport {\n IValidator,\n ValidatedValue,\n IValidatedData,\n IValidatedCommonProps,\n ICommonProps,\n ICommonProp,\n} from '../interfaces/index';\n\nexport enum ValidatorType {\n number = 'must be a number',\n integer = 'must be an integer',\n integerUnlimited = 'must be an integer or infinity',\n moreOrEqual = 'must be a number greater than (or equal to) {arg1}',\n itemList = 'must be an array of items {arg1}',\n boolean = 'must be a boolean',\n object = 'must be an object',\n element = 'must be an html element',\n function = 'must be a function',\n funcOfxArguments = 'must have {arg1} argument(s)',\n funcOfxAndMoreArguments = 'must have at least {arg1} argument(s)',\n funcOfXToYArguments = 'must have {arg1} to {arg2} arguments',\n oneOfCan = 'can be present as only one item of {arg1} list',\n oneOfMust = 'must be present as only one item of {arg1} list',\n or = 'must satisfy at least 1 validator from {arg1} list',\n enum = 'must belong to {arg1} list',\n}\n\nconst getError = (msg: ValidatorType, args?: string[]) =>\n (args || ['']).reduce((acc, arg, index) => acc.replace(`{arg${index + 1}}`, arg), msg);\n\nconst getNumber = (value: unknown): number =>\n typeof value === 'number' || (typeof value === 'string' && value !== '')\n ? Number(value)\n : NaN;\n\nconst onNumber = (value: unknown): ValidatedValue => {\n const parsedValue = getNumber(value);\n const errors = [];\n if (Number.isNaN(parsedValue)) {\n errors.push(ValidatorType.number);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onInteger = (value: unknown): ValidatedValue => {\n const errors = [];\n value = getNumber(value);\n const parsedValue = parseInt(String(value), 10);\n if (value !== parsedValue) {\n errors.push(ValidatorType.integer);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onIntegerUnlimited = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n value = getNumber(value);\n if (!Number.isFinite(value)) {\n parsedValue = value;\n } else {\n parsedValue = parseInt(String(value), 10);\n }\n if (value !== parsedValue) {\n errors.push(ValidatorType.integerUnlimited);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onMoreOrEqual = (limit: number, fallback?: boolean) => (value: unknown): ValidatedValue => {\n const result = onNumber(value);\n if (!result.isValid) {\n return result;\n }\n let parsedValue = result.value as number;\n const errors = [];\n if (parsedValue < limit) {\n if (!fallback) {\n errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));\n } else {\n parsedValue = limit;\n }\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onBoolean = (value: unknown): ValidatedValue => {\n const errors = [];\n let parsedValue = value;\n if (value === 'true') {\n parsedValue = true;\n } else if (value === 'false') {\n parsedValue = false;\n }\n if (typeof parsedValue !== 'boolean') {\n errors.push(ValidatorType.boolean);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onObject = (value: unknown): ValidatedValue => {\n const errors = [];\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n errors.push(ValidatorType.object);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onHtmlElement = (value: unknown): ValidatedValue => {\n const errors = [];\n if (!(value instanceof Element) && !(value instanceof HTMLDocument)) {\n errors.push(ValidatorType.element);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onItemList = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n if (!Array.isArray(value)) {\n errors.push(ValidatorType.itemList);\n parsedValue = [];\n } else if (!value.length) {\n errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));\n } else if (value.length > 1) {\n const type = typeof value[0];\n for (let i = value.length - 1; i >= 0; i--) {\n if (typeof value[i] !== type) {\n errors.push(getError(ValidatorType.itemList, ['of items of the same type']));\n break;\n }\n }\n }\n return { value: parsedValue as unknown[], isSet: true, isValid: !errors.length, errors };\n};\n\ntype Func = (...args: any[]) => void;\n\nconst onFunction = (value: unknown): ValidatedValue => {\n const errors = [];\n if (typeof value !== 'function') {\n errors.push(ValidatorType.function);\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXArguments = (argsCount: number) => (value: unknown) => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length !== argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXAndMoreArguments = (argsCount: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXToYArguments = (from: number, to: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < from || (value as Func).length > to) {\n errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onOneOf = (tokens: string[], must: boolean) => (value: unknown, context?: IValidationContext): ValidatedValue => {\n const errors = [];\n const isSet = value !== void 0;\n let noOneIsPresent = !isSet;\n const err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;\n if (!Array.isArray(tokens) || !tokens.length) {\n errors.push(getError(err, ['undefined']));\n } else {\n for (let i = tokens.length - 1; i >= 0; i--) {\n const token = tokens[i];\n if (typeof token !== 'string') {\n errors.push(getError(err, [tokens.join('\", \"')]) + ' (non-string token)');\n break;\n }\n const isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);\n if (isSet && isAnotherPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]) + ` (${token} is present)`);\n break;\n }\n if (noOneIsPresent && isAnotherPresent) {\n noOneIsPresent = false;\n }\n }\n if (must && noOneIsPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]));\n }\n }\n return { value, isSet, isValid: !errors.length, errors };\n};\n\nconst onOr = (validators: IValidator[]) => (value: unknown): ValidatedValue => {\n const errors = [];\n if (validators.every(validator => !validator.method(value).isValid)) {\n errors.push(validators.map(v => v.type).join(' OR '));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nenum AbstractEnum { }\ntype TEnum = typeof AbstractEnum;\n\nconst onEnum = (list: TEnum) => (value: unknown): ValidatedValue => {\n const errors = [];\n const values = Object.keys(list).filter(k => isNaN(Number(k))).map(k => list[k as unknown as number]);\n if (!values.some(item => item === value)) {\n errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nexport const VALIDATORS = {\n NUMBER: {\n type: ValidatorType.number,\n method: onNumber\n },\n INTEGER: {\n type: ValidatorType.integer,\n method: onInteger\n },\n INTEGER_UNLIMITED: {\n type: ValidatorType.integerUnlimited,\n method: onIntegerUnlimited\n },\n MORE_OR_EQUAL: (limit: number, fallback?: boolean): IValidator => ({\n type: ValidatorType.moreOrEqual,\n method: onMoreOrEqual(limit, fallback)\n }),\n BOOLEAN: {\n type: ValidatorType.boolean,\n method: onBoolean\n },\n OBJECT: {\n type: ValidatorType.object,\n method: onObject\n },\n ITEM_LIST: {\n type: ValidatorType.itemList,\n method: onItemList\n },\n ELEMENT: {\n type: ValidatorType.element,\n method: onHtmlElement\n },\n FUNC: {\n type: ValidatorType.function,\n method: onFunction\n },\n FUNC_WITH_X_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxArguments,\n method: onFunctionWithXArguments(count)\n }),\n FUNC_WITH_X_AND_MORE_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxAndMoreArguments,\n method: onFunctionWithXAndMoreArguments(count)\n }),\n FUNC_WITH_X_TO_Y_ARGUMENTS: (from: number, to: number): IValidator => ({\n type: ValidatorType.funcOfXToYArguments,\n method: onFunctionWithXToYArguments(from, to)\n }),\n ONE_OF_CAN: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfCan,\n method: onOneOf(list, false)\n }),\n ONE_OF_MUST: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfMust,\n method: onOneOf(list, true)\n }),\n OR: (list: IValidator[]): IValidator => ({\n type: ValidatorType.or,\n method: onOr(list)\n }),\n ENUM: (list: TEnum): IValidator => ({\n type: ValidatorType.enum,\n method: onEnum(list)\n })\n};\n\nexport class ValidatedData implements IValidatedData {\n\n context: IValidationContext;\n isValidContext: boolean;\n isValid: boolean;\n errors: string[];\n params: IValidatedCommonProps<PropertyKey>;\n\n private contextErrors: string[];\n\n constructor(context: unknown) {\n this.params = {};\n this.contextErrors = [];\n this.errors = [];\n this.isValid = true;\n this.setContext(context);\n }\n\n private setContext(context: unknown): void {\n if (!context || Object.prototype.toString.call(context) !== '[object Object]') {\n this.setCommonError('context is not an object');\n this.isValidContext = false;\n } else {\n this.isValidContext = true;\n }\n this.context = context as IValidationContext;\n }\n\n private setValidity() {\n this.errors = Object.keys(this.params).reduce((acc: string[], key: string) => [\n ...acc, ...this.params[key].errors\n ], []);\n this.isValid = !this.errors.length;\n }\n\n setCommonError(error: string): void {\n this.contextErrors.push(error);\n this.errors.push(error);\n this.isValid = false;\n }\n\n setParam(token: string, value: ValidatedValue): void {\n if (!value.isValid) {\n value.errors = !value.isSet\n ? [`\"${token}\" must be set`]\n : value.errors.map((err: string) =>\n `\"${token}\" ${err}`\n );\n }\n this.params[token] = value;\n this.setValidity();\n }\n\n showErrors(): string {\n return this.errors.length\n ? 'validation failed: ' + this.errors.join(', ')\n : '';\n }\n}\n\nexport const runValidator = (\n current: ValidatedValue,\n validator: IValidator,\n context: IValidationContext\n): ValidatedValue => {\n const { value, errors } = current;\n const result = validator.method(value, context);\n const _errors = [...errors, ...result.errors];\n return {\n value: result.value,\n isSet: result.isSet,\n isValid: !_errors.length,\n errors: _errors\n };\n};\n\nconst getDefault = (value: unknown, prop: ICommonProp): ValidatedValue => {\n const empty = value === void 0;\n const auto = !prop.mandatory && prop.defaultValue !== void 0;\n return {\n value: !empty ? value : (auto ? prop.defaultValue : void 0),\n isSet: !empty || auto,\n isValid: !empty || !prop.mandatory,\n errors: []\n };\n};\n\nexport const validateOne = (\n context: IValidationContext, name: string, prop: ICommonProp\n): ValidatedValue => {\n const result = getDefault(context[name], prop);\n if (!result.isSet) {\n const oneOfMust = prop.validators.find(v => v.type === ValidatorType.oneOfMust);\n if (oneOfMust) {\n return runValidator(result, oneOfMust, context);\n }\n } else {\n for (const validator of Object.values(prop.validators)) {\n const current = runValidator(result, validator, context);\n if (!current.isValid && prop.defaultValue !== void 0) {\n return {\n value: prop.defaultValue,\n isSet: true,\n isValid: true,\n errors: []\n };\n }\n Object.assign(result, current);\n }\n }\n return result;\n};\n\nexport const validate = (\n context: unknown, params: ICommonProps<PropertyKey>\n): IValidatedData => {\n const data = new ValidatedData(context);\n Object.entries(params).forEach(([key, prop]) =>\n data.setParam(key, data.isValidContext\n ? validateOne(data.context, key, prop)\n : getDefault(void 0, prop)\n )\n );\n return data;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"","sourcesContent":["import {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n} from './datasource';\nimport {\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n} from './workflow';\nimport { Item } from './item';\nimport {\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n AdapterMethodResult,\n IAdapter,\n} from './adapter';\nimport { Settings, DevSettings } from './settings';\nimport { ScrollEventData,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"","sourcesContent":["import {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n} from './datasource';\nimport {\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n} from './workflow';\nimport { Item } from './item';\nimport {\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n AdapterMethodResult,\n IAdapter,\n} from './adapter';\nimport { Settings, DevSettings } from './settings';\nimport { IRoutines } from './routines';\nimport { ScrollEventData, State } from './state';\nimport {\n ProcessName,\n ProcessClass,\n ProcessPayload,\n ProcessSubject,\n AdapterProcessMap,\n IBaseProcess,\n IBaseAdapterProcess,\n} from './process';\nimport {\n ValidatedValue,\n IValidator,\n ICommonProp,\n ICommonProps,\n IValidatedCommonProps,\n IValidatedData,\n} from './validation';\n\nexport {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n Item,\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n AdapterMethodResult,\n IAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n Settings,\n DevSettings,\n IRoutines,\n ScrollEventData,\n State,\n ProcessName,\n ProcessClass,\n ProcessPayload,\n ProcessSubject,\n AdapterProcessMap,\n IBaseProcess,\n IBaseAdapterProcess,\n ValidatedValue,\n IValidator,\n ICommonProp,\n ICommonProps,\n IValidatedCommonProps,\n IValidatedData,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routines.js","sourceRoot":"","sources":["../../../src/interfaces/routines.ts"],"names":[],"mappings":"","sourcesContent":["import { Settings } from '../classes/settings';\nimport { Direction } from '../inputs/index';\n\ninterface IRoutinesSettings {\n /** The scroller's viewport element defined by the app settings.\n * The value is equal to settings.viewport and thus can be null.\n */\n viewport: HTMLElement | null;\n\n /** Determines wether the scroller is horizontal-oriented or not.\n * The value is equal to settings.horizontal.\n */\n horizontal: boolean;\n\n /** Determines wether the entire window is the scroller's viewport or not. \n * The value is equal to settings.window.\n */\n window: boolean;\n}\n\nexport interface IRoutines {\n\n /** Internal prop that is available after instantiation. \n * Reduced version of the App settings object.\n */\n readonly settings: IRoutinesSettings;\n\n /** Internal prop that is available after instantiation.\n * The scroller's element that comes from the end App.\n */\n readonly element: HTMLElement;\n\n /** Internal prop that is available after instantiation.\n * The scroller's viewport element.\n * The \"getViewportElement\" method is responsible for the value.\n */\n readonly viewport: HTMLElement;\n\n /** Checks HTML element. Should throw error if it's not valid.\n * @param {HTMLElement} element HTML element to check.\n */\n checkElement: (element: HTMLElement) => void;\n\n /** Gets the viewport element based on the internal props:\n * \"settings.viewport\", \"settings.window\" and \"element\".\n * This method is being called during Routines instantiation\n * to determine the \"viewport\" prop:\n * \n * this.viewport = this.getViewportElement();\n * @returns {HTMLElement} HTML element.\n */\n getViewportElement: () => HTMLElement;\n\n /** This method is being called in the end of Routines instantiation.\n * @param {Settings} settings Unreduced Scroller's settings object.\n */\n onInit: (settings: Settings) => void;\n\n /** Finds element by CSS selector.\n * @param {HTMLElement} element Top of the elements hierarchy to search.\n * @param {string} selector CSS selector.\n * @returns {HTMLElement | null} The first HTML element that matches the specified selector, or null.\n */\n findElementBySelector: (element: HTMLElement, selector: string) => HTMLElement | null;\n\n /** Finds padding element.\n * @param {'backward' | 'forward'} direction Search direction: backward or forward.\n * @returns {HTMLElement | null} HTML padding element, or null.\n */\n findPaddingElement: (direction: Direction) => HTMLElement | null;\n\n /** Finds single item element by its id.\n * @param {string} id Id of the element to search.\n * @returns {HTMLElement | null} HTML item element, or null.\n */\n findItemElement: (id: string) => HTMLElement | null;\n\n /** Gets scroll position of the viewport. Internal settings should be taken into account.\n * @returns {number} Scroll position value.\n */\n getScrollPosition: () => number;\n\n /** Sets scroll position of the viewport. Internal settings should be taken into account.\n * @param {number} value Scroll position value.\n */\n setScrollPosition: (value: number) => void;\n\n /** Gets the size of the element and its position relative to the viewport.\n * @param {HTMLElement} element\n * @returns {DOMRect} DOMRect object.\n */\n getElementParams: (element: HTMLElement) => DOMRect;\n\n /** Gets params of the host element in case the \"window\" setting is set to true.\n * @returns {DOMRect} DOMRect object.\n */\n getWindowParams: () => DOMRect;\n\n /** Gets size of the element. Internal props should be taken into account.\n * For example, if horizontal = false, then the element's height is needed.\n * If horizontal = true, then the element's width is needed.\n * @param {HTMLElement} element\n * @returns {DOMRect} DOMRect object.\n */\n getSize: (element: HTMLElement) => number;\n\n /** Gets size of the scroller element.\n * @returns {DOMRect} DOMRect object.\n */\n getScrollerSize: () => number;\n\n /** Gets size of the viewport.\n * @returns {DOMRect} DOMRect object.\n */\n getViewportSize: () => number;\n\n /** Gets size of the element. Internal settings (\"horizontal\") should be taken into account.\n * This method should work in the same way as \"setSizeStyle\" does.\n * @param {HTMLElement} element\n * @returns {number} Numeric value.\n */\n getSizeStyle: (element: HTMLElement) => number;\n\n /** Sets size of the element. Internal settings (\"horizontal\") should be taken into account.\n * This method should work in the same way as \"getSizeStyle\" does.\n * @param {HTMLElement} element\n * @param {number} value Numeric value to be new element's size.\n */\n setSizeStyle: (element: HTMLElement, value: number) => void;\n\n /** Gets the edge coordinate of the element. Internal settings (\"horizontal\") should be taken into account.\n * For example, if horizontal = false and direction = \"backward\" then the element's top coordinate is needed.\n * If horizontal = true and direction = \"forward\" then the element's right coordinate is needed.\n * @param {HTMLElement} element\n * @param {'backward' | 'forward'} direction\n * @returns {number} Numeric value.\n */\n getEdge: (element: HTMLElement, direction: Direction) => number;\n\n /** Gets the edge coordinate of the viewport. Internal settings should be taken into account.\n * @param {'backward' | 'forward'} direction\n * @returns {number} Numeric value.\n */\n getViewportEdge: (direction: Direction) => number;\n\n /** Makes the element visible in the same way as the external Workflow.run method makes it invisible.\n * @param {HTMLElement} element\n */\n makeElementVisible: (element: HTMLElement) => void;\n\n /** Hides the element. This method is being called before remove and has no connection with makeElementVisible.\n * @param {HTMLElement} element\n */\n hideElement: (element: HTMLElement) => void;\n\n /** Gets scroller's offset.\n * @returns {number} Numeric value.\n */\n getOffset: () => number;\n\n /** Scrolls into the element's view.\n * @param {HTMLElement} element\n * @param {boolean | ScrollIntoViewOptions} argument\n */\n scrollTo: (element: HTMLElement, argument?: boolean | ScrollIntoViewOptions) => void;\n\n /** Wraps rendering. Runs render process and calls the argument function when it is done.\n * @param {function} cb\n * @returns {function} Callback to dismiss render and prevent the argument function to be invoked.\n */\n render: (cb: () => void) => () => void;\n\n /** Wraps animation. Runs animations process and calls the argument function when it is done.\n * @param {function} cb\n * @returns {function} Callback to dismiss animation and prevent the argument function to be invoked.\n */\n animate: (cb: () => void) => () => void;\n\n /** Provides scroll event listening. Invokes the function argument each time the scroll event fires.\n * @param {EventListener} handler\n * @returns {function} Callback to dismiss scroll event listener.\n */\n onScroll: (handler: EventListener) => () => void;\n\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/interfaces/state.ts"],"names":[],"mappings":"","sourcesContent":["import { Direction } from '../inputs/index';\r\nimport { WorkflowCycleModel } from '../classes/state/cycle';\r\nimport { FetchModel } from '../classes/state/fetch';\r\nimport { ClipModel } from '../classes/state/clip';\r\nimport { RenderModel } from '../classes/state/render';\r\nimport {
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/interfaces/state.ts"],"names":[],"mappings":"","sourcesContent":["import { Direction } from '../inputs/index';\r\nimport { WorkflowCycleModel } from '../classes/state/cycle';\r\nimport { FetchModel } from '../classes/state/fetch';\r\nimport { ClipModel } from '../classes/state/clip';\r\nimport { RenderModel } from '../classes/state/render';\r\nimport { ScrollModel } from '../classes/state/scroll';\r\nimport { IPackages } from './adapter';\r\n\r\nexport interface ScrollEventData {\r\n time: number;\r\n position: number;\r\n direction: Direction | null;\r\n}\r\n\r\nexport interface State {\r\n packageInfo: IPackages;\r\n initTime: number;\r\n cycle: WorkflowCycleModel;\r\n fetch: FetchModel;\r\n clip: ClipModel;\r\n render: RenderModel;\r\n scroll: ScrollModel;\r\n time: number;\r\n}\r\n"]}
|
|
@@ -26,7 +26,7 @@ var Append = /** @class */ (function (_super) {
|
|
|
26
26
|
var beforeIndex, afterIndex, items = params.items;
|
|
27
27
|
if (prepend) {
|
|
28
28
|
beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);
|
|
29
|
-
items = __spreadArray([], __read(items)).reverse();
|
|
29
|
+
items = __spreadArray([], __read(items), false).reverse();
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
32
|
afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);
|