@dangl/angular-ava 1.0.1-beta0021 → 1.0.1-beta0024
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/esm2022/lib/angular-ava.module.mjs +4 -4
- package/esm2022/lib/ava-tree/invoice/invoice-display/invoice-display.component.mjs +5 -5
- package/esm2022/lib/ava-tree/tree/components/ava-tree/ava-tree.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/list-structure/list-structure.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/table-structure/table-structure.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/tree-item/tree-item.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/tree-node/tree-node.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/tree-structure/tree-structure.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/directives/save-changing-view.directive.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/pipes/element-icon-name.pipe.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/pipes/element-item-number.pipe.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/pipes/element-text.pipe.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/pipes/group-child-elements.pipe.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/services/flat-elements.service.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/services/select-element.service.mjs +3 -3
- package/esm2022/lib/version.mjs +6 -6
- package/fesm2022/dangl-angular-ava.mjs +52 -52
- package/fesm2022/dangl-angular-ava.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -22,8 +22,8 @@ import { ElementTextPipe } from './ava-tree/tree/pipes/element-text.pipe';
|
|
|
22
22
|
import { GroupChildElementsPipe } from './ava-tree/tree/pipes/group-child-elements.pipe';
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
export class AngularAvaModule {
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
26
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AngularAvaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: AngularAvaModule, declarations: [TreeStructureComponent,
|
|
27
27
|
TreeNodeComponent,
|
|
28
28
|
AvaTreeComponent,
|
|
29
29
|
TreeItemComponent,
|
|
@@ -44,7 +44,7 @@ export class AngularAvaModule {
|
|
|
44
44
|
MatCheckboxModule,
|
|
45
45
|
MatTableModule,
|
|
46
46
|
MatTooltipModule], exports: [AvaTreeComponent] }); }
|
|
47
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
47
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AngularAvaModule, imports: [CommonModule,
|
|
48
48
|
MatIconModule,
|
|
49
49
|
MatRippleModule,
|
|
50
50
|
MatInputModule,
|
|
@@ -56,7 +56,7 @@ export class AngularAvaModule {
|
|
|
56
56
|
MatTableModule,
|
|
57
57
|
MatTooltipModule] }); }
|
|
58
58
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AngularAvaModule, decorators: [{
|
|
60
60
|
type: NgModule,
|
|
61
61
|
args: [{
|
|
62
62
|
declarations: [
|
|
@@ -56,13 +56,13 @@ export class InvoiceDisplayComponent {
|
|
|
56
56
|
this._textWords = null;
|
|
57
57
|
this._textWords = { ...DEFAULT_TEXT_WORD_INVOICE };
|
|
58
58
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: InvoiceDisplayComponent, isStandalone: true, selector: "ava-invoice-display", inputs: { invoice: { classPropertyName: "invoice", publicName: "invoice", isSignal: true, isRequired: true, transformFunction: null }, textWords: { classPropertyName: "textWords", publicName: "textWords", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords?.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"seller-info\">\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().seller?.vatId }}\n </p>\n </div>\n <div class=\"invoice-details\">\n <p>\n <strong>{{ textWords?.detailsInvoiceNumber }}:</strong> {{ invoice().invoiceNumber }}\n </p>\n <p>\n <strong>{{ textWords?.detailsInvoiceDate }}:</strong> {{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentDueDate }}:</strong> {{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsCurrencyCode }}:</strong> {{ invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentTerms }}:</strong> {{ invoice().paymentTerms }}\n </p>\n </div>\n <div class=\"buyer-info\">\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().buyer?.vatId }}\n </p>\n </div>\n </header>\n\n <section class=\"invoice-references\">\n <h2>{{ textWords?.referencesTopic }}</h2>\n <p>\n <strong>{{ textWords?.referencesBuyerReference }}:</strong> {{ invoice().references?.buyerReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesProjectReference }}:</strong> {{ invoice().references?.projectReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesContractReference }}:</strong> {{ invoice().references?.contractReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesPurchaseOrderReference }}:</strong> {{ invoice().references?.purchaseOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesSalesOrderReference }}:</strong> {{ invoice().references?.salesOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesReceivingAdviceReference }}:</strong> {{ invoice().references?.receivingAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesDispatchAdviceReference }}:</strong> {{ invoice().references?.dispatchAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesTenderOrLotReference }}:</strong> {{ invoice().references?.tenderOrLotReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesInvoicedObjectIdentifier }}:</strong> {{ invoice().references?.invoicedObjectIdentifier }}\n </p>\n </section>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords?.tableHeadDescription }}</th>\n <th>{{ textWords?.tableHeadQuantity }}</th>\n <th>{{ textWords?.tableHeadUnit }}</th>\n <th>{{ textWords?.tableHeadNetPrice }}</th>\n <th>{{ textWords?.tableHeadNetAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2>{{ textWords?.totalsTopic }}</h2>\n <p>\n <strong>{{ textWords?.totalsTotalNet }}:</strong> {{ invoice().totals?.totalNet | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAllowances }}:</strong> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalCharges }}:</strong> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAfterDeductions }}:</strong>\n {{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalVatAmount }}:</strong> {{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalGross }}:</strong> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsAlreadyPaidTotal }}:</strong>\n {{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}\n </p>\n <p class=\"total\">\n <strong>{{ textWords?.totalsTotalToBePaid }}:</strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n </section>\n\n <section class=\"payment-instructions\">\n <h2>{{ textWords?.instructionsTopic }}</h2>\n <p>{{ invoice().paymentInstructions?.description }}</p>\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n <p>\n <strong>{{ textWords?.instructionsAccountIdentifier }}:</strong> {{ means.accountIdentifier }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsAccountName }}:</strong> {{ means.accountName }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsServiceProviderIdentifier }}:</strong> {{ means.serviceProviderIdentifier }}\n </p>\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords?.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n <p>\n <strong>{{ note.shortText }}</strong>\n </p>\n <p>{{ note.longText }}</p>\n </div>\n }\n </section>\n</div>\n", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, transparent);color:var(--mat-app-text-color, inherit)}.invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.seller-info,.buyer-info,.invoice-details{width:30%}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:#00acc1}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between}.total{background-color:#bdbdbd}\n"], dependencies: [{ kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: InvoiceDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: InvoiceDisplayComponent, isStandalone: true, selector: "ava-invoice-display", inputs: { invoice: { classPropertyName: "invoice", publicName: "invoice", isSignal: true, isRequired: true, transformFunction: null }, textWords: { classPropertyName: "textWords", publicName: "textWords", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords?.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"seller-info\">\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().seller?.vatId }}\n </p>\n </div>\n <div class=\"invoice-details\">\n <p>\n <strong>{{ textWords?.detailsInvoiceNumber }}:</strong> {{ invoice().invoiceNumber }}\n </p>\n <p>\n <strong>{{ textWords?.detailsInvoiceDate }}:</strong> {{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentDueDate }}:</strong> {{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsCurrencyCode }}:</strong> {{ invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentTerms }}:</strong> {{ invoice().paymentTerms }}\n </p>\n </div>\n <div class=\"buyer-info\">\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().buyer?.vatId }}\n </p>\n </div>\n </header>\n\n <section class=\"invoice-references\">\n <h2>{{ textWords?.referencesTopic }}</h2>\n <p>\n <strong>{{ textWords?.referencesBuyerReference }}:</strong> {{ invoice().references?.buyerReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesProjectReference }}:</strong> {{ invoice().references?.projectReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesContractReference }}:</strong> {{ invoice().references?.contractReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesPurchaseOrderReference }}:</strong> {{ invoice().references?.purchaseOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesSalesOrderReference }}:</strong> {{ invoice().references?.salesOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesReceivingAdviceReference }}:</strong> {{ invoice().references?.receivingAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesDispatchAdviceReference }}:</strong> {{ invoice().references?.dispatchAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesTenderOrLotReference }}:</strong> {{ invoice().references?.tenderOrLotReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesInvoicedObjectIdentifier }}:</strong> {{ invoice().references?.invoicedObjectIdentifier }}\n </p>\n </section>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords?.tableHeadDescription }}</th>\n <th>{{ textWords?.tableHeadQuantity }}</th>\n <th>{{ textWords?.tableHeadUnit }}</th>\n <th>{{ textWords?.tableHeadNetPrice }}</th>\n <th>{{ textWords?.tableHeadNetAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2>{{ textWords?.totalsTopic }}</h2>\n <p>\n <strong>{{ textWords?.totalsTotalNet }}:</strong> {{ invoice().totals?.totalNet | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAllowances }}:</strong> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalCharges }}:</strong> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAfterDeductions }}:</strong>\n {{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalVatAmount }}:</strong> {{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalGross }}:</strong> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsAlreadyPaidTotal }}:</strong>\n {{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}\n </p>\n <p class=\"total\">\n <strong>{{ textWords?.totalsTotalToBePaid }}:</strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n </section>\n\n <section class=\"payment-instructions\">\n <h2>{{ textWords?.instructionsTopic }}</h2>\n <p>{{ invoice().paymentInstructions?.description }}</p>\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n <p>\n <strong>{{ textWords?.instructionsAccountIdentifier }}:</strong> {{ means.accountIdentifier }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsAccountName }}:</strong> {{ means.accountName }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsServiceProviderIdentifier }}:</strong> {{ means.serviceProviderIdentifier }}\n </p>\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords?.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n <p>\n <strong>{{ note.shortText }}</strong>\n </p>\n <p>{{ note.longText }}</p>\n </div>\n }\n </section>\n</div>\n", styles: [".invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.seller-info,.buyer-info,.invoice-details{width:30%}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:var(--color-primary)}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between}.total{background-color:var(--color-light)}\n"], dependencies: [{ kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
61
61
|
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: InvoiceDisplayComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
|
-
args: [{ selector: 'ava-invoice-display', standalone: true, imports: [CurrencyPipe, DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords?.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"seller-info\">\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().seller?.vatId }}\n </p>\n </div>\n <div class=\"invoice-details\">\n <p>\n <strong>{{ textWords?.detailsInvoiceNumber }}:</strong> {{ invoice().invoiceNumber }}\n </p>\n <p>\n <strong>{{ textWords?.detailsInvoiceDate }}:</strong> {{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentDueDate }}:</strong> {{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsCurrencyCode }}:</strong> {{ invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentTerms }}:</strong> {{ invoice().paymentTerms }}\n </p>\n </div>\n <div class=\"buyer-info\">\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().buyer?.vatId }}\n </p>\n </div>\n </header>\n\n <section class=\"invoice-references\">\n <h2>{{ textWords?.referencesTopic }}</h2>\n <p>\n <strong>{{ textWords?.referencesBuyerReference }}:</strong> {{ invoice().references?.buyerReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesProjectReference }}:</strong> {{ invoice().references?.projectReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesContractReference }}:</strong> {{ invoice().references?.contractReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesPurchaseOrderReference }}:</strong> {{ invoice().references?.purchaseOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesSalesOrderReference }}:</strong> {{ invoice().references?.salesOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesReceivingAdviceReference }}:</strong> {{ invoice().references?.receivingAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesDispatchAdviceReference }}:</strong> {{ invoice().references?.dispatchAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesTenderOrLotReference }}:</strong> {{ invoice().references?.tenderOrLotReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesInvoicedObjectIdentifier }}:</strong> {{ invoice().references?.invoicedObjectIdentifier }}\n </p>\n </section>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords?.tableHeadDescription }}</th>\n <th>{{ textWords?.tableHeadQuantity }}</th>\n <th>{{ textWords?.tableHeadUnit }}</th>\n <th>{{ textWords?.tableHeadNetPrice }}</th>\n <th>{{ textWords?.tableHeadNetAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2>{{ textWords?.totalsTopic }}</h2>\n <p>\n <strong>{{ textWords?.totalsTotalNet }}:</strong> {{ invoice().totals?.totalNet | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAllowances }}:</strong> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalCharges }}:</strong> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAfterDeductions }}:</strong>\n {{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalVatAmount }}:</strong> {{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalGross }}:</strong> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsAlreadyPaidTotal }}:</strong>\n {{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}\n </p>\n <p class=\"total\">\n <strong>{{ textWords?.totalsTotalToBePaid }}:</strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n </section>\n\n <section class=\"payment-instructions\">\n <h2>{{ textWords?.instructionsTopic }}</h2>\n <p>{{ invoice().paymentInstructions?.description }}</p>\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n <p>\n <strong>{{ textWords?.instructionsAccountIdentifier }}:</strong> {{ means.accountIdentifier }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsAccountName }}:</strong> {{ means.accountName }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsServiceProviderIdentifier }}:</strong> {{ means.serviceProviderIdentifier }}\n </p>\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords?.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n <p>\n <strong>{{ note.shortText }}</strong>\n </p>\n <p>{{ note.longText }}</p>\n </div>\n }\n </section>\n</div>\n", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, transparent);color:var(--mat-app-text-color, inherit)}.invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.seller-info,.buyer-info,.invoice-details{width:30%}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:#00acc1}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between}.total{background-color:#bdbdbd}\n"] }]
|
|
64
|
+
args: [{ selector: 'ava-invoice-display', standalone: true, imports: [CurrencyPipe, DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords?.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"seller-info\">\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().seller?.vatId }}\n </p>\n </div>\n <div class=\"invoice-details\">\n <p>\n <strong>{{ textWords?.detailsInvoiceNumber }}:</strong> {{ invoice().invoiceNumber }}\n </p>\n <p>\n <strong>{{ textWords?.detailsInvoiceDate }}:</strong> {{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentDueDate }}:</strong> {{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}\n </p>\n <p>\n <strong>{{ textWords?.detailsCurrencyCode }}:</strong> {{ invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.detailsPaymentTerms }}:</strong> {{ invoice().paymentTerms }}\n </p>\n </div>\n <div class=\"buyer-info\">\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n <p>\n <strong>{{ textWords?.vatId }}:</strong> {{ invoice().buyer?.vatId }}\n </p>\n </div>\n </header>\n\n <section class=\"invoice-references\">\n <h2>{{ textWords?.referencesTopic }}</h2>\n <p>\n <strong>{{ textWords?.referencesBuyerReference }}:</strong> {{ invoice().references?.buyerReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesProjectReference }}:</strong> {{ invoice().references?.projectReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesContractReference }}:</strong> {{ invoice().references?.contractReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesPurchaseOrderReference }}:</strong> {{ invoice().references?.purchaseOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesSalesOrderReference }}:</strong> {{ invoice().references?.salesOrderReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesReceivingAdviceReference }}:</strong> {{ invoice().references?.receivingAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesDispatchAdviceReference }}:</strong> {{ invoice().references?.dispatchAdviceReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesTenderOrLotReference }}:</strong> {{ invoice().references?.tenderOrLotReference }}\n </p>\n <p>\n <strong>{{ textWords?.referencesInvoicedObjectIdentifier }}:</strong> {{ invoice().references?.invoicedObjectIdentifier }}\n </p>\n </section>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords?.tableHeadDescription }}</th>\n <th>{{ textWords?.tableHeadQuantity }}</th>\n <th>{{ textWords?.tableHeadUnit }}</th>\n <th>{{ textWords?.tableHeadNetPrice }}</th>\n <th>{{ textWords?.tableHeadNetAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2>{{ textWords?.totalsTopic }}</h2>\n <p>\n <strong>{{ textWords?.totalsTotalNet }}:</strong> {{ invoice().totals?.totalNet | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAllowances }}:</strong> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalCharges }}:</strong> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalAfterDeductions }}:</strong>\n {{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalVatAmount }}:</strong> {{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsTotalGross }}:</strong> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}\n </p>\n <p>\n <strong>{{ textWords?.totalsAlreadyPaidTotal }}:</strong>\n {{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}\n </p>\n <p class=\"total\">\n <strong>{{ textWords?.totalsTotalToBePaid }}:</strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n </section>\n\n <section class=\"payment-instructions\">\n <h2>{{ textWords?.instructionsTopic }}</h2>\n <p>{{ invoice().paymentInstructions?.description }}</p>\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n <p>\n <strong>{{ textWords?.instructionsAccountIdentifier }}:</strong> {{ means.accountIdentifier }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsAccountName }}:</strong> {{ means.accountName }}\n </p>\n <p>\n <strong>{{ textWords?.instructionsServiceProviderIdentifier }}:</strong> {{ means.serviceProviderIdentifier }}\n </p>\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords?.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n <p>\n <strong>{{ note.shortText }}</strong>\n </p>\n <p>{{ note.longText }}</p>\n </div>\n }\n </section>\n</div>\n", styles: [".invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.seller-info,.buyer-info,.invoice-details{width:30%}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:var(--color-primary)}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between}.total{background-color:var(--color-light)}\n"] }]
|
|
65
65
|
}], ctorParameters: () => [], propDecorators: { textWords: [{
|
|
66
66
|
type: Input
|
|
67
67
|
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXZhL3NyYy9saWIvYXZhLXRyZWUvaW52b2ljZS9pbnZvaWNlLWRpc3BsYXkvaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXZhL3NyYy9saWIvYXZhLXRyZWUvaW52b2ljZS9pbnZvaWNlLWRpc3BsYXkvaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQVl4RixNQUFNLE9BQU8sdUJBQXVCO0lBSWxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXlDRztJQUNILElBQWEsU0FBUyxDQUFDLEtBQThCO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNwRCxDQUFDLENBQUMsaURBQWlEO0lBQ25ELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0Q7UUFuREEsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUM1QixlQUFVLEdBQTRCLElBQUksQ0FBQztRQW1EakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztJQUNyRCxDQUFDOzhHQXREVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw2VkNmcEMsNHdNQW9LQSw2NUlEMUpZLFlBQVksNENBQUUsUUFBUTs7MkZBS3JCLHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTt3REFnRGxDLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1RFWFRfV09SRF9JTlZPSUNFIH0gZnJvbSAnLi4vLi4vdHJlZS9jb25zdGFudHMvZGVmYXVsdFRleHRXb3JkSW52b2ljZSc7XG5pbXBvcnQgeyBJVGV4dFdvcmRJbnZvaWNlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbCc7XG5pbXBvcnQgeyBJbnZvaWNlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbC9pbnZvaWNlLW1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F2YS1pbnZvaWNlLWRpc3BsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ3VycmVuY3lQaXBlLCBEYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnZvaWNlLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSW52b2ljZURpc3BsYXlDb21wb25lbnQge1xuICBpbnZvaWNlID0gaW5wdXQucmVxdWlyZWQ8SW52b2ljZT4oKTtcbiAgcHJpdmF0ZSBfdGV4dFdvcmRzOiBJVGV4dFdvcmRJbnZvaWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gc3VwcGx5IGEgbWFwIG9mIHN0cmluZ3MgdG8gYmUgdXNlZCBmb3IgdGhlIHRleHQgaW4gdGhlIHRyZWUuIFRoaXMgYWxsb3dzIHlvdSB0byB0cmFuc2xhdGVcbiAgICogdGhlIHRleHQgaW4gdGhlIHRyZWUgdG8gb3RoZXIgbGFuZ3VhZ2VzLlxuICAgKiB7XG4gICAqICAgaW52b2ljZVRpdGxlPzogc3RyaW5nO1xuICAgKiAgIHZhdElkPzogc3RyaW5nO1xuICAgKiAgIGRldGFpbHNJbnZvaWNlTnVtYmVyPzogc3RyaW5nO1xuICAgKiAgIGRldGFpbHNJbnZvaWNlRGF0ZT86IHN0cmluZztcbiAgICogICBkZXRhaWxzUGF5bWVudER1ZURhdGU/OiBzdHJpbmc7XG4gICAqICAgZGV0YWlsc0N1cnJlbmN5Q29kZT86IHN0cmluZztcbiAgICogICBkZXRhaWxzUGF5bWVudFRlcm1zPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNUb3BpYz86IHN0cmluZztcbiAgICogICByZWZlcmVuY2VzQnV5ZXJSZWZlcmVuY2U/OiBzdHJpbmc7XG4gICAqICAgcmVmZXJlbmNlc1Byb2plY3RSZWZlcmVuY2U/OiBzdHJpbmc7XG4gICAqICAgcmVmZXJlbmNlc0NvbnRyYWN0UmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNQdXJjaGFzZU9yZGVyUmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNTYWxlc09yZGVyUmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNSZWNlaXZpbmdBZHZpY2VSZWZlcmVuY2U/OiBzdHJpbmc7XG4gICAqICAgcmVmZXJlbmNlc0Rpc3BhdGNoQWR2aWNlUmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNUZW5kZXJPckxvdFJlZmVyZW5jZT86IHN0cmluZztcbiAgICogICByZWZlcmVuY2VzSW52b2ljZWRPYmplY3RJZGVudGlmaWVyPzogc3RyaW5nO1xuICAgKiAgIHRhYmxlSGVhZERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgKiAgIHRhYmxlSGVhZFF1YW50aXR5Pzogc3RyaW5nO1xuICAgKiAgIHRhYmxlSGVhZFVuaXQ/OiBzdHJpbmc7XG4gICAqICAgdGFibGVIZWFkTmV0UHJpY2U/OiBzdHJpbmc7XG4gICAqICAgdGFibGVIZWFkTmV0QW1vdW50Pzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvcGljPzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvdGFsTmV0Pzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvdGFsQWxsb3dhbmNlcz86IHN0cmluZztcbiAgICogICB0b3RhbHNUb3RhbENoYXJnZXM/OiBzdHJpbmc7XG4gICAqICAgdG90YWxzVG90YWxBZnRlckRlZHVjdGlvbnM/OiBzdHJpbmc7XG4gICAqICAgdG90YWxzVG90YWxWYXRBbW91bnQ/OiBzdHJpbmc7XG4gICAqICAgdG90YWxzVG90YWxHcm9zcz86IHN0cmluZztcbiAgICogICB0b3RhbHNBbHJlYWR5UGFpZFRvdGFsPzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvdGFsVG9CZVBhaWQ/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zVG9waWM/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zQWNjb3VudElkZW50aWZpZXI/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zQWNjb3VudE5hbWU/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zU2VydmljZVByb3ZpZGVySWRlbnRpZmllcj86IHN0cmluZztcbiAgICogICBub3Rlc1RvcGljPzogc3RyaW5nO1xuICAgKiB9XG4gICAqL1xuICBASW5wdXQoKSBzZXQgdGV4dFdvcmRzKHdvcmRzOiBJVGV4dFdvcmRJbnZvaWNlIHwgbnVsbCkge1xuICAgIHRoaXMuX3RleHRXb3JkcyA9IHsgLi4udGhpcy50ZXh0V29yZHMsIC4uLndvcmRzIH07XG4gIH0gLy8gYWxsb3cgdG8gdHJhbnNsYXRlIGFsbCB0ZXh0cyB0byBvdGhlciBsYW5ndWFnZVxuICBnZXQgdGV4dFdvcmRzKCkge1xuICAgIHJldHVybiB0aGlzLl90ZXh0V29yZHM7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fdGV4dFdvcmRzID0geyAuLi5ERUZBVUxUX1RFWFRfV09SRF9JTlZPSUNFIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbnZvaWNlLWNvbnRhaW5lclwiPlxuICA8IS0tIFNlbGxlciBhbmQgQnV5ZXIgSW5mb3JtYXRpb24gLS0+XG4gIDxoMSBjbGFzcz1cImludm9pY2UtdGl0bGVcIj57eyB0ZXh0V29yZHM/Lmludm9pY2VUaXRsZSB9fTwvaDE+XG4gIDxoZWFkZXIgY2xhc3M9XCJpbnZvaWNlLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWxsZXItaW5mb1wiPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgaW52b2ljZSgpLnNlbGxlcj8ubmFtZSB9fTwvc3Ryb25nPlxuICAgICAgPC9wPlxuICAgICAgPHA+e3sgaW52b2ljZSgpLnNlbGxlcj8uYWRkcmVzcyB9fTwvcD5cbiAgICAgIDxwPnt7IGludm9pY2UoKS5zZWxsZXI/LmNpdHkgfX0sIHt7IGludm9pY2UoKS5zZWxsZXI/LnppcENvZGUgfX08L3A+XG4gICAgICA8cD57eyBpbnZvaWNlKCkuc2VsbGVyPy5jb3VudHJ5Q29kZSB9fTwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8udmF0SWQgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5zZWxsZXI/LnZhdElkIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImludm9pY2UtZGV0YWlsc1wiPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5kZXRhaWxzSW52b2ljZU51bWJlciB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLmludm9pY2VOdW1iZXIgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uZGV0YWlsc0ludm9pY2VEYXRlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkuaW52b2ljZURhdGUgfCBkYXRlOiAnZGQuTU0ueXl5eScgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uZGV0YWlsc1BheW1lbnREdWVEYXRlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucGF5bWVudER1ZURhdGUgfCBkYXRlOiAnZGQuTU0ueXl5eScgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uZGV0YWlsc0N1cnJlbmN5Q29kZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5kZXRhaWxzUGF5bWVudFRlcm1zIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucGF5bWVudFRlcm1zIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJ1eWVyLWluZm9cIj5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IGludm9pY2UoKS5idXllcj8ubmFtZSB9fTwvc3Ryb25nPlxuICAgICAgPC9wPlxuICAgICAgPHA+e3sgaW52b2ljZSgpLmJ1eWVyPy5hZGRyZXNzIH19PC9wPlxuICAgICAgPHA+e3sgaW52b2ljZSgpLmJ1eWVyPy5jaXR5IH19LCB7eyBpbnZvaWNlKCkuYnV5ZXI/LnppcENvZGUgfX08L3A+XG4gICAgICA8cD57eyBpbnZvaWNlKCkuYnV5ZXI/LmNvdW50cnlDb2RlIH19PC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy52YXRJZCB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLmJ1eWVyPy52YXRJZCB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImludm9pY2UtcmVmZXJlbmNlc1wiPlxuICAgIDxoMj57eyB0ZXh0V29yZHM/LnJlZmVyZW5jZXNUb3BpYyB9fTwvaDI+XG4gICAgPHA+XG4gICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8ucmVmZXJlbmNlc0J1eWVyUmVmZXJlbmNlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucmVmZXJlbmNlcz8uYnV5ZXJSZWZlcmVuY2UgfX1cbiAgICA8L3A+XG4gICAgPHA+XG4gICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8ucmVmZXJlbmNlc1Byb2plY3RSZWZlcmVuY2UgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5yZWZlcmVuY2VzPy5wcm9qZWN0UmVmZXJlbmNlIH19XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnJlZmVyZW5jZXNDb250cmFjdFJlZmVyZW5jZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLnJlZmVyZW5jZXM/LmNvbnRyYWN0UmVmZXJlbmNlIH19XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnJlZmVyZW5jZXNQdXJjaGFzZU9yZGVyUmVmZXJlbmNlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucmVmZXJlbmNlcz8ucHVyY2hhc2VPcmRlclJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzU2FsZXNPcmRlclJlZmVyZW5jZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLnJlZmVyZW5jZXM/LnNhbGVzT3JkZXJSZWZlcmVuY2UgfX1cbiAgICA8L3A+XG4gICAgPHA+XG4gICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8ucmVmZXJlbmNlc1JlY2VpdmluZ0FkdmljZVJlZmVyZW5jZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLnJlZmVyZW5jZXM/LnJlY2VpdmluZ0FkdmljZVJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzRGlzcGF0Y2hBZHZpY2VSZWZlcmVuY2UgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5yZWZlcmVuY2VzPy5kaXNwYXRjaEFkdmljZVJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzVGVuZGVyT3JMb3RSZWZlcmVuY2UgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5yZWZlcmVuY2VzPy50ZW5kZXJPckxvdFJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzSW52b2ljZWRPYmplY3RJZGVudGlmaWVyIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucmVmZXJlbmNlcz8uaW52b2ljZWRPYmplY3RJZGVudGlmaWVyIH19XG4gICAgPC9wPlxuICA8L3NlY3Rpb24+XG5cbiAgPHRhYmxlIGNsYXNzPVwiaW52b2ljZS10YWJsZVwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoPiM8L3RoPlxuICAgICAgICA8dGg+e3sgdGV4dFdvcmRzPy50YWJsZUhlYWREZXNjcmlwdGlvbiB9fTwvdGg+XG4gICAgICAgIDx0aD57eyB0ZXh0V29yZHM/LnRhYmxlSGVhZFF1YW50aXR5IH19PC90aD5cbiAgICAgICAgPHRoPnt7IHRleHRXb3Jkcz8udGFibGVIZWFkVW5pdCB9fTwvdGg+XG4gICAgICAgIDx0aD57eyB0ZXh0V29yZHM/LnRhYmxlSGVhZE5ldFByaWNlIH19PC90aD5cbiAgICAgICAgPHRoPnt7IHRleHRXb3Jkcz8udGFibGVIZWFkTmV0QW1vdW50IH19PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICBAZm9yIChpdGVtIG9mIGludm9pY2UoKS5saW5lSXRlbXM7IHRyYWNrIGl0ZW07IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+e3sgaSArIDEgfX08L3RkPlxuICAgICAgICAgIDx0ZD57eyBpdGVtLml0ZW1JbmZvcm1hdGlvbj8uZGVzY3JpcHRpb24gfX08L3RkPlxuICAgICAgICAgIDx0ZD57eyBpdGVtLnF1YW50aXR5IH19PC90ZD5cbiAgICAgICAgICA8dGQ+e3sgaXRlbS51bml0Q29kZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkPnt7IGl0ZW0ucHJpY2VEZXRhaWxzPy5uZXRQcmljZSB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19PC90ZD5cbiAgICAgICAgICA8dGQ+e3sgaXRlbS5uZXRBbW91bnQgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cblxuICA8ZGl2IGNsYXNzPVwiYWRkaXRpb24taW5mb1wiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaW52b2ljZS10b3RhbHNcIj5cbiAgICAgIDxoMj57eyB0ZXh0V29yZHM/LnRvdGFsc1RvcGljIH19PC9oMj5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8udG90YWxzVG90YWxOZXQgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsTmV0IHwgY3VycmVuY3k6IGludm9pY2UoKS5jdXJyZW5jeUNvZGUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8udG90YWxzVG90YWxBbGxvd2FuY2VzIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkudG90YWxzPy50b3RhbEFsbG93YW5jZXMgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy50b3RhbHNUb3RhbENoYXJnZXMgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsQ2hhcmdlcyB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsQWZ0ZXJEZWR1Y3Rpb25zIH19Ojwvc3Ryb25nPlxuICAgICAgICB7eyBpbnZvaWNlKCkudG90YWxzPy50b3RhbEFmdGVyRGVkdWN0aW9ucyB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsVmF0QW1vdW50IH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkudG90YWxzPy50b3RhbFZhdEFtb3VudCB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsR3Jvc3MgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsR3Jvc3MgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy50b3RhbHNBbHJlYWR5UGFpZFRvdGFsIH19Ojwvc3Ryb25nPlxuICAgICAgICB7eyBpbnZvaWNlKCkudG90YWxzPy5hbHJlYWR5UGFpZFRvdGFsIHwgY3VycmVuY3k6IGludm9pY2UoKS5jdXJyZW5jeUNvZGUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwIGNsYXNzPVwidG90YWxcIj5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsVG9CZVBhaWQgfX06PC9zdHJvbmc+XG4gICAgICAgIDxzdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsVG9CZVBhaWQgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fTwvc3Ryb25nPlxuICAgICAgPC9wPlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwicGF5bWVudC1pbnN0cnVjdGlvbnNcIj5cbiAgICAgIDxoMj57eyB0ZXh0V29yZHM/Lmluc3RydWN0aW9uc1RvcGljIH19PC9oMj5cbiAgICAgIDxwPnt7IGludm9pY2UoKS5wYXltZW50SW5zdHJ1Y3Rpb25zPy5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgIEBmb3IgKG1lYW5zIG9mIGludm9pY2UoKS5wYXltZW50SW5zdHJ1Y3Rpb25zPy5wYXltZW50TWVhbnM7IHRyYWNrIG1lYW5zKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uaW5zdHJ1Y3Rpb25zQWNjb3VudElkZW50aWZpZXIgfX06PC9zdHJvbmc+IHt7IG1lYW5zLmFjY291bnRJZGVudGlmaWVyIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/Lmluc3RydWN0aW9uc0FjY291bnROYW1lIH19Ojwvc3Ryb25nPiB7eyBtZWFucy5hY2NvdW50TmFtZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5pbnN0cnVjdGlvbnNTZXJ2aWNlUHJvdmlkZXJJZGVudGlmaWVyIH19Ojwvc3Ryb25nPiB7eyBtZWFucy5zZXJ2aWNlUHJvdmlkZXJJZGVudGlmaWVyIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuXG4gIDxzZWN0aW9uIGNsYXNzPVwiaW52b2ljZS1ub3Rlc1wiPlxuICAgIDxoMj57eyB0ZXh0V29yZHM/Lm5vdGVzVG9waWMgfX08L2gyPlxuICAgIEBmb3IgKG5vdGUgb2YgaW52b2ljZSgpLmludm9pY2VOb3RlczsgdHJhY2sgbm90ZSkge1xuICAgICAgPGRpdj5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHN0cm9uZz57eyBub3RlLnNob3J0VGV4dCB9fTwvc3Ryb25nPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPnt7IG5vdGUubG9uZ1RleHQgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXZhL3NyYy9saWIvYXZhLXRyZWUvaW52b2ljZS9pbnZvaWNlLWRpc3BsYXkvaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXZhL3NyYy9saWIvYXZhLXRyZWUvaW52b2ljZS9pbnZvaWNlLWRpc3BsYXkvaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQVl4RixNQUFNLE9BQU8sdUJBQXVCO0lBSWxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXlDRztJQUNILElBQWEsU0FBUyxDQUFDLEtBQThCO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNwRCxDQUFDLENBQUMsaURBQWlEO0lBQ25ELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0Q7UUFuREEsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUM1QixlQUFVLEdBQTRCLElBQUksQ0FBQztRQW1EakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztJQUNyRCxDQUFDOzhHQXREVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw2VkNmcEMsNHdNQW9LQSxvMEJEMUpZLFlBQVksNENBQUUsUUFBUTs7MkZBS3JCLHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTt3REFnRGxDLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1RFWFRfV09SRF9JTlZPSUNFIH0gZnJvbSAnLi4vLi4vdHJlZS9jb25zdGFudHMvZGVmYXVsdFRleHRXb3JkSW52b2ljZSc7XG5pbXBvcnQgeyBJVGV4dFdvcmRJbnZvaWNlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbCc7XG5pbXBvcnQgeyBJbnZvaWNlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbC9pbnZvaWNlLW1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F2YS1pbnZvaWNlLWRpc3BsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ3VycmVuY3lQaXBlLCBEYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnZvaWNlLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaW52b2ljZS1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSW52b2ljZURpc3BsYXlDb21wb25lbnQge1xuICBpbnZvaWNlID0gaW5wdXQucmVxdWlyZWQ8SW52b2ljZT4oKTtcbiAgcHJpdmF0ZSBfdGV4dFdvcmRzOiBJVGV4dFdvcmRJbnZvaWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gc3VwcGx5IGEgbWFwIG9mIHN0cmluZ3MgdG8gYmUgdXNlZCBmb3IgdGhlIHRleHQgaW4gdGhlIHRyZWUuIFRoaXMgYWxsb3dzIHlvdSB0byB0cmFuc2xhdGVcbiAgICogdGhlIHRleHQgaW4gdGhlIHRyZWUgdG8gb3RoZXIgbGFuZ3VhZ2VzLlxuICAgKiB7XG4gICAqICAgaW52b2ljZVRpdGxlPzogc3RyaW5nO1xuICAgKiAgIHZhdElkPzogc3RyaW5nO1xuICAgKiAgIGRldGFpbHNJbnZvaWNlTnVtYmVyPzogc3RyaW5nO1xuICAgKiAgIGRldGFpbHNJbnZvaWNlRGF0ZT86IHN0cmluZztcbiAgICogICBkZXRhaWxzUGF5bWVudER1ZURhdGU/OiBzdHJpbmc7XG4gICAqICAgZGV0YWlsc0N1cnJlbmN5Q29kZT86IHN0cmluZztcbiAgICogICBkZXRhaWxzUGF5bWVudFRlcm1zPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNUb3BpYz86IHN0cmluZztcbiAgICogICByZWZlcmVuY2VzQnV5ZXJSZWZlcmVuY2U/OiBzdHJpbmc7XG4gICAqICAgcmVmZXJlbmNlc1Byb2plY3RSZWZlcmVuY2U/OiBzdHJpbmc7XG4gICAqICAgcmVmZXJlbmNlc0NvbnRyYWN0UmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNQdXJjaGFzZU9yZGVyUmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNTYWxlc09yZGVyUmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNSZWNlaXZpbmdBZHZpY2VSZWZlcmVuY2U/OiBzdHJpbmc7XG4gICAqICAgcmVmZXJlbmNlc0Rpc3BhdGNoQWR2aWNlUmVmZXJlbmNlPzogc3RyaW5nO1xuICAgKiAgIHJlZmVyZW5jZXNUZW5kZXJPckxvdFJlZmVyZW5jZT86IHN0cmluZztcbiAgICogICByZWZlcmVuY2VzSW52b2ljZWRPYmplY3RJZGVudGlmaWVyPzogc3RyaW5nO1xuICAgKiAgIHRhYmxlSGVhZERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgKiAgIHRhYmxlSGVhZFF1YW50aXR5Pzogc3RyaW5nO1xuICAgKiAgIHRhYmxlSGVhZFVuaXQ/OiBzdHJpbmc7XG4gICAqICAgdGFibGVIZWFkTmV0UHJpY2U/OiBzdHJpbmc7XG4gICAqICAgdGFibGVIZWFkTmV0QW1vdW50Pzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvcGljPzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvdGFsTmV0Pzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvdGFsQWxsb3dhbmNlcz86IHN0cmluZztcbiAgICogICB0b3RhbHNUb3RhbENoYXJnZXM/OiBzdHJpbmc7XG4gICAqICAgdG90YWxzVG90YWxBZnRlckRlZHVjdGlvbnM/OiBzdHJpbmc7XG4gICAqICAgdG90YWxzVG90YWxWYXRBbW91bnQ/OiBzdHJpbmc7XG4gICAqICAgdG90YWxzVG90YWxHcm9zcz86IHN0cmluZztcbiAgICogICB0b3RhbHNBbHJlYWR5UGFpZFRvdGFsPzogc3RyaW5nO1xuICAgKiAgIHRvdGFsc1RvdGFsVG9CZVBhaWQ/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zVG9waWM/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zQWNjb3VudElkZW50aWZpZXI/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zQWNjb3VudE5hbWU/OiBzdHJpbmc7XG4gICAqICAgaW5zdHJ1Y3Rpb25zU2VydmljZVByb3ZpZGVySWRlbnRpZmllcj86IHN0cmluZztcbiAgICogICBub3Rlc1RvcGljPzogc3RyaW5nO1xuICAgKiB9XG4gICAqL1xuICBASW5wdXQoKSBzZXQgdGV4dFdvcmRzKHdvcmRzOiBJVGV4dFdvcmRJbnZvaWNlIHwgbnVsbCkge1xuICAgIHRoaXMuX3RleHRXb3JkcyA9IHsgLi4udGhpcy50ZXh0V29yZHMsIC4uLndvcmRzIH07XG4gIH0gLy8gYWxsb3cgdG8gdHJhbnNsYXRlIGFsbCB0ZXh0cyB0byBvdGhlciBsYW5ndWFnZVxuICBnZXQgdGV4dFdvcmRzKCkge1xuICAgIHJldHVybiB0aGlzLl90ZXh0V29yZHM7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fdGV4dFdvcmRzID0geyAuLi5ERUZBVUxUX1RFWFRfV09SRF9JTlZPSUNFIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbnZvaWNlLWNvbnRhaW5lclwiPlxuICA8IS0tIFNlbGxlciBhbmQgQnV5ZXIgSW5mb3JtYXRpb24gLS0+XG4gIDxoMSBjbGFzcz1cImludm9pY2UtdGl0bGVcIj57eyB0ZXh0V29yZHM/Lmludm9pY2VUaXRsZSB9fTwvaDE+XG4gIDxoZWFkZXIgY2xhc3M9XCJpbnZvaWNlLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWxsZXItaW5mb1wiPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgaW52b2ljZSgpLnNlbGxlcj8ubmFtZSB9fTwvc3Ryb25nPlxuICAgICAgPC9wPlxuICAgICAgPHA+e3sgaW52b2ljZSgpLnNlbGxlcj8uYWRkcmVzcyB9fTwvcD5cbiAgICAgIDxwPnt7IGludm9pY2UoKS5zZWxsZXI/LmNpdHkgfX0sIHt7IGludm9pY2UoKS5zZWxsZXI/LnppcENvZGUgfX08L3A+XG4gICAgICA8cD57eyBpbnZvaWNlKCkuc2VsbGVyPy5jb3VudHJ5Q29kZSB9fTwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8udmF0SWQgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5zZWxsZXI/LnZhdElkIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImludm9pY2UtZGV0YWlsc1wiPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5kZXRhaWxzSW52b2ljZU51bWJlciB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLmludm9pY2VOdW1iZXIgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uZGV0YWlsc0ludm9pY2VEYXRlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkuaW52b2ljZURhdGUgfCBkYXRlOiAnZGQuTU0ueXl5eScgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uZGV0YWlsc1BheW1lbnREdWVEYXRlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucGF5bWVudER1ZURhdGUgfCBkYXRlOiAnZGQuTU0ueXl5eScgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uZGV0YWlsc0N1cnJlbmN5Q29kZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5kZXRhaWxzUGF5bWVudFRlcm1zIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucGF5bWVudFRlcm1zIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJ1eWVyLWluZm9cIj5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IGludm9pY2UoKS5idXllcj8ubmFtZSB9fTwvc3Ryb25nPlxuICAgICAgPC9wPlxuICAgICAgPHA+e3sgaW52b2ljZSgpLmJ1eWVyPy5hZGRyZXNzIH19PC9wPlxuICAgICAgPHA+e3sgaW52b2ljZSgpLmJ1eWVyPy5jaXR5IH19LCB7eyBpbnZvaWNlKCkuYnV5ZXI/LnppcENvZGUgfX08L3A+XG4gICAgICA8cD57eyBpbnZvaWNlKCkuYnV5ZXI/LmNvdW50cnlDb2RlIH19PC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy52YXRJZCB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLmJ1eWVyPy52YXRJZCB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImludm9pY2UtcmVmZXJlbmNlc1wiPlxuICAgIDxoMj57eyB0ZXh0V29yZHM/LnJlZmVyZW5jZXNUb3BpYyB9fTwvaDI+XG4gICAgPHA+XG4gICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8ucmVmZXJlbmNlc0J1eWVyUmVmZXJlbmNlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucmVmZXJlbmNlcz8uYnV5ZXJSZWZlcmVuY2UgfX1cbiAgICA8L3A+XG4gICAgPHA+XG4gICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8ucmVmZXJlbmNlc1Byb2plY3RSZWZlcmVuY2UgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5yZWZlcmVuY2VzPy5wcm9qZWN0UmVmZXJlbmNlIH19XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnJlZmVyZW5jZXNDb250cmFjdFJlZmVyZW5jZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLnJlZmVyZW5jZXM/LmNvbnRyYWN0UmVmZXJlbmNlIH19XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnJlZmVyZW5jZXNQdXJjaGFzZU9yZGVyUmVmZXJlbmNlIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucmVmZXJlbmNlcz8ucHVyY2hhc2VPcmRlclJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzU2FsZXNPcmRlclJlZmVyZW5jZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLnJlZmVyZW5jZXM/LnNhbGVzT3JkZXJSZWZlcmVuY2UgfX1cbiAgICA8L3A+XG4gICAgPHA+XG4gICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8ucmVmZXJlbmNlc1JlY2VpdmluZ0FkdmljZVJlZmVyZW5jZSB9fTo8L3N0cm9uZz4ge3sgaW52b2ljZSgpLnJlZmVyZW5jZXM/LnJlY2VpdmluZ0FkdmljZVJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzRGlzcGF0Y2hBZHZpY2VSZWZlcmVuY2UgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5yZWZlcmVuY2VzPy5kaXNwYXRjaEFkdmljZVJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzVGVuZGVyT3JMb3RSZWZlcmVuY2UgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS5yZWZlcmVuY2VzPy50ZW5kZXJPckxvdFJlZmVyZW5jZSB9fVxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5yZWZlcmVuY2VzSW52b2ljZWRPYmplY3RJZGVudGlmaWVyIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkucmVmZXJlbmNlcz8uaW52b2ljZWRPYmplY3RJZGVudGlmaWVyIH19XG4gICAgPC9wPlxuICA8L3NlY3Rpb24+XG5cbiAgPHRhYmxlIGNsYXNzPVwiaW52b2ljZS10YWJsZVwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoPiM8L3RoPlxuICAgICAgICA8dGg+e3sgdGV4dFdvcmRzPy50YWJsZUhlYWREZXNjcmlwdGlvbiB9fTwvdGg+XG4gICAgICAgIDx0aD57eyB0ZXh0V29yZHM/LnRhYmxlSGVhZFF1YW50aXR5IH19PC90aD5cbiAgICAgICAgPHRoPnt7IHRleHRXb3Jkcz8udGFibGVIZWFkVW5pdCB9fTwvdGg+XG4gICAgICAgIDx0aD57eyB0ZXh0V29yZHM/LnRhYmxlSGVhZE5ldFByaWNlIH19PC90aD5cbiAgICAgICAgPHRoPnt7IHRleHRXb3Jkcz8udGFibGVIZWFkTmV0QW1vdW50IH19PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICBAZm9yIChpdGVtIG9mIGludm9pY2UoKS5saW5lSXRlbXM7IHRyYWNrIGl0ZW07IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+e3sgaSArIDEgfX08L3RkPlxuICAgICAgICAgIDx0ZD57eyBpdGVtLml0ZW1JbmZvcm1hdGlvbj8uZGVzY3JpcHRpb24gfX08L3RkPlxuICAgICAgICAgIDx0ZD57eyBpdGVtLnF1YW50aXR5IH19PC90ZD5cbiAgICAgICAgICA8dGQ+e3sgaXRlbS51bml0Q29kZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkPnt7IGl0ZW0ucHJpY2VEZXRhaWxzPy5uZXRQcmljZSB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19PC90ZD5cbiAgICAgICAgICA8dGQ+e3sgaXRlbS5uZXRBbW91bnQgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cblxuICA8ZGl2IGNsYXNzPVwiYWRkaXRpb24taW5mb1wiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaW52b2ljZS10b3RhbHNcIj5cbiAgICAgIDxoMj57eyB0ZXh0V29yZHM/LnRvdGFsc1RvcGljIH19PC9oMj5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8udG90YWxzVG90YWxOZXQgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsTmV0IHwgY3VycmVuY3k6IGludm9pY2UoKS5jdXJyZW5jeUNvZGUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8udG90YWxzVG90YWxBbGxvd2FuY2VzIH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkudG90YWxzPy50b3RhbEFsbG93YW5jZXMgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy50b3RhbHNUb3RhbENoYXJnZXMgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsQ2hhcmdlcyB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsQWZ0ZXJEZWR1Y3Rpb25zIH19Ojwvc3Ryb25nPlxuICAgICAgICB7eyBpbnZvaWNlKCkudG90YWxzPy50b3RhbEFmdGVyRGVkdWN0aW9ucyB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsVmF0QW1vdW50IH19Ojwvc3Ryb25nPiB7eyBpbnZvaWNlKCkudG90YWxzPy50b3RhbFZhdEFtb3VudCB8IGN1cnJlbmN5OiBpbnZvaWNlKCkuY3VycmVuY3lDb2RlIH19XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsR3Jvc3MgfX06PC9zdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsR3Jvc3MgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy50b3RhbHNBbHJlYWR5UGFpZFRvdGFsIH19Ojwvc3Ryb25nPlxuICAgICAgICB7eyBpbnZvaWNlKCkudG90YWxzPy5hbHJlYWR5UGFpZFRvdGFsIHwgY3VycmVuY3k6IGludm9pY2UoKS5jdXJyZW5jeUNvZGUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwIGNsYXNzPVwidG90YWxcIj5cbiAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/LnRvdGFsc1RvdGFsVG9CZVBhaWQgfX06PC9zdHJvbmc+XG4gICAgICAgIDxzdHJvbmc+IHt7IGludm9pY2UoKS50b3RhbHM/LnRvdGFsVG9CZVBhaWQgfCBjdXJyZW5jeTogaW52b2ljZSgpLmN1cnJlbmN5Q29kZSB9fTwvc3Ryb25nPlxuICAgICAgPC9wPlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwicGF5bWVudC1pbnN0cnVjdGlvbnNcIj5cbiAgICAgIDxoMj57eyB0ZXh0V29yZHM/Lmluc3RydWN0aW9uc1RvcGljIH19PC9oMj5cbiAgICAgIDxwPnt7IGludm9pY2UoKS5wYXltZW50SW5zdHJ1Y3Rpb25zPy5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgIEBmb3IgKG1lYW5zIG9mIGludm9pY2UoKS5wYXltZW50SW5zdHJ1Y3Rpb25zPy5wYXltZW50TWVhbnM7IHRyYWNrIG1lYW5zKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHRleHRXb3Jkcz8uaW5zdHJ1Y3Rpb25zQWNjb3VudElkZW50aWZpZXIgfX06PC9zdHJvbmc+IHt7IG1lYW5zLmFjY291bnRJZGVudGlmaWVyIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0ZXh0V29yZHM/Lmluc3RydWN0aW9uc0FjY291bnROYW1lIH19Ojwvc3Ryb25nPiB7eyBtZWFucy5hY2NvdW50TmFtZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdGV4dFdvcmRzPy5pbnN0cnVjdGlvbnNTZXJ2aWNlUHJvdmlkZXJJZGVudGlmaWVyIH19Ojwvc3Ryb25nPiB7eyBtZWFucy5zZXJ2aWNlUHJvdmlkZXJJZGVudGlmaWVyIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuXG4gIDxzZWN0aW9uIGNsYXNzPVwiaW52b2ljZS1ub3Rlc1wiPlxuICAgIDxoMj57eyB0ZXh0V29yZHM/Lm5vdGVzVG9waWMgfX08L2gyPlxuICAgIEBmb3IgKG5vdGUgb2YgaW52b2ljZSgpLmludm9pY2VOb3RlczsgdHJhY2sgbm90ZSkge1xuICAgICAgPGRpdj5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHN0cm9uZz57eyBub3RlLnNob3J0VGV4dCB9fTwvc3Ryb25nPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPnt7IG5vdGUubG9uZ1RleHQgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
|
|
@@ -360,10 +360,10 @@ export class AvaTreeComponent {
|
|
|
360
360
|
}
|
|
361
361
|
});
|
|
362
362
|
}
|
|
363
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
363
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AvaTreeComponent, deps: [{ token: i1.FlatElementsService, self: true }, { token: i2.SelectElementService, self: true }, { token: i3.TreeNodeSelectionService, self: true }, { token: i4.ExpandParentGroupService, self: true }, { token: i5.KeyboardOperationService, self: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
364
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: AvaTreeComponent, selector: "ava-tree", inputs: { project: "project", expansionState: "expansionState", selectedNodeId: "selectedNodeId", indent: "indent", selectedColor: "selectedColor", modeView: "modeView", allowDblClick: "allowDblClick", isSelectionMode: "isSelectionMode", initiallySelectedElements: "initiallySelectedElements", textWords: "textWords", mouseAwareKeyboardControl: "mouseAwareKeyboardControl", customKeyboardOperationConfig: "customKeyboardOperationConfig", listFilterFunc: "listFilterFunc", addTableColumns: "addTableColumns", functionView: "functionView" }, outputs: { selectClick: "selectClick", selectDblClick: "selectDblClick", contextMenuEvent: "contextMenuEvent", selectedElementsChanged: "selectedElementsChanged" }, providers: [FlatElementsService, SelectElementService, TreeNodeSelectionService, ExpandParentGroupService, KeyboardOperationService], viewQueries: [{ propertyName: "avaTreeWrapper", first: true, predicate: ["avaTreeWrapper"], descendants: true }, { propertyName: "avaMainWrapper", first: true, predicate: ["avaMainWrapper"], descendants: true }, { propertyName: "avaTreeFilterInput", first: true, predicate: ["avaTreeFilterInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"main-wrapper\"\n #avaMainWrapper\n>\n <div\n class=\"control\"\n #control\n >\n <mat-form-field class=\"control-filter\">\n <mat-label>{{ textWords?.textSearch }}</mat-label>\n <input\n matInput\n [ngModel]=\"filterInput\"\n (ngModelChange)=\"onFilter($event)\"\n #avaTreeFilterInput\n />\n </mat-form-field>\n <ng-container *ngIf=\"modeView === listModeViewType.Tree\">\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(true)\"\n [matTooltip]=\"textWords?.tooltipAllOpen || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">add</mat-icon>\n </button>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(false)\"\n [matTooltip]=\"textWords?.tooltipAllClose || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">remove</mat-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"isSelectionMode\">\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(true)\"\n [matTooltip]=\"textWords?.tooltipAllAdd || ''\"\n class=\"control-button\"\n >\n <mat-icon>add</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(false)\"\n [matTooltip]=\"textWords?.tooltipAllRemove || ''\"\n class=\"control-button\"\n >\n <mat-icon>remove</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n </ng-container>\n </div>\n <div\n [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n class=\"ava-tree-wrapper\"\n #avaTreeWrapper\n >\n <ng-container *ngIf=\"flatElements?.length; else nothing\">\n <ng-container *ngIf=\"filteredElementList?.length; else nothingFiltered\">\n <ava-tree-structure\n *ngIf=\"modeView === listModeViewType.Tree && !avaTreeFilterInput.value\"\n [serviceSpecification]=\"serviceSpecification\"\n [indent]=\"indent\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-tree-structure>\n <ava-list-structure\n *ngIf=\"modeView === listModeViewType.List || (modeView === listModeViewType.Tree && avaTreeFilterInput.value)\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-list-structure>\n <ava-table-structure\n *ngIf=\"modeView === listModeViewType.Table\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [addTableColumns]=\"addTableColumns\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-table-structure>\n </ng-container>\n </ng-container>\n </div>\n</div>\n<ng-template #nothing>\n {{ textWords?.textNothing }}\n</ng-template>\n<ng-template #nothingFiltered>\n {{ textWords?.textNothingFiltered }}\n</ng-template>\n", styles: [".main-wrapper{max-height:100%;height:100%;overflow-y:auto;overflow-x:hidden}.control{display:flex;align-items:center;gap:5px;padding:4px}.control-filter{flex-grow:1}.control-icon{width:36px;height:36px;padding:0}.control-button{padding:0 5px}.ava-tree-wrapper{overflow-y:auto;overflow-x:hidden}::ng-deep .control .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .control .control-filter .mat-mdc-form-field-infix{min-height:auto;padding-top:10px;padding-bottom:2px}::ng-deep .control .control-filter .mat-mdc-floating-label{top:18px}::ng-deep .control .control-filter .mdc-text-field{padding:0 6px}.layer-background{font-size:36px;width:36px;height:36px}.layer-icon{width:36px;height:36px;position:absolute;inset:1px 0 0;color:#fff}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i13.TreeStructureComponent, selector: "ava-tree-structure", inputs: ["serviceSpecification", "indent", "expansionState", "isSelectionMode", "selectedColor", "allowDblClick"] }, { kind: "component", type: i14.ListStructureComponent, selector: "ava-list-structure", inputs: ["filteredElementList", "isSelectionMode", "selectedColor", "allowDblClick"] }, { kind: "component", type: i15.TableStructureComponent, selector: "ava-table-structure", inputs: ["filteredElementList", "isSelectionMode", "addTableColumns", "selectedColor", "allowDblClick"] }] }); }
|
|
365
365
|
}
|
|
366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
366
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AvaTreeComponent, decorators: [{
|
|
367
367
|
type: Component,
|
|
368
368
|
args: [{ selector: 'ava-tree', providers: [FlatElementsService, SelectElementService, TreeNodeSelectionService, ExpandParentGroupService, KeyboardOperationService], template: "<div\n class=\"main-wrapper\"\n #avaMainWrapper\n>\n <div\n class=\"control\"\n #control\n >\n <mat-form-field class=\"control-filter\">\n <mat-label>{{ textWords?.textSearch }}</mat-label>\n <input\n matInput\n [ngModel]=\"filterInput\"\n (ngModelChange)=\"onFilter($event)\"\n #avaTreeFilterInput\n />\n </mat-form-field>\n <ng-container *ngIf=\"modeView === listModeViewType.Tree\">\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(true)\"\n [matTooltip]=\"textWords?.tooltipAllOpen || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">add</mat-icon>\n </button>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(false)\"\n [matTooltip]=\"textWords?.tooltipAllClose || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">remove</mat-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"isSelectionMode\">\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(true)\"\n [matTooltip]=\"textWords?.tooltipAllAdd || ''\"\n class=\"control-button\"\n >\n <mat-icon>add</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(false)\"\n [matTooltip]=\"textWords?.tooltipAllRemove || ''\"\n class=\"control-button\"\n >\n <mat-icon>remove</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n </ng-container>\n </div>\n <div\n [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n class=\"ava-tree-wrapper\"\n #avaTreeWrapper\n >\n <ng-container *ngIf=\"flatElements?.length; else nothing\">\n <ng-container *ngIf=\"filteredElementList?.length; else nothingFiltered\">\n <ava-tree-structure\n *ngIf=\"modeView === listModeViewType.Tree && !avaTreeFilterInput.value\"\n [serviceSpecification]=\"serviceSpecification\"\n [indent]=\"indent\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-tree-structure>\n <ava-list-structure\n *ngIf=\"modeView === listModeViewType.List || (modeView === listModeViewType.Tree && avaTreeFilterInput.value)\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-list-structure>\n <ava-table-structure\n *ngIf=\"modeView === listModeViewType.Table\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [addTableColumns]=\"addTableColumns\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-table-structure>\n </ng-container>\n </ng-container>\n </div>\n</div>\n<ng-template #nothing>\n {{ textWords?.textNothing }}\n</ng-template>\n<ng-template #nothingFiltered>\n {{ textWords?.textNothingFiltered }}\n</ng-template>\n", styles: [".main-wrapper{max-height:100%;height:100%;overflow-y:auto;overflow-x:hidden}.control{display:flex;align-items:center;gap:5px;padding:4px}.control-filter{flex-grow:1}.control-icon{width:36px;height:36px;padding:0}.control-button{padding:0 5px}.ava-tree-wrapper{overflow-y:auto;overflow-x:hidden}::ng-deep .control .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .control .control-filter .mat-mdc-form-field-infix{min-height:auto;padding-top:10px;padding-bottom:2px}::ng-deep .control .control-filter .mat-mdc-floating-label{top:18px}::ng-deep .control .control-filter .mdc-text-field{padding:0 6px}.layer-background{font-size:36px;width:36px;height:36px}.layer-icon{width:36px;height:36px;position:absolute;inset:1px 0 0;color:#fff}\n"] }]
|
|
369
369
|
}], ctorParameters: () => [{ type: i1.FlatElementsService, decorators: [{
|
|
@@ -23,10 +23,10 @@ export class ListStructureComponent {
|
|
|
23
23
|
this.$destroy.next(true);
|
|
24
24
|
this.$destroy.complete();
|
|
25
25
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ListStructureComponent, deps: [{ token: i1.SelectElementService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: ListStructureComponent, selector: "ava-list-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<ng-container *ngFor=\"let element of filteredElementList\">\n <div\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.background]=\"!isSelectionMode && element.id === selectedElement?.id ? selectedColor || '' : ''\"\n >\n <ava-tree-item\n [element]=\"element\"\n [isSelectionMode]=\"isSelectionMode\"\n [allowDblClick]=\"allowDblClick\"\n ></ava-tree-item>\n </div>\n</ng-container>\n", styles: [".select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.TreeItemComponent, selector: "ava-tree-item", inputs: ["element", "expansionState", "isSelectionMode", "allowDblClick"] }] }); }
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ListStructureComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{ selector: 'ava-list-structure', template: "<ng-container *ngFor=\"let element of filteredElementList\">\n <div\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.background]=\"!isSelectionMode && element.id === selectedElement?.id ? selectedColor || '' : ''\"\n >\n <ava-tree-item\n [element]=\"element\"\n [isSelectionMode]=\"isSelectionMode\"\n [allowDblClick]=\"allowDblClick\"\n ></ava-tree-item>\n </div>\n</ng-container>\n", styles: [".select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}\n"] }]
|
|
32
32
|
}], ctorParameters: () => [{ type: i1.SelectElementService }], propDecorators: { filteredElementList: [{
|
|
@@ -90,10 +90,10 @@ export class TableStructureComponent {
|
|
|
90
90
|
changeSelecting(element, event) {
|
|
91
91
|
this.treeNodeSelectionService.changeSelecting(event, element.id);
|
|
92
92
|
}
|
|
93
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TableStructureComponent, deps: [{ token: i1.SelectElementService }, { token: i2.TreeNodeSelectionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: TableStructureComponent, selector: "ava-table-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", addTableColumns: "addTableColumns", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let oneColumn of addTableColumns\">\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.SaveChangingViewDirective, selector: "[saveChangingView]", inputs: ["attributeValue"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.ElementIconNamePipe, name: "elementIconName" }, { kind: "pipe", type: i10.ElementTextPipe, name: "elementText" }, { kind: "pipe", type: i11.ElementItemNumberPipe, name: "elementItemNumber" }] }); }
|
|
95
95
|
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TableStructureComponent, decorators: [{
|
|
97
97
|
type: Component,
|
|
98
98
|
args: [{ selector: 'ava-table-structure', template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let oneColumn of addTableColumns\">\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"] }]
|
|
99
99
|
}], ctorParameters: () => [{ type: i1.SelectElementService }, { type: i2.TreeNodeSelectionService }, { type: i0.ChangeDetectorRef }], propDecorators: { filteredElementList: [{
|
|
@@ -84,10 +84,10 @@ export class TreeItemComponent {
|
|
|
84
84
|
changeSelecting(element, isSelected) {
|
|
85
85
|
this.treeNodeSelectionService.changeSelecting(isSelected, element.id);
|
|
86
86
|
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TreeItemComponent, deps: [{ token: i1.SelectElementService }, { token: i2.TreeNodeSelectionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: TreeItemComponent, selector: "ava-tree-item", inputs: { element: "element", expansionState: "expansionState", isSelectionMode: "isSelectionMode", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<div\n *ngIf=\"element\"\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element.id\"\n>\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [id]=\"element.id\"\n >{{ element | elementIconName }}</mat-icon\n >\n <div\n *ngIf=\"!isSelectionMode\"\n class=\"ava-tree-item__text\"\n [class.choose]=\"!isSelectionMode && element.id === preselectedElement?.id\"\n [id]=\"element.id\"\n saveChangingView=\"text\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n <mat-checkbox\n *ngIf=\"isSelectionMode\"\n class=\"ava-tree-item__checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <div\n class=\"ava-tree-item__text\"\n saveChangingView=\"text\"\n [id]=\"element.id\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n </mat-checkbox>\n</div>\n\n<ng-template #text>\n <ng-container\n *ngIf=\"\n element?.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element?.elementTypeDiscriminator === 'PositionDto';\n else simpleText\n \"\n >\n {{ element | elementItemNumber }} - {{ element | elementText }}\n </ng-container>\n</ng-template>\n<ng-template #simpleText>\n {{ element | elementText }}\n</ng-template>\n", styles: ["::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}::ng-deep .ava-tree-item__checkbox .mat-mdc-checkbox-touch-target{width:16px!important;height:16px!important}.ava-tree-item{display:flex;align-items:center}.ava-tree-item__icon,.ava-tree-item__checkbox{flex-shrink:0}.ava-tree-item__text{flex-grow:1;-webkit-user-select:none;user-select:none;white-space:nowrap}.ava-tree-item__text.choose{color:red!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i7.SaveChangingViewDirective, selector: "[saveChangingView]", inputs: ["attributeValue"] }, { kind: "pipe", type: i8.ElementIconNamePipe, name: "elementIconName" }, { kind: "pipe", type: i9.ElementTextPipe, name: "elementText" }, { kind: "pipe", type: i10.ElementItemNumberPipe, name: "elementItemNumber" }] }); }
|
|
89
89
|
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TreeItemComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
92
92
|
args: [{ selector: 'ava-tree-item', template: "<div\n *ngIf=\"element\"\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element.id\"\n>\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [id]=\"element.id\"\n >{{ element | elementIconName }}</mat-icon\n >\n <div\n *ngIf=\"!isSelectionMode\"\n class=\"ava-tree-item__text\"\n [class.choose]=\"!isSelectionMode && element.id === preselectedElement?.id\"\n [id]=\"element.id\"\n saveChangingView=\"text\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n <mat-checkbox\n *ngIf=\"isSelectionMode\"\n class=\"ava-tree-item__checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <div\n class=\"ava-tree-item__text\"\n saveChangingView=\"text\"\n [id]=\"element.id\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n </mat-checkbox>\n</div>\n\n<ng-template #text>\n <ng-container\n *ngIf=\"\n element?.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element?.elementTypeDiscriminator === 'PositionDto';\n else simpleText\n \"\n >\n {{ element | elementItemNumber }} - {{ element | elementText }}\n </ng-container>\n</ng-template>\n<ng-template #simpleText>\n {{ element | elementText }}\n</ng-template>\n", styles: ["::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}::ng-deep .ava-tree-item__checkbox .mat-mdc-checkbox-touch-target{width:16px!important;height:16px!important}.ava-tree-item{display:flex;align-items:center}.ava-tree-item__icon,.ava-tree-item__checkbox{flex-shrink:0}.ava-tree-item__text{flex-grow:1;-webkit-user-select:none;user-select:none;white-space:nowrap}.ava-tree-item__text.choose{color:red!important}\n"] }]
|
|
93
93
|
}], ctorParameters: () => [{ type: i1.SelectElementService }, { type: i2.TreeNodeSelectionService }, { type: i0.ChangeDetectorRef }], propDecorators: { element: [{
|
|
@@ -31,10 +31,10 @@ export class TreeNodeComponent {
|
|
|
31
31
|
expand(element) {
|
|
32
32
|
this.expansionState[element.id] = !this.expansionState[element.id];
|
|
33
33
|
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TreeNodeComponent, deps: [{ token: i1.SelectElementService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: TreeNodeComponent, selector: "ava-tree-node", inputs: { elementList: "elementList", indent: "indent", expansionState: "expansionState", isSelectionMode: "isSelectionMode", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<ng-container *ngFor=\"let element of elementList\">\n <div\n class=\"tree-node-wrapper\"\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.background]=\"!isSelectionMode && element.id === selectedElement?.id ? selectedColor || '' : ''\"\n >\n <div class=\"tree-node-wrapper__content\">\n <mat-icon\n *ngIf=\"element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto'; else nullIcon\"\n matRipple\n (click)=\"expand(element)\"\n class=\"tree-node__icon\"\n >\n {{ expansionState[element.id] ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <ava-tree-item\n [element]=\"element\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [allowDblClick]=\"allowDblClick\"\n ></ava-tree-item>\n </div>\n </div>\n\n <div\n *ngIf=\"element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' && expansionState?.[element.id]\"\n [style.paddingLeft]=\"indent\"\n >\n <ava-tree-node\n [elementList]=\"element | groupChildElements\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n [indent]=\"indent\"\n ></ava-tree-node>\n </div>\n</ng-container>\n<ng-template #nullIcon>\n <mat-icon></mat-icon>\n</ng-template>\n", styles: [".tree-node-wrapper{display:flex;align-items:center}.tree-node-wrapper__content{flex:1 0 100%;display:flex}.tree-node__icon{flex-shrink:0}.select{background-color:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: TreeNodeComponent, selector: "ava-tree-node", inputs: ["elementList", "indent", "expansionState", "isSelectionMode", "selectedColor", "allowDblClick"] }, { kind: "component", type: i5.TreeItemComponent, selector: "ava-tree-item", inputs: ["element", "expansionState", "isSelectionMode", "allowDblClick"] }, { kind: "pipe", type: i6.GroupChildElementsPipe, name: "groupChildElements" }] }); }
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TreeNodeComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
39
39
|
args: [{ selector: 'ava-tree-node', template: "<ng-container *ngFor=\"let element of elementList\">\n <div\n class=\"tree-node-wrapper\"\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.background]=\"!isSelectionMode && element.id === selectedElement?.id ? selectedColor || '' : ''\"\n >\n <div class=\"tree-node-wrapper__content\">\n <mat-icon\n *ngIf=\"element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto'; else nullIcon\"\n matRipple\n (click)=\"expand(element)\"\n class=\"tree-node__icon\"\n >\n {{ expansionState[element.id] ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <ava-tree-item\n [element]=\"element\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [allowDblClick]=\"allowDblClick\"\n ></ava-tree-item>\n </div>\n </div>\n\n <div\n *ngIf=\"element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' && expansionState?.[element.id]\"\n [style.paddingLeft]=\"indent\"\n >\n <ava-tree-node\n [elementList]=\"element | groupChildElements\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n [indent]=\"indent\"\n ></ava-tree-node>\n </div>\n</ng-container>\n<ng-template #nullIcon>\n <mat-icon></mat-icon>\n</ng-template>\n", styles: [".tree-node-wrapper{display:flex;align-items:center}.tree-node-wrapper__content{flex:1 0 100%;display:flex}.tree-node__icon{flex-shrink:0}.select{background-color:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}\n"] }]
|
|
40
40
|
}], ctorParameters: () => [{ type: i1.SelectElementService }], propDecorators: { elementList: [{
|
|
@@ -11,10 +11,10 @@ export class TreeStructureComponent {
|
|
|
11
11
|
this.selectedColor = null;
|
|
12
12
|
this.allowDblClick = true;
|
|
13
13
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TreeStructureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: TreeStructureComponent, selector: "ava-tree-structure", inputs: { serviceSpecification: "serviceSpecification", indent: "indent", expansionState: "expansionState", isSelectionMode: "isSelectionMode", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<ava-tree-node\n *ngIf=\"serviceSpecification?.elements\"\n [elementList]=\"serviceSpecification?.elements\"\n [indent]=\"indent\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n>\n</ava-tree-node>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TreeNodeComponent, selector: "ava-tree-node", inputs: ["elementList", "indent", "expansionState", "isSelectionMode", "selectedColor", "allowDblClick"] }] }); }
|
|
16
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TreeStructureComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
19
|
args: [{ selector: 'ava-tree-structure', template: "<ava-tree-node\n *ngIf=\"serviceSpecification?.elements\"\n [elementList]=\"serviceSpecification?.elements\"\n [indent]=\"indent\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n>\n</ava-tree-node>\n" }]
|
|
20
20
|
}], propDecorators: { serviceSpecification: [{
|
|
@@ -33,10 +33,10 @@ export class SaveChangingViewDirective {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SaveChangingViewDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.FlatElementsService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: SaveChangingViewDirective, selector: "[saveChangingView]", inputs: { attributeValue: "attributeValue" }, ngImport: i0 }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SaveChangingViewDirective, decorators: [{
|
|
40
40
|
type: Directive,
|
|
41
41
|
args: [{
|
|
42
42
|
selector: '[saveChangingView]'
|
|
@@ -15,10 +15,10 @@ export class ElementIconNamePipe {
|
|
|
15
15
|
return '';
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
19
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ElementIconNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
19
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: ElementIconNamePipe, name: "elementIconName" }); }
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ElementIconNamePipe, decorators: [{
|
|
22
22
|
type: Pipe,
|
|
23
23
|
args: [{
|
|
24
24
|
name: 'elementIconName'
|
|
@@ -11,10 +11,10 @@ export class ElementItemNumberPipe {
|
|
|
11
11
|
return '';
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
15
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ElementItemNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
15
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: ElementItemNumberPipe, name: "elementItemNumber" }); }
|
|
16
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ElementItemNumberPipe, decorators: [{
|
|
18
18
|
type: Pipe,
|
|
19
19
|
args: [{
|
|
20
20
|
name: 'elementItemNumber'
|
|
@@ -15,10 +15,10 @@ export class ElementTextPipe {
|
|
|
15
15
|
return '';
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
19
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ElementTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
19
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: ElementTextPipe, name: "elementText" }); }
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ElementTextPipe, decorators: [{
|
|
22
22
|
type: Pipe,
|
|
23
23
|
args: [{
|
|
24
24
|
name: 'elementText'
|
|
@@ -7,10 +7,10 @@ export class GroupChildElementsPipe {
|
|
|
7
7
|
}
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GroupChildElementsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
11
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: GroupChildElementsPipe, name: "groupChildElements" }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GroupChildElementsPipe, decorators: [{
|
|
14
14
|
type: Pipe,
|
|
15
15
|
args: [{
|
|
16
16
|
name: 'groupChildElements',
|