tango-app-ui-store-builder 1.0.12 → 1.0.13

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.
Files changed (34) hide show
  1. package/esm2022/lib/components/fixture-template/fixture-template.component.mjs +9 -23
  2. package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +47 -84
  3. package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +1 -1
  4. package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +5 -4
  5. package/esm2022/lib/components/manage-store-plano/manage-store-plano-feedback/manage-store-plano-feedback.component.mjs +3 -3
  6. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +46 -366
  7. package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +10 -51
  8. package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +9 -26
  9. package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +2 -2
  10. package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +73 -101
  11. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +3 -3
  12. package/esm2022/lib/interfaces/fixture-template.interface.mjs +1 -1
  13. package/esm2022/lib/services/store-builder.service.mjs +4 -4
  14. package/esm2022/lib/tango-store-builder.module.mjs +7 -11
  15. package/fesm2022/tango-app-ui-store-builder.mjs +1147 -2524
  16. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  17. package/lib/components/fixture-template/fixture-template.component.d.ts +0 -1
  18. package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +9 -9
  19. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +1 -1
  20. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +1 -1
  21. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +6 -23
  22. package/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.d.ts +1 -1
  23. package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +6 -7
  24. package/lib/components/manage-store-plano/template-vms/template-vms.component.d.ts +9 -9
  25. package/lib/interfaces/fixture-template.interface.d.ts +2 -2
  26. package/lib/services/store-builder.service.d.ts +1 -1
  27. package/lib/tango-store-builder.module.d.ts +33 -35
  28. package/package.json +1 -1
  29. package/esm2022/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.mjs +0 -80
  30. package/esm2022/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.mjs +0 -375
  31. package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +0 -486
  32. package/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.d.ts +0 -21
  33. package/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.d.ts +0 -48
  34. package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +0 -76
@@ -49,7 +49,6 @@ export declare class FixtureTemplateComponent implements OnInit, CanExitGuard, O
49
49
  confirmExit(): Promise<boolean | null>;
50
50
  findReplace(): void;
51
51
  goBack(): void;
52
- validateFixtureData(): void;
53
52
  ngOnDestroy(): void;
54
53
  static ɵfac: i0.ɵɵFactoryDeclaration<FixtureTemplateComponent, never>;
55
54
  static ɵcmp: i0.ɵɵComponentDeclaration<FixtureTemplateComponent, "lib-fixture-template", never, {}, {}, never, never, false, never>;
@@ -1,12 +1,12 @@
1
- import { OnDestroy, OnInit } from "@angular/core";
2
- import { FormArray, FormBuilder, FormGroup } from "@angular/forms";
3
- import { ActivatedRoute, Router } from "@angular/router";
4
- import { ToastService } from "tango-app-ui-shared";
5
- import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
6
- import { FixtureTemplateDetails } from "../../../interfaces/fixture-template.interface";
7
- import { PlanoDataService } from "../../../services/plano-data.service";
8
- import { PageInfoService } from "tango-app-ui-global";
9
- import { DropdownIF } from "../../../interfaces/plano-general.interface";
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import { FormArray, FormBuilder, FormGroup } from '@angular/forms';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { ToastService } from 'tango-app-ui-shared';
5
+ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
6
+ import { FixtureTemplateDetails } from '../../../interfaces/fixture-template.interface';
7
+ import { PlanoDataService } from '../../../services/plano-data.service';
8
+ import { PageInfoService } from 'tango-app-ui-global';
9
+ import { DropdownIF } from '../../../interfaces/plano-general.interface';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class TemplateBasicDetailsComponent implements OnInit, OnDestroy {
12
12
  private fb;
@@ -51,7 +51,7 @@ export declare class PlanoRolloutTableComponent implements OnInit, OnDestroy {
51
51
  paginationSize(): number;
52
52
  onPageChange(pageOffset: number): void;
53
53
  onPageSizeChange(pageSize: number): void;
54
- getTaskStatus(data: any, type: string): "yetToAssign" | "reviewPending" | "completed" | "taskAssigned" | undefined;
54
+ getTaskStatus(data: any, type: string): "completed" | "yetToAssign" | "reviewPending" | "taskAssigned" | undefined;
55
55
  getTaskTooltip(data: any, type: string): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Completed" | undefined;
56
56
  showBreach(data: any, type: string): boolean;
57
57
  updateQueryParams(): void;
@@ -54,7 +54,7 @@ export declare class PlanoVerificationTableComponent implements OnInit, OnDestro
54
54
  onPageChange(pageOffset: number): void;
55
55
  onPageSizeChange(pageSize: number): void;
56
56
  planoFloorDetails(data: any): string | 1;
57
- getTaskStatus(data: any, type: string): "yetToAssign" | "reviewPending" | "completed" | "taskAssigned" | undefined;
57
+ getTaskStatus(data: any, type: string): "completed" | "yetToAssign" | "reviewPending" | "taskAssigned" | undefined;
58
58
  getTaskTooltip(data: any, type: string): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Completed" | undefined;
59
59
  getProgressValue(data: any): 100 | 50;
60
60
  showBreach(data: any, type: string): boolean;
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, OnInit, TemplateRef } from "@angular/core";
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from "@angular/core";
2
2
  import { Location, TitleCasePipe } from "@angular/common";
3
3
  import { FormArray, FormBuilder, FormControl, FormGroup } from "@angular/forms";
4
4
  import { ActivatedRoute, Router } from "@angular/router";
@@ -31,7 +31,6 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
31
31
  private cd;
32
32
  canvasRef: ElementRef<HTMLCanvasElement>;
33
33
  containerRef: ElementRef<HTMLDivElement>;
34
- noStoreVideoModalRef: TemplateRef<any>;
35
34
  onResize(): void;
36
35
  destroy$: Subject<unknown>;
37
36
  clientId: string;
@@ -47,15 +46,12 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
47
46
  otherElementsSubscriptions: Subscription[];
48
47
  planoData: any;
49
48
  floorData: any;
50
- readonly originalFloorData: any;
51
49
  cdnUrl: string;
52
50
  fixtureTemplates: any[];
53
51
  allFixtures: any[];
54
- allFixtureInstances: any[];
55
52
  storeFeedback: any;
56
53
  selectedFixture: any;
57
54
  selectedFixtureData: any;
58
- selectedFixtureFeedback: any;
59
55
  editFixture: boolean;
60
56
  editFixtureSection: "basic-details" | "products" | "vms";
61
57
  submitFixture: boolean;
@@ -87,8 +83,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
87
83
  };
88
84
  };
89
85
  otherElementList: DropdownIF[];
90
- private activeHighlight;
91
- private cancelHighlightBlink;
86
+ isUserInteractedWithCanvas: boolean;
92
87
  constructor(apiService: StoreBuilderService, route: ActivatedRoute, fb: FormBuilder, gs: GlobalStateService, titleCase: TitleCasePipe, toastService: ToastService, modalService: NgbModal, pageInfo: PageInfoService, location: Location, router: Router, cd: ChangeDetectorRef);
