@myrmidon/paged-data-browsers 2.0.4 → 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.
@@ -1,86 +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.8", ngImport: i0, type: BrowserTreeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: BrowserTreeNodeComponent, selector: "pdb-browser-tree-node", inputs: { node: "node", paging: "paging", debug: "debug", hideLabel: "hideLabel", 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 <span class=\"loc\">{{ node.y }}.{{ node.x }}</span> - {{ 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.8", 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 <span class=\"loc\">{{ node.y }}.{{ node.x }}</span> - {{ 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
- }], hidePaging: [{
74
- type: Input
75
- }], hideFilter: [{
76
- type: Input
77
- }], indentSize: [{
78
- type: Input
79
- }], toggleExpandedRequest: [{
80
- type: Output
81
- }], changePageRequest: [{
82
- type: Output
83
- }], editNodeFilterRequest: [{
84
- type: Output
85
- }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvYnJvd3Nlci10cmVlLW5vZGUvYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvYnJvd3Nlci10cmVlLW5vZGUvYnJvd3Nlci10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVl2RTs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFHbkM7O09BRUc7SUFDSCxJQUNXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsSUFBSSxDQUFDLEtBQTRDO1FBQzFELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUEyREQ7UUFyQkE7O1dBRUc7UUFFSSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBa0JyQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQy9ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztJQUN0RSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUEyQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUF3QixFQUFFLE1BQWtCO1FBQ2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSTtZQUNKLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDOzhHQW5HVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixvWEMxQnJDLGc5RUE0RkE7OzJGRGxFYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCO3dEQVd0QixJQUFJO3NCQURkLEtBQUs7Z0JBZ0JOLE1BQU07c0JBREwsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBYUMsU0FBUztzQkFEZixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLHFCQUFxQjtzQkFEM0IsTUFBTTtnQkFPQSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBSUEscUJBQXFCO3NCQUQzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUGFnZWRUcmVlTm9kZSwgUGFnaW5nSW5mbyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BhZ2VkLXRyZWUuc3RvcmUnO1xuXG4vKipcbiAqIEEgcmVxdWVzdCB0byBjaGFuZ2UgdGhlIHBhZ2UgbnVtYmVyIG9mIGEgbm9kZSdzIGNoaWxkcmVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VDaGFuZ2VSZXF1ZXN0IHtcbiAgbm9kZTogUGFnZWRUcmVlTm9kZTxhbnk+O1xuICBwYWdpbmc6IFBhZ2luZ0luZm87XG59XG5cbi8qKlxuICogQnJvd3NlciB0cmVlIG5vZGUgY29tcG9uZW50IHZpZXcuIFRoaXMgd3JhcHMgc29tZSBIVE1MIGNvbnRlbnQgcHJvdmlkaW5nXG4gKiBhIHRvZ2dsZSBidXR0b24gdG8gZXhwYW5kL2NvbGxhcHNlIHRoZSBub2RlLCBhIHBhZ2luZyBjb250cm9sIGZvciB0aGVcbiAqIG5vZGUncyBjaGlsZHJlbiwgYW5kIGEgYnV0dG9uIHRvIGVkaXQgdGhlIG5vZGUncyBmaWx0ZXIuIFlvdSBzaG91bGQgdGhlblxuICogcHJvdmlkZSB0aGUgSFRNTCBjb250ZW50IHRvIGRpc3BsYXkgdGhlIG5vZGUncyBkYXRhIGluc2lkZSB0aGlzIGNvbXBvbmVudCwgZS5nLlxuICogPHBkYi1icm93c2VyLXRyZWUtbm9kZSBbbm9kZV09XCJub2RlXCI+XG4gKiAgIDx5b3VyLW5vZGUtdmlldyBbbm9kZV09XCJub2RlXCIgLz5cbiAqIDxwZGItYnJvd3Nlci10cmVlLW5vZGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkYi1icm93c2VyLXRyZWUtbm9kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9icm93c2VyLXRyZWUtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jyb3dzZXItdHJlZS1ub2RlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJvd3NlclRyZWVOb2RlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfbm9kZTogUGFnZWRUcmVlTm9kZTxhbnk+IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIG5vZGUgdG8gZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbm9kZSgpOiBQYWdlZFRyZWVOb2RlPGFueT4gfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbm9kZSh2YWx1ZTogUGFnZWRUcmVlTm9kZTxhbnk+IHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLl9ub2RlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9ub2RlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhZ2luZyBpbmZvcm1hdGlvbiBmb3IgdGhlIG5vZGUncyBjaGlsZHJlbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZ2luZz86IFBhZ2luZ0luZm87XG5cbiAgLyoqXG4gICAqIFRydWUgdG8gc2hvdyBkZWJ1ZyBpbmZvcm1hdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRydWUgdG8gaGlkZSB0aGUgbm9kZSdzIGxvYyBhbmQgbGFiZWwuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvXG4gICAqIHByb3ZpZGUgeW91ciBvd24gdmlldyBmb3IgdGhlIG5vZGUsIGJldHdlZW4gdGhlIGV4cGFuc2lvbiB0b2dnbGUgYW5kXG4gICAqIHRoZSBmaWx0ZXIgZWRpdCBidXR0b24uIEluIHRoaXMgY2FzZSwgaW4geW91ciBjb25zdW1lciB0ZW1wbGF0ZSBwcm92aWRlXG4gICAqIHlvdXIgb3duIHZpZXcgYXMgdGhlIGNvbnRlbnQgb2YgdGhpcyBjb21wb25lbnQuIElmIGluc3RlYWQgeW91IGFyZSBmaW5lXG4gICAqIHdpdGggdGhlIGRlZmF1bHQgbG9jIGFuZCBsYWJlbCwgYW5kIGp1c3Qgd2FudCB0byBhZGQgbW9yZSBkYXRhIHRvXG4gICAqIHRoZSB2aWV3LCB0aGVuIHlvdSBjYW4ganVzdCBhZGQgeW91ciBvd24gY29udGVudCB0byB0aGlzIGNvbXBvbmVudCdzXG4gICAqIHRlbXBsYXRlLCB3aXRob3V0IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGVMYWJlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRydWUgdG8gaGlkZSB0aGUgbm9kZSdzIHBhZ2luZyBjb250cm9sIHVubGVzcyBob3ZlcmVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGVQYWdpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHRvIGhpZGUgdGhlIG5vZGUncyBmaWx0ZXIgZWRpdCBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZUZpbHRlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRlbnQgc2l6ZSBmb3IgdGhlIG5vZGUncyBjaGlsZHJlbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRlbnRTaXplID0gMzA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gdG9nZ2xlIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiB0aGUgbm9kZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdG9nZ2xlRXhwYW5kZWRSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8UGFnZWRUcmVlTm9kZTxhbnk+PjtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdXNlciB3YW50cyB0byBjaGFuZ2UgdGhlIHBhZ2UgbnVtYmVyIG9mIHRoZSBub2RlJ3MgY2hpbGRyZW4uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNoYW5nZVBhZ2VSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZVJlcXVlc3Q+O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZWRpdE5vZGVGaWx0ZXJSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8UGFnZWRUcmVlTm9kZTxhbnk+PjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZWRUcmVlTm9kZTxhbnk+PigpO1xuICAgIHRoaXMuY2hhbmdlUGFnZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VSZXF1ZXN0PigpO1xuICAgIHRoaXMuZWRpdE5vZGVGaWx0ZXJSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlZFRyZWVOb2RlPGFueT4+KCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2dnbGVFeHBhbmRlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX25vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVFeHBhbmRlZFJlcXVlc3QuZW1pdCh0aGlzLl9ub2RlIGFzIFBhZ2VkVHJlZU5vZGU8YW55Pik7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmdDaGFuZ2Uobm9kZTogUGFnZWRUcmVlTm9kZTxhbnk+LCBwYWdpbmc6IFBhZ2luZ0luZm8pOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZVBhZ2VSZXF1ZXN0LmVtaXQoe1xuICAgICAgbm9kZSxcbiAgICAgIHBhZ2luZyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX25vZGUpIHtcbiAgICAgIHRoaXMuZWRpdE5vZGVGaWx0ZXJSZXF1ZXN0LmVtaXQodGhpcy5fbm9kZSk7XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKG5vZGUpIHtcbjxkaXYgaWQ9XCJub2RlXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cIihub2RlLnkgLSAxKSAqIGluZGVudFNpemVcIj5cbiAgPCEtLSBwYWdlciAtLT5cbiAgQGlmICgkYW55KG5vZGUpLmV4cGFuZGVkICYmIHBhZ2luZyAmJiBwYWdpbmcucGFnZUNvdW50ID4gMSkge1xuICA8ZGl2IGlkPVwicGFnZXJcIiBbc3R5bGUuZGlzcGxheV09XCJoaWRlUGFnaW5nID8gJ2luaGVyaXQnIDogJ2Jsb2NrJ1wiPlxuICAgIDxwZGItY29tcGFjdC1wYWdlclxuICAgICAgW3BhZ2luZ109XCJwYWdpbmdcIlxuICAgICAgKHBhZ2luZ0NoYW5nZSk9XCJvblBhZ2luZ0NoYW5nZSgkYW55KG5vZGUpLCAkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxwZGItcmFuZ2Utdmlld1xuICAgICAgW3dpZHRoXT1cIjI1MFwiXG4gICAgICBbZG9tYWluXT1cIlswLCBwYWdpbmcucGFnZUNvdW50XVwiXG4gICAgICBbcmFuZ2VdPVwiW3BhZ2luZy5wYWdlTnVtYmVyIC0gMSwgcGFnaW5nLnBhZ2VOdW1iZXJdXCJcbiAgICAvPlxuICA8L2Rpdj5cbiAgfVxuICA8IS0tIG5vZGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDwhLS0gZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW21hdFRvb2x0aXBdPVwiJGFueShub2RlKS5leHBhbmRlZCA/ICdDb2xsYXBzZScgOiAnRXhwYW5kJ1wiXG4gICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgIFtkaXNhYmxlZF09XCJub2RlLmhhc0NoaWxkcmVuID09PSBmYWxzZVwiXG4gICAgICAoY2xpY2spPVwib25Ub2dnbGVFeHBhbmRlZCgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtcHJpbWFyeVwiIGkxOG4+e3tcbiAgICAgICAgbm9kZS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSB8fCBub2RlLmhhc0NoaWxkcmVuID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/ICRhbnkobm9kZSkuZXhwYW5kZWRcbiAgICAgICAgICAgID8gXCJleHBhbmRfbGVzc1wiXG4gICAgICAgICAgICA6IFwiZXhwYW5kX21vcmVcIlxuICAgICAgICAgIDogXCJzdG9wXCJcbiAgICAgIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDwhLS0gdGFnIC0tPlxuICAgIEBpZiAoIWhpZGVMYWJlbCkge1xuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cInRhZ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogKG5vZGUudGFnIHwgc3RyaW5nVG9Db2xvciksXG4gICAgICAgIGNvbG9yOiBub2RlLnRhZyB8IHN0cmluZ1RvQ29sb3IgfCBjb2xvclRvQ29udHJhc3RcbiAgICAgIH1cIlxuICAgICAgPnt7IG5vZGUudGFnIH19PC9zcGFuXG4gICAgPlxuXG4gICAgPCEtLSBsb2MgYW5kIGxhYmVsIC0tPlxuICAgIDxzcGFuIGNsYXNzPVwibG9jXCI+e3sgbm9kZS55IH19Lnt7IG5vZGUueCB9fTwvc3Bhbj4gLSB7eyBub2RlLmxhYmVsIH19XG4gICAgfVxuXG4gICAgPCEtLSBQUk9KRUNURUQgTk9ERSAtLT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8IS0tIGRlYnVnIC0tPlxuICAgIEBpZiAoZGVidWcpIHtcbiAgICA8c3BhbiBjbGFzcz1cImRlYnVnXCJcbiAgICAgID4je3sgbm9kZS5pZCB9fVxuICAgICAgPHNwYW5cbiAgICAgICAgPnwge3sgJGFueShub2RlKS5wYWdpbmcucGFnZU51bWJlciB9fS97e1xuICAgICAgICAgICRhbnkobm9kZSkucGFnaW5nLnBhZ2VDb3VudFxuICAgICAgICB9fVxuICAgICAgICAoe3sgJGFueShub2RlKS5wYWdpbmcudG90YWwgfX0pPC9zcGFuXG4gICAgICA+PC9zcGFuXG4gICAgPlxuICAgIH1cblxuICAgIDwhLS0gZmlsdGVyIC0tPlxuICAgIEBpZiAoIWhpZGVGaWx0ZXIpeyBAaWYgKCEkYW55KG5vZGUpLmZpbHRlciAmJiBub2RlLnkpIHtcbiAgICA8ZGl2IGNsYXNzPVwibXV0ZWRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBtYXRUb29sdGlwPVwiQWRkIGZpbHRlclwiXG4gICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAoY2xpY2spPVwib25FZGl0RmlsdGVyKClcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgfSBAaWYgKCRhbnkobm9kZSkuZmlsdGVyICYmIG5vZGUueSkge1xuICAgIDxkaXYgY2xhc3M9XCJtdXRlZFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkVkaXRGaWx0ZXIoKVwiPlxuICAgICAgICA8bWF0LWljb24gW21hdEJhZGdlXT1cIiRhbnkobm9kZSkuZmlsdGVyID8gJ0YnIDogJydcIlxuICAgICAgICAgID5maWx0ZXJfYWx0PC9tYXQtaWNvblxuICAgICAgICA+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICB9IH1cbiAgPC9kaXY+XG48L2Rpdj5cbn1cbiJdfQ==
@@ -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.8", ngImport: i0, type: CompactPagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", 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.8", 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.8", ngImport: i0, type: RangeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", 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.8", 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.8", ngImport: i0, type: PagedDataBrowsersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", 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.8", 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.8", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHJ1LWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycy9zcmMvbGliL3NlcnZpY2VzL2xydS1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFPbkI7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLE9BQWUsRUFBRSxlQUF3QixLQUFLO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksR0FBRyxDQUFDLEdBQVc7UUFDcEIsSUFBSSxJQUFJLEdBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFPLEVB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O0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQSBMZWFzdCBSZWNlbnRseSBVc2VkIGNhY2hlIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYW55IHR5cGUgb2Ygb2JqZWN0LlxyXG4gKiBUaGUgY2FjaGUgd29ya3MgaW4gdHdvIG1vZGVzOiBjb25zaWRlcmluZyB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0cyBvciBub3QuXHJcbiAqIElmIHRoZSBzaXplIGlzIGNvbnNpZGVyZWQsIHRoZSBjYWNoZSB3aWxsIGhhdmUgYSBtYXhpbXVtIHNpemUgYW5kIHdpbGxcclxuICogcmVtb3ZlIHRoZSBvbGRlc3Qgb2JqZWN0cyB3aGVuIHRoZSBtYXhpbXVtIHNpemUgaXMgcmVhY2hlZC4gTm90ZSB0aGF0XHJcbiAqIHRoZSBzaXplIGlzIG9ubHkgcm91Z2hseSBlc3RpbWF0ZWQuIFRoaXMgYXZvaWRzIHJlbW92aW5nIHRvbyBtYW55XHJcbiAqIGVudHJpZXMgZnJvbSB0aGUgY2FjaGUgd2hlbiB0aGUgbWF4aW11bSBpcyByZWFjaGVkLlxyXG4gKiBJZiB0aGUgc2l6ZSBpcyBub3QgY29uc2lkZXJlZCwgdGhlIGNhY2hlIHdpbGwgaGF2ZSBhIG1heGltdW0gbnVtYmVyIG9mXHJcbiAqIG9iamVjdHMgYW5kIHdpbGwgcmVtb3ZlIHRoZSBvbGRlc3Qgb2JqZWN0cyB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBpc1xyXG4gKiByZWFjaGVkLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIExSVUNhY2hlPFQ+IHtcclxuICBwcml2YXRlIF9tYXhTaXplOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfdG90YWxTaXplOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfY29uc2lkZXJTaXplOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2NhY2hlOiBNYXA8c3RyaW5nLCBUPjtcclxuICBwcml2YXRlIF9zaXplczogTWFwPHN0cmluZywgbnVtYmVyPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBjYWNoZS5cclxuICAgKiBAcGFyYW0gbWF4U2l6ZSBUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBjYWNoZS4gVGhpcyBpcyBlaXRoZXJcclxuICAgKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNhY2hlICh3aGVuIGNvbnNpZGVyU2l6ZVxyXG4gICAqIGlzIGZhbHNlKSBvciB0aGUgbWF4aW11bSB0b3RhbCBzaXplIG9mIGFsbCBpdGVtcyBpbiB0aGVcclxuICAgKiBjYWNoZSBpbiBieXRlcyAod2hlbiBjb25zaWRlclNpemUgaXMgdHJ1ZSkuXHJcbiAgICogQHBhcmFtIGNvbnNpZGVyU2l6ZSBUcnVlIGlmIHRoZSBzaXplIG9mIHRoZSBvYmplY3RzIHNob3VsZCBiZVxyXG4gICAqIGNvbnNpZGVyZWQuXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IobWF4U2l6ZTogbnVtYmVyLCBjb25zaWRlclNpemU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNpemU7XHJcbiAgICB0aGlzLl90b3RhbFNpemUgPSAwO1xyXG4gICAgdGhpcy5fY29uc2lkZXJTaXplID0gY29uc2lkZXJTaXplO1xyXG4gICAgdGhpcy5fY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVD4oKTtcclxuICAgIHRoaXMuX3NpemVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbiBpdGVtIGZyb20gdGhlIGNhY2hlLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBnZXQuXHJcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gb3IgdW5kZWZpbmVkIGlmIHRoZSBpdGVtIGlzIG5vdCBpbiB0aGUgY2FjaGUuXHJcbiAgICovXHJcbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IGl0ZW06IFQgfCB1bmRlZmluZWQgPSB0aGlzLl9jYWNoZS5nZXQoa2V5KTtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMuX2NhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgICB0aGlzLl9jYWNoZS5zZXQoa2V5LCBpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBpbiB0aGUgY2FjaGUuXHJcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtIHRvIGNoZWNrLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgaW4gY2FjaGUuXHJcbiAgICovXHJcbiAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlLmhhcyhrZXkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHV0IGFuIGl0ZW0gaW4gdGhlIGNhY2hlLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBwdXQuXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gcHV0LlxyXG4gICAqIEBwYXJhbSBzaXplIFRoZSBlc3RpbWF0ZWQgc2l6ZSBvZiB0aGUgaXRlbSBpbiBieXRlcy5cclxuICAgKiBUaGlzIG11c3QgYmUgY2FsY3VsYXRlZCBieSB0aGUgY2FsbGVyIGJ1dCBvbmx5IHdoZW5cclxuICAgKiBjb25zaWRlclNpemUgaXMgdHJ1ZS5cclxuICAgKi9cclxuICBwdWJsaWMgcHV0KGtleTogc3RyaW5nLCBpdGVtOiBULCBzaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgdGhpcy5fY2FjaGUuc2V0KGtleSwgaXRlbSk7XHJcbiAgICB0aGlzLl9zaXplcy5zZXQoa2V5LCBzaXplKTtcclxuICAgIGlmICh0aGlzLl9jb25zaWRlclNpemUpIHtcclxuICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7XHJcbiAgICAgIHdoaWxlICh0aGlzLl90b3RhbFNpemUgPiB0aGlzLl9tYXhTaXplKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkZXN0S2V5ID0gdGhpcy5fY2FjaGUua2V5cygpLm5leHQoKS52YWx1ZTtcclxuICAgICAgICBsZXQgb2xkZXN0U2l6ZSA9IHRoaXMuX3NpemVzLmdldChvbGRlc3RLZXkpO1xyXG4gICAgICAgIGlmIChvbGRlc3RTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLl90b3RhbFNpemUgLT0gb2xkZXN0U2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY2FjaGUuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgICAgdGhpcy5fc2l6ZXMuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdoaWxlICh0aGlzLl9jYWNoZS5zaXplID4gdGhpcy5fbWF4U2l6ZSkge1xyXG4gICAgICAgIGNvbnN0IG9sZGVzdEtleSA9IHRoaXMuX2NhY2hlLmtleXMoKS5uZXh0KCkudmFsdWU7XHJcbiAgICAgICAgdGhpcy5fY2FjaGUuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgICAgdGhpcy5fc2l6ZXMuZGVsZXRlKG9sZGVzdEtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSBjYWNoZS5cclxuICAgKi9cclxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jYWNoZS5jbGVhcigpO1xyXG4gICAgdGhpcy5fc2l6ZXMuY2xlYXIoKTtcclxuICAgIHRoaXMuX3RvdGFsU2l6ZSA9IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc3RpbWF0ZSB0aGUgc2l6ZSBvZiBhbiBvYmplY3QgaW4gYnl0ZXMuXHJcbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNhbGN1bGF0ZSB0aGUgc2l6ZSBvZi5cclxuICAgKiBAcmV0dXJucyBUaGUgZXN0aW1hdGVkIHNpemUgb2YgdGhlIG9iamVjdCBpbiBieXRlcy5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU9iamVjdFNpemUob2JqOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgICBsZXQgdG90YWxTaXplID0gMDtcclxuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IG9ialtrZXldO1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRvdGFsU2l6ZSArPSB2YWx1ZS5sZW5ndGggKiAyO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICB0b3RhbFNpemUgKz0gODtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIHRvdGFsU2l6ZSArPSA0O1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICB0b3RhbFNpemUgKz0gdGhpcy5jYWxjdWxhdGVPYmplY3RTaXplKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvdGFsU2l6ZTtcclxuICB9XHJcbn1cclxuIl19