@myrmidon/paged-data-browsers 2.0.5 → 3.0.0
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/fesm2022/myrmidon-paged-data-browsers.mjs +22 -16
- package/fesm2022/myrmidon-paged-data-browsers.mjs.map +1 -1
- package/package.json +7 -9
- package/esm2022/lib/components/browser-tree-node/browser-tree-node.component.mjs +0 -88
- package/esm2022/lib/components/compact-pager/compact-pager.component.mjs +0 -47
- package/esm2022/lib/components/range-view/range-view.component.mjs +0 -35
- package/esm2022/lib/paged-data-browsers.module.mjs +0 -92
- package/esm2022/lib/services/lru-cache.mjs +0 -119
- package/esm2022/lib/services/paged-list.store.mjs +0 -172
- package/esm2022/lib/services/paged-tree.store.mjs +0 -419
- package/esm2022/myrmidon-paged-data-browsers.mjs +0 -5
- package/esm2022/public-api.mjs +0 -11
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/material/badge";
|
|
5
|
-
import * as i3 from "@angular/material/button";
|
|
6
|
-
import * as i4 from "@angular/material/icon";
|
|
7
|
-
import * as i5 from "@angular/material/tooltip";
|
|
8
|
-
import * as i6 from "../compact-pager/compact-pager.component";
|
|
9
|
-
import * as i7 from "../range-view/range-view.component";
|
|
10
|
-
import * as i8 from "@myrmidon/ng-tools";
|
|
11
|
-
/**
|
|
12
|
-
* Browser tree node component view. This wraps some HTML content providing
|
|
13
|
-
* a toggle button to expand/collapse the node, a paging control for the
|
|
14
|
-
* node's children, and a button to edit the node's filter. You should then
|
|
15
|
-
* provide the HTML content to display the node's data inside this component, e.g.
|
|
16
|
-
* <pdb-browser-tree-node [node]="node">
|
|
17
|
-
* <your-node-view [node]="node" />
|
|
18
|
-
* <pdb-browser-tree-node>
|
|
19
|
-
*/
|
|
20
|
-
export class BrowserTreeNodeComponent {
|
|
21
|
-
/**
|
|
22
|
-
* The node to display.
|
|
23
|
-
*/
|
|
24
|
-
get node() {
|
|
25
|
-
return this._node;
|
|
26
|
-
}
|
|
27
|
-
set node(value) {
|
|
28
|
-
if (this._node === value) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
this._node = value;
|
|
32
|
-
}
|
|
33
|
-
constructor() {
|
|
34
|
-
/**
|
|
35
|
-
* The indent size for the node's children.
|
|
36
|
-
*/
|
|
37
|
-
this.indentSize = 30;
|
|
38
|
-
this.toggleExpandedRequest = new EventEmitter();
|
|
39
|
-
this.changePageRequest = new EventEmitter();
|
|
40
|
-
this.editNodeFilterRequest = new EventEmitter();
|
|
41
|
-
}
|
|
42
|
-
onToggleExpanded() {
|
|
43
|
-
if (!this._node) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
this.toggleExpandedRequest.emit(this._node);
|
|
47
|
-
}
|
|
48
|
-
onPagingChange(node, paging) {
|
|
49
|
-
this.changePageRequest.emit({
|
|
50
|
-
node,
|
|
51
|
-
paging,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
onEditFilter() {
|
|
55
|
-
if (this._node) {
|
|
56
|
-
this.editNodeFilterRequest.emit(this._node);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BrowserTreeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: BrowserTreeNodeComponent, selector: "pdb-browser-tree-node", inputs: { node: "node", paging: "paging", debug: "debug", hideLabel: "hideLabel", hideLoc: "hideLoc", hidePaging: "hidePaging", hideFilter: "hideFilter", indentSize: "indentSize" }, outputs: { toggleExpandedRequest: "toggleExpandedRequest", changePageRequest: "changePageRequest", editNodeFilterRequest: "editNodeFilterRequest" }, ngImport: i0, template: "@if (node) {\n<div id=\"node\" [style.margin-left.px]=\"(node.y - 1) * indentSize\">\n <!-- pager -->\n @if ($any(node).expanded && paging && paging.pageCount > 1) {\n <div id=\"pager\" [style.display]=\"hidePaging ? 'inherit' : 'block'\">\n <pdb-compact-pager\n [paging]=\"paging\"\n (pagingChange)=\"onPagingChange($any(node), $event)\"\n />\n <pdb-range-view\n [width]=\"250\"\n [domain]=\"[0, paging.pageCount]\"\n [range]=\"[paging.pageNumber - 1, paging.pageNumber]\"\n />\n </div>\n }\n <!-- node -->\n <div class=\"form-row\">\n <!-- expand/collapse button -->\n <button\n type=\"button\"\n mat-icon-button\n [matTooltip]=\"$any(node).expanded ? 'Collapse' : 'Expand'\"\n i18n-matTooltip\n [disabled]=\"node.hasChildren === false\"\n (click)=\"onToggleExpanded()\"\n >\n <mat-icon class=\"mat-primary\" i18n>{{\n node.hasChildren === true || node.hasChildren === undefined\n ? $any(node).expanded\n ? \"expand_less\"\n : \"expand_more\"\n : \"stop\"\n }}</mat-icon>\n </button>\n\n <!-- tag -->\n @if (!hideLabel) {\n <span\n class=\"tag\"\n [ngStyle]=\"{\n 'background-color': (node.tag | stringToColor),\n color: node.tag | stringToColor | colorToContrast\n }\"\n >{{ node.tag }}</span\n >\n\n <!-- loc and label -->\n @if (!hideLoc) {\n <span class=\"loc\">{{ node.y }}.{{ node.x }}</span> - }\n {{ node.label }}\n }\n\n <!-- PROJECTED NODE -->\n <ng-content></ng-content>\n\n <!-- debug -->\n @if (debug) {\n <span class=\"debug\"\n >#{{ node.id }}\n <span\n >| {{ $any(node).paging.pageNumber }}/{{\n $any(node).paging.pageCount\n }}\n ({{ $any(node).paging.total }})</span\n ></span\n >\n }\n\n <!-- filter -->\n @if (!hideFilter){ @if (!$any(node).filter && node.y) {\n <div class=\"muted\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Add filter\"\n i18n-matTooltip\n (click)=\"onEditFilter()\"\n >\n <mat-icon>filter_list</mat-icon>\n </button>\n </div>\n } @if ($any(node).filter && node.y) {\n <div class=\"muted\">\n <button type=\"button\" mat-icon-button (click)=\"onEditFilter()\">\n <mat-icon [matBadge]=\"$any(node).filter ? 'F' : ''\"\n >filter_alt</mat-icon\n >\n </button>\n </div>\n } }\n </div>\n</div>\n}\n", styles: [".form-row{display:flex;gap:8px;align-items:center}.form-row *{flex:0 0 auto}.form-row span{flex:0 1 auto;white-space:normal}#node #pager{display:none}#node:hover #pager{display:block}#node{margin-bottom:4px;padding:4px 6px;border:1px solid #98a8d4;border-radius:6px}#node:hover{background-color:#d6dee9}span.loc{font-size:.85em;color:#666;vertical-align:middle}span.tag{border:1px solid #aaa;border-radius:4px;padding:0 4px}fieldset{border:1px solid silver;border-radius:6px;padding:4px 6px;margin:4px 0}legend{color:silver}.muted{opacity:.3}.muted:hover{opacity:1}.debug{font-size:.85em;color:#9c3d3e}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i6.CompactPagerComponent, selector: "pdb-compact-pager", inputs: ["paging"], outputs: ["pagingChange"] }, { kind: "component", type: i7.RangeViewComponent, selector: "pdb-range-view", inputs: ["domain", "range", "width", "height"] }, { kind: "pipe", type: i8.ColorToContrastPipe, name: "colorToContrast" }, { kind: "pipe", type: i8.StringToColorPipe, name: "stringToColor" }] }); }
|
|
61
|
-
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BrowserTreeNodeComponent, decorators: [{
|
|
63
|
-
type: Component,
|
|
64
|
-
args: [{ selector: 'pdb-browser-tree-node', template: "@if (node) {\n<div id=\"node\" [style.margin-left.px]=\"(node.y - 1) * indentSize\">\n <!-- pager -->\n @if ($any(node).expanded && paging && paging.pageCount > 1) {\n <div id=\"pager\" [style.display]=\"hidePaging ? 'inherit' : 'block'\">\n <pdb-compact-pager\n [paging]=\"paging\"\n (pagingChange)=\"onPagingChange($any(node), $event)\"\n />\n <pdb-range-view\n [width]=\"250\"\n [domain]=\"[0, paging.pageCount]\"\n [range]=\"[paging.pageNumber - 1, paging.pageNumber]\"\n />\n </div>\n }\n <!-- node -->\n <div class=\"form-row\">\n <!-- expand/collapse button -->\n <button\n type=\"button\"\n mat-icon-button\n [matTooltip]=\"$any(node).expanded ? 'Collapse' : 'Expand'\"\n i18n-matTooltip\n [disabled]=\"node.hasChildren === false\"\n (click)=\"onToggleExpanded()\"\n >\n <mat-icon class=\"mat-primary\" i18n>{{\n node.hasChildren === true || node.hasChildren === undefined\n ? $any(node).expanded\n ? \"expand_less\"\n : \"expand_more\"\n : \"stop\"\n }}</mat-icon>\n </button>\n\n <!-- tag -->\n @if (!hideLabel) {\n <span\n class=\"tag\"\n [ngStyle]=\"{\n 'background-color': (node.tag | stringToColor),\n color: node.tag | stringToColor | colorToContrast\n }\"\n >{{ node.tag }}</span\n >\n\n <!-- loc and label -->\n @if (!hideLoc) {\n <span class=\"loc\">{{ node.y }}.{{ node.x }}</span> - }\n {{ node.label }}\n }\n\n <!-- PROJECTED NODE -->\n <ng-content></ng-content>\n\n <!-- debug -->\n @if (debug) {\n <span class=\"debug\"\n >#{{ node.id }}\n <span\n >| {{ $any(node).paging.pageNumber }}/{{\n $any(node).paging.pageCount\n }}\n ({{ $any(node).paging.total }})</span\n ></span\n >\n }\n\n <!-- filter -->\n @if (!hideFilter){ @if (!$any(node).filter && node.y) {\n <div class=\"muted\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Add filter\"\n i18n-matTooltip\n (click)=\"onEditFilter()\"\n >\n <mat-icon>filter_list</mat-icon>\n </button>\n </div>\n } @if ($any(node).filter && node.y) {\n <div class=\"muted\">\n <button type=\"button\" mat-icon-button (click)=\"onEditFilter()\">\n <mat-icon [matBadge]=\"$any(node).filter ? 'F' : ''\"\n >filter_alt</mat-icon\n >\n </button>\n </div>\n } }\n </div>\n</div>\n}\n", styles: [".form-row{display:flex;gap:8px;align-items:center}.form-row *{flex:0 0 auto}.form-row span{flex:0 1 auto;white-space:normal}#node #pager{display:none}#node:hover #pager{display:block}#node{margin-bottom:4px;padding:4px 6px;border:1px solid #98a8d4;border-radius:6px}#node:hover{background-color:#d6dee9}span.loc{font-size:.85em;color:#666;vertical-align:middle}span.tag{border:1px solid #aaa;border-radius:4px;padding:0 4px}fieldset{border:1px solid silver;border-radius:6px;padding:4px 6px;margin:4px 0}legend{color:silver}.muted{opacity:.3}.muted:hover{opacity:1}.debug{font-size:.85em;color:#9c3d3e}\n"] }]
|
|
65
|
-
}], ctorParameters: () => [], propDecorators: { node: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}], paging: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], debug: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}], hideLabel: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], hideLoc: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], hidePaging: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], hideFilter: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], indentSize: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], toggleExpandedRequest: [{
|
|
82
|
-
type: Output
|
|
83
|
-
}], changePageRequest: [{
|
|
84
|
-
type: Output
|
|
85
|
-
}], editNodeFilterRequest: [{
|
|
86
|
-
type: Output
|
|
87
|
-
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvYnJvd3Nlci10cmVlLW5vZGUvYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvYnJvd3Nlci10cmVlLW5vZGUvYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVl2RTs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFHbkM7O09BRUc7SUFDSCxJQUNXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsSUFBSSxDQUFDLEtBQTRDO1FBQzFELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFpRUQ7UUFyQkE7O1dBRUc7UUFFSSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBa0JyQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQy9ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztJQUN0RSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUEyQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUF3QixFQUFFLE1BQWtCO1FBQ2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSTtZQUNKLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDOzhHQXpHVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qix3WUMxQnJDLDYrRUE4RkE7OzJGRHBFYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCO3dEQVd0QixJQUFJO3NCQURkLEtBQUs7Z0JBZ0JOLE1BQU07c0JBREwsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBYUMsU0FBUztzQkFEZixLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBT0EsaUJBQWlCO3NCQUR2QixNQUFNO2dCQUlBLHFCQUFxQjtzQkFEM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBhZ2VkVHJlZU5vZGUsIFBhZ2luZ0luZm8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYWdlZC10cmVlLnN0b3JlJztcblxuLyoqXG4gKiBBIHJlcXVlc3QgdG8gY2hhbmdlIHRoZSBwYWdlIG51bWJlciBvZiBhIG5vZGUncyBjaGlsZHJlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlQ2hhbmdlUmVxdWVzdCB7XG4gIG5vZGU6IFBhZ2VkVHJlZU5vZGU8YW55PjtcbiAgcGFnaW5nOiBQYWdpbmdJbmZvO1xufVxuXG4vKipcbiAqIEJyb3dzZXIgdHJlZSBub2RlIGNvbXBvbmVudCB2aWV3LiBUaGlzIHdyYXBzIHNvbWUgSFRNTCBjb250ZW50IHByb3ZpZGluZ1xuICogYSB0b2dnbGUgYnV0dG9uIHRvIGV4cGFuZC9jb2xsYXBzZSB0aGUgbm9kZSwgYSBwYWdpbmcgY29udHJvbCBmb3IgdGhlXG4gKiBub2RlJ3MgY2hpbGRyZW4sIGFuZCBhIGJ1dHRvbiB0byBlZGl0IHRoZSBub2RlJ3MgZmlsdGVyLiBZb3Ugc2hvdWxkIHRoZW5cbiAqIHByb3ZpZGUgdGhlIEhUTUwgY29udGVudCB0byBkaXNwbGF5IHRoZSBub2RlJ3MgZGF0YSBpbnNpZGUgdGhpcyBjb21wb25lbnQsIGUuZy5cbiAqIDxwZGItYnJvd3Nlci10cmVlLW5vZGUgW25vZGVdPVwibm9kZVwiPlxuICogICA8eW91ci1ub2RlLXZpZXcgW25vZGVdPVwibm9kZVwiIC8+XG4gKiA8cGRiLWJyb3dzZXItdHJlZS1ub2RlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZGItYnJvd3Nlci10cmVlLW5vZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icm93c2VyLXRyZWUtbm9kZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJyb3dzZXJUcmVlTm9kZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgX25vZGU6IFBhZ2VkVHJlZU5vZGU8YW55PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBub2RlIHRvIGRpc3BsYXkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG5vZGUoKTogUGFnZWRUcmVlTm9kZTxhbnk+IHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH1cblxuICBwdWJsaWMgc2V0IG5vZGUodmFsdWU6IFBhZ2VkVHJlZU5vZGU8YW55PiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbm9kZSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbm9kZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwYWdpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBub2RlJ3MgY2hpbGRyZW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBwYWdpbmc/OiBQYWdpbmdJbmZvO1xuXG4gIC8qKlxuICAgKiBUcnVlIHRvIHNob3cgZGVidWcgaW5mb3JtYXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVidWc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHRvIGhpZGUgdGhlIG5vZGUncyBsb2MgYW5kIGxhYmVsLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0b1xuICAgKiBwcm92aWRlIHlvdXIgb3duIHZpZXcgZm9yIHRoZSBub2RlLCBiZXR3ZWVuIHRoZSBleHBhbnNpb24gdG9nZ2xlIGFuZFxuICAgKiB0aGUgZmlsdGVyIGVkaXQgYnV0dG9uLiBJbiB0aGlzIGNhc2UsIGluIHlvdXIgY29uc3VtZXIgdGVtcGxhdGUgcHJvdmlkZVxuICAgKiB5b3VyIG93biB2aWV3IGFzIHRoZSBjb250ZW50IG9mIHRoaXMgY29tcG9uZW50LiBJZiBpbnN0ZWFkIHlvdSBhcmUgZmluZVxuICAgKiB3aXRoIHRoZSBkZWZhdWx0IGxvYyBhbmQgbGFiZWwsIGFuZCBqdXN0IHdhbnQgdG8gYWRkIG1vcmUgZGF0YSB0b1xuICAgKiB0aGUgdmlldywgdGhlbiB5b3UgY2FuIGp1c3QgYWRkIHlvdXIgb3duIGNvbnRlbnQgdG8gdGhpcyBjb21wb25lbnQnc1xuICAgKiB0ZW1wbGF0ZSwgd2l0aG91dCBzZXR0aW5nIHRoaXMgcHJvcGVydHkgdG8gdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRlTGFiZWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHRvIGhpZGUgdGhlIG5vZGUncyBsb2NhdGlvbiAoeSBhbmQgeCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZUxvYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRydWUgdG8gaGlkZSB0aGUgbm9kZSdzIHBhZ2luZyBjb250cm9sIHVubGVzcyBob3ZlcmVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGVQYWdpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHRvIGhpZGUgdGhlIG5vZGUncyBmaWx0ZXIgZWRpdCBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZUZpbHRlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRlbnQgc2l6ZSBmb3IgdGhlIG5vZGUncyBjaGlsZHJlbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRlbnRTaXplID0gMzA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gdG9nZ2xlIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiB0aGUgbm9kZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdG9nZ2xlRXhwYW5kZWRSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8UGFnZWRUcmVlTm9kZTxhbnk+PjtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdXNlciB3YW50cyB0byBjaGFuZ2UgdGhlIHBhZ2UgbnVtYmVyIG9mIHRoZSBub2RlJ3MgY2hpbGRyZW4uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNoYW5nZVBhZ2VSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZVJlcXVlc3Q+O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZWRpdE5vZGVGaWx0ZXJSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8UGFnZWRUcmVlTm9kZTxhbnk+PjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZWRUcmVlTm9kZTxhbnk+PigpO1xuICAgIHRoaXMuY2hhbmdlUGFnZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VSZXF1ZXN0PigpO1xuICAgIHRoaXMuZWRpdE5vZGVGaWx0ZXJSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlZFRyZWVOb2RlPGFueT4+KCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2dnbGVFeHBhbmRlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX25vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVFeHBhbmRlZFJlcXVlc3QuZW1pdCh0aGlzLl9ub2RlIGFzIFBhZ2VkVHJlZU5vZGU8YW55Pik7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmdDaGFuZ2Uobm9kZTogUGFnZWRUcmVlTm9kZTxhbnk+LCBwYWdpbmc6IFBhZ2luZ0luZm8pOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZVBhZ2VSZXF1ZXN0LmVtaXQoe1xuICAgICAgbm9kZSxcbiAgICAgIHBhZ2luZyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX25vZGUpIHtcbiAgICAgIHRoaXMuZWRpdE5vZGVGaWx0ZXJSZXF1ZXN0LmVtaXQodGhpcy5fbm9kZSk7XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKG5vZGUpIHtcbjxkaXYgaWQ9XCJub2RlXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cIihub2RlLnkgLSAxKSAqIGluZGVudFNpemVcIj5cbiAgPCEtLSBwYWdlciAtLT5cbiAgQGlmICgkYW55KG5vZGUpLmV4cGFuZGVkICYmIHBhZ2luZyAmJiBwYWdpbmcucGFnZUNvdW50ID4gMSkge1xuICA8ZGl2IGlkPVwicGFnZXJcIiBbc3R5bGUuZGlzcGxheV09XCJoaWRlUGFnaW5nID8gJ2luaGVyaXQnIDogJ2Jsb2NrJ1wiPlxuICAgIDxwZGItY29tcGFjdC1wYWdlclxuICAgICAgW3BhZ2luZ109XCJwYWdpbmdcIlxuICAgICAgKHBhZ2luZ0NoYW5nZSk9XCJvblBhZ2luZ0NoYW5nZSgkYW55KG5vZGUpLCAkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxwZGItcmFuZ2Utdmlld1xuICAgICAgW3dpZHRoXT1cIjI1MFwiXG4gICAgICBbZG9tYWluXT1cIlswLCBwYWdpbmcucGFnZUNvdW50XVwiXG4gICAgICBbcmFuZ2VdPVwiW3BhZ2luZy5wYWdlTnVtYmVyIC0gMSwgcGFnaW5nLnBhZ2VOdW1iZXJdXCJcbiAgICAvPlxuICA8L2Rpdj5cbiAgfVxuICA8IS0tIG5vZGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDwhLS0gZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW21hdFRvb2x0aXBdPVwiJGFueShub2RlKS5leHBhbmRlZCA/ICdDb2xsYXBzZScgOiAnRXhwYW5kJ1wiXG4gICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgIFtkaXNhYmxlZF09XCJub2RlLmhhc0NoaWxkcmVuID09PSBmYWxzZVwiXG4gICAgICAoY2xpY2spPVwib25Ub2dnbGVFeHBhbmRlZCgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtcHJpbWFyeVwiIGkxOG4+e3tcbiAgICAgICAgbm9kZS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSB8fCBub2RlLmhhc0NoaWxkcmVuID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/ICRhbnkobm9kZSkuZXhwYW5kZWRcbiAgICAgICAgICAgID8gXCJleHBhbmRfbGVzc1wiXG4gICAgICAgICAgICA6IFwiZXhwYW5kX21vcmVcIlxuICAgICAgICAgIDogXCJzdG9wXCJcbiAgICAgIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDwhLS0gdGFnIC0tPlxuICAgIEBpZiAoIWhpZGVMYWJlbCkge1xuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cInRhZ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogKG5vZGUudGFnIHwgc3RyaW5nVG9Db2xvciksXG4gICAgICAgIGNvbG9yOiBub2RlLnRhZyB8IHN0cmluZ1RvQ29sb3IgfCBjb2xvclRvQ29udHJhc3RcbiAgICAgIH1cIlxuICAgICAgPnt7IG5vZGUudGFnIH19PC9zcGFuXG4gICAgPlxuXG4gICAgPCEtLSBsb2MgYW5kIGxhYmVsIC0tPlxuICAgIEBpZiAoIWhpZGVMb2MpIHtcbiAgICA8c3BhbiBjbGFzcz1cImxvY1wiPnt7IG5vZGUueSB9fS57eyBub2RlLnggfX08L3NwYW4+IC0gfVxuICAgIHt7IG5vZGUubGFiZWwgfX1cbiAgICB9XG5cbiAgICA8IS0tIFBST0pFQ1RFRCBOT0RFIC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDwhLS0gZGVidWcgLS0+XG4gICAgQGlmIChkZWJ1Zykge1xuICAgIDxzcGFuIGNsYXNzPVwiZGVidWdcIlxuICAgICAgPiN7eyBub2RlLmlkIH19XG4gICAgICA8c3BhblxuICAgICAgICA+fCB7eyAkYW55KG5vZGUpLnBhZ2luZy5wYWdlTnVtYmVyIH19L3t7XG4gICAgICAgICAgJGFueShub2RlKS5wYWdpbmcucGFnZUNvdW50XG4gICAgICAgIH19XG4gICAgICAgICh7eyAkYW55KG5vZGUpLnBhZ2luZy50b3RhbCB9fSk8L3NwYW5cbiAgICAgID48L3NwYW5cbiAgICA+XG4gICAgfVxuXG4gICAgPCEtLSBmaWx0ZXIgLS0+XG4gICAgQGlmICghaGlkZUZpbHRlcil7IEBpZiAoISRhbnkobm9kZSkuZmlsdGVyICYmIG5vZGUueSkge1xuICAgIDxkaXYgY2xhc3M9XCJtdXRlZFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIG1hdFRvb2x0aXA9XCJBZGQgZmlsdGVyXCJcbiAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgIChjbGljayk9XCJvbkVkaXRGaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICB9IEBpZiAoJGFueShub2RlKS5maWx0ZXIgJiYgbm9kZS55KSB7XG4gICAgPGRpdiBjbGFzcz1cIm11dGVkXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uRWRpdEZpbHRlcigpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBbbWF0QmFkZ2VdPVwiJGFueShub2RlKS5maWx0ZXIgPyAnRicgOiAnJ1wiXG4gICAgICAgICAgPmZpbHRlcl9hbHQ8L21hdC1pY29uXG4gICAgICAgID5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIH0gfVxuICA8L2Rpdj5cbjwvZGl2PlxufVxuIl19
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/material/button";
|
|
4
|
-
import * as i2 from "@angular/material/icon";
|
|
5
|
-
export class CompactPagerComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.paging = {
|
|
8
|
-
pageNumber: 0,
|
|
9
|
-
pageCount: 0,
|
|
10
|
-
total: 0,
|
|
11
|
-
};
|
|
12
|
-
this.pagingChange = new EventEmitter();
|
|
13
|
-
}
|
|
14
|
-
onFirst() {
|
|
15
|
-
this.paging = { ...this.paging, pageNumber: 1 };
|
|
16
|
-
this.pagingChange.emit(this.paging);
|
|
17
|
-
}
|
|
18
|
-
onPrevious() {
|
|
19
|
-
if (this.paging.pageNumber > 1) {
|
|
20
|
-
this.paging = { ...this.paging, pageNumber: this.paging.pageNumber - 1 };
|
|
21
|
-
this.pagingChange.emit(this.paging);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
onNext() {
|
|
25
|
-
if (this.paging.pageNumber < this.paging.pageCount) {
|
|
26
|
-
this.paging = { ...this.paging, pageNumber: this.paging.pageNumber + 1 };
|
|
27
|
-
this.pagingChange.emit(this.paging);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
onLast() {
|
|
31
|
-
if (this.paging.pageNumber < this.paging.pageCount) {
|
|
32
|
-
this.paging = { ...this.paging, pageNumber: this.paging.pageCount };
|
|
33
|
-
this.pagingChange.emit(this.paging);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CompactPagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CompactPagerComponent, selector: "pdb-compact-pager", inputs: { paging: "paging" }, outputs: { pagingChange: "pagingChange" }, ngImport: i0, template: "@if (paging.pageCount) {\n <div class=\"form-row\">\n <span id=\"pages\">{{ paging.pageNumber }}/{{ paging.pageCount }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onFirst()\"\n [disabled]=\"paging.pageNumber < 2\"\n >\n <mat-icon>first_page</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onPrevious()\"\n [disabled]=\"paging.pageNumber < 2\"\n >\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onNext()\"\n [disabled]=\"paging.pageNumber === paging.pageCount\"\n >\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onLast()\"\n [disabled]=\"paging.pageNumber === paging.pageCount\"\n >\n <mat-icon>last_page</mat-icon>\n </button>\n <span id=\"total\">{{ paging.total }} </span>\n </div>\n}\n", styles: ["#pages,#total{color:silver}.form-row{display:flex;gap:2px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CompactPagerComponent, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{ selector: 'pdb-compact-pager', template: "@if (paging.pageCount) {\n <div class=\"form-row\">\n <span id=\"pages\">{{ paging.pageNumber }}/{{ paging.pageCount }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onFirst()\"\n [disabled]=\"paging.pageNumber < 2\"\n >\n <mat-icon>first_page</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onPrevious()\"\n [disabled]=\"paging.pageNumber < 2\"\n >\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onNext()\"\n [disabled]=\"paging.pageNumber === paging.pageCount\"\n >\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onLast()\"\n [disabled]=\"paging.pageNumber === paging.pageCount\"\n >\n <mat-icon>last_page</mat-icon>\n </button>\n <span id=\"total\">{{ paging.total }} </span>\n </div>\n}\n", styles: ["#pages,#total{color:silver}.form-row{display:flex;gap:2px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
|
|
42
|
-
}], ctorParameters: () => [], propDecorators: { paging: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], pagingChange: [{
|
|
45
|
-
type: Output
|
|
46
|
-
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFjdC1wYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9wYWdlZC1kYXRhLWJyb3dzZXJzL3NyYy9saWIvY29tcG9uZW50cy9jb21wYWN0LXBhZ2VyL2NvbXBhY3QtcGFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvY29tcGFjdC1wYWdlci9jb21wYWN0LXBhZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdkUsTUFBTSxPQUFPLHFCQUFxQjtJQU9oQztRQUNFLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBQ3JELENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7OEdBeENVLHFCQUFxQjtrR0FBckIscUJBQXFCLGtJQ1RsQyw0L0JBc0NBOzsyRkQ3QmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjt3REFNdEIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQYWdpbmdJbmZvIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGFnZWQtdHJlZS5zdG9yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkYi1jb21wYWN0LXBhZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBhY3QtcGFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wYWN0LXBhZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvbXBhY3RQYWdlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdpbmc6IFBhZ2luZ0luZm87XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwYWdpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBhZ2luZyA9IHtcbiAgICAgIHBhZ2VOdW1iZXI6IDAsXG4gICAgICBwYWdlQ291bnQ6IDAsXG4gICAgICB0b3RhbDogMCxcbiAgICB9O1xuICAgIHRoaXMucGFnaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPigpO1xuICB9XG5cbiAgcHVibGljIG9uRmlyc3QoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmcgPSB7IC4uLnRoaXMucGFnaW5nLCBwYWdlTnVtYmVyOiAxIH07XG4gICAgdGhpcy5wYWdpbmdDaGFuZ2UuZW1pdCh0aGlzLnBhZ2luZyk7XG4gIH1cblxuICBwdWJsaWMgb25QcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdpbmcucGFnZU51bWJlciA+IDEpIHtcbiAgICAgIHRoaXMucGFnaW5nID0geyAuLi50aGlzLnBhZ2luZywgcGFnZU51bWJlcjogdGhpcy5wYWdpbmcucGFnZU51bWJlciAtIDEgfTtcbiAgICAgIHRoaXMucGFnaW5nQ2hhbmdlLmVtaXQodGhpcy5wYWdpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5nLnBhZ2VOdW1iZXIgPCB0aGlzLnBhZ2luZy5wYWdlQ291bnQpIHtcbiAgICAgIHRoaXMucGFnaW5nID0geyAuLi50aGlzLnBhZ2luZywgcGFnZU51bWJlcjogdGhpcy5wYWdpbmcucGFnZU51bWJlciArIDEgfTtcbiAgICAgIHRoaXMucGFnaW5nQ2hhbmdlLmVtaXQodGhpcy5wYWdpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxhc3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5nLnBhZ2VOdW1iZXIgPCB0aGlzLnBhZ2luZy5wYWdlQ291bnQpIHtcbiAgICAgIHRoaXMucGFnaW5nID0geyAuLi50aGlzLnBhZ2luZywgcGFnZU51bWJlcjogdGhpcy5wYWdpbmcucGFnZUNvdW50IH07XG4gICAgICB0aGlzLnBhZ2luZ0NoYW5nZS5lbWl0KHRoaXMucGFnaW5nKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAocGFnaW5nLnBhZ2VDb3VudCkge1xuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8c3BhbiBpZD1cInBhZ2VzXCI+e3sgcGFnaW5nLnBhZ2VOdW1iZXIgfX0ve3sgcGFnaW5nLnBhZ2VDb3VudCB9fTwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cIm9uRmlyc3QoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnaW5nLnBhZ2VOdW1iZXIgPCAyXCJcbiAgICAgID5cbiAgICAgIDxtYXQtaWNvbj5maXJzdF9wYWdlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cIm9uUHJldmlvdXMoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnaW5nLnBhZ2VOdW1iZXIgPCAyXCJcbiAgICAgID5cbiAgICAgIDxtYXQtaWNvbj5uYXZpZ2F0ZV9iZWZvcmU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAoY2xpY2spPVwib25OZXh0KClcIlxuICAgICAgW2Rpc2FibGVkXT1cInBhZ2luZy5wYWdlTnVtYmVyID09PSBwYWdpbmcucGFnZUNvdW50XCJcbiAgICAgID5cbiAgICAgIDxtYXQtaWNvbj5uYXZpZ2F0ZV9uZXh0PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cIm9uTGFzdCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmcucGFnZU51bWJlciA9PT0gcGFnaW5nLnBhZ2VDb3VudFwiXG4gICAgICA+XG4gICAgICA8bWF0LWljb24+bGFzdF9wYWdlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8c3BhbiBpZD1cInRvdGFsXCI+e3sgcGFnaW5nLnRvdGFsIH19IDwvc3Bhbj5cbiAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class RangeViewComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.domain = [0, 100];
|
|
6
|
-
this.range = [0, 100];
|
|
7
|
-
this.width = 100;
|
|
8
|
-
this.height = 5;
|
|
9
|
-
this.scaledRange = [];
|
|
10
|
-
}
|
|
11
|
-
ngOnChanges() {
|
|
12
|
-
const domainWidth = this.domain[1] - this.domain[0];
|
|
13
|
-
const rangeWidth = this.range[1] - this.range[0];
|
|
14
|
-
const rangeStart = this.range[0] - this.domain[0];
|
|
15
|
-
this.scaledRange = [
|
|
16
|
-
(rangeStart / domainWidth) * this.width,
|
|
17
|
-
((rangeStart + rangeWidth) / domainWidth) * this.width,
|
|
18
|
-
];
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RangeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RangeViewComponent, selector: "pdb-range-view", inputs: { domain: "domain", range: "range", width: "width", height: "height" }, usesOnChanges: true, ngImport: i0, template: "<svg [attr.width]=\"width\" [attr.height]=\"height\">\n <rect id=\"rdomain\" [attr.width]=\"width\" [attr.height]=\"height\" />\n <rect\n id=\"rrange\"\n [attr.x]=\"scaledRange[0]\"\n [attr.y]=\"0\"\n [attr.width]=\"scaledRange[1] - scaledRange[0]\"\n [attr.height]=\"height\"\n />\n</svg>\n", styles: ["#rdomain{fill:#d3d3d3;stroke-width:3;stroke:#c1ba9b}#rrange{fill:#91aad3;stroke-width:3}\n"] }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RangeViewComponent, decorators: [{
|
|
24
|
-
type: Component,
|
|
25
|
-
args: [{ selector: 'pdb-range-view', template: "<svg [attr.width]=\"width\" [attr.height]=\"height\">\n <rect id=\"rdomain\" [attr.width]=\"width\" [attr.height]=\"height\" />\n <rect\n id=\"rrange\"\n [attr.x]=\"scaledRange[0]\"\n [attr.y]=\"0\"\n [attr.width]=\"scaledRange[1] - scaledRange[0]\"\n [attr.height]=\"height\"\n />\n</svg>\n", styles: ["#rdomain{fill:#d3d3d3;stroke-width:3;stroke:#c1ba9b}#rrange{fill:#91aad3;stroke-width:3}\n"] }]
|
|
26
|
-
}], ctorParameters: () => [], propDecorators: { domain: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}], range: [{
|
|
29
|
-
type: Input
|
|
30
|
-
}], width: [{
|
|
31
|
-
type: Input
|
|
32
|
-
}], height: [{
|
|
33
|
-
type: Input
|
|
34
|
-
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9wYWdlZC1kYXRhLWJyb3dzZXJzL3NyYy9saWIvY29tcG9uZW50cy9yYW5nZS12aWV3L3JhbmdlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvcmFuZ2Utdmlldy9yYW5nZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQU81RCxNQUFNLE9BQU8sa0JBQWtCO0lBb0I3QjtRQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDdkMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSztTQUN2RCxDQUFDO0lBQ0osQ0FBQzs4R0FyQ1Usa0JBQWtCO2tHQUFsQixrQkFBa0IsMkpDUC9CLHVUQVVBOzsyRkRIYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO3dEQVFWLE1BQU07c0JBQXJCLEtBQUs7Z0JBSVUsS0FBSztzQkFBcEIsS0FBSztnQkFJVSxLQUFLO3NCQUFwQixLQUFLO2dCQUlVLE1BQU07c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRiLXJhbmdlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhbmdlLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFuZ2VWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gb2YgdGhlIHJhbmdlIHZpZXcgKHN0YXJ0LCBsaW1pdCkuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZG9tYWluOiBBcnJheTxudW1iZXI+O1xuICAvKipcbiAgICogVGhlIHJhbmdlIG9mIHRoZSByYW5nZSB2aWV3IChzdGFydCwgbGltaXQpLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHJhbmdlOiBBcnJheTxudW1iZXI+O1xuICAvKipcbiAgICogVGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgd2lkdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBoZWlnaHQ6IG51bWJlcjtcblxuICBwdWJsaWMgc2NhbGVkUmFuZ2U6IEFycmF5PG51bWJlcj47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kb21haW4gPSBbMCwgMTAwXTtcbiAgICB0aGlzLnJhbmdlID0gWzAsIDEwMF07XG4gICAgdGhpcy53aWR0aCA9IDEwMDtcbiAgICB0aGlzLmhlaWdodCA9IDU7XG4gICAgdGhpcy5zY2FsZWRSYW5nZSA9IFtdO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgY29uc3QgZG9tYWluV2lkdGggPSB0aGlzLmRvbWFpblsxXSAtIHRoaXMuZG9tYWluWzBdO1xuICAgIGNvbnN0IHJhbmdlV2lkdGggPSB0aGlzLnJhbmdlWzFdIC0gdGhpcy5yYW5nZVswXTtcbiAgICBjb25zdCByYW5nZVN0YXJ0ID0gdGhpcy5yYW5nZVswXSAtIHRoaXMuZG9tYWluWzBdO1xuXG4gICAgdGhpcy5zY2FsZWRSYW5nZSA9IFtcbiAgICAgIChyYW5nZVN0YXJ0IC8gZG9tYWluV2lkdGgpICogdGhpcy53aWR0aCxcbiAgICAgICgocmFuZ2VTdGFydCArIHJhbmdlV2lkdGgpIC8gZG9tYWluV2lkdGgpICogdGhpcy53aWR0aCxcbiAgICBdO1xuICB9XG59XG4iLCI8c3ZnIFthdHRyLndpZHRoXT1cIndpZHRoXCIgW2F0dHIuaGVpZ2h0XT1cImhlaWdodFwiPlxuICA8cmVjdCBpZD1cInJkb21haW5cIiBbYXR0ci53aWR0aF09XCJ3aWR0aFwiIFthdHRyLmhlaWdodF09XCJoZWlnaHRcIiAvPlxuICA8cmVjdFxuICAgIGlkPVwicnJhbmdlXCJcbiAgICBbYXR0ci54XT1cInNjYWxlZFJhbmdlWzBdXCJcbiAgICBbYXR0ci55XT1cIjBcIlxuICAgIFthdHRyLndpZHRoXT1cInNjYWxlZFJhbmdlWzFdIC0gc2NhbGVkUmFuZ2VbMF1cIlxuICAgIFthdHRyLmhlaWdodF09XCJoZWlnaHRcIlxuICAvPlxuPC9zdmc+XG4iXX0=
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatBadgeModule } from '@angular/material/badge';
|
|
5
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
7
|
-
import { MatDialogModule } from '@angular/material/dialog';
|
|
8
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
10
|
-
import { MatInputModule } from '@angular/material/input';
|
|
11
|
-
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
12
|
-
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
13
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
14
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
15
|
-
import { NgToolsModule } from '@myrmidon/ng-tools';
|
|
16
|
-
import { CompactPagerComponent } from './components/compact-pager/compact-pager.component';
|
|
17
|
-
import { RangeViewComponent } from './components/range-view/range-view.component';
|
|
18
|
-
import { BrowserTreeNodeComponent } from './components/browser-tree-node/browser-tree-node.component';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
export class PagedDataBrowsersModule {
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PagedDataBrowsersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
22
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PagedDataBrowsersModule, declarations: [CompactPagerComponent,
|
|
23
|
-
RangeViewComponent,
|
|
24
|
-
BrowserTreeNodeComponent], imports: [CommonModule,
|
|
25
|
-
ReactiveFormsModule,
|
|
26
|
-
// material
|
|
27
|
-
MatBadgeModule,
|
|
28
|
-
MatButtonModule,
|
|
29
|
-
MatChipsModule,
|
|
30
|
-
MatDialogModule,
|
|
31
|
-
MatFormFieldModule,
|
|
32
|
-
MatIconModule,
|
|
33
|
-
MatInputModule,
|
|
34
|
-
MatPaginatorModule,
|
|
35
|
-
MatProgressBarModule,
|
|
36
|
-
MatSelectModule,
|
|
37
|
-
MatTooltipModule,
|
|
38
|
-
// myrmidon
|
|
39
|
-
NgToolsModule], exports: [CompactPagerComponent,
|
|
40
|
-
RangeViewComponent,
|
|
41
|
-
BrowserTreeNodeComponent] }); }
|
|
42
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PagedDataBrowsersModule, imports: [CommonModule,
|
|
43
|
-
ReactiveFormsModule,
|
|
44
|
-
// material
|
|
45
|
-
MatBadgeModule,
|
|
46
|
-
MatButtonModule,
|
|
47
|
-
MatChipsModule,
|
|
48
|
-
MatDialogModule,
|
|
49
|
-
MatFormFieldModule,
|
|
50
|
-
MatIconModule,
|
|
51
|
-
MatInputModule,
|
|
52
|
-
MatPaginatorModule,
|
|
53
|
-
MatProgressBarModule,
|
|
54
|
-
MatSelectModule,
|
|
55
|
-
MatTooltipModule,
|
|
56
|
-
// myrmidon
|
|
57
|
-
NgToolsModule] }); }
|
|
58
|
-
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PagedDataBrowsersModule, decorators: [{
|
|
60
|
-
type: NgModule,
|
|
61
|
-
args: [{
|
|
62
|
-
declarations: [
|
|
63
|
-
CompactPagerComponent,
|
|
64
|
-
RangeViewComponent,
|
|
65
|
-
BrowserTreeNodeComponent,
|
|
66
|
-
],
|
|
67
|
-
imports: [
|
|
68
|
-
CommonModule,
|
|
69
|
-
ReactiveFormsModule,
|
|
70
|
-
// material
|
|
71
|
-
MatBadgeModule,
|
|
72
|
-
MatButtonModule,
|
|
73
|
-
MatChipsModule,
|
|
74
|
-
MatDialogModule,
|
|
75
|
-
MatFormFieldModule,
|
|
76
|
-
MatIconModule,
|
|
77
|
-
MatInputModule,
|
|
78
|
-
MatPaginatorModule,
|
|
79
|
-
MatProgressBarModule,
|
|
80
|
-
MatSelectModule,
|
|
81
|
-
MatTooltipModule,
|
|
82
|
-
// myrmidon
|
|
83
|
-
NgToolsModule
|
|
84
|
-
],
|
|
85
|
-
exports: [
|
|
86
|
-
CompactPagerComponent,
|
|
87
|
-
RangeViewComponent,
|
|
88
|
-
BrowserTreeNodeComponent,
|
|
89
|
-
],
|
|
90
|
-
}]
|
|
91
|
-
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZWQtZGF0YS1icm93c2Vycy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9wYWdlZC1kYXRhLWJyb3dzZXJzL3NyYy9saWIvcGFnZWQtZGF0YS1icm93c2Vycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7QUFnQ3RHLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLGlCQTVCaEMscUJBQXFCO1lBQ3JCLGtCQUFrQjtZQUNsQix3QkFBd0IsYUFHeEIsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsY0FBYztZQUNkLGVBQWU7WUFDZixjQUFjO1lBQ2QsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYSxhQUdiLHFCQUFxQjtZQUNyQixrQkFBa0I7WUFDbEIsd0JBQXdCOytHQUdmLHVCQUF1QixZQXZCaEMsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsY0FBYztZQUNkLGVBQWU7WUFDZixjQUFjO1lBQ2QsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYTs7MkZBUUosdUJBQXVCO2tCQTlCbkMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHdCQUF3QjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xuXG5pbXBvcnQgeyBDb21wYWN0UGFnZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29tcGFjdC1wYWdlci9jb21wYWN0LXBhZ2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmFuZ2Utdmlldy9yYW5nZS12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcm93c2VyVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYnJvd3Nlci10cmVlLW5vZGUvYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ29tcGFjdFBhZ2VyQ29tcG9uZW50LFxuICAgIFJhbmdlVmlld0NvbXBvbmVudCxcbiAgICBCcm93c2VyVHJlZU5vZGVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAvLyBtYXRlcmlhbFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIC8vIG15cm1pZG9uXG4gICAgTmdUb29sc01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29tcGFjdFBhZ2VyQ29tcG9uZW50LFxuICAgIFJhbmdlVmlld0NvbXBvbmVudCxcbiAgICBCcm93c2VyVHJlZU5vZGVDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VkRGF0YUJyb3dzZXJzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Least Recently Used cache that can be used to store any type of object.
|
|
3
|
-
* The cache works in two modes: considering the size of the objects or not.
|
|
4
|
-
* If the size is considered, the cache will have a maximum size and will
|
|
5
|
-
* remove the oldest objects when the maximum size is reached. Note that
|
|
6
|
-
* the size is only roughly estimated. This avoids removing too many
|
|
7
|
-
* entries from the cache when the maximum is reached.
|
|
8
|
-
* If the size is not considered, the cache will have a maximum number of
|
|
9
|
-
* objects and will remove the oldest objects when the maximum number is
|
|
10
|
-
* reached.
|
|
11
|
-
*/
|
|
12
|
-
export class LRUCache {
|
|
13
|
-
/**
|
|
14
|
-
* Creates a new cache.
|
|
15
|
-
* @param maxSize The maximum size of the cache. This is either
|
|
16
|
-
* the maximum number of items in the cache (when considerSize
|
|
17
|
-
* is false) or the maximum total size of all items in the
|
|
18
|
-
* cache in bytes (when considerSize is true).
|
|
19
|
-
* @param considerSize True if the size of the objects should be
|
|
20
|
-
* considered.
|
|
21
|
-
*/
|
|
22
|
-
constructor(maxSize, considerSize = false) {
|
|
23
|
-
this._maxSize = maxSize;
|
|
24
|
-
this._totalSize = 0;
|
|
25
|
-
this._considerSize = considerSize;
|
|
26
|
-
this._cache = new Map();
|
|
27
|
-
this._sizes = new Map();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get an item from the cache.
|
|
31
|
-
* @param key The key of the item to get.
|
|
32
|
-
* @returns The item or undefined if the item is not in the cache.
|
|
33
|
-
*/
|
|
34
|
-
get(key) {
|
|
35
|
-
let item = this._cache.get(key);
|
|
36
|
-
if (item) {
|
|
37
|
-
this._cache.delete(key);
|
|
38
|
-
this._cache.set(key, item);
|
|
39
|
-
}
|
|
40
|
-
return item;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Check if an item is in the cache.
|
|
44
|
-
* @param key The key of the item to check.
|
|
45
|
-
* @returns True if the item is in cache.
|
|
46
|
-
*/
|
|
47
|
-
has(key) {
|
|
48
|
-
return this._cache.has(key);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Put an item in the cache.
|
|
52
|
-
* @param key The key of the item to put.
|
|
53
|
-
* @param item The item to put.
|
|
54
|
-
* @param size The estimated size of the item in bytes.
|
|
55
|
-
* This must be calculated by the caller but only when
|
|
56
|
-
* considerSize is true.
|
|
57
|
-
*/
|
|
58
|
-
put(key, item, size) {
|
|
59
|
-
this._cache.delete(key);
|
|
60
|
-
this._cache.set(key, item);
|
|
61
|
-
this._sizes.set(key, size);
|
|
62
|
-
if (this._considerSize) {
|
|
63
|
-
this._totalSize += size;
|
|
64
|
-
while (this._totalSize > this._maxSize) {
|
|
65
|
-
const oldestKey = this._cache.keys().next().value;
|
|
66
|
-
let oldestSize = this._sizes.get(oldestKey);
|
|
67
|
-
if (oldestSize) {
|
|
68
|
-
this._totalSize -= oldestSize;
|
|
69
|
-
}
|
|
70
|
-
this._cache.delete(oldestKey);
|
|
71
|
-
this._sizes.delete(oldestKey);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
while (this._cache.size > this._maxSize) {
|
|
76
|
-
const oldestKey = this._cache.keys().next().value;
|
|
77
|
-
this._cache.delete(oldestKey);
|
|
78
|
-
this._sizes.delete(oldestKey);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Clear the cache.
|
|
84
|
-
*/
|
|
85
|
-
clear() {
|
|
86
|
-
this._cache.clear();
|
|
87
|
-
this._sizes.clear();
|
|
88
|
-
this._totalSize = 0;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Estimate the size of an object in bytes.
|
|
92
|
-
* @param obj The object to calculate the size of.
|
|
93
|
-
* @returns The estimated size of the object in bytes.
|
|
94
|
-
*/
|
|
95
|
-
static calculateObjectSize(obj) {
|
|
96
|
-
if (!obj) {
|
|
97
|
-
return 0;
|
|
98
|
-
}
|
|
99
|
-
let totalSize = 0;
|
|
100
|
-
let keys = Object.keys(obj);
|
|
101
|
-
for (let key of keys) {
|
|
102
|
-
let value = obj[key];
|
|
103
|
-
if (typeof value === 'string') {
|
|
104
|
-
totalSize += value.length * 2;
|
|
105
|
-
}
|
|
106
|
-
else if (typeof value === 'number') {
|
|
107
|
-
totalSize += 8;
|
|
108
|
-
}
|
|
109
|
-
else if (typeof value === 'boolean') {
|
|
110
|
-
totalSize += 4;
|
|
111
|
-
}
|
|
112
|
-
else if (typeof value === 'object' && value !== null) {
|
|
113
|
-
totalSize += this.calculateObjectSize(value);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return totalSize;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHJ1LWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL3NlcnZpY2VzL2xydS1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFPbkI7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLE9BQWUsRUFBRSxlQUF3QixLQUFLO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksR0FBRyxDQUFDLEdBQVc7UUFDcEIsSUFBSSxJQUFJLEdBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFPLEVBQUUsSUFBWTtRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVE7UUFDeEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsU0FBUyxJQUFJLENBQUMsQ0FBQztZQUNqQixDQUFDO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsSUFBSSxDQUFDLENBQUM7WUFDakIsQ0FBQztpQkFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELFNBQVMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQSBMZWFzdCBSZWNlbnRseSBVc2VkIGNhY2hlIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYW55IHR5cGUgb2Ygb2JqZWN0LlxyXG4gKiBUaGUgY2FjaGUgd29ya3MgaW4gdHdvIG1vZGVzOiBjb25zaWRlcmluZyB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0cyBvciBub3QuXHJcbiAqIElmIHRoZSBzaXplIGlzIGNvbnNpZGVyZWQsIHRoZSBjYWNoZSB3aWxsIGhhdmUgYSBtYXhpbXVtIHNpemUgYW5kIHdpbGxcclxuICogcmVtb3ZlIHRoZSBvbGRlc3Qgb2JqZWN0cyB3aGVuIHRoZSBtYXhpbXVtIHNpemUgaXMgcmVhY2hlZC4gTm90ZSB0aGF0XHJcbiAqIHRoZSBzaXplIGlzIG9ubHkgcm91Z2hseSBlc3RpbWF0ZWQuIFRoaXMgYXZvaWRzIHJlbW92aW5nIHRvbyBtYW55XHJcbiAqIGVudHJpZXMgZnJvbSB0aGUgY2FjaGUgd2hlbiB0aGUgbWF4aW11bSBpcyByZWFjaGVkLlxyXG4gKiBJZiB0aGUgc2l6ZSBpcyBub3QgY29uc2lkZXJlZCwgdGhlIGNhY2hlIHdpbGwgaGF2ZSBhIG1heGltdW0gbnVtYmVyIG9mXHJcbiAqIG9iamVjdHMgYW5kIHdpbGwgcmVtb3ZlIHRoZSBvbGRlc3Qgb2JqZWN0cyB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBpc1xyXG4gKiByZWFjaGVkLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIExSVUNhY2hlPFQ+IHtcclxuICBwcml2YXRlIF9tYXhTaXplOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfdG90YWxTaXplOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfY29uc2lkZXJTaXplOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2NhY2hlOiBNYXA8c3RyaW5nLCBUPjtcclxuICBwcml2YXRlIF9zaXplczogTWFwPHN0cmluZywgbnVtYmVyPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBjYWNoZS5cclxuICAgKiBAcGFyYW0gbWF4U2l6ZSBUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBjYWNoZS4gVGhpcyBpcyBlaXRoZXJcclxuICAgKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNhY2hlICh3aGVuIGNvbnNpZGVyU2l6ZVxyXG4gICAqIGlzIGZhbHNlKSBvciB0aGUgbWF4aW11bSB0b3RhbCBzaXplIG9mIGFsbCBpdGVtcyBpbiB0aGVcclxuICAgKiBjYWNoZSBpbiBieXRlcyAod2hlbiBjb25zaWRlclNpemUgaXMgdHJ1ZSkuXHJcbiAgICogQHBhcmFtIGNvbnNpZGVyU2l6ZSBUcnVlIGlmIHRoZSBzaXplIG9mIHRoZSBvYmplY3RzIHNob3VsZCBiZVxyXG4gICAqIGNvbnNpZGVyZWQuXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IobWF4U2l6ZTogbnVtYmVyLCBjb25zaWRlclNpemU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNpemU7XHJcbiAgICB0aGlzLl90b3RhbFNpemUgPSAwO1xyXG4gICAgdGhpcy5fY29uc2lkZXJTaXplID0gY29uc2lkZXJTaXplO1xyXG4gICAgdGhpcy5fY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVD4oKTtcclxuICAgIHRoaXMuX3NpemVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbiBpdGVtIGZyb20gdGhlIGNhY2hlLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBnZXQuXHJcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gb3IgdW5kZWZpbmVkIGlmIHRoZSBpdGVtIGlzIG5vdCBpbiB0aGUgY2FjaGUuXHJcbiAgICovXHJcbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IGl0ZW06IFQgfCB1bmRlZmluZWQgPSB0aGlzLl9jYWNoZS5nZXQoa2V5KTtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMuX2NhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgICB0aGlzLl9jYWNoZS5zZXQoa2V5LCBpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBpbiB0aGUgY2FjaGUuXHJcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtIHRvIGNoZWNrLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgaW4gY2FjaGUuXHJcbiAgICovXHJcbiAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlLmhhcyhrZXkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHV0IGFuIGl0ZW0gaW4gdGhlIGNhY2hlLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBwdXQuXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gcHV0LlxyXG4gICAqIEBwYXJhbSBzaXplIFRoZSBlc3RpbWF0ZWQgc2l6ZSBvZiB0aGUgaXRlbSBpbiBieXRlcy5cclxuICAgKiBUaGlzIG11c3QgYmUgY2FsY3VsYXRlZCBieSB0aGUgY2FsbGVyIGJ1dCBvbmx5IHdoZW5cclxuICAgKiBjb25zaWRlclNpemUgaXMgdHJ1ZS5cclxuICAgKi9cclxuICBwdWJsaWMgcHV0KGtleTogc3RyaW5nLCBpdGVtOiBULCBzaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgdGhpcy5fY2FjaGUuc2V0KGtleSwgaXRlbSk7XHJcbiAgICB0aGlzLl9zaXplcy5zZXQoa2V5LCBzaXplKTtcclxuICAgIGlmICh0aGlzLl9jb25zaWRlclNpemUpIHtcclxuICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7XHJcbiAgICAgIHdoaWxlICh0aGlzLl90b3RhbFNpemUgPiB0aGlzLl9tYXhTaXplKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkZXN0S2V5ID0gdGhpcy5fY2FjaGUua2V5cygpLm5leHQoKS52YWx1ZTtcclxuICAgICAgICBsZXQgb2xkZXN0U2l6ZSA9IHRoaXMuX3NpemVzLmdldChvbGRlc3RLZXkpO1xyXG4gICAgICAgIGlmIChvbGRlc3RTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLl90b3RhbFNpemUgLT0gb2xkZXN0U2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY2FjaGUuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgICAgdGhpcy5fc2l6ZXMuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdoaWxlICh0aGlzLl9jYWNoZS5zaXplID4gdGhpcy5fbWF4U2l6ZSkge1xyXG4gICAgICAgIGNvbnN0IG9sZGVzdEtleSA9IHRoaXMuX2NhY2hlLmtleXMoKS5uZXh0KCkudmFsdWU7XHJcbiAgICAgICAgdGhpcy5fY2FjaGUuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgICAgdGhpcy5fc2l6ZXMuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSBjYWNoZS5cclxuICAgKi9cclxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jYWNoZS5jbGVhcigpO1xyXG4gICAgdGhpcy5fc2l6ZXMuY2xlYXIoKTtcclxuICAgIHRoaXMuX3RvdGFsU2l6ZSA9IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc3RpbWF0ZSB0aGUgc2l6ZSBvZiBhbiBvYmplY3QgaW4gYnl0ZXMuXHJcbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNhbGN1bGF0ZSB0aGUgc2l6ZSBvZi5cclxuICAgKiBAcmV0dXJucyBUaGUgZXN0aW1hdGVkIHNpemUgb2YgdGhlIG9iamVjdCBpbiBieXRlcy5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU9iamVjdFNpemUob2JqOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgICBsZXQgdG90YWxTaXplID0gMDtcclxuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IG9ialtrZXldO1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRvdGFsU2l6ZSArPSB2YWx1ZS5sZW5ndGggKiAyO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICB0b3RhbFNpemUgKz0gODtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIHRvdGFsU2l6ZSArPSA0O1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICB0b3RhbFNpemUgKz0gdGhpcy5jYWxjdWxhdGVPYmplY3RTaXplKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvdGFsU2l6ZTtcclxuICB9XHJcbn1cclxuIl19
|