93
88
  ngOnInit(): void;
94
89
  ngAfterViewInit(): void;
@@ -96,7 +91,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
96
91
  setupZoomHandlers(): void;
97
92
  setPageData(): void;
98
93
  onFixtureSave(): void;
99
- onFixturePageCancel(): Promise<void>;
94
+ onFixturePageCancel(): void;
100
95
  onFixtureSubmit(event: any): void;
101
96
  togglePanel(side: "left" | "right", action?: boolean): void;
102
97
  getStoreFeedback(planoId: string, floorId: string, filter: any, checkPublishState?: boolean): Promise<unknown>;
@@ -115,7 +110,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
115
110
  roundToTwo(num: number): number;
116
111
  getStoreFixtures(storeId: string, enable?: boolean): Promise<void>;
117
112
  extractAllFixtures(floorData: any): void;
118
- renderFloor(update?: boolean): Promise<void>;
113
+ renderFloor(update?: boolean): void;
119
114
  drawInitialContent(): Promise<void>;
120
115
  private getFullLayoutBounds;
121
116
  private fitCanvasToLayoutAnimated;
@@ -142,8 +137,6 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
142
137
  subscribeToOtherElementsChanges(): void;
143
138
  updateCanvasOtherElementLabel(elementRef: any): void;
144
139
  rotateCanvas(canvas: fabric.Canvas, angleDeg: number): void;
145
- selectFixtureOnCanvasClick(target: any, collapseTaskInfo?: boolean): void;
146
- selectFixtureFeedback(fixtureId: string, collapseTaskInfo?: boolean): void;
147
140
  getFixtureTemplates(): Promise<void>;
148
141
  createForm(): void;
149
142
  get getFormWalls(): FormArray<any>;
@@ -169,7 +162,6 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
169
162
  changeFixtureTemplate(configId: string, fixtureType: "wall" | "floor", fixtureIndex: number, wallIndex?: number): void;
170
163
  onDrop(event: any, destinationWallIndex: number | "floor", destinationFixtureIndex?: number): void;
171
164
  downloadCanvas(): void;
172
- handleFeedbackAction(userAction: any): Promise<void>;
173
165
  handleApproverResponse(response: any): Promise<void>;
174
166
  bindFixtureToWall(wallGroup: fabric.Group, fixtureGroup: fabric.Group): void;
175
167
  keepWithinBoundingBox(obj: fabric.Object, box: {
@@ -215,18 +207,9 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
215
207
  class: string;
216
208
  };
217
209
  getElementNumber(group: any): number | null;
218
- highlightFixture(group: any, blink?: boolean): void;
219
- removeHighlight(): void;
220
- keepHighlightOnTop: () => void;
221
- onChangeFixtureOnFeedbackPanel({ currentFixture, action, }: {
222
- currentFixture?: string;
223
- action?: "next" | "previous";
224
- }, collapseTaskInfo?: boolean): void;
225
- revokeTask(): void;
226
- goToStoreTourPage(): Promise<void>;
227
- openNoVideoFoundModal(): Promise<void>;
228
- goToStoreCameraPage(): void;
210
+ clearCanvas(): void;
229
211
  ngOnDestroy(): void;
212
+ revokeTask(): void;
230
213
  static ɵfac: i0.ɵɵFactoryDeclaration<ManageStorePlanoComponent, never>;
231
214
  static ɵcmp: i0.ɵɵComponentDeclaration<ManageStorePlanoComponent, "lib-manage-store-plano", never, {}, {}, never, never, false, never>;
232
215
  }
@@ -63,7 +63,7 @@ export declare class PlanoRolloutComponent implements AfterViewInit, OnDestroy,
63
63
  onFixtureSave(): void;
64
64
  isSaveButtonDisabled(): boolean;
65
65
  onFixturePageCancel(): void;
66
- onFixtureSubmit(event: any): void;
66
+ onFixtureSubmit(event: boolean): void;
67
67
  getStoreFeedback(planoId: string, floorId: string, filter: any, ckeckPublishState?: boolean): void;
68
68
  calculatePublishingState(): void;
69
69
  getTemplate(fixtureConfigId: string): Promise<Object>;
