vscroll 1.6.0-beta.1 → 1.6.0-beta.2
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/README.md +31 -19
- package/dist/bundles/vscroll.esm5.js +103 -47
- 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 +74 -25
- 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 +104 -48
- 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/domRoutines.js +6 -2
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/inputs/index.js +2 -1
- package/dist/esm2015/inputs/index.js.map +1 -1
- package/dist/esm2015/inputs/validation.js +2 -2
- package/dist/esm2015/inputs/validation.js.map +1 -1
- package/dist/esm2015/inputs/workflow.js +31 -0
- package/dist/esm2015/inputs/workflow.js.map +1 -0
- package/dist/esm2015/interfaces/routines.js.map +1 -1
- package/dist/esm2015/processes/render.js +2 -2
- package/dist/esm2015/processes/render.js.map +1 -1
- package/dist/esm2015/scroller.js +10 -0
- 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 +7 -1
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +6 -2
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/inputs/index.js +2 -1
- package/dist/esm5/inputs/index.js.map +1 -1
- package/dist/esm5/inputs/validation.js +2 -2
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/inputs/workflow.js +32 -0
- package/dist/esm5/inputs/workflow.js.map +1 -0
- package/dist/esm5/interfaces/routines.js.map +1 -1
- package/dist/esm5/processes/render.js +2 -2
- package/dist/esm5/processes/render.js.map +1 -1
- package/dist/esm5/scroller.js +18 -0
- 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 +7 -2
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/domRoutines.d.ts +5 -2
- package/dist/typings/inputs/index.d.ts +2 -1
- package/dist/typings/inputs/workflow.d.ts +9 -0
- package/dist/typings/interfaces/routines.d.ts +13 -3
- package/dist/typings/workflow.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,7 +69,7 @@ interface WorkflowParams<ItemData> {
|
|
|
69
69
|
element: HTMLElement;
|
|
70
70
|
datasource: IDatasource<ItemData>;
|
|
71
71
|
run: OnDataChanged<ItemData>;
|
|
72
|
-
Routines?:
|
|
72
|
+
Routines?: RoutinesClassType;
|
|
73
73
|
}
|
|
74
74
|
```
|
|
75
75
|
|
|
@@ -153,7 +153,7 @@ For more solid understanding the concept of the Datasource with examples, please
|
|
|
153
153
|
A callback that is called every time the Workflow decides that the UI needs to be changed. Its argument is a list of items to be present in the UI. This is a consumer responsibility to detect changes and display them in the UI.
|
|
154
154
|
|
|
155
155
|
```js
|
|
156
|
-
run
|
|
156
|
+
const run = newItems => {
|
|
157
157
|
// assume oldItems contains a list of items that are currently present in the UI
|
|
158
158
|
if (!newItems.length && !oldItems.length) {
|
|
159
159
|
return;
|
|
@@ -186,37 +186,49 @@ There are some requirements on how the items should be processed by `run` call:
|
|
|
186
186
|
|
|
187
187
|
### 5. Routines
|
|
188
188
|
|
|
189
|
-
A special class allowing to override the default behavior related to the DOM. All DOM-specific operations are implemented as the [DOM Routines class](https://github.com/dhilt/vscroll/blob/v1.5.0/src/classes/domRoutines.ts) methods inside core. When the `Routines` class setting is passed among the Workflow arguments,
|
|
189
|
+
A special class allowing to override the default behavior related to the DOM. All DOM-specific operations are implemented as the [DOM Routines class](https://github.com/dhilt/vscroll/blob/v1.5.0/src/classes/domRoutines.ts) methods inside core. When the `Routines` class setting is passed among the Workflow arguments, it replaces the core Routines. The custom Routines class must extend the core class, which can be taken from the VScroll imports:
|
|
190
|
+
|
|
191
|
+
```js
|
|
192
|
+
import { Routines, Workflow } from 'vscroll';
|
|
193
|
+
|
|
194
|
+
class CustomRoutines extends Routines { ... }
|
|
195
|
+
|
|
196
|
+
new Workflow({
|
|
197
|
+
// consumer, element, datasource, run,
|
|
198
|
+
Routines: CustomRoutines
|
|
199
|
+
})
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
The Routines methods description can be taken from the [IRoutines interface](https://github.com/dhilt/vscroll/blob/v1.5.0/src/interfaces/routines.ts) sources. For example, there is a method that calculates the scroller's offset:
|
|
190
203
|
|
|
191
204
|
```typescript
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
205
|
+
getOffset(): number {
|
|
206
|
+
const get = (element: HTMLElement) =>
|
|
207
|
+
(this.settings.horizontal ? element.offsetLeft : element.offsetTop) || 0;
|
|
208
|
+
return get(this.element) - (!this.settings.window ? get(this.viewport) : 0);
|
|
196
209
|
}
|
|
197
210
|
```
|
|
198
211
|
|
|
199
|
-
|
|
212
|
+
If we have a table layout case where we need to specify the offset of the table header, the base method can be overridden as follows:
|
|
200
213
|
|
|
201
214
|
```js
|
|
202
|
-
new Workflow({
|
|
203
|
-
consumer, element, datasource, run,
|
|
204
|
-
Routines: class {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
throw new Error('Fatal: expecting HTML element');
|
|
208
|
-
}
|
|
215
|
+
new Workflow({
|
|
216
|
+
// consumer, element, datasource, run,
|
|
217
|
+
Routines: class extends Routines {
|
|
218
|
+
getOffset(element) {
|
|
219
|
+
return document.querySelector('#viewport thead')?.offsetHeight || 0;
|
|
209
220
|
}
|
|
210
221
|
}
|
|
211
222
|
});
|
|
212
223
|
```
|
|
213
224
|
|
|
214
|
-
|
|
225
|
+
It's worth noting that thanks to the extending, we can use parent methods and have access to the correct context after the engine instantiates the Routines:
|
|
215
226
|
|
|
216
227
|
```js
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
228
|
+
class CustomRoutines extends Routines {
|
|
229
|
+
onInit(...args) {
|
|
230
|
+
console.log('Routines settings:', this.settings);
|
|
231
|
+
super.onInit(...args);
|
|
220
232
|
}
|
|
221
233
|
}
|
|
222
234
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vscroll (https://github.com/dhilt/vscroll) FESM5
|
|
3
|
-
* Version: 1.6.0-beta.
|
|
3
|
+
* Version: 1.6.0-beta.2 (2023-12-02T15:09:23.845Z)
|
|
4
4
|
* Author: Denis Hilt
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -345,7 +345,7 @@ var reactiveConfigStorage = new Map();
|
|
|
345
345
|
|
|
346
346
|
var core = {
|
|
347
347
|
name: 'vscroll',
|
|
348
|
-
version: '1.6.0-beta.
|
|
348
|
+
version: '1.6.0-beta.2'
|
|
349
349
|
};
|
|
350
350
|
|
|
351
351
|
var getBox = function (id) {
|
|
@@ -554,14 +554,14 @@ var onBoolean = function (value) {
|
|
|
554
554
|
};
|
|
555
555
|
var onObject = function (value) {
|
|
556
556
|
var errors = [];
|
|
557
|
-
if (Object.prototype.toString.call(value) !== '[object Object]') {
|
|
557
|
+
if (!value || Object.prototype.toString.call(value) !== '[object Object]') {
|
|
558
558
|
errors.push(ValidatorType.object);
|
|
559
559
|
}
|
|
560
560
|
return { value: value, isSet: true, isValid: !errors.length, errors: errors };
|
|
561
561
|
};
|
|
562
562
|
var onHtmlElement = function (value) {
|
|
563
563
|
var errors = [];
|
|
564
|
-
if (!(value instanceof Element) && !(value instanceof
|
|
564
|
+
if (!(value instanceof Element) && !(value instanceof Document)) {
|
|
565
565
|
errors.push(ValidatorType.element);
|
|
566
566
|
}
|
|
567
567
|
return { value: value, isSet: true, isValid: !errors.length, errors: errors };
|
|
@@ -854,29 +854,29 @@ var validate = function (context, params) {
|
|
|
854
854
|
return data;
|
|
855
855
|
};
|
|
856
856
|
|
|
857
|
-
var _a$
|
|
858
|
-
var OBJECT$
|
|
857
|
+
var _a$4;
|
|
858
|
+
var OBJECT$2 = VALIDATORS.OBJECT, FUNC_WITH_X_AND_MORE_ARGUMENTS$1 = VALIDATORS.FUNC_WITH_X_AND_MORE_ARGUMENTS;
|
|
859
859
|
var DatasourceProps;
|
|
860
860
|
(function (DatasourceProps) {
|
|
861
861
|
DatasourceProps["get"] = "get";
|
|
862
862
|
DatasourceProps["settings"] = "settings";
|
|
863
863
|
DatasourceProps["devSettings"] = "devSettings";
|
|
864
864
|
})(DatasourceProps || (DatasourceProps = {}));
|
|
865
|
-
var DATASOURCE = (_a$
|
|
866
|
-
_a$
|
|
865
|
+
var DATASOURCE = (_a$4 = {},
|
|
866
|
+
_a$4[DatasourceProps.get] = {
|
|
867
867
|
validators: [FUNC_WITH_X_AND_MORE_ARGUMENTS$1(2)],
|
|
868
868
|
mandatory: true
|
|
869
869
|
},
|
|
870
|
-
_a$
|
|
871
|
-
validators: [OBJECT$
|
|
870
|
+
_a$4[DatasourceProps.settings] = {
|
|
871
|
+
validators: [OBJECT$2]
|
|
872
872
|
},
|
|
873
|
-
_a$
|
|
874
|
-
validators: [OBJECT$
|
|
873
|
+
_a$4[DatasourceProps.devSettings] = {
|
|
874
|
+
validators: [OBJECT$2]
|
|
875
875
|
},
|
|
876
|
-
_a$
|
|
876
|
+
_a$4);
|
|
877
877
|
|
|
878
|
-
var _a$
|
|
879
|
-
var NUMBER = VALIDATORS.NUMBER, INTEGER$1 = VALIDATORS.INTEGER, INTEGER_UNLIMITED$1 = VALIDATORS.INTEGER_UNLIMITED, MORE_OR_EQUAL = VALIDATORS.MORE_OR_EQUAL, BOOLEAN$1 = VALIDATORS.BOOLEAN, ELEMENT = VALIDATORS.ELEMENT, FUNC = VALIDATORS.FUNC, OR$1 = VALIDATORS.OR, ENUM = VALIDATORS.ENUM;
|
|
878
|
+
var _a$3, _b$2, _c$1;
|
|
879
|
+
var NUMBER = VALIDATORS.NUMBER, INTEGER$1 = VALIDATORS.INTEGER, INTEGER_UNLIMITED$1 = VALIDATORS.INTEGER_UNLIMITED, MORE_OR_EQUAL = VALIDATORS.MORE_OR_EQUAL, BOOLEAN$1 = VALIDATORS.BOOLEAN, ELEMENT$1 = VALIDATORS.ELEMENT, FUNC$1 = VALIDATORS.FUNC, OR$1 = VALIDATORS.OR, ENUM = VALIDATORS.ENUM;
|
|
880
880
|
var Settings$1;
|
|
881
881
|
(function (Settings) {
|
|
882
882
|
Settings["adapter"] = "adapter";
|
|
@@ -908,14 +908,14 @@ var DevSettings;
|
|
|
908
908
|
DevSettings["dismissOverflowAnchor"] = "dismissOverflowAnchor";
|
|
909
909
|
DevSettings["directionPriority"] = "directionPriority";
|
|
910
910
|
})(DevSettings || (DevSettings = {}));
|
|
911
|
-
var MIN = (_a$
|
|
912
|
-
_a$
|
|
913
|
-
_a$
|
|
914
|
-
_a$
|
|
915
|
-
_a$
|
|
916
|
-
_a$
|
|
917
|
-
_a$
|
|
918
|
-
_a$
|
|
911
|
+
var MIN = (_a$3 = {},
|
|
912
|
+
_a$3[Settings$1.itemSize] = 1,
|
|
913
|
+
_a$3[Settings$1.bufferSize] = 1,
|
|
914
|
+
_a$3[Settings$1.padding] = 0.01,
|
|
915
|
+
_a$3[DevSettings.throttle] = 0,
|
|
916
|
+
_a$3[DevSettings.initDelay] = 0,
|
|
917
|
+
_a$3[DevSettings.initWindowDelay] = 0,
|
|
918
|
+
_a$3);
|
|
919
919
|
var SETTINGS = (_b$2 = {},
|
|
920
920
|
_b$2[Settings$1.adapter] = {
|
|
921
921
|
validators: [BOOLEAN$1],
|
|
@@ -958,7 +958,7 @@ var SETTINGS = (_b$2 = {},
|
|
|
958
958
|
defaultValue: false
|
|
959
959
|
},
|
|
960
960
|
_b$2[Settings$1.viewportElement] = {
|
|
961
|
-
validators: [OR$1([ELEMENT, FUNC])],
|
|
961
|
+
validators: [OR$1([ELEMENT$1, FUNC$1])],
|
|
962
962
|
defaultValue: null
|
|
963
963
|
},
|
|
964
964
|
_b$2[Settings$1.inverse] = {
|
|
@@ -966,7 +966,7 @@ var SETTINGS = (_b$2 = {},
|
|
|
966
966
|
defaultValue: false
|
|
967
967
|
},
|
|
968
968
|
_b$2[Settings$1.onBeforeClip] = {
|
|
969
|
-
validators: [FUNC],
|
|
969
|
+
validators: [FUNC$1],
|
|
970
970
|
defaultValue: null
|
|
971
971
|
},
|
|
972
972
|
_b$2[Settings$1.sizeStrategy] = {
|
|
@@ -1057,23 +1057,23 @@ var ProcessStatus;
|
|
|
1057
1057
|
ProcessStatus["error"] = "error";
|
|
1058
1058
|
})(ProcessStatus || (ProcessStatus = {}));
|
|
1059
1059
|
|
|
1060
|
-
var _a$
|
|
1061
|
-
var INTEGER = VALIDATORS.INTEGER, INTEGER_UNLIMITED = VALIDATORS.INTEGER_UNLIMITED, BOOLEAN = VALIDATORS.BOOLEAN, OBJECT = VALIDATORS.OBJECT, ITEM_LIST = VALIDATORS.ITEM_LIST, FUNC_WITH_X_ARGUMENTS = VALIDATORS.FUNC_WITH_X_ARGUMENTS, FUNC_WITH_X_AND_MORE_ARGUMENTS = VALIDATORS.FUNC_WITH_X_AND_MORE_ARGUMENTS, FUNC_WITH_X_TO_Y_ARGUMENTS = VALIDATORS.FUNC_WITH_X_TO_Y_ARGUMENTS, ONE_OF_MUST = VALIDATORS.ONE_OF_MUST, ONE_OF_CAN = VALIDATORS.ONE_OF_CAN, OR = VALIDATORS.OR;
|
|
1060
|
+
var _a$2, _b$1, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
1061
|
+
var INTEGER = VALIDATORS.INTEGER, INTEGER_UNLIMITED = VALIDATORS.INTEGER_UNLIMITED, BOOLEAN = VALIDATORS.BOOLEAN, OBJECT$1 = VALIDATORS.OBJECT, ITEM_LIST = VALIDATORS.ITEM_LIST, FUNC_WITH_X_ARGUMENTS$1 = VALIDATORS.FUNC_WITH_X_ARGUMENTS, FUNC_WITH_X_AND_MORE_ARGUMENTS = VALIDATORS.FUNC_WITH_X_AND_MORE_ARGUMENTS, FUNC_WITH_X_TO_Y_ARGUMENTS = VALIDATORS.FUNC_WITH_X_TO_Y_ARGUMENTS, ONE_OF_MUST = VALIDATORS.ONE_OF_MUST, ONE_OF_CAN = VALIDATORS.ONE_OF_CAN, OR = VALIDATORS.OR;
|
|
1062
1062
|
var AdapterNoParams;
|
|
1063
1063
|
(function (AdapterNoParams) {
|
|
1064
1064
|
})(AdapterNoParams || (AdapterNoParams = {}));
|
|
1065
1065
|
var NO_METHOD_PARAMS = {};
|
|
1066
|
-
var RESET_METHOD_PARAMS = (_a$
|
|
1067
|
-
_a$
|
|
1066
|
+
var RESET_METHOD_PARAMS = (_a$2 = {},
|
|
1067
|
+
_a$2[DatasourceProps.get] = {
|
|
1068
1068
|
validators: [FUNC_WITH_X_AND_MORE_ARGUMENTS(2)]
|
|
1069
1069
|
},
|
|
1070
|
-
_a$
|
|
1071
|
-
validators: [OBJECT]
|
|
1070
|
+
_a$2[DatasourceProps.settings] = {
|
|
1071
|
+
validators: [OBJECT$1]
|
|
1072
1072
|
},
|
|
1073
|
-
_a$
|
|
1074
|
-
validators: [OBJECT]
|
|
1073
|
+
_a$2[DatasourceProps.devSettings] = {
|
|
1074
|
+
validators: [OBJECT$1]
|
|
1075
1075
|
},
|
|
1076
|
-
_a$
|
|
1076
|
+
_a$2);
|
|
1077
1077
|
var AdapterReloadParams;
|
|
1078
1078
|
(function (AdapterReloadParams) {
|
|
1079
1079
|
AdapterReloadParams["reloadIndex"] = "reloadIndex";
|
|
@@ -1131,7 +1131,7 @@ var AdapterRemoveParams;
|
|
|
1131
1131
|
})(AdapterRemoveParams || (AdapterRemoveParams = {}));
|
|
1132
1132
|
var REMOVE_METHOD_PARAMS = (_e = {},
|
|
1133
1133
|
_e[AdapterRemoveParams.predicate] = {
|
|
1134
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1), ONE_OF_MUST([AdapterRemoveParams.indexes])]
|
|
1134
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1), ONE_OF_MUST([AdapterRemoveParams.indexes])]
|
|
1135
1135
|
},
|
|
1136
1136
|
_e[AdapterRemoveParams.indexes] = {
|
|
1137
1137
|
validators: [ITEM_LIST, ONE_OF_MUST([AdapterRemoveParams.predicate])]
|
|
@@ -1171,12 +1171,12 @@ var INSERT_METHOD_PARAMS = (_g = {},
|
|
|
1171
1171
|
mandatory: true
|
|
1172
1172
|
},
|
|
1173
1173
|
_g[AdapterInsertParams.before] = {
|
|
1174
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1), ONE_OF_MUST([
|
|
1174
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1), ONE_OF_MUST([
|
|
1175
1175
|
AdapterInsertParams.after, AdapterInsertParams.beforeIndex, AdapterInsertParams.afterIndex
|
|
1176
1176
|
])]
|
|
1177
1177
|
},
|
|
1178
1178
|
_g[AdapterInsertParams.after] = {
|
|
1179
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1), ONE_OF_MUST([
|
|
1179
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1), ONE_OF_MUST([
|
|
1180
1180
|
AdapterInsertParams.before, AdapterInsertParams.beforeIndex, AdapterInsertParams.afterIndex
|
|
1181
1181
|
])]
|
|
1182
1182
|
},
|
|
@@ -1207,7 +1207,7 @@ var REPLACE_METHOD_PARAMS = (_h = {},
|
|
|
1207
1207
|
mandatory: true
|
|
1208
1208
|
},
|
|
1209
1209
|
_h[AdapterReplaceParams.predicate] = {
|
|
1210
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1)],
|
|
1210
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1)],
|
|
1211
1211
|
mandatory: true
|
|
1212
1212
|
},
|
|
1213
1213
|
_h[AdapterReplaceParams.fixRight] = {
|
|
@@ -1222,7 +1222,7 @@ var AdapterUpdateParams;
|
|
|
1222
1222
|
})(AdapterUpdateParams || (AdapterUpdateParams = {}));
|
|
1223
1223
|
var UPDATE_METHOD_PARAMS = (_j = {},
|
|
1224
1224
|
_j[AdapterUpdateParams.predicate] = {
|
|
1225
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1)],
|
|
1225
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1)],
|
|
1226
1226
|
mandatory: true
|
|
1227
1227
|
},
|
|
1228
1228
|
_j[AdapterUpdateParams.fixRight] = {
|
|
@@ -1253,10 +1253,10 @@ var FIX_METHOD_PARAMS = (_k = {},
|
|
|
1253
1253
|
validators: [FUNC_WITH_X_TO_Y_ARGUMENTS(1, 2)]
|
|
1254
1254
|
},
|
|
1255
1255
|
_k[AdapterFixParams.scrollToItem] = {
|
|
1256
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1)]
|
|
1256
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1)]
|
|
1257
1257
|
},
|
|
1258
1258
|
_k[AdapterFixParams.scrollToItemOpt] = {
|
|
1259
|
-
validators: [OR([BOOLEAN, OBJECT])]
|
|
1259
|
+
validators: [OR([BOOLEAN, OBJECT$1])]
|
|
1260
1260
|
},
|
|
1261
1261
|
_k);
|
|
1262
1262
|
var AdapterMethods = (_l = {},
|
|
@@ -1286,6 +1286,37 @@ var ADAPTER_METHODS = (_m = {},
|
|
|
1286
1286
|
_m[AdapterProcess.fix] = FIX_METHOD_PARAMS,
|
|
1287
1287
|
_m);
|
|
1288
1288
|
|
|
1289
|
+
var _a$1;
|
|
1290
|
+
var ELEMENT = VALIDATORS.ELEMENT, OBJECT = VALIDATORS.OBJECT, FUNC = VALIDATORS.FUNC, FUNC_WITH_X_ARGUMENTS = VALIDATORS.FUNC_WITH_X_ARGUMENTS;
|
|
1291
|
+
var WorkflowProps;
|
|
1292
|
+
(function (WorkflowProps) {
|
|
1293
|
+
WorkflowProps["consumer"] = "consumer";
|
|
1294
|
+
WorkflowProps["element"] = "element";
|
|
1295
|
+
WorkflowProps["datasource"] = "datasource";
|
|
1296
|
+
WorkflowProps["run"] = "run";
|
|
1297
|
+
WorkflowProps["Routines"] = "Routines";
|
|
1298
|
+
})(WorkflowProps || (WorkflowProps = {}));
|
|
1299
|
+
var WORKFLOW = (_a$1 = {},
|
|
1300
|
+
_a$1[WorkflowProps.consumer] = {
|
|
1301
|
+
validators: [OBJECT]
|
|
1302
|
+
},
|
|
1303
|
+
_a$1[WorkflowProps.element] = {
|
|
1304
|
+
validators: [ELEMENT],
|
|
1305
|
+
mandatory: true
|
|
1306
|
+
},
|
|
1307
|
+
_a$1[WorkflowProps.datasource] = {
|
|
1308
|
+
validators: [OBJECT],
|
|
1309
|
+
mandatory: true
|
|
1310
|
+
},
|
|
1311
|
+
_a$1[WorkflowProps.run] = {
|
|
1312
|
+
validators: [FUNC_WITH_X_ARGUMENTS(1)],
|
|
1313
|
+
mandatory: true
|
|
1314
|
+
},
|
|
1315
|
+
_a$1[WorkflowProps.Routines] = {
|
|
1316
|
+
validators: [FUNC]
|
|
1317
|
+
},
|
|
1318
|
+
_a$1);
|
|
1319
|
+
|
|
1289
1320
|
var Settings = /** @class */ (function () {
|
|
1290
1321
|
function Settings(settings, devSettings, instanceIndex) {
|
|
1291
1322
|
this.parseInput(settings, SETTINGS);
|
|
@@ -2536,7 +2567,7 @@ var Render = /** @class */ (function (_super) {
|
|
|
2536
2567
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2537
2568
|
}
|
|
2538
2569
|
Render.run = function (scroller) {
|
|
2539
|
-
var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, viewport = scroller.viewport, routines = scroller.routines;
|
|
2570
|
+
var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, fetch = _a.fetch, viewport = scroller.viewport, routines = scroller.routines;
|
|
2540
2571
|
scroller.logger.stat('before new items render');
|
|
2541
2572
|
if (scroll.positionBeforeAsync === null) {
|
|
2542
2573
|
scroll.positionBeforeAsync = viewport.scrollPosition;
|
|
@@ -2557,7 +2588,7 @@ var Render = /** @class */ (function (_super) {
|
|
|
2557
2588
|
payload: { error: 'Can\'t associate item with element' }
|
|
2558
2589
|
});
|
|
2559
2590
|
}
|
|
2560
|
-
});
|
|
2591
|
+
}, { items: fetch.items.map(function (i) { return i.get(); }) });
|
|
2561
2592
|
};
|
|
2562
2593
|
Render.doRender = function (scroller) {
|
|
2563
2594
|
var _a = scroller.state, fetch = _a.fetch, render = _a.render, viewport = scroller.viewport, buffer = scroller.buffer, logger = scroller.logger;
|
|
@@ -3187,7 +3218,7 @@ var Routines = /** @class */ (function () {
|
|
|
3187
3218
|
return parent;
|
|
3188
3219
|
};
|
|
3189
3220
|
Routines.prototype.onInit = function (settings) {
|
|
3190
|
-
console.log('routines on-init');
|
|
3221
|
+
console.log('routines on-init (original)');
|
|
3191
3222
|
if (settings.windowViewport) {
|
|
3192
3223
|
if ('scrollRestoration' in history) {
|
|
3193
3224
|
history.scrollRestoration = 'manual';
|
|
@@ -3207,6 +3238,9 @@ var Routines = /** @class */ (function () {
|
|
|
3207
3238
|
Routines.prototype.findItemElement = function (id) {
|
|
3208
3239
|
return this.findElementBySelector(this.element, "[data-sid=\"".concat(id, "\"]"));
|
|
3209
3240
|
};
|
|
3241
|
+
Routines.prototype.findItemChildBySelector = function (id, selector) {
|
|
3242
|
+
return this.findElementBySelector(this.element, "[data-sid=\"".concat(id, "\"] ").concat(selector));
|
|
3243
|
+
};
|
|
3210
3244
|
Routines.prototype.getScrollPosition = function () {
|
|
3211
3245
|
if (this.settings.window) {
|
|
3212
3246
|
return this.settings.horizontal ? window.pageXOffset : window.pageYOffset;
|
|
@@ -3302,7 +3336,8 @@ var Routines = /** @class */ (function () {
|
|
|
3302
3336
|
this.checkElement(element);
|
|
3303
3337
|
element.scrollIntoView(argument);
|
|
3304
3338
|
};
|
|
3305
|
-
|
|
3339
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3340
|
+
Routines.prototype.render = function (cb, params) {
|
|
3306
3341
|
var timeoutId = setTimeout(function () { return cb(); });
|
|
3307
3342
|
return function () { return clearTimeout(timeoutId); };
|
|
3308
3343
|
};
|
|
@@ -5195,6 +5230,23 @@ var Scroller = /** @class */ (function () {
|
|
|
5195
5230
|
var packageInfo = scroller ? scroller.state.packageInfo : { consumer: consumer, core: core };
|
|
5196
5231
|
element = scroller ? scroller.routines.element : element;
|
|
5197
5232
|
workflow = scroller ? scroller.workflow : workflow;
|
|
5233
|
+
// In general, custom Routines must extend the original Routines. If not, we provide implicit extending.
|
|
5234
|
+
// This is undocumented feature. It should be removed in vscroll v2.
|
|
5235
|
+
if (CustomRoutines && !(CustomRoutines.prototype instanceof Routines)) {
|
|
5236
|
+
var __Routines_1 = /** @class */ (function (_super) {
|
|
5237
|
+
__extends(__Routines, _super);
|
|
5238
|
+
function __Routines() {
|
|
5239
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
5240
|
+
}
|
|
5241
|
+
return __Routines;
|
|
5242
|
+
}(Routines));
|
|
5243
|
+
Object.getOwnPropertyNames(CustomRoutines.prototype)
|
|
5244
|
+
.filter(function (method) { return method !== 'constructor'; })
|
|
5245
|
+
.forEach(function (method) {
|
|
5246
|
+
return __Routines_1.prototype[method] = CustomRoutines === null || CustomRoutines === void 0 ? void 0 : CustomRoutines.prototype[method];
|
|
5247
|
+
});
|
|
5248
|
+
CustomRoutines = __Routines_1;
|
|
5249
|
+
}
|
|
5198
5250
|
this.workflow = workflow;
|
|
5199
5251
|
this.settings = new Settings(datasource.settings, datasource.devSettings, ++instanceCount);
|
|
5200
5252
|
this.logger = new Logger(this, packageInfo, datasource.adapter);
|
|
@@ -5467,9 +5519,13 @@ var runStateMachine = function (_a) {
|
|
|
5467
5519
|
};
|
|
5468
5520
|
|
|
5469
5521
|
var Workflow = /** @class */ (function () {
|
|
5470
|
-
function Workflow(
|
|
5471
|
-
var element = _a.element, datasource = _a.datasource, consumer = _a.consumer, run = _a.run, Routines = _a.Routines;
|
|
5522
|
+
function Workflow(params) {
|
|
5472
5523
|
var _this = this;
|
|
5524
|
+
var element = params.element, datasource = params.datasource, consumer = params.consumer, run = params.run, Routines = params.Routines;
|
|
5525
|
+
var validationResult = validate(params, WORKFLOW);
|
|
5526
|
+
if (!validationResult.isValid) {
|
|
5527
|
+
throw new Error("Invalid Workflow params: ".concat(validationResult.errors.join(', '), "."));
|
|
5528
|
+
}
|
|
5473
5529
|
this.isInitialized = false;
|
|
5474
5530
|
this.disposed = false;
|
|
5475
5531
|
this.initTimer = null;
|