techlify-inventory-common 18.40.0 → 18.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +24 -68
- package/esm2022/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.mjs +3 -3
- package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +3 -3
- package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +9 -7
- package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +2 -6
- package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +15 -4
- package/esm2022/lib/inventory-common/product/product.module.mjs +1 -9
- package/esm2022/lib/inventory-common/shared.module.mjs +39 -0
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.mjs +5 -6
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.mjs +1 -1
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.mjs +1 -5
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.mjs +6 -3
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-simple-form/stock-issue-single-product-form.component.mjs +179 -0
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.mjs +6 -8
- package/esm2022/lib/inventory-common/stock-issue/stock-issue.module.mjs +1 -9
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.mjs +4 -5
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +7 -4
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.mjs +182 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.mjs +4 -5
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.mjs +1 -1
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +8 -9
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +43 -55
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +14 -6
- package/esm2022/public-api.mjs +3 -6
- package/fesm2022/{techlify-inventory-common-category.module-CiZXYGS7.mjs → techlify-inventory-common-category.module-CPSauMD7.mjs} +7 -7
- package/fesm2022/{techlify-inventory-common-category.module-CiZXYGS7.mjs.map → techlify-inventory-common-category.module-CPSauMD7.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-measure.module-D9tk7RWL.mjs → techlify-inventory-common-measure.module-B1LhDfAX.mjs} +8 -8
- package/fesm2022/{techlify-inventory-common-measure.module-D9tk7RWL.mjs.map → techlify-inventory-common-measure.module-B1LhDfAX.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-CsmrVmZs.mjs → techlify-inventory-common-purchase-order-view.component-wFY-HGEQ.mjs} +7 -7
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-CsmrVmZs.mjs.map → techlify-inventory-common-purchase-order-view.component-wFY-HGEQ.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-form.component-CnjtA7Hb.mjs → techlify-inventory-common-stock-issue-form.component-CQToN3ZS.mjs} +5 -5
- package/fesm2022/{techlify-inventory-common-stock-issue-form.component-CnjtA7Hb.mjs.map → techlify-inventory-common-stock-issue-form.component-CQToN3ZS.mjs.map} +1 -1
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-BsyVvElE.mjs +66 -0
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-BsyVvElE.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-CHc35QxL.mjs → techlify-inventory-common-techlify-inventory-common-CaJu6h21.mjs} +1753 -1992
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-CaJu6h21.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +3 -5
- package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +2 -0
- package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +3 -0
- package/lib/inventory-common/product/product.module.d.ts +12 -14
- package/lib/inventory-common/shared.module.d.ts +11 -0
- package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.d.ts +7 -8
- package/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.d.ts +4 -1
- package/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-simple-form/stock-issue-single-product-form.component.d.ts +40 -0
- package/lib/inventory-common/stock-issue/stock-issue.module.d.ts +5 -7
- package/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.d.ts +4 -1
- package/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.d.ts +33 -0
- package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +5 -6
- package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +8 -7
- package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +5 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -5
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-simple-form/stock-issue-form-button/stock-issue-form-button.component.mjs +0 -48
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-simple-form/stock-issue-form.module.mjs +0 -43
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-simple-form/stock-issue-simple-form/stock-issue-simple-form.component.mjs +0 -201
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-simple-form/stock-receipt-form-button/stock-receipt-form-button.component.mjs +0 -42
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-simple-form/stock-receipt-simple-form/stock-receipt-simple-form.component.mjs +0 -180
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-simple-form/stock-receipt-simple-form.module.mjs +0 -51
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.mjs +0 -41
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-zoK_HeFx.mjs +0 -66
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-zoK_HeFx.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-CHc35QxL.mjs.map +0 -1
- package/lib/inventory-common/stock-issue/stock-issue-simple-form/stock-issue-form-button/stock-issue-form-button.component.d.ts +0 -19
- package/lib/inventory-common/stock-issue/stock-issue-simple-form/stock-issue-form.module.d.ts +0 -13
- package/lib/inventory-common/stock-issue/stock-issue-simple-form/stock-issue-simple-form/stock-issue-simple-form.component.d.ts +0 -40
- package/lib/inventory-common/stock-receipts/stock-receipt-simple-form/stock-receipt-form-button/stock-receipt-form-button.component.d.ts +0 -17
- package/lib/inventory-common/stock-receipts/stock-receipt-simple-form/stock-receipt-simple-form/stock-receipt-simple-form.component.d.ts +0 -28
- package/lib/inventory-common/stock-receipts/stock-receipt-simple-form/stock-receipt-simple-form.module.d.ts +0 -15
- package/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.d.ts +0 -15
|
@@ -5,8 +5,7 @@ import * as i2 from "../stock-receipt.service";
|
|
|
5
5
|
import * as i3 from "@angular/common";
|
|
6
6
|
import * as i4 from "@angular/material/card";
|
|
7
7
|
import * as i5 from "@angular/material/progress-bar";
|
|
8
|
-
import * as i6 from "
|
|
9
|
-
import * as i7 from "ngx-techlify-core";
|
|
8
|
+
import * as i6 from "ngx-techlify-core";
|
|
10
9
|
export class StockReceiptViewComponent {
|
|
11
10
|
activatedRoute;
|
|
12
11
|
service;
|
|
@@ -46,10 +45,10 @@ export class StockReceiptViewComponent {
|
|
|
46
45
|
this.location.back();
|
|
47
46
|
}
|
|
48
47
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptViewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.StockReceiptService }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockReceiptViewComponent, selector: "app-stock-receipt-view", ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"stockReceipt\" class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-card>\n <mat-card-content>\n <h3 class=\"mb-0\">Stock Receipt for {{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</h3>\n </mat-card-content>\n </mat-card>\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 350px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-
|
|
48
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockReceiptViewComponent, selector: "app-stock-receipt-view", ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"stockReceipt\" class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-card>\n <mat-card-content>\n <h3 class=\"mb-0\">Stock Receipt for {{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</h3>\n </mat-card-content>\n </mat-card>\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 350px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name='edit'\n [routerLink]=\"['/inventory/stock-receipts/form', stockReceipt?.id]\"></app-techlify-icon>\n <app-techlify-delete-button [model]=\"stockReceipt\" [service]=\"service\"\n [data]=\"{ title: stockReceipt?.id, type: 'Stock Receipt' }\"\n (deleted)=\"redirectBack()\">\n </app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-column justify-content-start gap-2 mt-3\">\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex flex-column gap-0\">\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/products', stockReceipt?.stock_receipt_products[0]?.product?.id, 'view']\">\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</p>\n </a>\n <small *ngIf=\"stockReceipt?.stock_receipt_products[0]?.product?.sku\">{{\n stockReceipt?.stock_receipt_products[0]?.product?.sku }}</small>\n </div>\n <div class=\"d-flex flex-column justify-content-end gap-0\">\n <small *ngIf=\"stockReceipt?.date\">{{ stockReceipt?.date | date }}</small>\n <ng-container *ngIf=\"stockReceipt?.stock_receipt_products[0]?.batch?.expires_on\">\n <small techlifyFeatureEnabled=\"product-batch-numbers\">\n Expires on {{ stockReceipt?.stock_receipt_products[0]?.batch?.expires_on | date }}\n </small>\n </ng-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.purchase_price\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Purchase Price</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.purchase_price | currency }}</p>\n </div>\n </div>\n\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.supplier\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/suppliers', stockReceipt?.stock_receipt_products[0]?.supplier?.id, 'view']\">\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.supplier?.company_name }}</p>\n </a>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.quantity\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Quantity</small>\n <div class=\"d-flex gap-1\">\n <h3 class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.quantity }}</h3>\n <small class=\"text-secondary\">{{ stockReceipt?.stock_receipt_products[0]?.product?.measure?.title\n }}</small>\n </div>\n </div>\n </div>\n\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.amount\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Total Value</small>\n <h3 class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.amount | currency }}</h3>\n </div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.particulars\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Particulars</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.particulars }}</p>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.location\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Location</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.location?.title }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"stockReceipt?.stock_receipt_products[0]?.batch\">\n <div class=\"col-6\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Batch</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.batch?.batch_number }}</p>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"row\" *ngIf=\"stockReceipt?.creator\">\n <div class=\"col-12\">\n <small class=\"mb-0\">\n <span class=\"text-secondary\">Created By</span> {{ stockReceipt?.creator?.name }}\n <span class=\"text-secondary\">On</span> {{ stockReceipt?.created_at | date }}\n </small>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"StockReceipt\"\n [relatedModelId]=\"stockReceipt?.id\"></app-note-list>\n </div>\n\n <div style=\"width: calc(100% - 350px - 0.5rem)\">\n <app-entity-files-view-all title=\"Document\" [entityId]=\"stockReceipt?.id\" entityType=\"StockReceipt\">\n </app-entity-files-view-all>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.EntityFilesViewAllComponent, selector: "app-entity-files-view-all", inputs: ["entityId", "entityType", "viewOnly", "removeSearch", "hideTitleAndDetails", "displayMode", "allowMultipleFiles", "allowBulkUpdate", "viewMode", "fileDropperHeight", "isShowDragDropSection", "useTechlifyTags", "techlifyTagCategories", "techlifyTagConfig", "title", "permission"] }, { kind: "directive", type: i6.TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: ["techlifyFeatureEnabled"] }, { kind: "component", type: i6.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: i6.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: i6.TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }], preserveWhitespaces: true });
|
|
50
49
|
}
|
|
51
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptViewComponent, decorators: [{
|
|
52
51
|
type: Component,
|
|
53
|
-
args: [{ selector: 'app-stock-receipt-view', template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"stockReceipt\" class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-card>\n <mat-card-content>\n <h3 class=\"mb-0\">Stock Receipt for {{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</h3>\n </mat-card-content>\n </mat-card>\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 350px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-
|
|
52
|
+
args: [{ selector: 'app-stock-receipt-view', template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"stockReceipt\" class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-card>\n <mat-card-content>\n <h3 class=\"mb-0\">Stock Receipt for {{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</h3>\n </mat-card-content>\n </mat-card>\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 350px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name='edit'\n [routerLink]=\"['/inventory/stock-receipts/form', stockReceipt?.id]\"></app-techlify-icon>\n <app-techlify-delete-button [model]=\"stockReceipt\" [service]=\"service\"\n [data]=\"{ title: stockReceipt?.id, type: 'Stock Receipt' }\"\n (deleted)=\"redirectBack()\">\n </app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-column justify-content-start gap-2 mt-3\">\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex flex-column gap-0\">\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/products', stockReceipt?.stock_receipt_products[0]?.product?.id, 'view']\">\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</p>\n </a>\n <small *ngIf=\"stockReceipt?.stock_receipt_products[0]?.product?.sku\">{{\n stockReceipt?.stock_receipt_products[0]?.product?.sku }}</small>\n </div>\n <div class=\"d-flex flex-column justify-content-end gap-0\">\n <small *ngIf=\"stockReceipt?.date\">{{ stockReceipt?.date | date }}</small>\n <ng-container *ngIf=\"stockReceipt?.stock_receipt_products[0]?.batch?.expires_on\">\n <small techlifyFeatureEnabled=\"product-batch-numbers\">\n Expires on {{ stockReceipt?.stock_receipt_products[0]?.batch?.expires_on | date }}\n </small>\n </ng-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.purchase_price\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Purchase Price</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.purchase_price | currency }}</p>\n </div>\n </div>\n\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.supplier\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/suppliers', stockReceipt?.stock_receipt_products[0]?.supplier?.id, 'view']\">\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.supplier?.company_name }}</p>\n </a>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.quantity\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Quantity</small>\n <div class=\"d-flex gap-1\">\n <h3 class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.quantity }}</h3>\n <small class=\"text-secondary\">{{ stockReceipt?.stock_receipt_products[0]?.product?.measure?.title\n }}</small>\n </div>\n </div>\n </div>\n\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.amount\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Total Value</small>\n <h3 class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.amount | currency }}</h3>\n </div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.particulars\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Particulars</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.particulars }}</p>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6\" *ngIf=\"stockReceipt?.stock_receipt_products[0]?.location\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Location</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.location?.title }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"stockReceipt?.stock_receipt_products[0]?.batch\">\n <div class=\"col-6\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Batch</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.batch?.batch_number }}</p>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"row\" *ngIf=\"stockReceipt?.creator\">\n <div class=\"col-12\">\n <small class=\"mb-0\">\n <span class=\"text-secondary\">Created By</span> {{ stockReceipt?.creator?.name }}\n <span class=\"text-secondary\">On</span> {{ stockReceipt?.created_at | date }}\n </small>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"StockReceipt\"\n [relatedModelId]=\"stockReceipt?.id\"></app-note-list>\n </div>\n\n <div style=\"width: calc(100% - 350px - 0.5rem)\">\n <app-entity-files-view-all title=\"Document\" [entityId]=\"stockReceipt?.id\" entityType=\"StockReceipt\">\n </app-entity-files-view-all>\n </div>\n </div>\n</div>" }]
|
|
54
53
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.StockReceiptService }, { type: i3.Location }] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtdmlldy9zdG9jay1yZWNlaXB0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdC12aWV3L3N0b2NrLXJlY2VpcHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVbEQsTUFBTSxPQUFPLHlCQUF5QjtJQU8xQjtJQUNFO0lBQ0E7SUFQWixFQUFFLENBQVU7SUFDWixTQUFTLENBQVc7SUFDcEIsWUFBWSxDQUFPO0lBRW5CLFlBQ1UsY0FBOEIsRUFDNUIsT0FBNEIsRUFDNUIsUUFBa0I7UUFGcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDM0IsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQVE7WUFDbEIsSUFBSSxFQUFFLDRDQUE0QztTQUNuRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO3dHQXZDVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qiw4RENWdEMseXNOQThITTs7NEZEcEhPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRTZXJ2aWNlIH0gZnJvbSBcIi4uL3N0b2NrLXJlY2VpcHQuc2VydmljZVwiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3RvY2stcmVjZWlwdC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLXJlY2VpcHQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zdG9jay1yZWNlaXB0LXZpZXcuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgaWQhOiBudW1iZXI7XG4gIGlzTG9hZGluZyE6IGJvb2xlYW47XG4gIHN0b2NrUmVjZWlwdCE6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgc2VydmljZTogU3RvY2tSZWNlaXB0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuaWQgPSBwYXJzZUludChwYXJhbXNbJ2lkJ10pO1xuICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbG9hZERhdGEoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgd2l0aDogJ2NyZWF0b3Isc3RvY2tSZWNlaXB0UHJvZHVjdHMucHJvZHVjdCxiYXRjaCdcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlLnNob3codGhpcy5pZCwgcGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdG9ja1JlY2VpcHQgPSByZXNwb25zZT8uaXRlbTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVkaXJlY3RCYWNrKCkge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG59XG4iLCI8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG48ZGl2ICpuZ0lmPVwic3RvY2tSZWNlaXB0XCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LXN0YXJ0IGdhcC0yXCI+XG4gIDxtYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxoMyBjbGFzcz1cIm1iLTBcIj5TdG9jayBSZWNlaXB0IGZvciB7eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnByb2R1Y3Q/Lm5hbWUgfX08L2gzPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtc3RhcnQgZ2FwLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCIgc3R5bGU9XCJ3aWR0aDogMzUwcHhcIj5cbiAgICAgIDxtYXQtY2FyZD5cbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gY2FtcGFpZ24gPC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1iLTAgdGV4dC1kYXJrXCI+SW5mb3JtYXRpb248L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDxhcHAtc3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbiBbc3RvY2tSZWNlaXB0XT1cInN0b2NrUmVjZWlwdFwiIFtwcm9kdWN0XT1cInN0b2NrUmVjZWlwdD8ucHJvZHVjdFwiXG4gICAgICAgICAgICAgIChzYXZlZCk9XCJsb2FkRGF0YSgpXCI+XG4gICAgICAgICAgICA8L2FwcC1zdG9jay1yZWNlaXB0LWZvcm0tYnV0dG9uPlxuICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1kZWxldGUtYnV0dG9uIFttb2RlbF09XCJzdG9ja1JlY2VpcHRcIiBbc2VydmljZV09XCJzZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwieyB0aXRsZTogc3RvY2tSZWNlaXB0Py5pZCwgdHlwZTogJ1N0b2NrIFJlY2VpcHQnIH1cIlxuICAgICAgICAgICAgICAoZGVsZXRlZCk9XCJyZWRpcmVjdEJhY2soKVwiPlxuICAgICAgICAgICAgPC9hcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZ2FwLTIgbXQtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1ibGFja1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3Byb2R1Y3RzJywgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wcm9kdWN0Py5pZCwgJ3ZpZXcnXVwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IHN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ucHJvZHVjdD8ubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnByb2R1Y3Q/LnNrdVwiPnt7XG4gICAgICAgICAgICAgICAgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wcm9kdWN0Py5za3UgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTBcIj5cbiAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5kYXRlXCI+e3sgc3RvY2tSZWNlaXB0Py5kYXRlIHwgZGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LmJhdGNoPy5leHBpcmVzX29uXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsIHRlY2hsaWZ5RmVhdHVyZUVuYWJsZWQ9XCJwcm9kdWN0LWJhdGNoLW51bWJlcnNcIj5cbiAgICAgICAgICAgICAgICAgIEV4cGlyZXMgb24ge3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5iYXRjaD8uZXhwaXJlc19vbiB8IGRhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wdXJjaGFzZV9wcmljZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5QdXJjaGFzZSBQcmljZTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wdXJjaGFzZV9wcmljZSB8IGN1cnJlbmN5IH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8uc3VwcGxpZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+U3VwcGxpZXI8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1ibGFja1wiXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvc3VwcGxpZXJzJywgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5zdXBwbGllcj8uaWQsICd2aWV3J11cIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IHN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8uc3VwcGxpZXI/LmNvbXBhbnlfbmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgKm5nSWY9XCJzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnF1YW50aXR5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlF1YW50aXR5PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5xdWFudGl0eSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPnt7IHN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ucHJvZHVjdD8ubWVhc3VyZT8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8uYW1vdW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlRvdGFsIFZhbHVlPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5hbW91bnQgfCBjdXJyZW5jeSB9fTwvaDM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wYXJ0aWN1bGFyc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5QYXJ0aWN1bGFyczwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wYXJ0aWN1bGFycyB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ubG9jYXRpb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+TG9jYXRpb248L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IHN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ubG9jYXRpb24/LnRpdGxlIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8uYmF0Y2hcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgdGVjaGxpZnlGZWF0dXJlRW5hYmxlZD1cInByb2R1Y3QtYmF0Y2gtbnVtYmVyc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+QmF0Y2g8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5iYXRjaD8uYmF0Y2hfbnVtYmVyIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInN0b2NrUmVjZWlwdD8uY3JlYXRvclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPkNyZWF0ZWQgQnk8L3NwYW4+IHt7IHN0b2NrUmVjZWlwdD8uY3JlYXRvcj8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5Pbjwvc3Bhbj4ge3sgc3RvY2tSZWNlaXB0Py5jcmVhdGVkX2F0IHwgZGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgIDxhcHAtbm90ZS1saXN0IGxhYmVsVGV4dD1cIk5vdGVzXCIgdmlld01vZGU9XCJ0aW1lbGluZVwiIG1vZGVsVHlwZT1cIlN0b2NrUmVjZWlwdFwiXG4gICAgICAgIFtyZWxhdGVkTW9kZWxJZF09XCJzdG9ja1JlY2VpcHQ/LmlkXCI+PC9hcHAtbm90ZS1saXN0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSAzNTBweCAtIDAuNXJlbSlcIj5cbiAgICAgIDxhcHAtZW50aXR5LWZpbGVzLXZpZXctYWxsIHRpdGxlPVwiRG9jdW1lbnRcIiBbZW50aXR5SWRdPVwic3RvY2tSZWNlaXB0Py5pZFwiIGVudGl0eVR5cGU9XCJTdG9ja1JlY2VpcHRcIj5cbiAgICAgIDwvYXBwLWVudGl0eS1maWxlcy12aWV3LWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtdmlldy9zdG9jay1yZWNlaXB0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdC12aWV3L3N0b2NrLXJlY2VpcHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVVsRCxNQUFNLE9BQU8seUJBQXlCO0lBTzFCO0lBQ0U7SUFDQTtJQVBaLEVBQUUsQ0FBVTtJQUNaLFNBQVMsQ0FBVztJQUNwQixZQUFZLENBQU87SUFFbkIsWUFDVSxjQUE4QixFQUM1QixPQUE0QixFQUM1QixRQUFrQjtRQUZwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMzQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBUTtZQUNsQixJQUFJLEVBQUUsNENBQTRDO1NBQ25ELENBQUE7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7d0dBdkNVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDhEQ1Z0Qyx3cU5BNkhNOzs0RkRuSE8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IFN0b2NrUmVjZWlwdFNlcnZpY2UgfSBmcm9tIFwiLi4vc3RvY2stcmVjZWlwdC5zZXJ2aWNlXCI7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1yZWNlaXB0LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvY2stcmVjZWlwdC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3N0b2NrLXJlY2VpcHQtdmlldy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBTdG9ja1JlY2VpcHRWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBpZCE6IG51bWJlcjtcbiAgaXNMb2FkaW5nITogYm9vbGVhbjtcbiAgc3RvY2tSZWNlaXB0ITogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBTdG9ja1JlY2VpcHRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgdGhpcy5pZCA9IHBhcnNlSW50KHBhcmFtc1snaWQnXSk7XG4gICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2FkRGF0YSgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7XG4gICAgICB3aXRoOiAnY3JlYXRvcixzdG9ja1JlY2VpcHRQcm9kdWN0cy5wcm9kdWN0LGJhdGNoJ1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2Uuc2hvdyh0aGlzLmlkLCBwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN0b2NrUmVjZWlwdCA9IHJlc3BvbnNlPy5pdGVtO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWRpcmVjdEJhY2soKSB7XG4gICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L21hdC1wcm9ncmVzcy1iYXI+XG5cbjxkaXYgKm5nSWY9XCJzdG9ja1JlY2VpcHRcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZ2FwLTJcIj5cbiAgPG1hdC1jYXJkPlxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgPGgzIGNsYXNzPVwibWItMFwiPlN0b2NrIFJlY2VpcHQgZm9yIHt7IHN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ucHJvZHVjdD8ubmFtZSB9fTwvaDM+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIiBzdHlsZT1cIndpZHRoOiAzNTBweFwiPlxuICAgICAgPG1hdC1jYXJkPlxuICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBjYW1wYWlnbiA8L3NwYW4+XG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwibWItMCB0ZXh0LWRhcmtcIj5JbmZvcm1hdGlvbjwvc3Ryb25nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1pY29uIHJvbGU9J2J1dHRvbicgbmFtZT0nZWRpdCdcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3N0b2NrLXJlY2VpcHRzL2Zvcm0nLCBzdG9ja1JlY2VpcHQ/LmlkXVwiPjwvYXBwLXRlY2hsaWZ5LWljb24+XG4gICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24gW21vZGVsXT1cInN0b2NrUmVjZWlwdFwiIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJ7IHRpdGxlOiBzdG9ja1JlY2VpcHQ/LmlkLCB0eXBlOiAnU3RvY2sgUmVjZWlwdCcgfVwiXG4gICAgICAgICAgICAgIChkZWxldGVkKT1cInJlZGlyZWN0QmFjaygpXCI+XG4gICAgICAgICAgICA8L2FwcC10ZWNobGlmeS1kZWxldGUtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1zdGFydCBnYXAtMiBtdC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvcHJvZHVjdHMnLCBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnByb2R1Y3Q/LmlkLCAndmlldyddXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wcm9kdWN0Py5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ucHJvZHVjdD8uc2t1XCI+e3tcbiAgICAgICAgICAgICAgICBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnByb2R1Y3Q/LnNrdSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWVuZCBnYXAtMFwiPlxuICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJzdG9ja1JlY2VpcHQ/LmRhdGVcIj57eyBzdG9ja1JlY2VpcHQ/LmRhdGUgfCBkYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8uYmF0Y2g/LmV4cGlyZXNfb25cIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgdGVjaGxpZnlGZWF0dXJlRW5hYmxlZD1cInByb2R1Y3QtYmF0Y2gtbnVtYmVyc1wiPlxuICAgICAgICAgICAgICAgICAgRXhwaXJlcyBvbiB7eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LmJhdGNoPy5leHBpcmVzX29uIHwgZGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgKm5nSWY9XCJzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnB1cmNoYXNlX3ByaWNlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlB1cmNoYXNlIFByaWNlPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnB1cmNoYXNlX3ByaWNlIHwgY3VycmVuY3kgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5zdXBwbGllclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5TdXBwbGllcjwvc21hbGw+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9zdXBwbGllcnMnLCBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnN1cHBsaWVyPy5pZCwgJ3ZpZXcnXVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5zdXBwbGllcj8uY29tcGFueV9uYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cInN0b2NrUmVjZWlwdD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0c1swXT8ucXVhbnRpdHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+UXVhbnRpdHk8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1iLTBcIj57eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnF1YW50aXR5IH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5wcm9kdWN0Py5tZWFzdXJlPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5hbW91bnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+VG90YWwgVmFsdWU8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1iLTBcIj57eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LmFtb3VudCB8IGN1cnJlbmN5IH19PC9oMz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnBhcnRpY3VsYXJzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlBhcnRpY3VsYXJzPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LnBhcnRpY3VsYXJzIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5sb2NhdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5Mb2NhdGlvbjwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5sb2NhdGlvbj8udGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3RzWzBdPy5iYXRjaFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiB0ZWNobGlmeUZlYXR1cmVFbmFibGVkPVwicHJvZHVjdC1iYXRjaC1udW1iZXJzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5CYXRjaDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57eyBzdG9ja1JlY2VpcHQ/LnN0b2NrX3JlY2VpcHRfcHJvZHVjdHNbMF0/LmJhdGNoPy5iYXRjaF9udW1iZXIgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic3RvY2tSZWNlaXB0Py5jcmVhdG9yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cIm1iLTBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+Q3JlYXRlZCBCeTwvc3Bhbj4ge3sgc3RvY2tSZWNlaXB0Py5jcmVhdG9yPy5uYW1lIH19XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPk9uPC9zcGFuPiB7eyBzdG9ja1JlY2VpcHQ/LmNyZWF0ZWRfYXQgfCBkYXRlIH19XG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgPGFwcC1ub3RlLWxpc3QgbGFiZWxUZXh0PVwiTm90ZXNcIiB2aWV3TW9kZT1cInRpbWVsaW5lXCIgbW9kZWxUeXBlPVwiU3RvY2tSZWNlaXB0XCJcbiAgICAgICAgW3JlbGF0ZWRNb2RlbElkXT1cInN0b2NrUmVjZWlwdD8uaWRcIj48L2FwcC1ub3RlLWxpc3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IGNhbGMoMTAwJSAtIDM1MHB4IC0gMC41cmVtKVwiPlxuICAgICAgPGFwcC1lbnRpdHktZmlsZXMtdmlldy1hbGwgdGl0bGU9XCJEb2N1bWVudFwiIFtlbnRpdHlJZF09XCJzdG9ja1JlY2VpcHQ/LmlkXCIgZW50aXR5VHlwZT1cIlN0b2NrUmVjZWlwdFwiPlxuICAgICAgPC9hcHAtZW50aXR5LWZpbGVzLXZpZXctYWxsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -57,7 +57,7 @@ let StockReceiptPageComponent = class StockReceiptPageComponent {
|
|
|
57
57
|
this.selectedColumns = config.filter(col => col.isSelected);
|
|
58
58
|
}
|
|
59
59
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptPageComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: StockReceiptPageComponent, selector: "app-stock-receipts-page", inputs: { product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null }, supplierId: { classPropertyName: "supplierId", publicName: "supplierId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { listUpdated: "listUpdated" }, ngImport: i0, template: "<mat-card *ngIf=\"!product()\" class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">Stock Receipts</h3>\n\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/form']\"\n class='ms-2'></app-techlify-icon>\n\n <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer material-symbols-outlined\">\n file_upload\n </span>\n\n <app-export-to-excel-button tableId=\"stockReceiptTable\" fileName=\"Stock Receipts\"\n (onExportStart)=\"exportInProgress.set(true)\" (onExportEnd)=\"exportInProgress.set(false)\">\n </app-export-to-excel-button>\n\n <app-column-selector *ngIf=\"columnConfig.length > 0\" mode=\"icon\" class=\"mt-1 d-print-none\"\n [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n\n <mat-button-toggle-group class=\"view-toggle\" [value]=\"selectedView()\" (change)=\"selectedView.set($event.value)\">\n <mat-button-toggle value=\"itemized\">Itemized</mat-button-toggle>\n <mat-button-toggle value=\"grouped\">Grouped</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <form [formGroup]=\"filterForm\" class=\"d-flex align-items-center gap-2 flex-wrap\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Location</mat-label>\n <app-searchable-selector apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Supplier</mat-label>\n <app-searchable-selector apiUrl=\"api/suppliers\" formControlName=\"supplier_ids\" titleField=\"company_name\"\n [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card *ngIf=\"product()\" class=\"mb-2\">\n <mat-card-content class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> output_circle </span>\n <h3 class=\"mb-0\">Stock Receipts</h3>\n </div>\n </mat-card-content>\n</mat-card>\n\n<app-stock-receipt-product-list *ngIf=\"selectedView() === 'itemized'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-product-list>\n\n<app-stock-receipt-list *ngIf=\"selectedView() === 'grouped'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-list>", styles: [":host ::ng-deep .mat-mdc-footer-row{position:sticky;bottom:0;background-color:#fff;z-index:10;box-shadow:0 -2px 4px #0000001a}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.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: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i9.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i9.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i9.ColumnSelectorComponent, selector: "app-column-selector", inputs: ["label", "mode", "columnConfigs", "selectedColumns", "isExportWorking"], outputs: ["selectedColumnsChange", "displayedColumnsChange"] }, { kind: "component", type: i9.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: i10.ExportToExcelButtonComponent, selector: "app-export-to-excel-button", inputs: ["tableId", "fileName"], outputs: ["onExportStart", "onExportEnd"] }, { kind: "component", type: i11.StockReceiptListComponent, selector: "app-stock-receipt-list", inputs: ["filters", "selectedColumns", "exportInProgress"], outputs: ["listUpdated", "columnConfigReady"] }, { kind: "component", type: i12.StockReceiptProductsListComponent, selector: "app-stock-receipt-product-list", inputs: ["filters", "isProductView", "selectedColumns", "exportInProgress"], outputs: ["listUpdated", "columnConfigReady"] }], preserveWhitespaces: true });
|
|
60
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: StockReceiptPageComponent, selector: "app-stock-receipts-page", inputs: { product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null }, supplierId: { classPropertyName: "supplierId", publicName: "supplierId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { listUpdated: "listUpdated" }, ngImport: i0, template: "<mat-card *ngIf=\"!product()\" class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">Stock Receipts</h3>\n\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/form']\"\n class='ms-2'></app-techlify-icon>\n\n <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer material-symbols-outlined\">\n file_upload\n </span>\n\n <app-export-to-excel-button tableId=\"stockReceiptTable\" fileName=\"Stock Receipts\"\n (onExportStart)=\"exportInProgress.set(true)\" (onExportEnd)=\"exportInProgress.set(false)\">\n </app-export-to-excel-button>\n\n <app-column-selector *ngIf=\"columnConfig.length > 0\" mode=\"icon\" class=\"mt-1 d-print-none\"\n [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n\n <mat-button-toggle-group class=\"view-toggle\" [value]=\"selectedView()\" (change)=\"selectedView.set($event.value)\">\n <mat-button-toggle value=\"itemized\">Itemized</mat-button-toggle>\n <mat-button-toggle value=\"grouped\">Grouped</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <form [formGroup]=\"filterForm\" class=\"d-flex align-items-center gap-2 flex-wrap\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Location</mat-label>\n <app-searchable-selector apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Supplier</mat-label>\n <app-searchable-selector apiUrl=\"api/suppliers\" formControlName=\"supplier_ids\" titleField=\"company_name\"\n [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card *ngIf=\"product()\" class=\"mb-2\">\n <mat-card-content class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> output_circle </span>\n <h3 class=\"mb-0\">Stock Receipts</h3>\n </div>\n </mat-card-content>\n</mat-card>\n\n<app-stock-receipt-product-list *ngIf=\"selectedView() === 'itemized'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-product-list>\n\n<app-stock-receipt-list *ngIf=\"selectedView() === 'grouped'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-list>", styles: [":host ::ng-deep .mat-mdc-footer-row{position:sticky;bottom:0;background-color:#fff;z-index:10;box-shadow:0 -2px 4px #0000001a}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.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: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i9.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i9.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i9.ColumnSelectorComponent, selector: "app-column-selector", inputs: ["label", "mode", "columnConfigs", "selectedColumns", "isExportWorking"], outputs: ["selectedColumnsChange", "displayedColumnsChange"] }, { kind: "component", type: i9.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: i10.ExportToExcelButtonComponent, selector: "app-export-to-excel-button", inputs: ["tableId", "fileName"], outputs: ["onExportStart", "onExportEnd"] }, { kind: "component", type: i11.StockReceiptListComponent, selector: "app-stock-receipt-list", inputs: ["filters", "selectedColumns", "exportInProgress"], outputs: ["listUpdated", "columnConfigReady"] }, { kind: "component", type: i12.StockReceiptProductsListComponent, selector: "app-stock-receipt-product-list", inputs: ["filters", "isProductView", "selectedColumns", "exportInProgress", "product"], outputs: ["listUpdated", "columnConfigReady"] }], preserveWhitespaces: true });
|
|
61
61
|
};
|
|
62
62
|
StockReceiptPageComponent = __decorate([
|
|
63
63
|
UntilDestroy()
|
|
@@ -2,10 +2,9 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { StockReceiptsRoutingModule } from './stock-receipts-routing.module';
|
|
4
4
|
import { StockReceiptPageComponent } from './stock-receipts-page/stock-receipts-page.component';
|
|
5
|
-
import { ColumnSelectorModule, EntityFilesViewAllModule, NoteModule, SearchableSelectorModule, TechlifyFeatureModule, TechlifyIconModule, TimelineFilterModule } from 'ngx-techlify-core';
|
|
5
|
+
import { ColumnSelectorModule, EntityFilesViewAllModule, NoteModule, SearchableSelectorModule, TechlifyFeatureModule, TechlifyFormButtonComponent, TechlifyIconModule, TimelineFilterModule } from 'ngx-techlify-core';
|
|
6
6
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
7
7
|
import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
|
|
8
|
-
import { StockReceiptSimpleFormModule } from './stock-receipt-simple-form/stock-receipt-simple-form.module';
|
|
9
8
|
import { PayeeSelectorModule } from '../supplier/payee-selector/payee-selector.module';
|
|
10
9
|
import { TechlifyFilterModule } from '../techlify-filter/techlify-filter.module';
|
|
11
10
|
import { ProductCategoryBadgesComponent } from "../product/widgets/product-category-badges/product-category-badges.component";
|
|
@@ -32,7 +31,6 @@ export class StockReceiptsModule {
|
|
|
32
31
|
ReactiveFormsModule,
|
|
33
32
|
PayeeSelectorModule,
|
|
34
33
|
InfiniteScrollDirective,
|
|
35
|
-
StockReceiptSimpleFormModule,
|
|
36
34
|
ProductCategoryBadgesComponent,
|
|
37
35
|
ColumnSelectorModule,
|
|
38
36
|
EntityFilesViewAllModule,
|
|
@@ -42,7 +40,8 @@ export class StockReceiptsModule {
|
|
|
42
40
|
RouterModule,
|
|
43
41
|
ExportToExcelButtonComponent,
|
|
44
42
|
TechlifyDeleteButtonComponent,
|
|
45
|
-
StockReceiptProductFormButtonComponent
|
|
43
|
+
StockReceiptProductFormButtonComponent,
|
|
44
|
+
TechlifyFormButtonComponent], exports: [StockReceiptPageComponent,
|
|
46
45
|
StockReceiptListComponent,
|
|
47
46
|
StockReceiptProductsListComponent] });
|
|
48
47
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, imports: [CommonModule,
|
|
@@ -53,7 +52,6 @@ export class StockReceiptsModule {
|
|
|
53
52
|
TimelineFilterModule,
|
|
54
53
|
ReactiveFormsModule,
|
|
55
54
|
PayeeSelectorModule,
|
|
56
|
-
StockReceiptSimpleFormModule,
|
|
57
55
|
ColumnSelectorModule,
|
|
58
56
|
EntityFilesViewAllModule,
|
|
59
57
|
TechlifyFeatureModule,
|
|
@@ -62,7 +60,8 @@ export class StockReceiptsModule {
|
|
|
62
60
|
RouterModule,
|
|
63
61
|
ExportToExcelButtonComponent,
|
|
64
62
|
TechlifyDeleteButtonComponent,
|
|
65
|
-
StockReceiptProductFormButtonComponent
|
|
63
|
+
StockReceiptProductFormButtonComponent,
|
|
64
|
+
TechlifyFormButtonComponent] });
|
|
66
65
|
}
|
|
67
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, decorators: [{
|
|
68
67
|
type: NgModule,
|
|
@@ -88,7 +87,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
88
87
|
ReactiveFormsModule,
|
|
89
88
|
PayeeSelectorModule,
|
|
90
89
|
InfiniteScrollDirective,
|
|
91
|
-
StockReceiptSimpleFormModule,
|
|
92
90
|
ProductCategoryBadgesComponent,
|
|
93
91
|
ColumnSelectorModule,
|
|
94
92
|
EntityFilesViewAllModule,
|
|
@@ -98,8 +96,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
98
96
|
RouterModule,
|
|
99
97
|
ExportToExcelButtonComponent,
|
|
100
98
|
TechlifyDeleteButtonComponent,
|
|
101
|
-
StockReceiptProductFormButtonComponent
|
|
99
|
+
StockReceiptProductFormButtonComponent,
|
|
100
|
+
TechlifyFormButtonComponent
|
|
102
101
|
],
|
|
103
102
|
}]
|
|
104
103
|
}] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUNMLDhCQUE4QixFQUMvQixNQUFNLDhFQUE4RSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDakgsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEdBQTRHLENBQUM7O0FBcUNwSyxNQUFNLE9BQU8sbUJBQW1CO3dHQUFuQixtQkFBbUI7eUdBQW5CLG1CQUFtQixpQkFqQzVCLHlCQUF5QjtZQUN6Qix5QkFBeUI7WUFDekIseUJBQXlCO1lBQ3pCLGlDQUFpQyxhQVFqQyxZQUFZO1lBQ1osY0FBYztZQUNkLDBCQUEwQjtZQUMxQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2Qiw4QkFBOEI7WUFDOUIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixxQkFBcUI7WUFDckIsVUFBVTtZQUNWLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QixzQ0FBc0M7WUFDdEMsMkJBQTJCLGFBeEIzQix5QkFBeUI7WUFDekIseUJBQXlCO1lBQ3pCLGlDQUFpQzt5R0F5QnhCLG1CQUFtQixZQXRCNUIsWUFBWTtZQUNaLGNBQWM7WUFDZCwwQkFBMEI7WUFDMUIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUduQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixVQUFVO1lBQ1Ysa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWiw0QkFBNEI7WUFDNUIsNkJBQTZCO1lBQzdCLHNDQUFzQztZQUN0QywyQkFBMkI7OzRGQUdsQixtQkFBbUI7a0JBbkMvQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIseUJBQXlCO3dCQUN6QixpQ0FBaUM7cUJBQ2xDO29CQUNELE9BQU8sRUFBRTt3QkFDUCx5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIsaUNBQWlDO3FCQUNsQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsOEJBQThCO3dCQUM5QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixVQUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWiw0QkFBNEI7d0JBQzVCLDZCQUE2Qjt3QkFDN0Isc0NBQXNDO3dCQUN0QywyQkFBMkI7cUJBQzVCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRzUm91dGluZ01vZHVsZSB9IGZyb20gJy4vc3RvY2stcmVjZWlwdHMtcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4vc3RvY2stcmVjZWlwdHMtcGFnZS9zdG9jay1yZWNlaXB0cy1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDb2x1bW5TZWxlY3Rvck1vZHVsZSxcbiAgRW50aXR5RmlsZXNWaWV3QWxsTW9kdWxlLFxuICBOb3RlTW9kdWxlLFxuICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gIFRlY2hsaWZ5RmVhdHVyZU1vZHVsZSxcbiAgVGVjaGxpZnlGb3JtQnV0dG9uQ29tcG9uZW50LFxuICBUZWNobGlmeUljb25Nb2R1bGUsXG4gIFRpbWVsaW5lRmlsdGVyTW9kdWxlXG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgUGF5ZWVTZWxlY3Rvck1vZHVsZSB9IGZyb20gJy4uL3N1cHBsaWVyL3BheWVlLXNlbGVjdG9yL3BheWVlLXNlbGVjdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBUZWNobGlmeUZpbHRlck1vZHVsZSB9IGZyb20gJy4uL3RlY2hsaWZ5LWZpbHRlci90ZWNobGlmeS1maWx0ZXIubW9kdWxlJztcbmltcG9ydCB7XG4gIFByb2R1Y3RDYXRlZ29yeUJhZGdlc0NvbXBvbmVudFxufSBmcm9tIFwiLi4vcHJvZHVjdC93aWRnZXRzL3Byb2R1Y3QtY2F0ZWdvcnktYmFkZ2VzL3Byb2R1Y3QtY2F0ZWdvcnktYmFkZ2VzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vc3RvY2stcmVjZWlwdC12aWV3L3N0b2NrLXJlY2VpcHQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0TGlzdENvbXBvbmVudCB9IGZyb20gJy4vc3RvY2stcmVjZWlwdC1saXN0L3N0b2NrLXJlY2VpcHQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0UHJvZHVjdHNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0LXByb2R1Y3QtbGlzdC9zdG9jay1yZWNlaXB0LXByb2R1Y3QtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRXhwb3J0VG9FeGNlbEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9leHBvcnQtdG8tZXhjZWwtYnV0dG9uL2V4cG9ydC10by1leGNlbC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFN0b2NrUmVjZWlwdFByb2R1Y3RGb3JtQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0LXByb2R1Y3QtZm9ybS9zdG9jay1yZWNlaXB0LXByb2R1Y3QtZm9ybS1idXR0b24vc3RvY2stcmVjZWlwdC1wcm9kdWN0LWZvcm0tYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFN0b2NrUmVjZWlwdFBhZ2VDb21wb25lbnQsXG4gICAgU3RvY2tSZWNlaXB0Vmlld0NvbXBvbmVudCxcbiAgICBTdG9ja1JlY2VpcHRMaXN0Q29tcG9uZW50LFxuICAgIFN0b2NrUmVjZWlwdFByb2R1Y3RzTGlzdENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU3RvY2tSZWNlaXB0UGFnZUNvbXBvbmVudCxcbiAgICBTdG9ja1JlY2VpcHRMaXN0Q29tcG9uZW50LFxuICAgIFN0b2NrUmVjZWlwdFByb2R1Y3RzTGlzdENvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFN0b2NrUmVjZWlwdHNSb3V0aW5nTW9kdWxlLFxuICAgIFRlY2hsaWZ5RmlsdGVyTW9kdWxlLFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgICBUaW1lbGluZUZpbHRlck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFBheWVlU2VsZWN0b3JNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50LFxuICAgIENvbHVtblNlbGVjdG9yTW9kdWxlLFxuICAgIEVudGl0eUZpbGVzVmlld0FsbE1vZHVsZSxcbiAgICBUZWNobGlmeUZlYXR1cmVNb2R1bGUsXG4gICAgTm90ZU1vZHVsZSxcbiAgICBUZWNobGlmeUljb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEV4cG9ydFRvRXhjZWxCdXR0b25Db21wb25lbnQsXG4gICAgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQsXG4gICAgU3RvY2tSZWNlaXB0UHJvZHVjdEZvcm1CdXR0b25Db21wb25lbnQsXG4gICAgVGVjaGxpZnlGb3JtQnV0dG9uQ29tcG9uZW50XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrUmVjZWlwdHNNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, Inject, Input, Optional } from '@angular/core';
|
|
2
2
|
import { SearchableSelectorModule, TechlifyFormComponent } from 'ngx-techlify-core';
|
|
3
3
|
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
|
4
4
|
import { MatError, MatFormField, MatHint, MatLabel, MatSuffix } from '@angular/material/form-field';
|
|
@@ -7,37 +7,33 @@ import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular
|
|
|
7
7
|
import { NgIf } from '@angular/common';
|
|
8
8
|
import { MatButton } from '@angular/material/button';
|
|
9
9
|
import moment from 'moment/moment';
|
|
10
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
11
|
+
import { MatCardContent, MatCardTitle } from '@angular/material/card';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
import * as i1 from "ngx-techlify-core";
|
|
12
14
|
import * as i2 from "@angular/forms";
|
|
13
15
|
import * as i3 from "../stock-transfer.service";
|
|
16
|
+
import * as i4 from "@angular/material/dialog";
|
|
14
17
|
export class StockTransferFormComponent extends TechlifyFormComponent {
|
|
18
|
+
formValidatorService;
|
|
15
19
|
formBuilder;
|
|
16
20
|
service;
|
|
21
|
+
data;
|
|
17
22
|
productId;
|
|
18
23
|
locationFrom;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
super(formValidatorService);
|
|
24
|
+
constructor(formValidatorService, formBuilder, service, dialogRef, data) {
|
|
25
|
+
super(formValidatorService, service);
|
|
26
|
+
this.formValidatorService = formValidatorService;
|
|
23
27
|
this.formBuilder = formBuilder;
|
|
24
28
|
this.service = service;
|
|
29
|
+
this.data = data;
|
|
30
|
+
this.dialogRef = dialogRef;
|
|
25
31
|
this.errorMessages = {
|
|
26
|
-
date: {
|
|
27
|
-
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
location_from_id: {
|
|
33
|
-
required: 'The location from field is required.',
|
|
34
|
-
},
|
|
35
|
-
location_to_id: {
|
|
36
|
-
required: 'The location to field is required.',
|
|
37
|
-
},
|
|
38
|
-
quantity: {
|
|
39
|
-
required: 'The quantity field is required.',
|
|
40
|
-
}
|
|
32
|
+
date: { required: 'The date field is required.' },
|
|
33
|
+
product_id: { required: 'The product field is required.' },
|
|
34
|
+
location_from_id: { required: 'The location from field is required.' },
|
|
35
|
+
location_to_id: { required: 'The location to field is required.' },
|
|
36
|
+
quantity: { required: 'The quantity field is required.' }
|
|
41
37
|
};
|
|
42
38
|
this.form = this.formBuilder.group({
|
|
43
39
|
product_id: ['', Validators.required],
|
|
@@ -48,38 +44,25 @@ export class StockTransferFormComponent extends TechlifyFormComponent {
|
|
|
48
44
|
particulars: ['']
|
|
49
45
|
});
|
|
50
46
|
}
|
|
51
|
-
|
|
52
|
-
this.
|
|
53
|
-
if (
|
|
54
|
-
this.
|
|
55
|
-
return;
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
const productId = this.data?.product_id ?? this.productId;
|
|
49
|
+
if (productId) {
|
|
50
|
+
this.form.get('product_id')?.setValue(productId);
|
|
56
51
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (data?.date) {
|
|
61
|
-
data.date = moment(data?.date).format('YYYY-MM-DD');
|
|
52
|
+
const locationFrom = this.data?.location_from ?? this.locationFrom;
|
|
53
|
+
if (locationFrom) {
|
|
54
|
+
this.form.get('location_from_id')?.setValue(locationFrom.id);
|
|
62
55
|
}
|
|
63
|
-
this.isWorking = true;
|
|
64
|
-
this.service.store(data).subscribe({
|
|
65
|
-
next: (response) => {
|
|
66
|
-
this.alertService.addAlert('Stock transferred successfully.', 'success');
|
|
67
|
-
this.saved.emit(response?.item);
|
|
68
|
-
this.isWorking = false;
|
|
69
|
-
},
|
|
70
|
-
error: () => (this.isWorking = false),
|
|
71
|
-
});
|
|
72
56
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (this.locationFrom) {
|
|
78
|
-
this.form.get('location_from_id')?.setValue(this.locationFrom.id);
|
|
57
|
+
getFormData() {
|
|
58
|
+
const data = { ...this.form.value };
|
|
59
|
+
if (data.date) {
|
|
60
|
+
data.date = moment(data.date).format('YYYY-MM-DD');
|
|
79
61
|
}
|
|
62
|
+
return data;
|
|
80
63
|
}
|
|
81
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockTransferFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockTransferService }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockTransferFormComponent, isStandalone: true, selector: "app-stock-transfer-form", inputs: { productId: "productId", locationFrom: "locationFrom" },
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockTransferFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockTransferService }, { token: i4.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockTransferFormComponent, isStandalone: true, selector: "app-stock-transfer-form", inputs: { productId: "productId", locationFrom: "locationFrom" }, usesInheritance: true, ngImport: i0, template: "<div class=\"p-2\">\n <h5 class=\"d-flex flex-row justify-content-center align-items-center\">\n Stock Transfer\n </h5>\n\n <mat-card-content>\n <form class=\"d-flex flex-column gap-3\" [formGroup]=\"form\" (ngSubmit)=\"submit(getFormData())\">\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input formControlName=\"date\" matInput [matDatepicker]=\"picker\" placeholder=\"Date\" (focus)=\"picker.open()\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">{{ getErrorMessage('date') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"!(data?.product_id ?? productId)\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" titleField=\"name\"\n apiUrl=\"api/products\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations\"\n [selectedValue]=\"data?.location_from ?? locationFrom\"></app-searchable-selector>\n <mat-hint>Where are we taking stock from?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_from_id')\">{{ getErrorMessage('location_from_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location To</mat-label>\n <app-searchable-selector formControlName=\"location_to_id\"\n apiUrl=\"api/inventory-locations\"></app-searchable-selector>\n <mat-hint>Where are we taking stock to?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_to_id')\">{{ getErrorMessage('location_to_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput placeholder=\"Quantity\" formControlName=\"quantity\" type=\"number\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput placeholder=\"Particulars\" formControlName=\"particulars\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button type=\"button\" mat-flat-button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\">Cancel</button>\n <button type=\"submit\" mat-raised-button color=\"primary\" [disabled]=\"isWorking\">Save</button>\n </div>\n </form>\n </mat-card-content>\n\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: 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: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }], preserveWhitespaces: true });
|
|
83
66
|
}
|
|
84
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockTransferFormComponent, decorators: [{
|
|
85
68
|
type: Component,
|
|
@@ -96,15 +79,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
96
79
|
MatError,
|
|
97
80
|
NgIf,
|
|
98
81
|
MatHint,
|
|
99
|
-
MatButton
|
|
100
|
-
|
|
101
|
-
|
|
82
|
+
MatButton,
|
|
83
|
+
MatCardTitle,
|
|
84
|
+
MatCardContent,
|
|
85
|
+
], template: "<div class=\"p-2\">\n <h5 class=\"d-flex flex-row justify-content-center align-items-center\">\n Stock Transfer\n </h5>\n\n <mat-card-content>\n <form class=\"d-flex flex-column gap-3\" [formGroup]=\"form\" (ngSubmit)=\"submit(getFormData())\">\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input formControlName=\"date\" matInput [matDatepicker]=\"picker\" placeholder=\"Date\" (focus)=\"picker.open()\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">{{ getErrorMessage('date') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"!(data?.product_id ?? productId)\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" titleField=\"name\"\n apiUrl=\"api/products\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations\"\n [selectedValue]=\"data?.location_from ?? locationFrom\"></app-searchable-selector>\n <mat-hint>Where are we taking stock from?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_from_id')\">{{ getErrorMessage('location_from_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location To</mat-label>\n <app-searchable-selector formControlName=\"location_to_id\"\n apiUrl=\"api/inventory-locations\"></app-searchable-selector>\n <mat-hint>Where are we taking stock to?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_to_id')\">{{ getErrorMessage('location_to_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput placeholder=\"Quantity\" formControlName=\"quantity\" type=\"number\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput placeholder=\"Particulars\" formControlName=\"particulars\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button type=\"button\" mat-flat-button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\">Cancel</button>\n <button type=\"submit\" mat-raised-button color=\"primary\" [disabled]=\"isWorking\">Save</button>\n </div>\n </form>\n </mat-card-content>\n\n</div>" }]
|
|
86
|
+
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.StockTransferService }, { type: i4.MatDialogRef, decorators: [{
|
|
87
|
+
type: Optional
|
|
88
|
+
}] }, { type: undefined, decorators: [{
|
|
89
|
+
type: Inject,
|
|
90
|
+
args: [MAT_DIALOG_DATA]
|
|
91
|
+
}, {
|
|
92
|
+
type: Optional
|
|
93
|
+
}] }], propDecorators: { productId: [{
|
|
102
94
|
type: Input
|
|
103
95
|
}], locationFrom: [{
|
|
104
96
|
type: Input
|
|
105
|
-
}], saved: [{
|
|
106
|
-
type: Output
|
|
107
|
-
}], cancelled: [{
|
|
108
|
-
type: Output
|
|
109
97
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdHJhbnNmZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay10cmFuc2Zlci9zdG9jay10cmFuc2Zlci1mb3JtL3N0b2NrLXRyYW5zZmVyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stdHJhbnNmZXIvc3RvY2stdHJhbnNmZXItZm9ybS9zdG9jay10cmFuc2Zlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUdMLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQWUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7OztBQXVCbkMsTUFB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QUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7d0dBMUVVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLGlPQ3JDdkMsdTlFQWdFQSx5REQ1Q0ksbUJBQW1CLCttQ0FDbkIsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVEsaVVBQ1Isa0JBQWtCLG1LQUNsQixtQkFBbUIsNktBQ25CLGFBQWEsd0ZBQ2IsU0FBUyxvSEFDVCx3QkFBd0IseWlCQUN4QixRQUFRLGtGQUNSLElBQUksNkZBQ0osT0FBTyw4RUFDUCxTQUFTOzs0RkFLQSwwQkFBMEI7a0JBckJ0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixTQUFTO3dCQUNULHdCQUF3Qjt3QkFDeEIsUUFBUTt3QkFDUixJQUFJO3dCQUNKLE9BQU87d0JBQ1AsU0FBUztxQkFDVjtzSkFLUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudFxufSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEVycm9yLCBNYXRGb3JtRmllbGQsIE1hdEhpbnQsIE1hdExhYmVsLCBNYXRTdWZmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlciwgTWF0RGF0ZXBpY2tlcklucHV0LCBNYXREYXRlcGlja2VyVG9nZ2xlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBTdG9ja1RyYW5zZmVyU2VydmljZSB9IGZyb20gJy4uL3N0b2NrLXRyYW5zZmVyLnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXN0b2NrLXRyYW5zZmVyLWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0SW5wdXQsXG4gICAgTWF0RGF0ZXBpY2tlcklucHV0LFxuICAgIE1hdERhdGVwaWNrZXJUb2dnbGUsXG4gICAgTWF0RGF0ZXBpY2tlcixcbiAgICBNYXRTdWZmaXgsXG4gICAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICAgIE1hdEVycm9yLFxuICAgIE5nSWYsXG4gICAgTWF0SGludCxcbiAgICBNYXRCdXR0b25cbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLXRyYW5zZmVyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3RvY2stdHJhbnNmZXItZm9ybS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tUcmFuc2ZlckZvcm1Db21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9kdWN0SWQhOiBudW1iZXI7XG4gIEBJbnB1dCgpIGxvY2F0aW9uRnJvbSE6IGFueTtcblxuICBAT3V0cHV0KCkgc2F2ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFN0b2NrVHJhbnNmZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlKTtcblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IHtcbiAgICAgIGRhdGU6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGUgZGF0ZSBmaWVsZCBpcyByZXF1aXJlZC4nLFxuICAgICAgfSxcbiAgICAgIHByb2R1Y3RfaWQ6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGUgcHJvZHVjdCBmaWVsZCBpcyByZXF1aXJlZC4nLFxuICAgICAgfSxcbiAgICAgIGxvY2F0aW9uX2Zyb21faWQ6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGUgbG9jYXRpb24gZnJvbSBmaWVsZCBpcyByZXF1aXJlZC4nLFxuICAgICAgfSxcbiAgICAgIGxvY2F0aW9uX3RvX2lkOiB7XG4gICAgICAgIHJlcXVpcmVkOiAnVGhlIGxvY2F0aW9uIHRvIGZpZWxkIGlzIHJlcXVpcmVkLicsXG4gICAgICB9LFxuICAgICAgcXVhbnRpdHk6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGUgcXVhbnRpdHkgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHByb2R1Y3RfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkYXRlOiBbbmV3IERhdGUoKSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGxvY2F0aW9uX2Zyb21faWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBsb2NhdGlvbl90b19pZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHF1YW50aXR5OiBbMSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwYXJ0aWN1bGFyczogWycnXVxuICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmZvcm0ubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1BsZWFzZSBjaGVjayB0aGUgZm9ybSBmb3IgZXJyb3JzLicsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZVxuICAgIH1cbiAgICBpZiAoZGF0YT8uZGF0ZSkge1xuICAgICAgZGF0YS5kYXRlID0gbW9tZW50KGRhdGE/LmRhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlKGRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnU3RvY2sgdHJhbnNmZXJyZWQgc3VjY2Vzc2Z1bGx5LicsICdzdWNjZXNzJyk7XG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdChyZXNwb25zZT8uaXRlbSk7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmlzV29ya2luZyA9IGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2R1Y3RJZCkge1xuICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdF9pZCcpPy5zZXRWYWx1ZSh0aGlzLnByb2R1Y3RJZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9jYXRpb25Gcm9tKSB7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhdGlvbl9mcm9tX2lkJyk/LnNldFZhbHVlKHRoaXMubG9jYXRpb25Gcm9tLmlkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1zdGFydCBnYXAtMFwiXG4gIChuZ1N1Ym1pdCk9XCJzYXZlKClcIlxuPlxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRhdGVcIiBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBwbGFjZWhvbGRlcj1cIkRhdGVcIiAoZm9jdXMpPVwicGlja2VyLm9wZW4oKVwiPlxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdkYXRlJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ2RhdGUnKSB9fTwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFwcm9kdWN0SWRcIj5cbiAgICA8bWF0LWxhYmVsPlByb2R1Y3Q8L21hdC1sYWJlbD5cbiAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3JcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgdGl0bGVGaWVsZD1cIm5hbWVcIlxuICAgICAgYXBpVXJsPVwiYXBpL3Byb2R1Y3RzXCJcbiAgICA+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9kdWN0X2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3Byb2R1Y3RfaWQnKSB9fTwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPkxvY2F0aW9uIEZyb208L21hdC1sYWJlbD5cbiAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3JcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX2Zyb21faWRcIlxuICAgICAgYXBpVXJsPVwiYXBpL2ludmVudG9yeS1sb2NhdGlvbnNcIlxuICAgICAgW3NlbGVjdGVkVmFsdWVdPVwibG9jYXRpb25Gcm9tXCJcbiAgICA+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICA8bWF0LWhpbnQ+V2hlcmUgYXJlIHdlIHRha2luZyBzdG9jayBmcm9tPzwvbWF0LWhpbnQ+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnbG9jYXRpb25fZnJvbV9pZCcpXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCdsb2NhdGlvbl9mcm9tX2lkJykgfX08L21hdC1lcnJvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD5Mb2NhdGlvbiBUbzwvbWF0LWxhYmVsPlxuICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvclxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9jYXRpb25fdG9faWRcIlxuICAgICAgYXBpVXJsPVwiYXBpL2ludmVudG9yeS1sb2NhdGlvbnNcIlxuICAgID48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgIDxtYXQtaGludD5XaGVyZSBhcmUgd2UgdGFraW5nIHN0b2NrIHRvPzwvbWF0LWhpbnQ+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnbG9jYXRpb25fdG9faWQnKVwiPnt7IGdldEVycm9yTWVzc2FnZSgnbG9jYXRpb25fdG9faWQnKSB9fTwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiUXVhbnRpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJxdWFudGl0eVwiIHR5cGU9XCJudW1iZXJcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdxdWFudGl0eScpXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCdxdWFudGl0eScpIH19PC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UGFydGljdWxhcnM8L21hdC1sYWJlbD5cbiAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJQYXJ0aWN1bGFyc1wiIGZvcm1Db250cm9sTmFtZT1cInBhcnRpY3VsYXJzXCI+PC90ZXh0YXJlYT5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNXb3JraW5nXCIgdHlwZT1cInN1Ym1pdFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgU2F2ZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbGxlZC5lbWl0KClcIj5cbiAgICAgIENhbmNlbFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdHJhbnNmZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay10cmFuc2Zlci9zdG9jay10cmFuc2Zlci1mb3JtL3N0b2NrLXRyYW5zZmVyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stdHJhbnNmZXIvc3RvY2stdHJhbnNmZXItZm9ybS9zdG9jay10cmFuc2Zlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUVMLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQWUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFB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USxzREFDUixRQUFRLGlVQUNSLGtCQUFrQixtS0FDbEIsbUJBQW1CLDZLQUNuQixhQUFhLHdGQUNiLFNBQVMsb0hBQ1Qsd0JBQXdCLHlpQkFDeEIsUUFBUSxrRkFDUixJQUFJLDZGQUNKLE9BQU8sOEVBQ1AsU0FBUyxpTEFFVCxjQUFjOzs0RkFLTCwwQkFBMEI7a0JBdkJ0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixTQUFTO3dCQUNULHdCQUF3Qjt3QkFDeEIsUUFBUTt3QkFDUixJQUFJO3dCQUNKLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGNBQWM7cUJBQ2Y7OzBCQVlFLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZUFBZTs7MEJBQUcsUUFBUTt5Q0FSM0IsU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICBUZWNobGlmeUZvcm1Db21wb25lbnRcbn0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRFcnJvciwgTWF0Rm9ybUZpZWxkLCBNYXRIaW50LCBNYXRMYWJlbCwgTWF0U3VmZml4IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgU3RvY2tUcmFuc2ZlclNlcnZpY2UgfSBmcm9tICcuLi9zdG9jay10cmFuc2Zlci5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRDYXJkQ29udGVudCwgTWF0Q2FyZFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay10cmFuc2Zlci1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdElucHV0LFxuICAgIE1hdERhdGVwaWNrZXJJbnB1dCxcbiAgICBNYXREYXRlcGlja2VyVG9nZ2xlLFxuICAgIE1hdERhdGVwaWNrZXIsXG4gICAgTWF0U3VmZml4LFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgICBNYXRFcnJvcixcbiAgICBOZ0lmLFxuICAgIE1hdEhpbnQsXG4gICAgTWF0QnV0dG9uLFxuICAgIE1hdENhcmRUaXRsZSxcbiAgICBNYXRDYXJkQ29udGVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLXRyYW5zZmVyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3RvY2stdHJhbnNmZXItZm9ybS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tUcmFuc2ZlckZvcm1Db21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9kdWN0SWQhOiBudW1iZXI7XG4gIEBJbnB1dCgpIGxvY2F0aW9uRnJvbSE6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBTdG9ja1RyYW5zZmVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTdG9ja1RyYW5zZmVyRm9ybUNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIEBPcHRpb25hbCgpIHB1YmxpYyBkYXRhOiBhbnksXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlLCBzZXJ2aWNlKTtcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IGRpYWxvZ1JlZjtcblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IHtcbiAgICAgIGRhdGU6IHsgcmVxdWlyZWQ6ICdUaGUgZGF0ZSBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBwcm9kdWN0X2lkOiB7IHJlcXVpcmVkOiAnVGhlIHByb2R1Y3QgZmllbGQgaXMgcmVxdWlyZWQuJyB9LFxuICAgICAgbG9jYXRpb25fZnJvbV9pZDogeyByZXF1aXJlZDogJ1RoZSBsb2NhdGlvbiBmcm9tIGZpZWxkIGlzIHJlcXVpcmVkLicgfSxcbiAgICAgIGxvY2F0aW9uX3RvX2lkOiB7IHJlcXVpcmVkOiAnVGhlIGxvY2F0aW9uIHRvIGZpZWxkIGlzIHJlcXVpcmVkLicgfSxcbiAgICAgIHF1YW50aXR5OiB7IHJlcXVpcmVkOiAnVGhlIHF1YW50aXR5IGZpZWxkIGlzIHJlcXVpcmVkLicgfVxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHByb2R1Y3RfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkYXRlOiBbbmV3IERhdGUoKSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGxvY2F0aW9uX2Zyb21faWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBsb2NhdGlvbl90b19pZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHF1YW50aXR5OiBbMSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwYXJ0aWN1bGFyczogWycnXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcHJvZHVjdElkID0gdGhpcy5kYXRhPy5wcm9kdWN0X2lkID8/IHRoaXMucHJvZHVjdElkO1xuICAgIGlmIChwcm9kdWN0SWQpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKT8uc2V0VmFsdWUocHJvZHVjdElkKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhdGlvbkZyb20gPSB0aGlzLmRhdGE/LmxvY2F0aW9uX2Zyb20gPz8gdGhpcy5sb2NhdGlvbkZyb207XG4gICAgaWYgKGxvY2F0aW9uRnJvbSkge1xuICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYXRpb25fZnJvbV9pZCcpPy5zZXRWYWx1ZShsb2NhdGlvbkZyb20uaWQpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZvcm1EYXRhKCk6IGFueSB7XG4gICAgY29uc3QgZGF0YSA9IHsgLi4udGhpcy5mb3JtLnZhbHVlIH07XG4gICAgaWYgKGRhdGEuZGF0ZSkge1xuICAgICAgZGF0YS5kYXRlID0gbW9tZW50KGRhdGEuZGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0yXCI+XG4gIDxoNSBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIFN0b2NrIFRyYW5zZmVyXG4gIDwvaDU+XG5cbiAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPGZvcm0gY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0KGdldEZvcm1EYXRhKCkpXCI+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgcGxhY2Vob2xkZXI9XCJEYXRlXCIgKGZvY3VzKT1cInBpY2tlci5vcGVuKClcIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnZGF0ZScpXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCdkYXRlJykgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiEoZGF0YT8ucHJvZHVjdF9pZCA/PyBwcm9kdWN0SWQpXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+UHJvZHVjdDwvbWF0LWxhYmVsPlxuICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdF9pZFwiIHRpdGxlRmllbGQ9XCJuYW1lXCJcbiAgICAgICAgICBhcGlVcmw9XCJhcGkvcHJvZHVjdHNcIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9kdWN0X2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3Byb2R1Y3RfaWQnKSB9fTwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPkxvY2F0aW9uIEZyb208L21hdC1sYWJlbD5cbiAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX2Zyb21faWRcIiBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9uc1wiXG4gICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwiZGF0YT8ubG9jYXRpb25fZnJvbSA/PyBsb2NhdGlvbkZyb21cIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgICA8bWF0LWhpbnQ+V2hlcmUgYXJlIHdlIHRha2luZyBzdG9jayBmcm9tPzwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ2xvY2F0aW9uX2Zyb21faWQnKVwiPnt7IGdldEVycm9yTWVzc2FnZSgnbG9jYXRpb25fZnJvbV9pZCcpIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+TG9jYXRpb24gVG88L21hdC1sYWJlbD5cbiAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX3RvX2lkXCJcbiAgICAgICAgICBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9uc1wiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgIDxtYXQtaGludD5XaGVyZSBhcmUgd2UgdGFraW5nIHN0b2NrIHRvPzwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ2xvY2F0aW9uX3RvX2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ2xvY2F0aW9uX3RvX2lkJykgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5RdWFudGl0eTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJRdWFudGl0eVwiIGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCIgdHlwZT1cIm51bWJlclwiPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdxdWFudGl0eScpXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCdxdWFudGl0eScpIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+UGFydGljdWxhcnM8L21hdC1sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiUGFydGljdWxhcnNcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0aWN1bGFyc1wiPjwvdGV4dGFyZWE+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiPlNhdmU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG48L2Rpdj4iXX0=
|