@@ -1,9 +1,9 @@
1
- import { EventEmitter, OnChanges, SimpleChanges, OnDestroy } from "@angular/core";
2
- import { FormArray, FormBuilder, FormGroup } from "@angular/forms";
3
- import { ToastService } from "tango-app-ui-shared";
4
- import { FixtureTemplateDetails } from "../../../interfaces/fixture-template.interface";
5
- import { StoreBuilderService } from "../../../services/store-builder.service";
6
- import { DropdownIF } from "../../../interfaces/plano-general.interface";
1
+ import { EventEmitter, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
2
+ import { FormArray, FormBuilder, FormGroup } from '@angular/forms';
3
+ import { ToastService } from 'tango-app-ui-shared';
4
+ import { FixtureTemplateDetails } from '../../../interfaces/fixture-template.interface';
5
+ import { StoreBuilderService } from '../../../services/store-builder.service';
6
+ import { DropdownIF } from '../../../interfaces/plano-general.interface';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class InstanceBasicDetailsComponent implements OnChanges, OnDestroy {
9
9
  private fb;
@@ -28,7 +28,6 @@ export declare class InstanceBasicDetailsComponent implements OnChanges, OnDestr
28
28
  get shelfArray(): FormArray;
29
29
  get totalProductCapacity(): number;
30
30
  submitForm(): void;
31
- validateFixtureData(): void;
32
31
  getFixtureLibrary(): string;
33
32
  ngOnDestroy(): void;
34
33
  static ɵfac: i0.ɵɵFactoryDeclaration<InstanceBasicDetailsComponent, never>;
@@ -1,12 +1,12 @@
1
- import { AfterViewChecked, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from "@angular/core";
2
- import { FormArray, FormBuilder, FormGroup } from "@angular/forms";
3
- import { ToastService } from "tango-app-ui-shared";
4
- import { GlobalStateService } from "tango-app-ui-global";
5
- import { VmLibraryList } from "../../../interfaces/vm-library.interface";
6
- import { StoreBuilderService } from "../../../services/store-builder.service";
7
- import { FixtureTemplateDetails, SectionConfig, ShelfConfig, VMConfig } from "../../../interfaces/fixture-template.interface";
8
- import { DropdownIF } from "../../../interfaces/plano-general.interface";
9
- import { TitleCasePipe } from "@angular/common";
1
+ import { AfterViewChecked, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
+ import { FormArray, FormBuilder, FormGroup } from '@angular/forms';
3
+ import { ToastService } from 'tango-app-ui-shared';
4
+ import { GlobalStateService } from 'tango-app-ui-global';
5
+ import { VmLibraryList } from '../../../interfaces/vm-library.interface';
6
+ import { StoreBuilderService } from '../../../services/store-builder.service';
7
+ import { FixtureTemplateDetails, SectionConfig, ShelfConfig, VMConfig } from '../../../interfaces/fixture-template.interface';
8
+ import { DropdownIF } from '../../../interfaces/plano-general.interface';
9
+ import { TitleCasePipe } from '@angular/common';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class InstanceVmsComponent implements OnDestroy, AfterViewChecked, OnChanges {
12
12
  private fb;
@@ -70,8 +70,8 @@ export interface SectionConfig {
70
70
  export interface VMConfig {
71
71
  vmType?: string;
72
72
  vmId?: string;
73
- startYPosition?: number | null;
74
- endYPosition?: number | null;
73
+ startYPosition?: number;
74
+ endYPosition?: number;
75
75
  xZone?: string;
76
76
  yZone?: string;
77
77
  position?: string;
@@ -66,6 +66,7 @@ export declare class StoreBuilderService implements OnDestroy {
66
66
  updateFixtureTemplate(data: any, id: string): import("rxjs").Observable<Object>;
67
67
  duplicateFixtureTemplate(data: any): import("rxjs").Observable<Object>;
68
68
  deleteFixtureTemplate(data: any): import("rxjs").Observable<Object>;
69
+ getplanoFeedback(data: any): import("rxjs").Observable<Object>;
69
70
  updateFixtureStatus(data: any): import("rxjs").Observable<Object>;
70
71
  updateApprovalStatus(data: any): import("rxjs").Observable<Object>;
71
72
  getStoreFixturesfeedback(data: any): import("rxjs").Observable<Object>;
@@ -104,7 +105,6 @@ export declare class StoreBuilderService implements OnDestroy {
104
105
  updateProductMapping(data: any): import("rxjs").Observable<Object>;
105
106
  getCountries(data: any): import("rxjs").Observable<Object>;
106
107
  getRegions(data: any): import("rxjs").Observable<Object>;
107
- getPlanoStoreVideoParams(data: any): import("rxjs").Observable<Object>;
108
108
  getAllPlanoIds(clientId: string): import("rxjs").Observable<Object>;
109
109
  ngOnDestroy(): void;
110
110
  static ɵfac: i0.ɵɵFactoryDeclaration<StoreBuilderService, never>;
@@ -48,42 +48,40 @@ import * as i46 from "./components/manage-plano/manage-plano.component";
48
48
  import * as i47 from "./components/manage-store-plano/plano-rollout/plano-rollout.component";
49
49
  import * as i48 from "./components/manage-store-plano/publish-rollout-popup/publish-rollout-popup.component";
50
50
  import * as i49 from "./components/manage-store-plano/rollout-feedback/rollout-feedback.component";
51
- import * as i50 from "./components/manage-store-plano/verification-feedback/verification-feedback.component";
52
- import * as i51 from "./components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component";
53
- import * as i52 from "./components/fixture-template/template-assign-stores/template-assign-stores.component";
54
- import * as i53 from "./components/fixture-template/template-assign-stores/preview-modal/preview-modal.component";
55
- import * as i54 from "./components/fixture-template-table/find-and-replace/find-and-replace.component";
56
- import * as i55 from "./components/fixture-template-table/custom-select/custom-select.component";
57
- import * as i56 from "./components/popups/variant-popup/variant-popup.component";
58
- import * as i57 from "./components/popups/publish-confirmation/publish-confirmation.component";
59
- import * as i58 from "./components/manage-store-plano/store-task-revoke/store-task-revoke.component";
60
- import * as i59 from "./components/plano-tools/plano-migrate/plano-migrate.component";
61
- import * as i60 from "./components/planogram/merch-compliance/fixture-products/fixture-products.component";
62
- import * as i61 from "./components/planogram/merch-compliance/zone-products/zone-products.component";
63
- import * as i62 from "./components/plano-tools/tools-parent/tools-parent.component";
64
- import * as i63 from "./components/planogram/plano-table/plano-table.component";
65
- import * as i64 from "./components/planogram/plano-details-parent/plano-details-parent.component";
66
- import * as i65 from "./components/planogram/merch-compliance/merch-compliance.component";
67
- import * as i66 from "./components/planogram/plano-overview/plano-overview.component";
68
- import * as i67 from "./components/planogram/plano-overview/fixture-overview/fixture-overview.component";
69
- import * as i68 from "./tango-store-builder-routing.module";
70
- import * as i69 from "./components/reactive-select/reactive-select.component";
71
- import * as i70 from "@angular/common";
72
- import * as i71 from "@angular/forms";
73
- import * as i72 from "tango-app-ui-shared";
74
- import * as i73 from "@angular/cdk/drag-drop";
75
- import * as i74 from "@ng-bootstrap/ng-bootstrap";
76
- import * as i75 from "./pipes/time-ago.pipe";
77
- import * as i76 from "ngx-drag-drop";
78
- import * as i77 from "./components/manage-store-plano/template-basic-details/template-basic-details.component";
79
- import * as i78 from "./components/manage-store-plano/template-products/template-products.component";
80
- import * as i79 from "./components/manage-store-plano/template-vms/template-vms.component";
81
- import * as i80 from "./components/fixture-template-tree/fixture-template-tree.component";
82
- import * as i81 from "./components/store-plano/store-plano-tree-view/store-plano-tree-view.component";
83
- import * as i82 from "./components/planogram/plano-table/plano-filter/plano-filter.component";
84
- import * as i83 from "./components/manage-store-plano/verification-feedback/fixture/fixture.component";
51
+ import * as i50 from "./components/fixture-template/template-assign-stores/template-assign-stores.component";
52
+ import * as i51 from "./components/fixture-template/template-assign-stores/preview-modal/preview-modal.component";
53
+ import * as i52 from "./components/fixture-template-table/find-and-replace/find-and-replace.component";
54
+ import * as i53 from "./components/fixture-template-table/custom-select/custom-select.component";
55
+ import * as i54 from "./components/popups/variant-popup/variant-popup.component";
56
+ import * as i55 from "./components/popups/publish-confirmation/publish-confirmation.component";
57
+ import * as i56 from "./components/manage-store-plano/store-task-revoke/store-task-revoke.component";
58
+ import * as i57 from "./components/plano-tools/plano-migrate/plano-migrate.component";
59
+ import * as i58 from "./components/planogram/merch-compliance/fixture-products/fixture-products.component";
60
+ import * as i59 from "./components/planogram/merch-compliance/zone-products/zone-products.component";
61
+ import * as i60 from "./components/plano-tools/tools-parent/tools-parent.component";
62
+ import * as i61 from "./components/planogram/plano-table/plano-table.component";
63
+ import * as i62 from "./components/planogram/plano-details-parent/plano-details-parent.component";
64
+ import * as i63 from "./components/planogram/merch-compliance/merch-compliance.component";
65
+ import * as i64 from "./components/planogram/plano-overview/plano-overview.component";
66
+ import * as i65 from "./components/planogram/plano-overview/fixture-overview/fixture-overview.component";
67
+ import * as i66 from "./tango-store-builder-routing.module";
68
+ import * as i67 from "./components/reactive-select/reactive-select.component";
69
+ import * as i68 from "@angular/common";
70
+ import * as i69 from "@angular/forms";
71
+ import * as i70 from "tango-app-ui-shared";
72
+ import * as i71 from "@angular/cdk/drag-drop";
73
+ import * as i72 from "@ng-bootstrap/ng-bootstrap";
74
+ import * as i73 from "./pipes/time-ago.pipe";
75
+ import * as i74 from "ngx-drag-drop";
76
+ import * as i75 from "./components/manage-store-plano/template-basic-details/template-basic-details.component";
77
+ import * as i76 from "./components/manage-store-plano/template-products/template-products.component";
78
+ import * as i77 from "./components/manage-store-plano/template-vms/template-vms.component";
79
+ import * as i78 from "./components/fixture-template-tree/fixture-template-tree.component";
80
+ import * as i79 from "@angular/material/tooltip";
81
+ import * as i80 from "./components/store-plano/store-plano-tree-view/store-plano-tree-view.component";
82
+ import * as i81 from "./components/planogram/plano-table/plano-filter/plano-filter.component";
85
83
  export declare class TangoStoreBuilderModule {
86
84
  static ɵfac: i0.ɵɵFactoryDeclaration<TangoStoreBuilderModule, never>;
87
- static ɵmod: i0.ɵɵNgModuleDeclaration<TangoStoreBuilderModule, [typeof i1.LayoutBuilderComponent, typeof i2.CreateLayoutComponent, typeof i3.LayoutSummaryComponent, typeof i4.StoreLayoutTableComponent, typeof i5.CustomSelectComponent, typeof i6.StoreOffcanvasComponentComponent, typeof i7.AddFloorComponent, typeof i8.ClearAllStepsComponent, typeof i9.DeleteLayoutComponent, typeof i10.CompleteLayoutComponent, typeof i11.StoreBuilderComponent, typeof i12.CreateStoreComponent, typeof i13.LayoutElementsComponent, typeof i14.ElementFormComponent, typeof i15.VisualizeVmDataComponent, typeof i16.ManageStorePlanoComponent, typeof i17.FixtureTemplateComponent, typeof i18.FixtureTemplateTableComponent, typeof i19.TemplateVmsComponent, typeof i20.TemplateSummaryComponent, typeof i21.PlanoLibraryComponent, typeof i22.FixtureLibraryComponent, typeof i23.VmLibraryComponent, typeof i24.ProductLibraryComponent, typeof i25.CreateProductComponent, typeof i26.PlanoConfigurationsComponent, typeof i27.FixtureBulkUploadComponent, typeof i28.CreateFixtureModalComponent, typeof i29.BulkUploadFixtureTemplateComponent, typeof i30.CreateFixtureTemplateComponent, typeof i31.BulkUploadPlanogramComponent, typeof i32.AddVmTypeComponent, typeof i33.VMBulkUploadComponent, typeof i34.CustomFilterComponent, typeof i35.PopupsComponent, typeof i36.ManageStorePlanoFeedbackComponent, typeof i37.ConfirmationPopupComponent, typeof i38.PublishtaskPopupComponent, typeof i39.DeleteConfirmationComponent, typeof i40.CompleteConfirmationComponent, typeof i41.ExitConfirmationComponent, typeof i42.CannotPerformComponent, typeof i43.LayoutEditConfirmationComponent, typeof i44.PlanoRolloutTableComponent, typeof i45.PlanoVerificationTableComponent, typeof i46.ManagePlanoComponent, typeof i47.PlanoRolloutComponent, typeof i48.PublishRolloutPopupComponent, typeof i49.RolloutFeedbackComponent, typeof i50.VerificationFeedbackComponent, typeof i51.ActionConfirmPopupComponent, typeof i52.TemplateAssignStoresComponent, typeof i53.PreviewModalComponent, typeof i54.FindAndReplaceComponent, typeof i55.CustomsingleSelectComponent, typeof i56.VariantPopupComponent, typeof i57.PublishConfirmationComponent, typeof i58.StoreTaskRevokeComponent, typeof i59.PlanoMigrateComponent, typeof i60.FixtureProductsComponent, typeof i61.ZoneProductsComponent, typeof i62.ToolsParentComponent, typeof i63.PlanoTableComponent, typeof i64.PlanoDetailsParentComponent, typeof i65.MerchComplianceComponent, typeof i66.PlanoOverviewComponent, typeof i67.FixtureOverviewComponent], [typeof i68.TangoStoreBuilderRoutingModule, typeof i69.ReactiveSelectComponent, typeof i70.CommonModule, typeof i71.FormsModule, typeof i72.CommonSharedModule, typeof i71.ReactiveFormsModule, typeof i73.DragDropModule, typeof i74.NgbTooltipModule, typeof i74.NgbAccordionModule, typeof i75.TimeAgoPipe, typeof i76.DndModule, typeof i77.InstanceBasicDetailsComponent, typeof i78.InstanceProductsComponent, typeof i79.InstanceVmsComponent, typeof i80.TemplateTreeComponent, typeof i81.StorePlanoTreeViewComponent, typeof i82.PlanoFilterComponent, typeof i83.FixtureComponent], never>;
85
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TangoStoreBuilderModule, [typeof i1.LayoutBuilderComponent, typeof i2.CreateLayoutComponent, typeof i3.LayoutSummaryComponent, typeof i4.StoreLayoutTableComponent, typeof i5.CustomSelectComponent, typeof i6.StoreOffcanvasComponentComponent, typeof i7.AddFloorComponent, typeof i8.ClearAllStepsComponent, typeof i9.DeleteLayoutComponent, typeof i10.CompleteLayoutComponent, typeof i11.StoreBuilderComponent, typeof i12.CreateStoreComponent, typeof i13.LayoutElementsComponent, typeof i14.ElementFormComponent, typeof i15.VisualizeVmDataComponent, typeof i16.ManageStorePlanoComponent, typeof i17.FixtureTemplateComponent, typeof i18.FixtureTemplateTableComponent, typeof i19.TemplateVmsComponent, typeof i20.TemplateSummaryComponent, typeof i21.PlanoLibraryComponent, typeof i22.FixtureLibraryComponent, typeof i23.VmLibraryComponent, typeof i24.ProductLibraryComponent, typeof i25.CreateProductComponent, typeof i26.PlanoConfigurationsComponent, typeof i27.FixtureBulkUploadComponent, typeof i28.CreateFixtureModalComponent, typeof i29.BulkUploadFixtureTemplateComponent, typeof i30.CreateFixtureTemplateComponent, typeof i31.BulkUploadPlanogramComponent, typeof i32.AddVmTypeComponent, typeof i33.VMBulkUploadComponent, typeof i34.CustomFilterComponent, typeof i35.PopupsComponent, typeof i36.ManageStorePlanoFeedbackComponent, typeof i37.ConfirmationPopupComponent, typeof i38.PublishtaskPopupComponent, typeof i39.DeleteConfirmationComponent, typeof i40.CompleteConfirmationComponent, typeof i41.ExitConfirmationComponent, typeof i36.ManageStorePlanoFeedbackComponent, typeof i42.CannotPerformComponent, typeof i43.LayoutEditConfirmationComponent, typeof i44.PlanoRolloutTableComponent, typeof i45.PlanoVerificationTableComponent, typeof i46.ManagePlanoComponent, typeof i47.PlanoRolloutComponent, typeof i48.PublishRolloutPopupComponent, typeof i49.RolloutFeedbackComponent, typeof i50.TemplateAssignStoresComponent, typeof i51.PreviewModalComponent, typeof i52.FindAndReplaceComponent, typeof i53.CustomsingleSelectComponent, typeof i54.VariantPopupComponent, typeof i55.PublishConfirmationComponent, typeof i56.StoreTaskRevokeComponent, typeof i57.PlanoMigrateComponent, typeof i58.FixtureProductsComponent, typeof i59.ZoneProductsComponent, typeof i60.ToolsParentComponent, typeof i61.PlanoTableComponent, typeof i62.PlanoDetailsParentComponent, typeof i63.MerchComplianceComponent, typeof i64.PlanoOverviewComponent, typeof i65.FixtureOverviewComponent], [typeof i66.TangoStoreBuilderRoutingModule, typeof i67.ReactiveSelectComponent, typeof i68.CommonModule, typeof i69.FormsModule, typeof i70.CommonSharedModule, typeof i69.ReactiveFormsModule, typeof i71.DragDropModule, typeof i72.NgbTooltipModule, typeof i72.NgbAccordionModule, typeof i73.TimeAgoPipe, typeof i74.DndModule, typeof i75.InstanceBasicDetailsComponent, typeof i76.InstanceProductsComponent, typeof i77.InstanceVmsComponent, typeof i78.TemplateTreeComponent, typeof i79.MatTooltip, typeof i80.StorePlanoTreeViewComponent, typeof i81.PlanoFilterComponent], never>;
88
86
  static ɵinj: i0.ɵɵInjectorDeclaration<TangoStoreBuilderModule>;
89
87
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-ui-store-builder",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"
@@ -1,80 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
4
- import * as i2 from "@angular/platform-browser";
5
- import * as i3 from "@angular/forms";
6
- export class ActionConfirmPopupComponent {
7
- activeModal;
8
- sanitizer;
9
- type = "keepPlano";
10
- title = "";
11
- description = "";
12
- btnText = "";
13
- icon = ``;
14
- safeIcon;
15
- remark;
16
- constructor(activeModal, sanitizer) {
17
- this.activeModal = activeModal;
18
- this.sanitizer = sanitizer;
19
- }
20
- ngOnInit() {
21
- switch (this.type) {
22
- case "acceptAI":
23
- this.title = "Accepting AI Output";
24
- this.description =
25
- "Your planogram will be updated according to the AI output or any updates made to it. Please ensure all changes match the store image.";
26
- this.btnText = "Save & Accept";
27
- this.icon = `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
28
- <g clip-path="url(#clip0_228_5774)">
29
- <path
30
- d="M4.16602 1.6665L4.32435 2.44984C4.43782 3.01234 4.69457 3.53603 5.06977 3.97021C5.44497 4.40439 5.9259 4.73435 6.46602 4.92817L6.66602 4.99984L6.46602 5.0715C5.9259 5.26532 5.44497 5.59529 5.06977 6.02947C4.69457 6.46365 4.43782 6.98733 4.32435 7.54984L4.16602 8.33317L4.00768 7.54984C3.89422 6.98733 3.63746 6.46365 3.26226 6.02947C2.88706 5.59529 2.40613 5.26532 1.86602 5.0715L1.66602 4.99984L1.86602 4.92817C2.40613 4.73435 2.88706 4.40439 3.26226 3.97021C3.63746 3.53603 3.89422 3.01234 4.00768 2.44984L4.16602 1.6665ZM6.66602 13.3332L6.85768 14.3965C6.90745 14.6739 7.02674 14.9341 7.20439 15.1528C7.38204 15.3716 7.61226 15.5417 7.87352 15.6473L8.33268 15.8332L7.87352 16.019C7.61221 16.1244 7.38189 16.2944 7.20409 16.513C7.0263 16.7316 6.90683 16.9917 6.85685 17.269L6.66602 18.3332L6.47435 17.2698C6.42458 16.9925 6.30529 16.7322 6.12764 16.5135C5.94999 16.2947 5.71978 16.1246 5.45852 16.019L4.99935 15.8332L5.45852 15.6473C5.71983 15.5419 5.95014 15.372 6.12794 15.1534C6.30573 14.9348 6.4252 14.6746 6.47518 14.3973L6.66602 13.3332ZM13.3327 2.49984L13.796 4.7115C14.0322 5.83907 14.5565 6.88621 15.3178 7.75081C16.0791 8.61541 17.0515 9.26796 18.1402 9.64484L19.166 9.99984L18.1402 10.3548C17.0515 10.7317 16.0791 11.3843 15.3178 12.2489C14.5565 13.1135 14.0322 14.1606 13.796 15.2882L13.3327 17.4998L12.8693 15.2882C12.6332 14.1606 12.1089 13.1135 11.3476 12.2489C10.5862 11.3843 9.61382 10.7317 8.52518 10.3548L7.49935 9.99984L8.52518 9.64484C9.61382 9.26796 10.5862 8.61541 11.3476 7.75081C12.1089 6.88621 12.6332 5.83907 12.8693 4.7115L13.3327 2.49984Z"
31
- stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
32
- </g>
33
- <defs>
34
- <clipPath id="clip0_228_5774">
35
- <rect width="20" height="20" fill="white" />
36
- </clipPath>
37
- </defs>
38
- </svg>
39
- `;
40
- break;
41
- case "redo":
42
- this.title = "Redo";
43
- this.description =
44
- "No action has been taken. This will reassign the task back to the store.";
45
- this.btnText = "Redo";
46
- this.icon = `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
47
- <path d="M8.25065 15.8335C6.90343 15.8335 5.74704 15.396 4.78148 14.521C3.81593 13.646 3.33343 12.5557 3.33398 11.2502C3.33398 9.94461 3.81676 8.85433 4.78232 7.97933C5.74787 7.10433 6.90398 6.66683 8.25065 6.66683H13.5007L11.334 4.50016L12.5007 3.3335L16.6673 7.50016L12.5007 11.6668L11.334 10.5002L13.5007 8.3335H8.25065C7.37565 8.3335 6.6151 8.61127 5.96898 9.16683C5.32287 9.72238 5.0001 10.4168 5.00065 11.2502C5.00065 12.0835 5.32371 12.7779 5.96982 13.3335C6.61593 13.8891 7.37621 14.1668 8.25065 14.1668H14.1673V15.8335H8.25065Z"
48
- fill="black" />
49
- </svg>
50
- `;
51
- break;
52
- case "keepPlano":
53
- this.title = "Keep planogram";
54
- this.description =
55
- "Your planogram will be updated according to the changes you’ve made. Please confirm that all updates match the store image.";
56
- this.btnText = "Yes, Update";
57
- this.icon = `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
58
- <path d="M2.725 5.80008L10 10.0084L17.275 5.80008M10 18.4001V10.0001M17.5 13.3334V6.66675C17.4997 6.37448 17.4225 6.08742 17.2763 5.83438C17.13 5.58134 16.9198 5.37122 16.6667 5.22508L10.8333 1.89175C10.58 1.74547 10.2926 1.66846 10 1.66846C9.70744 1.66846 9.42003 1.74547 9.16667 1.89175L3.33333 5.22508C3.08022 5.37122 2.86998 5.58134 2.72372 5.83438C2.57745 6.08742 2.5003 6.37448 2.5 6.66675V13.3334C2.5003 13.6257 2.57745 13.9127 2.72372 14.1658C2.86998 14.4188 3.08022 14.6289 3.33333 14.7751L9.16667 18.1084C9.42003 18.2547 9.70744 18.3317 10 18.3317C10.2926 18.3317 10.58 18.2547 10.8333 18.1084L16.6667 14.7751C16.9198 14.6289 17.13 14.4188 17.2763 14.1658C17.4225 13.9127 17.4997 13.6257 17.5 13.3334Z" stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
59
- </svg>
60
- `;
61
- break;
62
- }
63
- this.safeIcon = this.sanitizer.bypassSecurityTrustHtml(this.icon);
64
- }
65
- onCancel() {
66
- this.activeModal.close({ action: "notOk", remark: null });
67
- }
68
- onOk() {
69
- this.activeModal.close({ action: "ok", remark: this.remark });
70
- }
71
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionConfirmPopupComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
72
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActionConfirmPopupComponent, selector: "lib-action-confirm-popup", inputs: { type: "type" }, ngImport: i0, template: "<div class=\"modal-wrapper\">\r\n <div class=\"d-flex gap-3 align-items-center mb-5\">\r\n <div [innerHTML]=\"safeIcon\"></div>\r\n <h3 class=\"title\">{{ title }}</h3>\r\n </div>\r\n\r\n <p class=\"description\">{{ description }}</p>\r\n\r\n <div class=\"d-flex flex-column gap-2 mb-4\">\r\n <label for=\"remark\">Remarks</label>\r\n <textarea class=\"form-control\" id=\"remark\" [(ngModel)]=\"remark\" rows=\"3\"\r\n placeholder=\"Enter your remark here...\"></textarea>\r\n </div>\r\n <div class=\"modal-actions mt-5\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" (click)=\"onOk()\">\r\n {{btnText}}\r\n </button>\r\n </div>\r\n</div>", styles: [".modal-wrapper{padding:24px}.modal-wrapper .title{font-family:Inter;font-weight:600;font-size:18px;line-height:28px;color:#1d2939;margin:0}.modal-wrapper .description{font-family:Inter;font-weight:400;font-size:16px;line-height:24px;color:#1d2939;margin-bottom:18px}.modal-actions{display:flex;justify-content:end;gap:12px}::ng-deep .modal-content{border-radius:12px!important}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
73
- }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionConfirmPopupComponent, decorators: [{
75
- type: Component,
76
- args: [{ selector: "lib-action-confirm-popup", template: "<div class=\"modal-wrapper\">\r\n <div class=\"d-flex gap-3 align-items-center mb-5\">\r\n <div [innerHTML]=\"safeIcon\"></div>\r\n <h3 class=\"title\">{{ title }}</h3>\r\n </div>\r\n\r\n <p class=\"description\">{{ description }}</p>\r\n\r\n <div class=\"d-flex flex-column gap-2 mb-4\">\r\n <label for=\"remark\">Remarks</label>\r\n <textarea class=\"form-control\" id=\"remark\" [(ngModel)]=\"remark\" rows=\"3\"\r\n placeholder=\"Enter your remark here...\"></textarea>\r\n </div>\r\n <div class=\"modal-actions mt-5\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" (click)=\"onOk()\">\r\n {{btnText}}\r\n </button>\r\n </div>\r\n</div>", styles: [".modal-wrapper{padding:24px}.modal-wrapper .title{font-family:Inter;font-weight:600;font-size:18px;line-height:28px;color:#1d2939;margin:0}.modal-wrapper .description{font-family:Inter;font-weight:400;font-size:16px;line-height:24px;color:#1d2939;margin-bottom:18px}.modal-actions{display:flex;justify-content:end;gap:12px}::ng-deep .modal-content{border-radius:12px!important}\n"] }]
77
- }], ctorParameters: () => [{ type: i1.NgbActiveModal }, { type: i2.DomSanitizer }], propDecorators: { type: [{
78
- type: Input
79
- }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbmZpcm0tcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvbWFuYWdlLXN0b3JlLXBsYW5vL3ZlcmlmaWNhdGlvbi1mZWVkYmFjay9hY3Rpb24tY29uZmlybS1wb3B1cC9hY3Rpb24tY29uZmlybS1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9tYW5hZ2Utc3RvcmUtcGxhbm8vdmVyaWZpY2F0aW9uLWZlZWRiYWNrL2FjdGlvbi1jb25maXJtLXBvcHVwL2FjdGlvbi1jb25maXJtLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQVN6RCxNQUFNLE9BQU8sMkJBQTJCO0lBYTVCO0lBQ0E7SUFiRCxJQUFJLEdBQXNDLFdBQVcsQ0FBQztJQUUvRCxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNiLElBQUksR0FBVyxFQUFFLENBQUM7SUFFMUIsUUFBUSxDQUFXO0lBRW5CLE1BQU0sQ0FBUztJQUVmLFlBQ1UsV0FBMkIsRUFDM0IsU0FBdUI7UUFEdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFDOUIsQ0FBQztJQUVKLFFBQVE7UUFDTixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXO29CQUNkLHVJQUF1SSxDQUFDO2dCQUMxSSxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRzs7Ozs7Ozs7Ozs7O3FCQVlDLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVc7b0JBQ2QsMEVBQTBFLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHOzs7O3FCQUlDLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssV0FBVztnQkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDO2dCQUM5QixJQUFJLENBQUMsV0FBVztvQkFDZCw2SEFBNkgsQ0FBQztnQkFDaEksSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7Z0JBRTdCLElBQUksQ0FBQyxJQUFJLEdBQUc7OztxQkFHQyxDQUFDO2dCQUNkLE1BQU07U0FDVDtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7d0dBdkVVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLDBGQ1R4Qyx3MEJBbUJNOzs0RkRWTywyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCOzhHQUszQixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1hY3Rpb24tY29uZmlybS1wb3B1cFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWN0aW9uLWNvbmZpcm0tcG9wdXAuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2FjdGlvbi1jb25maXJtLXBvcHVwLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db25maXJtUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHR5cGU6IFwicmVkb1wiIHwgXCJhY2NlcHRBSVwiIHwgXCJrZWVwUGxhbm9cIiA9IFwia2VlcFBsYW5vXCI7XHJcblxyXG4gIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGJ0blRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBpY29uOiBzdHJpbmcgPSBgYDtcclxuXHJcbiAgc2FmZUljb246IFNhZmVIdG1sO1xyXG5cclxuICByZW1hcms6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcclxuICAgICAgY2FzZSBcImFjY2VwdEFJXCI6XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IFwiQWNjZXB0aW5nIEFJIE91dHB1dFwiO1xyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgXCJZb3VyIHBsYW5vZ3JhbSB3aWxsIGJlIHVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBBSSBvdXRwdXQgb3IgYW55IHVwZGF0ZXMgbWFkZSB0byBpdC4gUGxlYXNlIGVuc3VyZSBhbGwgY2hhbmdlcyBtYXRjaCB0aGUgc3RvcmUgaW1hZ2UuXCI7XHJcbiAgICAgICAgdGhpcy5idG5UZXh0ID0gXCJTYXZlICYgQWNjZXB0XCI7XHJcbiAgICAgICAgdGhpcy5pY29uID0gYDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIyOF81Nzc0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY2MDIgMS42NjY1TDQuMzI0MzUgMi40NDk4NEM0LjQzNzgyIDMuMDEyMzQgNC42OTQ1NyAzLjUzNjAzIDUuMDY5NzcgMy45NzAyMUM1LjQ0NDk3IDQuNDA0MzkgNS45MjU5IDQuNzM0MzUgNi40NjYwMiA0LjkyODE3TDYuNjY2MDIgNC45OTk4NEw2LjQ2NjAyIDUuMDcxNUM1LjkyNTkgNS4yNjUzMiA1LjQ0NDk3IDUuNTk1MjkgNS4wNjk3NyA2LjAyOTQ3QzQuNjk0NTcgNi40NjM2NSA0LjQzNzgyIDYuOTg3MzMgNC4zMjQzNSA3LjU0OTg0TDQuMTY2MDIgOC4zMzMxN0w0LjAwNzY4IDcuNTQ5ODRDMy44OTQyMiA2Ljk4NzMzIDMuNjM3NDYgNi40NjM2NSAzLjI2MjI2IDYuMDI5NDdDMi44ODcwNiA1LjU5NTI5IDIuNDA2MTMgNS4yNjUzMiAxLjg2NjAyIDUuMDcxNUwxLjY2NjAyIDQuOTk5ODRMMS44NjYwMiA0LjkyODE3QzIuNDA2MTMgNC43MzQzNSAyLjg4NzA2IDQuNDA0MzkgMy4yNjIyNiAzLjk3MDIxQzMuNjM3NDYgMy41MzYwMyAzLjg5NDIyIDMuMDEyMzQgNC4wMDc2OCAyLjQ0OTg0TDQuMTY2MDIgMS42NjY1Wk02LjY2NjAyIDEzLjMzMzJMNi44NTc2OCAxNC4zOTY1QzYuOTA3NDUgMTQuNjczOSA3LjAyNjc0IDE0LjkzNDEgNy4yMDQzOSAxNS4xNTI4QzcuMzgyMDQgMTUuMzcxNiA3LjYxMjI2IDE1LjU0MTcgNy44NzM1MiAxNS42NDczTDguMzMyNjggMTUuODMzMkw3Ljg3MzUyIDE2LjAxOUM3LjYxMjIxIDE2LjEyNDQgNy4zODE4OSAxNi4yOTQ0IDcuMjA0MDkgMTYuNTEzQzcuMDI2MyAxNi43MzE2IDYuOTA2ODMgMTYuOTkxNyA2Ljg1Njg1IDE3LjI2OUw2LjY2NjAyIDE4LjMzMzJMNi40NzQzNSAxNy4yNjk4QzYuNDI0NTggMTYuOTkyNSA2LjMwNTI5IDE2LjczMjIgNi4xMjc2NCAxNi41MTM1QzUuOTQ5OTkgMTYuMjk0NyA1LjcxOTc4IDE2LjEyNDYgNS40NTg1MiAxNi4wMTlMNC45OTkzNSAxNS44MzMyTDUuNDU4NTIgMTUuNjQ3M0M1LjcxOTgzIDE1LjU0MTkgNS45NTAxNCAxNS4zNzIgNi4xMjc5NCAxNS4xNTM0QzYuMzA1NzMgMTQuOTM0OCA2LjQyNTIgMTQuNjc0NiA2LjQ3NTE4IDE0LjM5NzNMNi42NjYwMiAxMy4zMzMyWk0xMy4zMzI3IDIuNDk5ODRMMTMuNzk2IDQuNzExNUMxNC4wMzIyIDUuODM5MDcgMTQuNTU2NSA2Ljg4NjIxIDE1LjMxNzggNy43NTA4MUMxNi4wNzkxIDguNjE1NDEgMTcuMDUxNSA5LjI2Nzk2IDE4LjE0MDIgOS42NDQ4NEwxOS4xNjYgOS45OTk4NEwxOC4xNDAyIDEwLjM1NDhDMTcuMDUxNSAxMC43MzE3IDE2LjA3OTEgMTEuMzg0MyAxNS4zMTc4IDEyLjI0ODlDMTQuNTU2NSAxMy4xMTM1IDE0LjAzMjIgMTQuMTYwNiAxMy43OTYgMTUuMjg4MkwxMy4zMzI3IDE3LjQ5OThMMTIuODY5MyAxNS4yODgyQzEyLjYzMzIgMTQuMTYwNiAxMi4xMDg5IDEzLjExMzUgMTEuMzQ3NiAxMi4yNDg5QzEwLjU4NjIgMTEuMzg0MyA5LjYxMzgyIDEwLjczMTcgOC41MjUxOCAxMC4zNTQ4TDcuNDk5MzUgOS45OTk4NEw4LjUyNTE4IDkuNjQ0ODRDOS42MTM4MiA5LjI2Nzk2IDEwLjU4NjIgOC42MTU0MSAxMS4zNDc2IDcuNzUwODFDMTIuMTA4OSA2Ljg4NjIxIDEyLjYzMzIgNS44MzkwNyAxMi44NjkzIDQuNzExNUwxMy4zMzI3IDIuNDk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJibGFja1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMjhfNTc3NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgYDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInJlZG9cIjpcclxuICAgICAgICB0aGlzLnRpdGxlID0gXCJSZWRvXCI7XHJcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICBcIk5vIGFjdGlvbiBoYXMgYmVlbiB0YWtlbi4gVGhpcyB3aWxsIHJlYXNzaWduIHRoZSB0YXNrIGJhY2sgdG8gdGhlIHN0b3JlLlwiO1xyXG4gICAgICAgIHRoaXMuYnRuVGV4dCA9IFwiUmVkb1wiO1xyXG4gICAgICAgIHRoaXMuaWNvbiA9IGA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4yNTA2NSAxNS44MzM1QzYuOTAzNDMgMTUuODMzNSA1Ljc0NzA0IDE1LjM5NiA0Ljc4MTQ4IDE0LjUyMUMzLjgxNTkzIDEzLjY0NiAzLjMzMzQzIDEyLjU1NTcgMy4zMzM5OCAxMS4yNTAyQzMuMzMzOTggOS45NDQ2MSAzLjgxNjc2IDguODU0MzMgNC43ODIzMiA3Ljk3OTMzQzUuNzQ3ODcgNy4xMDQzMyA2LjkwMzk4IDYuNjY2ODMgOC4yNTA2NSA2LjY2NjgzSDEzLjUwMDdMMTEuMzM0IDQuNTAwMTZMMTIuNTAwNyAzLjMzMzVMMTYuNjY3MyA3LjUwMDE2TDEyLjUwMDcgMTEuNjY2OEwxMS4zMzQgMTAuNTAwMkwxMy41MDA3IDguMzMzNUg4LjI1MDY1QzcuMzc1NjUgOC4zMzM1IDYuNjE1MSA4LjYxMTI3IDUuOTY4OTggOS4xNjY4M0M1LjMyMjg3IDkuNzIyMzggNS4wMDAxIDEwLjQxNjggNS4wMDA2NSAxMS4yNTAyQzUuMDAwNjUgMTIuMDgzNSA1LjMyMzcxIDEyLjc3NzkgNS45Njk4MiAxMy4zMzM1QzYuNjE1OTMgMTMuODg5MSA3LjM3NjIxIDE0LjE2NjggOC4yNTA2NSAxNC4xNjY4SDE0LjE2NzNWMTUuODMzNUg4LjI1MDY1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIGA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJrZWVwUGxhbm9cIjpcclxuICAgICAgICB0aGlzLnRpdGxlID0gXCJLZWVwIHBsYW5vZ3JhbVwiO1xyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgXCJZb3VyIHBsYW5vZ3JhbSB3aWxsIGJlIHVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2VzIHlvdeKAmXZlIG1hZGUuIFBsZWFzZSBjb25maXJtIHRoYXQgYWxsIHVwZGF0ZXMgbWF0Y2ggdGhlIHN0b3JlIGltYWdlLlwiO1xyXG4gICAgICAgIHRoaXMuYnRuVGV4dCA9IFwiWWVzLCBVcGRhdGVcIjtcclxuXHJcbiAgICAgICAgdGhpcy5pY29uID0gYDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuNzI1IDUuODAwMDhMMTAgMTAuMDA4NEwxNy4yNzUgNS44MDAwOE0xMCAxOC40MDAxVjEwLjAwMDFNMTcuNSAxMy4zMzM0VjYuNjY2NzVDMTcuNDk5NyA2LjM3NDQ4IDE3LjQyMjUgNi4wODc0MiAxNy4yNzYzIDUuODM0MzhDMTcuMTMgNS41ODEzNCAxNi45MTk4IDUuMzcxMjIgMTYuNjY2NyA1LjIyNTA4TDEwLjgzMzMgMS44OTE3NUMxMC41OCAxLjc0NTQ3IDEwLjI5MjYgMS42Njg0NiAxMCAxLjY2ODQ2QzkuNzA3NDQgMS42Njg0NiA5LjQyMDAzIDEuNzQ1NDcgOS4xNjY2NyAxLjg5MTc1TDMuMzMzMzMgNS4yMjUwOEMzLjA4MDIyIDUuMzcxMjIgMi44Njk5OCA1LjU4MTM0IDIuNzIzNzIgNS44MzQzOEMyLjU3NzQ1IDYuMDg3NDIgMi41MDAzIDYuMzc0NDggMi41IDYuNjY2NzVWMTMuMzMzNEMyLjUwMDMgMTMuNjI1NyAyLjU3NzQ1IDEzLjkxMjcgMi43MjM3MiAxNC4xNjU4QzIuODY5OTggMTQuNDE4OCAzLjA4MDIyIDE0LjYyODkgMy4zMzMzMyAxNC43NzUxTDkuMTY2NjcgMTguMTA4NEM5LjQyMDAzIDE4LjI1NDcgOS43MDc0NCAxOC4zMzE3IDEwIDE4LjMzMTdDMTAuMjkyNiAxOC4zMzE3IDEwLjU4IDE4LjI1NDcgMTAuODMzMyAxOC4xMDg0TDE2LjY2NjcgMTQuNzc1MUMxNi45MTk4IDE0LjYyODkgMTcuMTMgMTQuNDE4OCAxNy4yNzYzIDE0LjE2NThDMTcuNDIyNSAxMy45MTI3IDE3LjQ5OTcgMTMuNjI1NyAxNy41IDEzLjMzMzRaXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICBgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2FmZUljb24gPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLmljb24pO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHsgYWN0aW9uOiBcIm5vdE9rXCIsIHJlbWFyazogbnVsbCB9KTtcclxuICB9XHJcblxyXG4gIG9uT2soKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHsgYWN0aW9uOiBcIm9rXCIsIHJlbWFyazogdGhpcy5yZW1hcmsgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC13cmFwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhZmVJY29uXCI+PC9kaXY+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb24gfX08L3A+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMiBtYi00XCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cInJlbWFya1wiPlJlbWFya3M8L2xhYmVsPlxyXG4gICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicmVtYXJrXCIgWyhuZ01vZGVsKV09XCJyZW1hcmtcIiByb3dzPVwiM1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgeW91ciByZW1hcmsgaGVyZS4uLlwiPjwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zIG10LTVcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNFwiIChjbGljayk9XCJvbk9rKClcIj5cclxuICAgICAgICAgICAge3tidG5UZXh0fX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=