vscroll 1.5.6 → 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 +108 -76
- 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 +79 -43
- 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 +109 -76
- 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/datasource.js +2 -6
- package/dist/esm2015/classes/datasource.js.map +1 -1
- package/dist/esm2015/classes/domRoutines.js +7 -12
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/index.js +2 -1
- package/dist/esm2015/index.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/datasource.js.map +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/routines.js.map +1 -1
- package/dist/esm2015/interfaces/workflow.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 +11 -1
- package/dist/esm2015/scroller.js.map +1 -1
- package/dist/esm2015/version.js +1 -1
- package/dist/esm2015/version.js.map +1 -1
- package/dist/esm2015/workflow.js +7 -1
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/datasource.js +2 -6
- package/dist/esm5/classes/datasource.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +7 -23
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/index.js +2 -1
- package/dist/esm5/index.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/datasource.js.map +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/routines.js.map +1 -1
- package/dist/esm5/interfaces/workflow.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 +19 -1
- package/dist/esm5/scroller.js.map +1 -1
- package/dist/esm5/version.js +1 -1
- package/dist/esm5/version.js.map +1 -1
- package/dist/esm5/workflow.js +7 -2
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/datasource.d.ts +4 -20
- package/dist/typings/classes/domRoutines.d.ts +6 -3
- package/dist/typings/index.d.ts +2 -1
- package/dist/typings/inputs/index.d.ts +2 -1
- package/dist/typings/inputs/workflow.d.ts +9 -0
- package/dist/typings/interfaces/datasource.d.ts +6 -4
- package/dist/typings/interfaces/index.d.ts +3 -3
- package/dist/typings/interfaces/routines.d.ts +15 -6
- package/dist/typings/interfaces/workflow.d.ts +3 -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.
|
|
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.
|
|
348
|
+
version: '1.6.0-beta.2'
|
|
349
349
|
};
|
|
350
350
|
|
|
351
351
|
var getBox = function (id) {
|
|
@@ -426,12 +426,8 @@ var AdapterContext = /** @class */ (function () {
|
|
|
426
426
|
var DatasourceGeneric = /** @class */ (function () {
|
|
427
427
|
function DatasourceGeneric(datasource, config) {
|
|
428
428
|
this.get = datasource.get;
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
}
|
|
432
|
-
if (datasource.devSettings) {
|
|
433
|
-
this.devSettings = datasource.devSettings;
|
|
434
|
-
}
|
|
429
|
+
this.settings = datasource.settings;
|
|
430
|
+
this.devSettings = datasource.devSettings;
|
|
435
431
|
var adapterContext = new AdapterContext(config || { mock: false });
|
|
436
432
|
this.adapter = adapterContext;
|
|
437
433
|
}
|
|
@@ -558,14 +554,14 @@ var onBoolean = function (value) {
|
|
|
558
554
|
};
|
|
559
555
|
var onObject = function (value) {
|
|
560
556
|
var errors = [];
|
|
561
|
-
if (Object.prototype.toString.call(value) !== '[object Object]') {
|
|
557
|
+
if (!value || Object.prototype.toString.call(value) !== '[object Object]') {
|
|
562
558
|
errors.push(ValidatorType.object);
|
|
563
559
|
}
|
|
564
560
|
return { value: value, isSet: true, isValid: !errors.length, errors: errors };
|
|
565
561
|
};
|
|
566
562
|
var onHtmlElement = function (value) {
|
|
567
563
|
var errors = [];
|
|
568
|
-
if (!(value instanceof Element) && !(value instanceof
|
|
564
|
+
if (!(value instanceof Element) && !(value instanceof Document)) {
|
|
569
565
|
errors.push(ValidatorType.element);
|
|
570
566
|
}
|
|
571
567
|
return { value: value, isSet: true, isValid: !errors.length, errors: errors };
|
|
@@ -858,29 +854,29 @@ var validate = function (context, params) {
|
|
|
858
854
|
return data;
|
|
859
855
|
};
|
|
860
856
|
|
|
861
|
-
var _a$
|
|
862
|
-
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;
|
|
863
859
|
var DatasourceProps;
|
|
864
860
|
(function (DatasourceProps) {
|
|
865
861
|
DatasourceProps["get"] = "get";
|
|
866
862
|
DatasourceProps["settings"] = "settings";
|
|
867
863
|
DatasourceProps["devSettings"] = "devSettings";
|
|
868
864
|
})(DatasourceProps || (DatasourceProps = {}));
|
|
869
|
-
var DATASOURCE = (_a$
|
|
870
|
-
_a$
|
|
865
|
+
var DATASOURCE = (_a$4 = {},
|
|
866
|
+
_a$4[DatasourceProps.get] = {
|
|
871
867
|
validators: [FUNC_WITH_X_AND_MORE_ARGUMENTS$1(2)],
|
|
872
868
|
mandatory: true
|
|
873
869
|
},
|
|
874
|
-
_a$
|
|
875
|
-
validators: [OBJECT$
|
|
870
|
+
_a$4[DatasourceProps.settings] = {
|
|
871
|
+
validators: [OBJECT$2]
|
|
876
872
|
},
|
|
877
|
-
_a$
|
|
878
|
-
validators: [OBJECT$
|
|
873
|
+
_a$4[DatasourceProps.devSettings] = {
|
|
874
|
+
validators: [OBJECT$2]
|
|
879
875
|
},
|
|
880
|
-
_a$
|
|
876
|
+
_a$4);
|
|
881
877
|
|
|
882
|
-
var _a$
|
|
883
|
-
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;
|
|
884
880
|
var Settings$1;
|
|
885
881
|
(function (Settings) {
|
|
886
882
|
Settings["adapter"] = "adapter";
|
|
@@ -912,14 +908,14 @@ var DevSettings;
|
|
|
912
908
|
DevSettings["dismissOverflowAnchor"] = "dismissOverflowAnchor";
|
|
913
909
|
DevSettings["directionPriority"] = "directionPriority";
|
|
914
910
|
})(DevSettings || (DevSettings = {}));
|
|
915
|
-
var MIN = (_a$
|
|
916
|
-
_a$
|
|
917
|
-
_a$
|
|
918
|
-
_a$
|
|
919
|
-
_a$
|
|
920
|
-
_a$
|
|
921
|
-
_a$
|
|
922
|
-
_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);
|
|
923
919
|
var SETTINGS = (_b$2 = {},
|
|
924
920
|
_b$2[Settings$1.adapter] = {
|
|
925
921
|
validators: [BOOLEAN$1],
|
|
@@ -962,7 +958,7 @@ var SETTINGS = (_b$2 = {},
|
|
|
962
958
|
defaultValue: false
|
|
963
959
|
},
|
|
964
960
|
_b$2[Settings$1.viewportElement] = {
|
|
965
|
-
validators: [OR$1([ELEMENT, FUNC])],
|
|
961
|
+
validators: [OR$1([ELEMENT$1, FUNC$1])],
|
|
966
962
|
defaultValue: null
|
|
967
963
|
},
|
|
968
964
|
_b$2[Settings$1.inverse] = {
|
|
@@ -970,7 +966,7 @@ var SETTINGS = (_b$2 = {},
|
|
|
970
966
|
defaultValue: false
|
|
971
967
|
},
|
|
972
968
|
_b$2[Settings$1.onBeforeClip] = {
|
|
973
|
-
validators: [FUNC],
|
|
969
|
+
validators: [FUNC$1],
|
|
974
970
|
defaultValue: null
|
|
975
971
|
},
|
|
976
972
|
_b$2[Settings$1.sizeStrategy] = {
|
|
@@ -1061,23 +1057,23 @@ var ProcessStatus;
|
|
|
1061
1057
|
ProcessStatus["error"] = "error";
|
|
1062
1058
|
})(ProcessStatus || (ProcessStatus = {}));
|
|
1063
1059
|
|
|
1064
|
-
var _a$
|
|
1065
|
-
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;
|
|
1066
1062
|
var AdapterNoParams;
|
|
1067
1063
|
(function (AdapterNoParams) {
|
|
1068
1064
|
})(AdapterNoParams || (AdapterNoParams = {}));
|
|
1069
1065
|
var NO_METHOD_PARAMS = {};
|
|
1070
|
-
var RESET_METHOD_PARAMS = (_a$
|
|
1071
|
-
_a$
|
|
1066
|
+
var RESET_METHOD_PARAMS = (_a$2 = {},
|
|
1067
|
+
_a$2[DatasourceProps.get] = {
|
|
1072
1068
|
validators: [FUNC_WITH_X_AND_MORE_ARGUMENTS(2)]
|
|
1073
1069
|
},
|
|
1074
|
-
_a$
|
|
1075
|
-
validators: [OBJECT]
|
|
1070
|
+
_a$2[DatasourceProps.settings] = {
|
|
1071
|
+
validators: [OBJECT$1]
|
|
1076
1072
|
},
|
|
1077
|
-
_a$
|
|
1078
|
-
validators: [OBJECT]
|
|
1073
|
+
_a$2[DatasourceProps.devSettings] = {
|
|
1074
|
+
validators: [OBJECT$1]
|
|
1079
1075
|
},
|
|
1080
|
-
_a$
|
|
1076
|
+
_a$2);
|
|
1081
1077
|
var AdapterReloadParams;
|
|
1082
1078
|
(function (AdapterReloadParams) {
|
|
1083
1079
|
AdapterReloadParams["reloadIndex"] = "reloadIndex";
|
|
@@ -1135,7 +1131,7 @@ var AdapterRemoveParams;
|
|
|
1135
1131
|
})(AdapterRemoveParams || (AdapterRemoveParams = {}));
|
|
1136
1132
|
var REMOVE_METHOD_PARAMS = (_e = {},
|
|
1137
1133
|
_e[AdapterRemoveParams.predicate] = {
|
|
1138
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1), ONE_OF_MUST([AdapterRemoveParams.indexes])]
|
|
1134
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1), ONE_OF_MUST([AdapterRemoveParams.indexes])]
|
|
1139
1135
|
},
|
|
1140
1136
|
_e[AdapterRemoveParams.indexes] = {
|
|
1141
1137
|
validators: [ITEM_LIST, ONE_OF_MUST([AdapterRemoveParams.predicate])]
|
|
@@ -1175,12 +1171,12 @@ var INSERT_METHOD_PARAMS = (_g = {},
|
|
|
1175
1171
|
mandatory: true
|
|
1176
1172
|
},
|
|
1177
1173
|
_g[AdapterInsertParams.before] = {
|
|
1178
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1), ONE_OF_MUST([
|
|
1174
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1), ONE_OF_MUST([
|
|
1179
1175
|
AdapterInsertParams.after, AdapterInsertParams.beforeIndex, AdapterInsertParams.afterIndex
|
|
1180
1176
|
])]
|
|
1181
1177
|
},
|
|
1182
1178
|
_g[AdapterInsertParams.after] = {
|
|
1183
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1), ONE_OF_MUST([
|
|
1179
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1), ONE_OF_MUST([
|
|
1184
1180
|
AdapterInsertParams.before, AdapterInsertParams.beforeIndex, AdapterInsertParams.afterIndex
|
|
1185
1181
|
])]
|
|
1186
1182
|
},
|
|
@@ -1211,7 +1207,7 @@ var REPLACE_METHOD_PARAMS = (_h = {},
|
|
|
1211
1207
|
mandatory: true
|
|
1212
1208
|
},
|
|
1213
1209
|
_h[AdapterReplaceParams.predicate] = {
|
|
1214
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1)],
|
|
1210
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1)],
|
|
1215
1211
|
mandatory: true
|
|
1216
1212
|
},
|
|
1217
1213
|
_h[AdapterReplaceParams.fixRight] = {
|
|
@@ -1226,7 +1222,7 @@ var AdapterUpdateParams;
|
|
|
1226
1222
|
})(AdapterUpdateParams || (AdapterUpdateParams = {}));
|
|
1227
1223
|
var UPDATE_METHOD_PARAMS = (_j = {},
|
|
1228
1224
|
_j[AdapterUpdateParams.predicate] = {
|
|
1229
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1)],
|
|
1225
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1)],
|
|
1230
1226
|
mandatory: true
|
|
1231
1227
|
},
|
|
1232
1228
|
_j[AdapterUpdateParams.fixRight] = {
|
|
@@ -1257,10 +1253,10 @@ var FIX_METHOD_PARAMS = (_k = {},
|
|
|
1257
1253
|
validators: [FUNC_WITH_X_TO_Y_ARGUMENTS(1, 2)]
|
|
1258
1254
|
},
|
|
1259
1255
|
_k[AdapterFixParams.scrollToItem] = {
|
|
1260
|
-
validators: [FUNC_WITH_X_ARGUMENTS(1)]
|
|
1256
|
+
validators: [FUNC_WITH_X_ARGUMENTS$1(1)]
|
|
1261
1257
|
},
|
|
1262
1258
|
_k[AdapterFixParams.scrollToItemOpt] = {
|
|
1263
|
-
validators: [OR([BOOLEAN, OBJECT])]
|
|
1259
|
+
validators: [OR([BOOLEAN, OBJECT$1])]
|
|
1264
1260
|
},
|
|
1265
1261
|
_k);
|
|
1266
1262
|
var AdapterMethods = (_l = {},
|
|
@@ -1290,6 +1286,37 @@ var ADAPTER_METHODS = (_m = {},
|
|
|
1290
1286
|
_m[AdapterProcess.fix] = FIX_METHOD_PARAMS,
|
|
1291
1287
|
_m);
|
|
1292
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
|
+
|
|
1293
1320
|
var Settings = /** @class */ (function () {
|
|
1294
1321
|
function Settings(settings, devSettings, instanceIndex) {
|
|
1295
1322
|
this.parseInput(settings, SETTINGS);
|
|
@@ -2540,7 +2567,7 @@ var Render = /** @class */ (function (_super) {
|
|
|
2540
2567
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2541
2568
|
}
|
|
2542
2569
|
Render.run = function (scroller) {
|
|
2543
|
-
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;
|
|
2544
2571
|
scroller.logger.stat('before new items render');
|
|
2545
2572
|
if (scroll.positionBeforeAsync === null) {
|
|
2546
2573
|
scroll.positionBeforeAsync = viewport.scrollPosition;
|
|
@@ -2561,7 +2588,7 @@ var Render = /** @class */ (function (_super) {
|
|
|
2561
2588
|
payload: { error: 'Can\'t associate item with element' }
|
|
2562
2589
|
});
|
|
2563
2590
|
}
|
|
2564
|
-
});
|
|
2591
|
+
}, { items: fetch.items.map(function (i) { return i.get(); }) });
|
|
2565
2592
|
};
|
|
2566
2593
|
Render.doRender = function (scroller) {
|
|
2567
2594
|
var _a = scroller.state, fetch = _a.fetch, render = _a.render, viewport = scroller.viewport, buffer = scroller.buffer, logger = scroller.logger;
|
|
@@ -3162,34 +3189,13 @@ var Logger = /** @class */ (function () {
|
|
|
3162
3189
|
}());
|
|
3163
3190
|
|
|
3164
3191
|
var Routines = /** @class */ (function () {
|
|
3165
|
-
function Routines(element, settings
|
|
3166
|
-
var _this = this;
|
|
3192
|
+
function Routines(element, settings) {
|
|
3167
3193
|
this.element = element;
|
|
3168
3194
|
this.settings = {
|
|
3169
3195
|
viewport: settings.viewport,
|
|
3170
3196
|
horizontal: settings.horizontal,
|
|
3171
3197
|
window: settings.windowViewport
|
|
3172
3198
|
};
|
|
3173
|
-
// provide custom overrides for IRoutines methods
|
|
3174
|
-
if (CustomRoutines) {
|
|
3175
|
-
var self_1 = this;
|
|
3176
|
-
var routines_1 = new CustomRoutines(element, this.settings);
|
|
3177
|
-
Object.getOwnPropertyNames(Object.getPrototypeOf(routines_1))
|
|
3178
|
-
.filter(function (method) {
|
|
3179
|
-
return method !== 'constructor' &&
|
|
3180
|
-
typeof routines_1[method] === 'function' &&
|
|
3181
|
-
typeof self_1[method] === 'function';
|
|
3182
|
-
})
|
|
3183
|
-
.forEach(function (method) {
|
|
3184
|
-
return self_1[method] = function () {
|
|
3185
|
-
var args = [];
|
|
3186
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
3187
|
-
args[_i] = arguments[_i];
|
|
3188
|
-
}
|
|
3189
|
-
return routines_1[method].apply(_this, args);
|
|
3190
|
-
};
|
|
3191
|
-
});
|
|
3192
|
-
}
|
|
3193
3199
|
// initialization
|
|
3194
3200
|
this.viewport = this.getViewportElement();
|
|
3195
3201
|
this.onInit(settings);
|
|
@@ -3212,6 +3218,7 @@ var Routines = /** @class */ (function () {
|
|
|
3212
3218
|
return parent;
|
|
3213
3219
|
};
|
|
3214
3220
|
Routines.prototype.onInit = function (settings) {
|
|
3221
|
+
console.log('routines on-init (original)');
|
|
3215
3222
|
if (settings.windowViewport) {
|
|
3216
3223
|
if ('scrollRestoration' in history) {
|
|
3217
3224
|
history.scrollRestoration = 'manual';
|
|
@@ -3231,6 +3238,9 @@ var Routines = /** @class */ (function () {
|
|
|
3231
3238
|
Routines.prototype.findItemElement = function (id) {
|
|
3232
3239
|
return this.findElementBySelector(this.element, "[data-sid=\"".concat(id, "\"]"));
|
|
3233
3240
|
};
|
|
3241
|
+
Routines.prototype.findItemChildBySelector = function (id, selector) {
|
|
3242
|
+
return this.findElementBySelector(this.element, "[data-sid=\"".concat(id, "\"] ").concat(selector));
|
|
3243
|
+
};
|
|
3234
3244
|
Routines.prototype.getScrollPosition = function () {
|
|
3235
3245
|
if (this.settings.window) {
|
|
3236
3246
|
return this.settings.horizontal ? window.pageXOffset : window.pageYOffset;
|
|
@@ -3326,7 +3336,8 @@ var Routines = /** @class */ (function () {
|
|
|
3326
3336
|
this.checkElement(element);
|
|
3327
3337
|
element.scrollIntoView(argument);
|
|
3328
3338
|
};
|
|
3329
|
-
|
|
3339
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3340
|
+
Routines.prototype.render = function (cb, params) {
|
|
3330
3341
|
var timeoutId = setTimeout(function () { return cb(); });
|
|
3331
3342
|
return function () { return clearTimeout(timeoutId); };
|
|
3332
3343
|
};
|
|
@@ -5219,10 +5230,27 @@ var Scroller = /** @class */ (function () {
|
|
|
5219
5230
|
var packageInfo = scroller ? scroller.state.packageInfo : { consumer: consumer, core: core };
|
|
5220
5231
|
element = scroller ? scroller.routines.element : element;
|
|
5221
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
|
+
}
|
|
5222
5250
|
this.workflow = workflow;
|
|
5223
5251
|
this.settings = new Settings(datasource.settings, datasource.devSettings, ++instanceCount);
|
|
5224
5252
|
this.logger = new Logger(this, packageInfo, datasource.adapter);
|
|
5225
|
-
this.routines = new Routines(element, this.settings
|
|
5253
|
+
this.routines = new (CustomRoutines || Routines)(element, this.settings);
|
|
5226
5254
|
this.state = new State(packageInfo, this.settings, scroller ? scroller.state : void 0);
|
|
5227
5255
|
this.buffer = new Buffer(this.settings, workflow.onDataChanged, this.logger);
|
|
5228
5256
|
this.viewport = new Viewport(this.settings, this.routines, this.state, this.logger);
|
|
@@ -5491,9 +5519,13 @@ var runStateMachine = function (_a) {
|
|
|
5491
5519
|
};
|
|
5492
5520
|
|
|
5493
5521
|
var Workflow = /** @class */ (function () {
|
|
5494
|
-
function Workflow(
|
|
5495
|
-
var element = _a.element, datasource = _a.datasource, consumer = _a.consumer, run = _a.run, Routines = _a.Routines;
|
|
5522
|
+
function Workflow(params) {
|
|
5496
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
|
+
}
|
|
5497
5529
|
this.isInitialized = false;
|
|
5498
5530
|
this.disposed = false;
|
|
5499
5531
|
this.initTimer = null;
|
|
@@ -5671,5 +5703,5 @@ var Workflow = /** @class */ (function () {
|
|
|
5671
5703
|
return Workflow;
|
|
5672
5704
|
}());
|
|
5673
5705
|
|
|
5674
|
-
export { AdapterPropName, Direction, EMPTY_ITEM, INVALID_DATASOURCE_PREFIX, SizeStrategy, Workflow, getDefaultAdapterProps, makeDatasource, core as packageInfo };
|
|
5706
|
+
export { AdapterPropName, Direction, EMPTY_ITEM, INVALID_DATASOURCE_PREFIX, Routines, SizeStrategy, Workflow, getDefaultAdapterProps, makeDatasource, core as packageInfo };
|
|
5675
5707
|
//# sourceMappingURL=vscroll.esm5.js.map
|