@firestitch/list 9.12.4 → 12.0.1
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/app/classes/list-controller.d.ts +2 -1
- package/app/classes/persistance-controller.d.ts +3 -0
- package/app/classes/reorder-controller.d.ts +3 -0
- package/app/components/body/body.component.d.ts +3 -0
- package/app/components/body/row/actions/actions.component.d.ts +3 -0
- package/app/components/body/row/cell/cell.component.d.ts +3 -0
- package/app/components/body/row/inline-action/inline-action.component.d.ts +3 -0
- package/app/components/body/row/menu-action/menu-action.component.d.ts +3 -0
- package/app/components/body/row/row.component.d.ts +3 -0
- package/app/components/customize-cols/customize-cols.component.d.ts +3 -0
- package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +3 -0
- package/app/components/footer/footer-row/footer-row.component.d.ts +3 -0
- package/app/components/footer/footer.component.d.ts +3 -0
- package/app/components/head/head-cell/head-cell.component.d.ts +3 -0
- package/app/components/head/head.component.d.ts +3 -0
- package/app/components/list/list.component.d.ts +3 -0
- package/app/components/loader/loader.component.d.ts +3 -0
- package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +3 -0
- package/app/components/pagination/pagination.component.d.ts +3 -0
- package/app/components/saved-filters/saved-filters.component.d.ts +3 -0
- package/app/components/status/status.component.d.ts +3 -0
- package/app/directives/cell/cell.directive.d.ts +3 -0
- package/app/directives/column/column.directive.d.ts +3 -0
- package/app/directives/content/content.directive.d.ts +5 -0
- package/app/directives/content-init/content-init.directive.d.ts +9 -0
- package/app/directives/draggable-list/draggable-list.directive.d.ts +3 -0
- package/app/directives/draggable-row/draggable-row.directive.d.ts +3 -0
- package/app/directives/empty-state/empty-state.directive.d.ts +3 -0
- package/app/directives/footer/footer.directive.d.ts +3 -0
- package/app/directives/group-cell/group-cell.directive.d.ts +3 -0
- package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +3 -0
- package/app/directives/header/header.directive.d.ts +3 -0
- package/app/fs-list.module.d.ts +49 -0
- package/app/interfaces/listconfig.interface.d.ts +2 -0
- package/app/services/group-expand-notifier.service.d.ts +3 -0
- package/bundles/firestitch-list.umd.js +2119 -2074
- package/bundles/firestitch-list.umd.js.map +1 -1
- package/esm2015/app/classes/actions-controller.js +1 -1
- package/esm2015/app/classes/columns-controller.js +1 -1
- package/esm2015/app/classes/data-controller.js +2 -2
- package/esm2015/app/classes/external-params-controller.js +5 -7
- package/esm2015/app/classes/index.js +1 -1
- package/esm2015/app/classes/list-controller.js +9 -2
- package/esm2015/app/classes/pagination-controller.js +2 -2
- package/esm2015/app/classes/persistance-controller.js +11 -14
- package/esm2015/app/classes/reorder-controller.js +13 -13
- package/esm2015/app/classes/selection-controller.js +7 -6
- package/esm2015/app/classes/sorting-controller.js +1 -1
- package/esm2015/app/components/body/body.component.js +48 -75
- package/esm2015/app/components/body/row/actions/actions.component.js +37 -48
- package/esm2015/app/components/body/row/cell/cell.component.js +27 -33
- package/esm2015/app/components/body/row/inline-action/inline-action.component.js +27 -28
- package/esm2015/app/components/body/row/menu-action/menu-action.component.js +27 -32
- package/esm2015/app/components/body/row/row.component.js +54 -84
- package/esm2015/app/components/customize-cols/customize-cols.component.js +23 -18
- package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +15 -13
- package/esm2015/app/components/footer/footer-row/footer-row.component.js +20 -28
- package/esm2015/app/components/footer/footer.component.js +21 -25
- package/esm2015/app/components/head/head-cell/head-cell.component.js +17 -19
- package/esm2015/app/components/head/head.component.js +31 -39
- package/esm2015/app/components/list/list.component.js +76 -83
- package/esm2015/app/components/loader/loader.component.js +22 -21
- package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +19 -15
- package/esm2015/app/components/pagination/pagination.component.js +26 -26
- package/esm2015/app/components/saved-filters/saved-filters.component.js +20 -23
- package/esm2015/app/components/status/status.component.js +38 -41
- package/esm2015/app/directives/cell/cell.directive.js +17 -20
- package/esm2015/app/directives/column/column.directive.js +60 -86
- package/esm2015/app/directives/content/content.directive.js +13 -0
- package/esm2015/app/directives/content-init/content-init.directive.js +22 -0
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +16 -24
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +22 -30
- package/esm2015/app/directives/empty-state/empty-state.directive.js +12 -10
- package/esm2015/app/directives/footer/footer.directive.js +17 -20
- package/esm2015/app/directives/group-cell/group-cell.directive.js +12 -10
- package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +16 -22
- package/esm2015/app/directives/header/header.directive.js +17 -20
- package/esm2015/app/enums/button-type.enum.js +1 -1
- package/esm2015/app/enums/page-change-type.enum.js +1 -1
- package/esm2015/app/enums/pagination-strategy.enum.js +1 -1
- package/esm2015/app/enums/row-type.enum.js +1 -1
- package/esm2015/app/enums/state.enum.js +1 -1
- package/esm2015/app/fs-list.module.js +143 -64
- package/esm2015/app/fs-list.providers.js +1 -1
- package/esm2015/app/interfaces/cellconfig.interface.js +2 -1
- package/esm2015/app/interfaces/draggable-list.interface.js +2 -1
- package/esm2015/app/interfaces/external-params.interface.js +2 -1
- package/esm2015/app/interfaces/index.js +4 -1
- package/esm2015/app/interfaces/listconfig.interface.js +2 -1
- package/esm2015/app/interfaces/pagination.interface.js +2 -1
- package/esm2015/app/models/column.model.js +1 -1
- package/esm2015/app/models/row/base-row.js +1 -1
- package/esm2015/app/models/row/child-row.js +1 -1
- package/esm2015/app/models/row/group-row.js +1 -1
- package/esm2015/app/models/row/simple-row.js +1 -1
- package/esm2015/app/models/row-action.model.js +1 -1
- package/esm2015/app/models/row.js +1 -1
- package/esm2015/app/models/styleConfig.model.js +1 -1
- package/esm2015/app/services/group-expand-notifier.service.js +9 -8
- package/esm2015/firestitch-list.js +1 -15
- package/esm2015/public_api.js +5 -1
- package/fesm2015/firestitch-list.js +1372 -1460
- package/fesm2015/firestitch-list.js.map +1 -1
- package/firestitch-list.d.ts +1 -15
- package/package.json +5 -8
- package/public_api.d.ts +4 -0
- package/bundles/firestitch-list.umd.min.js +0 -16
- package/bundles/firestitch-list.umd.min.js.map +0 -1
- package/esm5/app/classes/actions-controller.js +0 -71
- package/esm5/app/classes/columns-controller.js +0 -236
- package/esm5/app/classes/data-controller.js +0 -374
- package/esm5/app/classes/external-params-controller.js +0 -185
- package/esm5/app/classes/index.js +0 -3
- package/esm5/app/classes/list-controller.js +0 -781
- package/esm5/app/classes/pagination-controller.js +0 -570
- package/esm5/app/classes/persistance-controller.js +0 -25
- package/esm5/app/classes/reorder-controller.js +0 -204
- package/esm5/app/classes/selection-controller.js +0 -465
- package/esm5/app/classes/sorting-controller.js +0 -204
- package/esm5/app/components/body/body.component.js +0 -104
- package/esm5/app/components/body/row/actions/actions.component.js +0 -116
- package/esm5/app/components/body/row/cell/cell.component.js +0 -95
- package/esm5/app/components/body/row/inline-action/inline-action.component.js +0 -43
- package/esm5/app/components/body/row/menu-action/menu-action.component.js +0 -38
- package/esm5/app/components/body/row/row.component.js +0 -295
- package/esm5/app/components/customize-cols/customize-cols.component.js +0 -69
- package/esm5/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
- package/esm5/app/components/footer/footer-row/footer-row.component.js +0 -38
- package/esm5/app/components/footer/footer.component.js +0 -31
- package/esm5/app/components/head/head-cell/head-cell.component.js +0 -38
- package/esm5/app/components/head/head.component.js +0 -106
- package/esm5/app/components/list/list.component.js +0 -403
- package/esm5/app/components/loader/loader.component.js +0 -47
- package/esm5/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -81
- package/esm5/app/components/pagination/pagination.component.js +0 -46
- package/esm5/app/components/saved-filters/saved-filters.component.js +0 -41
- package/esm5/app/components/status/status.component.js +0 -79
- package/esm5/app/directives/cell/cell.directive.js +0 -24
- package/esm5/app/directives/column/column.directive.js +0 -98
- package/esm5/app/directives/draggable-list/draggable-list.directive.js +0 -281
- package/esm5/app/directives/draggable-row/draggable-row.directive.js +0 -83
- package/esm5/app/directives/empty-state/empty-state.directive.js +0 -14
- package/esm5/app/directives/footer/footer.directive.js +0 -24
- package/esm5/app/directives/group-cell/group-cell.directive.js +0 -17
- package/esm5/app/directives/group-expand-trigger/group-expand-trigger.directive.js +0 -33
- package/esm5/app/directives/header/header.directive.js +0 -24
- package/esm5/app/enums/button-type.enum.js +0 -9
- package/esm5/app/enums/page-change-type.enum.js +0 -6
- package/esm5/app/enums/pagination-strategy.enum.js +0 -7
- package/esm5/app/enums/row-type.enum.js +0 -7
- package/esm5/app/enums/state.enum.js +0 -11
- package/esm5/app/fs-list.module.js +0 -149
- package/esm5/app/fs-list.providers.js +0 -4
- package/esm5/app/interfaces/cellconfig.interface.js +0 -1
- package/esm5/app/interfaces/draggable-list.interface.js +0 -1
- package/esm5/app/interfaces/external-params.interface.js +0 -1
- package/esm5/app/interfaces/index.js +0 -1
- package/esm5/app/interfaces/listconfig.interface.js +0 -1
- package/esm5/app/interfaces/pagination.interface.js +0 -1
- package/esm5/app/models/column.model.js +0 -204
- package/esm5/app/models/row/base-row.js +0 -35
- package/esm5/app/models/row/child-row.js +0 -43
- package/esm5/app/models/row/group-row.js +0 -61
- package/esm5/app/models/row/simple-row.js +0 -15
- package/esm5/app/models/row-action.model.js +0 -153
- package/esm5/app/models/row.js +0 -126
- package/esm5/app/models/styleConfig.model.js +0 -91
- package/esm5/app/services/group-expand-notifier.service.js +0 -30
- package/esm5/firestitch-list.js +0 -19
- package/esm5/public_api.js +0 -40
- package/fesm5/firestitch-list.js +0 -6069
- package/fesm5/firestitch-list.js.map +0 -1
- package/firestitch-list.metadata.json +0 -1
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
var ActionsController = /** @class */ (function () {
|
|
3
|
-
function ActionsController() {
|
|
4
|
-
this._actions = [];
|
|
5
|
-
this._destroy$ = new Subject();
|
|
6
|
-
}
|
|
7
|
-
Object.defineProperty(ActionsController.prototype, "destroy$", {
|
|
8
|
-
get: function () {
|
|
9
|
-
return this._destroy$.asObservable();
|
|
10
|
-
},
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(ActionsController.prototype, "actions", {
|
|
15
|
-
get: function () {
|
|
16
|
-
return this._actions;
|
|
17
|
-
},
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true
|
|
20
|
-
});
|
|
21
|
-
Object.defineProperty(ActionsController.prototype, "hasActions", {
|
|
22
|
-
get: function () {
|
|
23
|
-
return this._actions.length > 0;
|
|
24
|
-
},
|
|
25
|
-
enumerable: true,
|
|
26
|
-
configurable: true
|
|
27
|
-
});
|
|
28
|
-
ActionsController.prototype.setFilterRef = function (ref) {
|
|
29
|
-
this._filterRef = ref;
|
|
30
|
-
};
|
|
31
|
-
ActionsController.prototype.setActions = function (actions) {
|
|
32
|
-
this.clearActions();
|
|
33
|
-
this._actions = actions;
|
|
34
|
-
if (this._reorderAction) {
|
|
35
|
-
this._actions.unshift(this._reorderAction);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
ActionsController.prototype.addReorderAction = function (action) {
|
|
39
|
-
var _this = this;
|
|
40
|
-
var actionClickFn = action.click;
|
|
41
|
-
this._actions.unshift(action);
|
|
42
|
-
action.click = function () {
|
|
43
|
-
_this._filterRef.updateActions([_this._doneAction]);
|
|
44
|
-
_this._filterRef.hideKeywordField();
|
|
45
|
-
_this._filterRef.hideFiltersBtn();
|
|
46
|
-
actionClickFn(null);
|
|
47
|
-
};
|
|
48
|
-
this._reorderAction = action;
|
|
49
|
-
};
|
|
50
|
-
ActionsController.prototype.addReorderDoneAction = function (action) {
|
|
51
|
-
var _this = this;
|
|
52
|
-
this._doneAction = action;
|
|
53
|
-
var actionClickFn = action.click;
|
|
54
|
-
this._doneAction.click = function () {
|
|
55
|
-
_this._filterRef.updateActions(_this._actions);
|
|
56
|
-
_this._filterRef.showKeywordField();
|
|
57
|
-
_this._filterRef.showFiltersBtn();
|
|
58
|
-
actionClickFn(null);
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
ActionsController.prototype.clearActions = function () {
|
|
62
|
-
this._actions = [];
|
|
63
|
-
this._destroy$.next();
|
|
64
|
-
};
|
|
65
|
-
ActionsController.prototype.updateDisabledState = function () {
|
|
66
|
-
this._filterRef.updateDisabledState();
|
|
67
|
-
};
|
|
68
|
-
return ActionsController;
|
|
69
|
-
}());
|
|
70
|
-
export { ActionsController };
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvbGlzdC8iLCJzb3VyY2VzIjpbImFwcC9jbGFzc2VzL2FjdGlvbnMtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTNDO0lBVUU7UUFOUSxhQUFRLEdBQW1CLEVBQUUsQ0FBQztRQUk5QixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV6QixDQUFDO0lBRWhCLHNCQUFXLHVDQUFRO2FBQW5CO1lBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsc0JBQVcsc0NBQU87YUFBbEI7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBVyx5Q0FBVTthQUFyQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7OztPQUFBO0lBRU0sd0NBQVksR0FBbkIsVUFBb0IsR0FBb0I7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUVNLHNDQUFVLEdBQWpCLFVBQWtCLE9BQXVCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVNLDRDQUFnQixHQUF2QixVQUF3QixNQUFvQjtRQUE1QyxpQkFZQztRQVhDLElBQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUIsTUFBTSxDQUFDLEtBQUssR0FBRztZQUNiLEtBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsS0FBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25DLEtBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQTtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFTSxnREFBb0IsR0FBM0IsVUFBNEIsTUFBb0I7UUFBaEQsaUJBVUM7UUFUQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRW5DLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHO1lBQ3ZCLEtBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxLQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNqQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVNLHdDQUFZLEdBQW5CO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sK0NBQW1CLEdBQTFCO1FBQ0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUF2RUQsSUF1RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBGc0xpc3RBY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgY2xhc3MgQWN0aW9uc0NvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgX2ZpbHRlclJlZjogRmlsdGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2FjdGlvbnM6IEZzTGlzdEFjdGlvbltdID0gW107XG4gIHByaXZhdGUgX3Jlb3JkZXJBY3Rpb246IEZzTGlzdEFjdGlvbjtcbiAgcHJpdmF0ZSBfZG9uZUFjdGlvbjogRnNMaXN0QWN0aW9uO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGlvbnMoKTogRnNMaXN0QWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyUmVmKHJlZjogRmlsdGVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fZmlsdGVyUmVmID0gcmVmO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbnMoYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICB0aGlzLmNsZWFyQWN0aW9ucygpO1xuICAgIHRoaXMuX2FjdGlvbnMgPSBhY3Rpb25zO1xuXG4gICAgaWYgKHRoaXMuX3Jlb3JkZXJBY3Rpb24pIHtcbiAgICAgIHRoaXMuX2FjdGlvbnMudW5zaGlmdCh0aGlzLl9yZW9yZGVyQWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkUmVvcmRlckFjdGlvbihhY3Rpb246IEZzTGlzdEFjdGlvbikge1xuICAgIGNvbnN0IGFjdGlvbkNsaWNrRm4gPSBhY3Rpb24uY2xpY2s7XG4gICAgdGhpcy5fYWN0aW9ucy51bnNoaWZ0KGFjdGlvbik7XG5cbiAgICBhY3Rpb24uY2xpY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9maWx0ZXJSZWYudXBkYXRlQWN0aW9ucyhbdGhpcy5fZG9uZUFjdGlvbl0pO1xuICAgICAgdGhpcy5fZmlsdGVyUmVmLmhpZGVLZXl3b3JkRmllbGQoKTtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi5oaWRlRmlsdGVyc0J0bigpO1xuICAgICAgYWN0aW9uQ2xpY2tGbihudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW9yZGVyQWN0aW9uID0gYWN0aW9uO1xuICB9XG5cbiAgcHVibGljIGFkZFJlb3JkZXJEb25lQWN0aW9uKGFjdGlvbjogRnNMaXN0QWN0aW9uKSB7XG4gICAgdGhpcy5fZG9uZUFjdGlvbiA9IGFjdGlvbjtcbiAgICBjb25zdCBhY3Rpb25DbGlja0ZuID0gYWN0aW9uLmNsaWNrO1xuXG4gICAgdGhpcy5fZG9uZUFjdGlvbi5jbGljayA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi51cGRhdGVBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICAgICAgdGhpcy5fZmlsdGVyUmVmLnNob3dLZXl3b3JkRmllbGQoKTtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi5zaG93RmlsdGVyc0J0bigpO1xuICAgICAgYWN0aW9uQ2xpY2tGbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBY3Rpb25zKCkge1xuICAgIHRoaXMuX2FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJSZWYudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { isNumber } from 'lodash-es';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil, tap } from 'rxjs/operators';
|
|
4
|
-
import { Column } from '../models/column.model';
|
|
5
|
-
var ColumnsController = /** @class */ (function () {
|
|
6
|
-
function ColumnsController() {
|
|
7
|
-
this.visibleColumns = [];
|
|
8
|
-
this._theadClass = '';
|
|
9
|
-
this._isConfigured = false;
|
|
10
|
-
this._loadFnConfigured = false;
|
|
11
|
-
this._changeFnConfigured = false;
|
|
12
|
-
this._columnsFetched = false;
|
|
13
|
-
this._hasHeader = false;
|
|
14
|
-
this._hasFooter = false;
|
|
15
|
-
this._columns = [];
|
|
16
|
-
this._destroy$ = new Subject();
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(ColumnsController.prototype, "columns", {
|
|
19
|
-
get: function () {
|
|
20
|
-
return this._columns.slice();
|
|
21
|
-
},
|
|
22
|
-
enumerable: true,
|
|
23
|
-
configurable: true
|
|
24
|
-
});
|
|
25
|
-
Object.defineProperty(ColumnsController.prototype, "columnsForDialog", {
|
|
26
|
-
get: function () {
|
|
27
|
-
var _this = this;
|
|
28
|
-
var hasCustomTitle = !!this._customizeFieldTitleFn;
|
|
29
|
-
var hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;
|
|
30
|
-
var hasCustomTooltip = !!this._columnTooltipFn;
|
|
31
|
-
return this._columns
|
|
32
|
-
.filter(function (column) { return column.customize && !!column.name; })
|
|
33
|
-
.map(function (column) {
|
|
34
|
-
var title = hasCustomTitle
|
|
35
|
-
? _this._customizeFieldTitleFn(column.name, column.title)
|
|
36
|
-
: column.name;
|
|
37
|
-
var disabled = hasCustomDisabledStatus
|
|
38
|
-
? _this._customizeFieldDisabledFn(column.name)
|
|
39
|
-
: false;
|
|
40
|
-
var tooltip = hasCustomTooltip
|
|
41
|
-
? _this._columnTooltipFn(column.name, column.show, disabled)
|
|
42
|
-
: void 0;
|
|
43
|
-
return {
|
|
44
|
-
template: column.headerTemplate,
|
|
45
|
-
name: column.name,
|
|
46
|
-
show: column.show,
|
|
47
|
-
title: title,
|
|
48
|
-
disabled: disabled,
|
|
49
|
-
tooltip: tooltip,
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
},
|
|
53
|
-
enumerable: true,
|
|
54
|
-
configurable: true
|
|
55
|
-
});
|
|
56
|
-
Object.defineProperty(ColumnsController.prototype, "columnsFetched", {
|
|
57
|
-
get: function () {
|
|
58
|
-
return this._columnsFetched;
|
|
59
|
-
},
|
|
60
|
-
enumerable: true,
|
|
61
|
-
configurable: true
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(ColumnsController.prototype, "hasHeader", {
|
|
64
|
-
get: function () {
|
|
65
|
-
return this._hasHeader;
|
|
66
|
-
},
|
|
67
|
-
enumerable: true,
|
|
68
|
-
configurable: true
|
|
69
|
-
});
|
|
70
|
-
Object.defineProperty(ColumnsController.prototype, "hasFooter", {
|
|
71
|
-
get: function () {
|
|
72
|
-
return this._hasFooter;
|
|
73
|
-
},
|
|
74
|
-
enumerable: true,
|
|
75
|
-
configurable: true
|
|
76
|
-
});
|
|
77
|
-
Object.defineProperty(ColumnsController.prototype, "theadClass", {
|
|
78
|
-
get: function () {
|
|
79
|
-
return this._theadClass;
|
|
80
|
-
},
|
|
81
|
-
enumerable: true,
|
|
82
|
-
configurable: true
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(ColumnsController.prototype, "configured", {
|
|
85
|
-
get: function () {
|
|
86
|
-
return this._isConfigured;
|
|
87
|
-
},
|
|
88
|
-
enumerable: true,
|
|
89
|
-
configurable: true
|
|
90
|
-
});
|
|
91
|
-
Object.defineProperty(ColumnsController.prototype, "loadFnConfigured", {
|
|
92
|
-
get: function () {
|
|
93
|
-
return this._loadFnConfigured;
|
|
94
|
-
},
|
|
95
|
-
enumerable: true,
|
|
96
|
-
configurable: true
|
|
97
|
-
});
|
|
98
|
-
Object.defineProperty(ColumnsController.prototype, "changeFnConfigured", {
|
|
99
|
-
get: function () {
|
|
100
|
-
return this._changeFnConfigured;
|
|
101
|
-
},
|
|
102
|
-
enumerable: true,
|
|
103
|
-
configurable: true
|
|
104
|
-
});
|
|
105
|
-
Object.defineProperty(ColumnsController.prototype, "changeFn", {
|
|
106
|
-
get: function () {
|
|
107
|
-
return this._changeFn;
|
|
108
|
-
},
|
|
109
|
-
enumerable: true,
|
|
110
|
-
configurable: true
|
|
111
|
-
});
|
|
112
|
-
Object.defineProperty(ColumnsController.prototype, "visibleColumnsNames", {
|
|
113
|
-
get: function () {
|
|
114
|
-
return this.visibleColumns
|
|
115
|
-
.map(function (column) { return column.name; })
|
|
116
|
-
.filter(function (name) { return !!name; });
|
|
117
|
-
},
|
|
118
|
-
enumerable: true,
|
|
119
|
-
configurable: true
|
|
120
|
-
});
|
|
121
|
-
ColumnsController.prototype.setDefaults = function (defaults) {
|
|
122
|
-
this._defaultConfigs = defaults;
|
|
123
|
-
};
|
|
124
|
-
/**
|
|
125
|
-
* Set data from list config
|
|
126
|
-
* @param config
|
|
127
|
-
*/
|
|
128
|
-
ColumnsController.prototype.initConfig = function (config) {
|
|
129
|
-
if (config) {
|
|
130
|
-
if (config.load) {
|
|
131
|
-
this._loadFn = config.load;
|
|
132
|
-
this._loadFnConfigured = true;
|
|
133
|
-
}
|
|
134
|
-
if (config.change) {
|
|
135
|
-
this._changeFn = config.change;
|
|
136
|
-
this._changeFnConfigured = true;
|
|
137
|
-
}
|
|
138
|
-
if (config.title) {
|
|
139
|
-
this._customizeFieldTitleFn = config.title;
|
|
140
|
-
}
|
|
141
|
-
if (config.disabled) {
|
|
142
|
-
this._customizeFieldDisabledFn = config.disabled;
|
|
143
|
-
}
|
|
144
|
-
if (config.tooltip) {
|
|
145
|
-
this._columnTooltipFn = config.tooltip;
|
|
146
|
-
}
|
|
147
|
-
this._isConfigured = true;
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* Base initialization for columns
|
|
152
|
-
* @param templates
|
|
153
|
-
*/
|
|
154
|
-
ColumnsController.prototype.initializeColumns = function (templates) {
|
|
155
|
-
var _this = this;
|
|
156
|
-
this._columns = [];
|
|
157
|
-
templates.forEach(function (column) {
|
|
158
|
-
var col = new Column(column, _this._defaultConfigs);
|
|
159
|
-
if (col.headerTemplate || col.title) {
|
|
160
|
-
_this._hasHeader = true;
|
|
161
|
-
}
|
|
162
|
-
if (col.footerTemplate) {
|
|
163
|
-
_this._hasFooter = true;
|
|
164
|
-
}
|
|
165
|
-
_this._columns.push(col);
|
|
166
|
-
});
|
|
167
|
-
this._theadClass = this.hasHeader ? 'has-header' : '';
|
|
168
|
-
this._updateColspans('headerConfigs', 'headerColspanned');
|
|
169
|
-
this._updateColspans('groupCellConfigs', 'groupCellColspanned');
|
|
170
|
-
this._updateColspans('cellConfigs', 'cellColspanned');
|
|
171
|
-
this._updateColspans('footerConfigs', 'footerColspanned');
|
|
172
|
-
this.updateVisibleColumns();
|
|
173
|
-
};
|
|
174
|
-
/**
|
|
175
|
-
* Load visiblity config for columns from remote
|
|
176
|
-
*/
|
|
177
|
-
ColumnsController.prototype.loadRemoteColumnConfigs = function () {
|
|
178
|
-
var _this = this;
|
|
179
|
-
return this._loadFn()
|
|
180
|
-
.pipe(takeUntil(this._destroy$), tap(function (columnConfigs) {
|
|
181
|
-
_this._columnsFetched = true;
|
|
182
|
-
_this.updateVisibilityForCols(columnConfigs);
|
|
183
|
-
}));
|
|
184
|
-
};
|
|
185
|
-
/**
|
|
186
|
-
* Set visible columns based on current columns show status
|
|
187
|
-
*/
|
|
188
|
-
ColumnsController.prototype.updateVisibleColumns = function () {
|
|
189
|
-
this.visibleColumns =
|
|
190
|
-
this._columns.filter(function (column) { return column.show; }) || [];
|
|
191
|
-
};
|
|
192
|
-
/**
|
|
193
|
-
* Update visibility based on passed config
|
|
194
|
-
* @param columnsConfig
|
|
195
|
-
*/
|
|
196
|
-
ColumnsController.prototype.updateVisibilityForCols = function (columnsConfig) {
|
|
197
|
-
var _this = this;
|
|
198
|
-
columnsConfig.forEach(function (columnConfig) {
|
|
199
|
-
var col = _this._columns
|
|
200
|
-
.find(function (column) { return column.name === columnConfig.name; });
|
|
201
|
-
if (col) {
|
|
202
|
-
col.show = columnConfig.show;
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
this.updateVisibleColumns();
|
|
206
|
-
};
|
|
207
|
-
ColumnsController.prototype.destroy = function () {
|
|
208
|
-
this._destroy$.next();
|
|
209
|
-
this._destroy$.complete();
|
|
210
|
-
this._columns = void 0;
|
|
211
|
-
this.visibleColumns = void 0;
|
|
212
|
-
this._defaultConfigs = void 0;
|
|
213
|
-
this._loadFn = void 0;
|
|
214
|
-
this._changeFn = void 0;
|
|
215
|
-
};
|
|
216
|
-
ColumnsController.prototype._updateColspans = function (config, updateFlag) {
|
|
217
|
-
var _this = this;
|
|
218
|
-
this._columns.forEach(function (col, index) {
|
|
219
|
-
if (col[config].colspan !== void 0) {
|
|
220
|
-
var spanTo = index + +col[config].colspan;
|
|
221
|
-
if (!isNumber(spanTo)) {
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
_this._columns[index][updateFlag] = false;
|
|
225
|
-
for (var i = index + 1; i < spanTo; i++) {
|
|
226
|
-
if (_this._columns[i]) {
|
|
227
|
-
_this._columns[i][updateFlag] = true;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
};
|
|
233
|
-
return ColumnsController;
|
|
234
|
-
}());
|
|
235
|
-
export { ColumnsController };
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvbGlzdC8iLCJzb3VyY2VzIjpbImFwcC9jbGFzc2VzL2NvbHVtbnMtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFXaEQ7SUFzQkU7UUFwQk8sbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFFN0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFPakIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUd4QixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV6QixDQUFDO0lBRWhCLHNCQUFXLHNDQUFPO2FBQWxCO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQVcsK0NBQWdCO2FBQTNCO1lBQUEsaUJBNkJDO1lBNUJDLElBQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDckQsSUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQ2pFLElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLElBQUks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SyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDcEIsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ3JDO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFSCx3QkFBQztBQUFELENBQUMsQUEzT0QsSUEyT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQge1xuICBGc0xpc3RDb2x1bW5DaGFuZ2VGbixcbiAgRnNMaXN0Q29sdW1uQ29uZmlnLFxuICBGc0xpc3RDb2x1bW5EaXNhYmxlZEZuLFxuICBGc0xpc3RDb2x1bW5Mb2FkRm4sXG4gIEZzTGlzdENvbHVtblRpdGxlRm4sXG4gIEZzTGlzdENvbHVtblRvb2x0aXBGbixcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9saXN0Y29uZmlnLmludGVyZmFjZSc7XG5cblxuZXhwb3J0IGNsYXNzIENvbHVtbnNDb250cm9sbGVyIHtcblxuICBwdWJsaWMgdmlzaWJsZUNvbHVtbnM6IENvbHVtbltdID0gW107XG5cbiAgcHJpdmF0ZSBfdGhlYWRDbGFzcyA9ICcnO1xuICBwcml2YXRlIF9sb2FkRm46IEZzTGlzdENvbHVtbkxvYWRGbjtcbiAgcHJpdmF0ZSBfY2hhbmdlRm46IEZzTGlzdENvbHVtbkNoYW5nZUZuO1xuICBwcml2YXRlIF9jdXN0b21pemVGaWVsZFRpdGxlRm46IEZzTGlzdENvbHVtblRpdGxlRm47XG4gIHByaXZhdGUgX2N1c3RvbWl6ZUZpZWxkRGlzYWJsZWRGbjogRnNMaXN0Q29sdW1uRGlzYWJsZWRGbjtcbiAgcHJpdmF0ZSBfY29sdW1uVG9vbHRpcEZuOiBGc0xpc3RDb2x1bW5Ub29sdGlwRm47XG5cbiAgcHJpdmF0ZSBfaXNDb25maWd1cmVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2xvYWRGbkNvbmZpZ3VyZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2hhbmdlRm5Db25maWd1cmVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbHVtbnNGZXRjaGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2hhc0hlYWRlciA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNGb290ZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY29sdW1uczogQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZ3M7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnMuc2xpY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29sdW1uc0ZvckRpYWxvZygpIHtcbiAgICBjb25zdCBoYXNDdXN0b21UaXRsZSA9ICEhdGhpcy5fY3VzdG9taXplRmllbGRUaXRsZUZuO1xuICAgIGNvbnN0IGhhc0N1c3RvbURpc2FibGVkU3RhdHVzID0gISF0aGlzLl9jdXN0b21pemVGaWVsZERpc2FibGVkRm47XG4gICAgY29uc3QgaGFzQ3VzdG9tVG9vbHRpcCA9ICEhdGhpcy5fY29sdW1uVG9vbHRpcEZuO1xuXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNcbiAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLmN1c3RvbWl6ZSAmJiAhIWNvbHVtbi5uYW1lKVxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gaGFzQ3VzdG9tVGl0bGVcbiAgICAgICAgICA/IHRoaXMuX2N1c3RvbWl6ZUZpZWxkVGl0bGVGbihjb2x1bW4ubmFtZSwgY29sdW1uLnRpdGxlKVxuICAgICAgICAgIDogY29sdW1uLm5hbWU7XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBoYXNDdXN0b21EaXNhYmxlZFN0YXR1c1xuICAgICAgICAgID8gdGhpcy5fY3VzdG9taXplRmllbGREaXNhYmxlZEZuKGNvbHVtbi5uYW1lKVxuICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IGhhc0N1c3RvbVRvb2x0aXBcbiAgICAgICAgICA/IHRoaXMuX2NvbHVtblRvb2x0aXBGbihjb2x1bW4ubmFtZSwgY29sdW1uLnNob3csIGRpc2FibGVkKVxuICAgICAgICAgIDogdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGVtcGxhdGU6IGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSxcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICBzaG93OiBjb2x1bW4uc2hvdyxcbiAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgIHRvb2x0aXA6IHRvb2x0aXAsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zRmV0Y2hlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uc0ZldGNoZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0hlYWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzSGVhZGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0Zvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGhlYWRDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhlYWRDbGFzcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlndXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNDb25maWd1cmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkRm5Db25maWd1cmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2FkRm5Db25maWd1cmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VGbkNvbmZpZ3VyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZUZuQ29uZmlndXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbmdlRm4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZUZuO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXNpYmxlQ29sdW1uc05hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVDb2x1bW5zXG4gICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gISFuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0cyhkZWZhdWx0cykge1xuICAgIHRoaXMuX2RlZmF1bHRDb25maWdzID0gZGVmYXVsdHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGEgZnJvbSBsaXN0IGNvbmZpZ1xuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBwdWJsaWMgaW5pdENvbmZpZyhjb25maWc6IEZzTGlzdENvbHVtbkNvbmZpZykge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIGlmIChjb25maWcubG9hZCkge1xuICAgICAgICB0aGlzLl9sb2FkRm4gPSBjb25maWcubG9hZDtcbiAgICAgICAgdGhpcy5fbG9hZEZuQ29uZmlndXJlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuY2hhbmdlKSB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUZuID0gY29uZmlnLmNoYW5nZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRm5Db25maWd1cmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy50aXRsZSkge1xuICAgICAgICB0aGlzLl9jdXN0b21pemVGaWVsZFRpdGxlRm4gPSBjb25maWcudGl0bGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5fY3VzdG9taXplRmllbGREaXNhYmxlZEZuID0gY29uZmlnLmRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnRvb2x0aXApIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVG9vbHRpcEZuID0gY29uZmlnLnRvb2x0aXA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzQ29uZmlndXJlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJhc2UgaW5pdGlhbGl6YXRpb24gZm9yIGNvbHVtbnNcbiAgICogQHBhcmFtIHRlbXBsYXRlc1xuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemVDb2x1bW5zKHRlbXBsYXRlcykge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBbXTtcblxuICAgIHRlbXBsYXRlcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IGNvbCA9IG5ldyBDb2x1bW4oY29sdW1uLCB0aGlzLl9kZWZhdWx0Q29uZmlncyk7XG5cblxuICAgICAgaWYgKGNvbC5oZWFkZXJUZW1wbGF0ZSB8fCBjb2wudGl0bGUpIHtcbiAgICAgICAgdGhpcy5faGFzSGVhZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wuZm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5faGFzRm9vdGVyID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl90aGVhZENsYXNzID0gdGhpcy5oYXNIZWFkZXIgPyAnaGFzLWhlYWRlcicgOiAnJztcblxuICAgIHRoaXMuX3VwZGF0ZUNvbHNwYW5zKCdoZWFkZXJDb25maWdzJywgJ2hlYWRlckNvbHNwYW5uZWQnKTtcbiAgICB0aGlzLl91cGRhdGVDb2xzcGFucygnZ3JvdXBDZWxsQ29uZmlncycsICdncm91cENlbGxDb2xzcGFubmVkJyk7XG4gICAgdGhpcy5fdXBkYXRlQ29sc3BhbnMoJ2NlbGxDb25maWdzJywgJ2NlbGxDb2xzcGFubmVkJyk7XG4gICAgdGhpcy5fdXBkYXRlQ29sc3BhbnMoJ2Zvb3RlckNvbmZpZ3MnLCAnZm9vdGVyQ29sc3Bhbm5lZCcpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlQ29sdW1ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdmlzaWJsaXR5IGNvbmZpZyBmb3IgY29sdW1ucyBmcm9tIHJlbW90ZVxuICAgKi9cbiAgcHVibGljIGxvYWRSZW1vdGVDb2x1bW5Db25maWdzKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2FkRm4oKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoY29sdW1uQ29uZmlncykgPT4ge1xuICAgICAgICAgIHRoaXMuX2NvbHVtbnNGZXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGNvbHVtbkNvbmZpZ3MpO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB2aXNpYmxlIGNvbHVtbnMgYmFzZWQgb24gY3VycmVudCBjb2x1bW5zIHNob3cgc3RhdHVzXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmlzaWJsZUNvbHVtbnMoKSB7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9XG4gICAgICB0aGlzLl9jb2x1bW5zLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4uc2hvdykgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgYmFzZWQgb24gcGFzc2VkIGNvbmZpZ1xuICAgKiBAcGFyYW0gY29sdW1uc0NvbmZpZ1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGNvbHVtbnNDb25maWcpIHtcbiAgICBjb2x1bW5zQ29uZmlnLmZvckVhY2goKGNvbHVtbkNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgY29sID0gdGhpcy5fY29sdW1uc1xuICAgICAgICAuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4ubmFtZSA9PT0gY29sdW1uQ29uZmlnLm5hbWUpO1xuXG4gICAgICBpZiAoY29sKSB7XG4gICAgICAgIGNvbC5zaG93ID0gY29sdW1uQ29uZmlnLnNob3c7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVDb2x1bW5zKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuX2NvbHVtbnMgPSB2b2lkIDA7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHZvaWQgMDtcbiAgICB0aGlzLl9kZWZhdWx0Q29uZmlncyA9IHZvaWQgMDtcblxuICAgIHRoaXMuX2xvYWRGbiA9IHZvaWQgMDtcbiAgICB0aGlzLl9jaGFuZ2VGbiA9IHZvaWQgMDtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbHNwYW5zKGNvbmZpZywgdXBkYXRlRmxhZykge1xuICAgIHRoaXMuX2NvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4ge1xuXG4gICAgICBpZiAoY29sW2NvbmZpZ10uY29sc3BhbiAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnN0IHNwYW5UbyA9IGluZGV4ICsgK2NvbFtjb25maWddLmNvbHNwYW47XG5cbiAgICAgICAgaWYgKCFpc051bWJlcihzcGFuVG8pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbHVtbnNbaW5kZXhdW3VwZGF0ZUZsYWddID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IHNwYW5UbzsgaSsrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnNbaV0pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNbaV1bdXBkYXRlRmxhZ10gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxufVxuIl19
|