barsa-develop-components 2.2.1 → 2.2.3

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 (75) hide show
  1. package/esm2022/barsa-develop-components.mjs +5 -0
  2. package/esm2022/lib/accept-reject/accept-reject.component.mjs +68 -0
  3. package/esm2022/lib/avatar/avatar.component.mjs +29 -0
  4. package/esm2022/lib/barcode-format-pipe.mjs +25 -0
  5. package/esm2022/lib/barcode-reader/barcode-reader.component.mjs +62 -0
  6. package/esm2022/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +82 -0
  7. package/esm2022/lib/barcode-reader-video/barcode-reader-video.component.mjs +66 -0
  8. package/esm2022/lib/barcode.service.mjs +330 -0
  9. package/esm2022/lib/barsa-develop-components.module.mjs +292 -0
  10. package/esm2022/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +104 -0
  11. package/esm2022/lib/barsa-documents/barsa-documents.component.mjs +159 -0
  12. package/esm2022/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +173 -0
  13. package/esm2022/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +50 -0
  14. package/esm2022/lib/card-content-line-chart/card-content-line-chart.component.mjs +36 -0
  15. package/esm2022/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +19 -0
  16. package/esm2022/lib/card-header-kpi/card-header-kpi.component.mjs +40 -0
  17. package/esm2022/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +45 -0
  18. package/esm2022/lib/checkbox-button/checkbox-button.component.mjs +23 -0
  19. package/esm2022/lib/column-chip/column-chip.component.mjs +44 -0
  20. package/esm2022/lib/column-form-viewer/column-form-viewer.component.mjs +88 -0
  21. package/esm2022/lib/column-progressbar/column-progressbar.component.mjs +87 -0
  22. package/esm2022/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +18 -0
  23. package/esm2022/lib/footer/footer.component.mjs +43 -0
  24. package/esm2022/lib/form-card/form-card.component.mjs +17 -0
  25. package/esm2022/lib/form-chart-content/form-chart-content.component.mjs +36 -0
  26. package/esm2022/lib/form-content-quick-view/form-content-quick-view.component.mjs +102 -0
  27. package/esm2022/lib/form-report-view/form-report-view.component.mjs +25 -0
  28. package/esm2022/lib/form-report-view-item/form-report-view-item.component.mjs +45 -0
  29. package/esm2022/lib/g4b-details/g4b-details.component.mjs +28 -0
  30. package/esm2022/lib/g4b-estelam/g4b-estelam.component.mjs +30 -0
  31. package/esm2022/lib/geographic-location/geographic-location.component.mjs +88 -0
  32. package/esm2022/lib/login-form/login-form.component.mjs +55 -0
  33. package/esm2022/lib/login-social-conncetions/login-social-conncetions.component.mjs +30 -0
  34. package/esm2022/lib/master-detail-card-form/master-detail-card-form.component.mjs +17 -0
  35. package/esm2022/lib/media-file-uploader/media-file-uploader.component.mjs +238 -0
  36. package/esm2022/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +52 -0
  37. package/esm2022/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +24 -0
  38. package/esm2022/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +23 -0
  39. package/esm2022/lib/models/document-item.mjs +2 -0
  40. package/esm2022/lib/models/documents-setting.mjs +2 -0
  41. package/esm2022/lib/models/form-report-view-setting.mjs +2 -0
  42. package/esm2022/lib/models/index.mjs +8 -0
  43. package/esm2022/lib/models/micro-process-flow-view-setting.mjs +2 -0
  44. package/esm2022/lib/models/person.mjs +2 -0
  45. package/esm2022/lib/models/service-desk-view-of-services-setting.mjs +2 -0
  46. package/esm2022/lib/models/tab-process-view-setting.mjs +2 -0
  47. package/esm2022/lib/pipes/datasource-to-flow-item.mjs +23 -0
  48. package/esm2022/lib/pipes/index.mjs +3 -0
  49. package/esm2022/lib/pipes/mo-list-to-flow-item.pipe.mjs +23 -0
  50. package/esm2022/lib/query-string-form-observable/query-string-form-observable.component.mjs +37 -0
  51. package/esm2022/lib/query-string-observable/query-string-observable.component.mjs +22 -0
  52. package/esm2022/lib/report-button-view/report-button-view.component.mjs +37 -0
  53. package/esm2022/lib/report-line-chart-view/report-line-chart-view.component.mjs +12 -0
  54. package/esm2022/lib/report-tab-view/report-tab-view.component.mjs +27 -0
  55. package/esm2022/lib/resend-verification-code/resend-verification-code.component.mjs +62 -0
  56. package/esm2022/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.mjs +28 -0
  57. package/esm2022/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +110 -0
  58. package/esm2022/lib/service-desk-header/service-desk-header.component.mjs +238 -0
  59. package/esm2022/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +142 -0
  60. package/esm2022/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +37 -0
  61. package/esm2022/lib/setting-form/setting-form.component.mjs +64 -0
  62. package/esm2022/lib/subform-in-row-report/subform-in-row-report.component.mjs +73 -0
  63. package/esm2022/lib/tab-process-view/tab-process-view.component.mjs +48 -0
  64. package/esm2022/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +16 -0
  65. package/esm2022/lib/timer-count-down/timer-count-down.component.mjs +104 -0
  66. package/esm2022/lib/token-report-view/token-report-view.component.mjs +27 -0
  67. package/esm2022/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +25 -0
  68. package/esm2022/lib/ui-num-rate/ui-num-rate.component.mjs +29 -0
  69. package/esm2022/lib/ui-person/ui-person.component.mjs +160 -0
  70. package/esm2022/lib/ui-person/ui-person.pipe.mjs +41 -0
  71. package/esm2022/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +17 -0
  72. package/esm2022/lib/ui-text-field-search/ui-text-field-search.component.mjs +42 -0
  73. package/esm2022/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +69 -0
  74. package/esm2022/public-api.mjs +64 -0
  75. package/package.json +3 -1
@@ -0,0 +1,159 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FilesValidationHelper, LinearListHelper, ReportViewBaseComponent, UploadService } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@fundamental-ngx/core/table";
5
+ import * as i2 from "../barsa-document-list-item/barsa-document-list-item.component";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "barsa-novin-ray-core";
8
+ export class BarsaDocumentsComponent extends ReportViewBaseComponent {
9
+ get documentItems() {
10
+ if (this.customFieldInfo) {
11
+ return this.customFieldInfo.DocumentItems.MoDataList;
12
+ }
13
+ else {
14
+ return this.viewSetting.FilesSetting.DocumentItems.MoDataList;
15
+ }
16
+ }
17
+ ngOnInit() {
18
+ super.ngOnInit();
19
+ const { moDataList, viewSetting, allColumns } = this;
20
+ this._initColumnField(allColumns, viewSetting);
21
+ this._subscribeOnUploadFile(this.fileColumn);
22
+ this._mapDocumentItem(moDataList, this.documentItems);
23
+ this._checkMandatory();
24
+ }
25
+ ngOnChanges(changes) {
26
+ super.ngOnChanges(changes);
27
+ const { moDataList } = changes;
28
+ if (moDataList && !moDataList.firstChange) {
29
+ if (moDataList && !moDataList.firstChange) {
30
+ this._mapDocumentItem(moDataList.currentValue, this.documentItems);
31
+ this.detectChanges();
32
+ }
33
+ }
34
+ }
35
+ ngAfterViewInit() {
36
+ super.ngAfterViewInit();
37
+ setTimeout(() => {
38
+ for (let i = 0; i < this.documentItems.length - this.moDataList.length; i++) {
39
+ this.createNewMo.emit();
40
+ }
41
+ });
42
+ }
43
+ onFileSelection(files, documentItem, mo) {
44
+ this.selectedMo = mo;
45
+ this._uploadFile(files, documentItem);
46
+ }
47
+ onRemoveFile(file, mo) {
48
+ const fileDbName = this.fileColumn.Name;
49
+ let files = mo[fileDbName].Files;
50
+ if (file.IsNew) {
51
+ files = files.filter((c) => c.Id !== file.Id);
52
+ }
53
+ else {
54
+ const existFile = files.find((c) => c.Id === file.Id);
55
+ existFile.IsDeleted = true;
56
+ }
57
+ mo[fileDbName].Files = [...files];
58
+ this._updateMo(mo);
59
+ }
60
+ onStatusChanged(e, mo) {
61
+ mo[this.statusColumn.Name] = e.value;
62
+ mo[this.rejectedReasonColumn.Name] = e.rejectedText;
63
+ this._updateMo(mo);
64
+ }
65
+ onRejectedTextChange(text, mo) {
66
+ mo[this.rejectedReasonColumn.Name] = text;
67
+ this._updateMo(mo);
68
+ }
69
+ _checkMandatory() {
70
+ const moDataList = this.moDataList;
71
+ const items = this.documentItems.filter((c) => c.IsRequired);
72
+ let mandatory = items.length > 0;
73
+ const mandatory2 = items
74
+ .map((item) => moDataList.find((c) => c[this.keyColumn.Name] === item.ItemKey))
75
+ .filter((item) => item)
76
+ .some((mo) => mo[this.fileColumn.Name].Files.filter((c) => !c.IsDeleted).length === 0);
77
+ mandatory = mandatory && mandatory2;
78
+ this.mandatory.emit(mandatory);
79
+ }
80
+ _mapDocumentItem(moDataList, documentItems) {
81
+ const keyName = this.keyColumn.Name;
82
+ moDataList.forEach((mo, index) => {
83
+ let documentItem = documentItems.find((c) => c.ItemKey === mo[keyName]); // find setting that matches with mo by itemKey
84
+ if (documentItem) {
85
+ mo.$documentItem = documentItem;
86
+ }
87
+ else {
88
+ documentItem = documentItems.find((item) => moDataList.map((c) => c[keyName]).indexOf(item.ItemKey) < 0); // find a setting has not have $RelatedMo yet
89
+ if (documentItem) {
90
+ mo[keyName] = documentItem.ItemKey;
91
+ mo.$documentItem = documentItem;
92
+ this.updateMo.emit(mo);
93
+ }
94
+ }
95
+ });
96
+ }
97
+ _initColumnField(allColumns, viewSetting) {
98
+ const keyColumn = this._findColumnByDbName.transform(allColumns, viewSetting.ItemKeyField);
99
+ const fileColumn = this._findColumnByDbName.transform(allColumns, viewSetting.FileField);
100
+ const acceptedColumn = this._findColumnByDbName.transform(allColumns, viewSetting.AcceptedField);
101
+ const rejectedReasonColumn = this._findColumnByDbName.transform(allColumns, viewSetting.RejectedReasonField);
102
+ const statusColumn = this._findColumnByDbName.transform(allColumns, viewSetting.StatusField);
103
+ !keyColumn && this._columnNotExistsInReport(viewSetting.ItemKeyField);
104
+ !fileColumn && this._columnNotExistsInReport(viewSetting.FileField);
105
+ !rejectedReasonColumn && this._columnNotExistsInReport(viewSetting.RejectedReasonField);
106
+ !acceptedColumn && this._columnNotExistsInReport(viewSetting.AcceptedField);
107
+ !statusColumn && this._columnNotExistsInReport(viewSetting.StatusField);
108
+ keyColumn && (this.keyColumn = keyColumn);
109
+ fileColumn && (this.fileColumn = fileColumn);
110
+ acceptedColumn && (this.acceptedColumn = acceptedColumn);
111
+ rejectedReasonColumn && (this.rejectedReasonColumn = rejectedReasonColumn);
112
+ statusColumn && (this.statusColumn = statusColumn);
113
+ }
114
+ _subscribeOnUploadFile(fileColumn) {
115
+ this._filesValidationHelper = new FilesValidationHelper(0, 0, 0);
116
+ if (this._uploadService) {
117
+ this._createLinearHelper(this._uploadService, this._filesValidationHelper, fileColumn.FieldDefId);
118
+ this.uploadingState$ = this._uploadService.uploadingState$;
119
+ }
120
+ else {
121
+ throw new Error('UploadService not provided.');
122
+ }
123
+ this._linearHelper.newFileUploaded$.subscribe((file) => {
124
+ const mo = this.moDataList.find((c) => c.Id === this.selectedMo.Id);
125
+ if (mo) {
126
+ mo[fileColumn.Name].Files = [...mo[fileColumn.Name].Files, file];
127
+ this._updateMo(mo);
128
+ }
129
+ });
130
+ }
131
+ _updateMo(mo) {
132
+ mo.$NewInlineMo = undefined;
133
+ if (mo.$State === 'Unchanged') {
134
+ mo.$State = 'Modified';
135
+ }
136
+ this.updateMo.emit(mo);
137
+ this._checkMandatory();
138
+ }
139
+ _createLinearHelper(uploadService, filesValidationHelper, fieldDefId) {
140
+ this._linearHelper = new LinearListHelper(uploadService, filesValidationHelper, fieldDefId);
141
+ }
142
+ _uploadFile(files, documentItem) {
143
+ const filesValidationHelper = this._filesValidationHelper;
144
+ filesValidationHelper.maxFileCount = +documentItem.MaxFileCount;
145
+ filesValidationHelper.maxFileSize = +documentItem.EachFileSize;
146
+ filesValidationHelper.maxTotalFileSize = +documentItem.MaxFileSize;
147
+ this._linearHelper.uploadToServer(files, documentItem.Title);
148
+ }
149
+ _columnNotExistsInReport(columnCaption) {
150
+ throw new Error(`can not find ${columnCaption} column in report.please add it to report columns.`);
151
+ }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaDocumentsComponent, selector: "bdc-barsa-documents", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\r\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\r\n <th fd-table-cell></th>\r\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (mo of moDataList; track _trackByRow($index, mo)) { @if (mo.$documentItem) {\r\n <bdc-barsa-document-list-item\r\n [documentItem]=\"mo.$documentItem\"\r\n [accepted]=\"mo[acceptedColumn.Name]\"\r\n [files]=\"mo[fileColumn.Name].Files\"\r\n [uploadingState]=\"(uploadingState$ | async)!!\"\r\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\r\n [fileDbName]=\"fileColumn.Name\"\r\n [status]=\"+mo[statusColumn.Name]\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"!access.Edit\"\r\n [deviceSize]=\"deviceSize\"\r\n (removeFile)=\"onRemoveFile($event, mo)\"\r\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\r\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\r\n (statusChanged)=\"onStatusChanged($event, mo)\"\r\n ></bdc-barsa-document-list-item>\r\n } }\r\n <!-- </ul> -->\r\n </tbody>\r\n</table>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i1.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i1.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i1.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i1.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "component", type: i2.BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: ["documentItem", "deviceSize", "files", "accepted", "rejectedReason", "readonly", "status", "uploadingState"], outputs: ["statusChanged", "rejectTextChange", "fileSelectionChange", "removeFile", "fullscreen", "download", "downloadAll"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
154
+ }
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentsComponent, decorators: [{
156
+ type: Component,
157
+ args: [{ selector: 'bdc-barsa-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], standalone: false, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\r\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\r\n <th fd-table-cell></th>\r\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (mo of moDataList; track _trackByRow($index, mo)) { @if (mo.$documentItem) {\r\n <bdc-barsa-document-list-item\r\n [documentItem]=\"mo.$documentItem\"\r\n [accepted]=\"mo[acceptedColumn.Name]\"\r\n [files]=\"mo[fileColumn.Name].Files\"\r\n [uploadingState]=\"(uploadingState$ | async)!!\"\r\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\r\n [fileDbName]=\"fileColumn.Name\"\r\n [status]=\"+mo[statusColumn.Name]\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"!access.Edit\"\r\n [deviceSize]=\"deviceSize\"\r\n (removeFile)=\"onRemoveFile($event, mo)\"\r\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\r\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\r\n (statusChanged)=\"onStatusChanged($event, mo)\"\r\n ></bdc-barsa-document-list-item>\r\n } }\r\n <!-- </ul> -->\r\n </tbody>\r\n</table>\r\n", styles: [":host{display:block}\n"] }]
158
+ }] });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2JhcnNhLWRvY3VtZW50cy9iYXJzYS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvYmFyc2EtZG9jdW1lbnRzL2JhcnNhLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUVoQix1QkFBdUIsRUFFdkIsYUFBYSxFQUdoQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFZOUIsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHVCQUF5QztJQVlsRixJQUFJLGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFVBQWlDLENBQUM7UUFDaEYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFpQyxDQUFDO1FBQ3pGLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFD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RUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDUyxtQkFBbUIsQ0FDekIsYUFBNEIsRUFDNUIscUJBQTRDLEVBQzVDLFVBQWtCO1FBRWxCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUNTLFdBQVcsQ0FBQyxLQUFhLEVBQUUsWUFBMEI7UUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDMUQscUJBQXFCLENBQUMsWUFBWSxHQUFHLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUNoRSxxQkFBcUIsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQy9ELHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDUyx3QkFBd0IsQ0FBQyxhQUFhO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLGFBQWEsb0RBQW9ELENBQUMsQ0FBQztJQUN2RyxDQUFDOytHQWhLUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw4Q0FIckIsQ0FBQyxhQUFhLENBQUMsc0VDbkI5Qiw4MURBaUNBOzs0RkRYYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxhQUFhLENBQUMsY0FDZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEZpbGVzVmFsaWRhdGlvbkhlbHBlcixcclxuICAgIExpbmVhckxpc3RIZWxwZXIsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXHJcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxyXG4gICAgVXBsb2FkU2VydmljZSxcclxuICAgIEZpbGVBdHRhY2htZW50SW5mbyxcclxuICAgIElVcGxvYWRpbmdTdGF0ZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEl0ZW0sIERvY3VtZW50c1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JkYy1iYXJzYS1kb2N1bWVudHMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS1kb2N1bWVudHMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbVXBsb2FkU2VydmljZV0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyc2FEb2N1bWVudHNDb21wb25lbnQgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxEb2N1bWVudHNTZXR0aW5nPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIGtleUNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjtcclxuICAgIGZpbGVDb2x1bW46IFJlcG9ydFZpZXdDb2x1bW47XHJcbiAgICBzdGF0dXNDb2x1bW46IFJlcG9ydFZpZXdDb2x1bW47XHJcbiAgICByZWplY3RlZFJlYXNvbkNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjtcclxuICAgIGFjY2VwdGVkQ29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xyXG4gICAgc2VsZWN0ZWRNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIHVwbG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxJVXBsb2FkaW5nU3RhdGU+O1xyXG5cclxuICAgIHByb3RlY3RlZCBfZmlsZXNWYWxpZGF0aW9uSGVscGVyOiBGaWxlc1ZhbGlkYXRpb25IZWxwZXI7XHJcbiAgICBwcm90ZWN0ZWQgX2xpbmVhckhlbHBlcjogTGluZWFyTGlzdEhlbHBlcjtcclxuXHJcbiAgICBnZXQgZG9jdW1lbnRJdGVtcygpOiBBcnJheTxEb2N1bWVudEl0ZW0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZEluZm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRmllbGRJbmZvLkRvY3VtZW50SXRlbXMuTW9EYXRhTGlzdCBhcyBBcnJheTxEb2N1bWVudEl0ZW0+O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpZXdTZXR0aW5nLkZpbGVzU2V0dGluZy5Eb2N1bWVudEl0ZW1zLk1vRGF0YUxpc3QgYXMgQXJyYXk8RG9jdW1lbnRJdGVtPjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIGNvbnN0IHsgbW9EYXRhTGlzdCwgdmlld1NldHRpbmcsIGFsbENvbHVtbnMgfSA9IHRoaXM7XHJcblxyXG4gICAgICAgIHRoaXMuX2luaXRDb2x1bW5GaWVsZChhbGxDb2x1bW5zLCB2aWV3U2V0dGluZyk7XHJcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlT25VcGxvYWRGaWxlKHRoaXMuZmlsZUNvbHVtbik7XHJcbiAgICAgICAgdGhpcy5fbWFwRG9jdW1lbnRJdGVtKG1vRGF0YUxpc3QsIHRoaXMuZG9jdW1lbnRJdGVtcyk7XHJcbiAgICAgICAgdGhpcy5fY2hlY2tNYW5kYXRvcnkoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBtb0RhdGFMaXN0IH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmIChtb0RhdGFMaXN0ICYmICFtb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmIChtb0RhdGFMaXN0ICYmICFtb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXBEb2N1bWVudEl0ZW0obW9EYXRhTGlzdC5jdXJyZW50VmFsdWUsIHRoaXMuZG9jdW1lbnRJdGVtcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRvY3VtZW50SXRlbXMubGVuZ3RoIC0gdGhpcy5tb0RhdGFMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5ld01vLmVtaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10sIGRvY3VtZW50SXRlbTogRG9jdW1lbnRJdGVtLCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNbyA9IG1vO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZmlsZXMsIGRvY3VtZW50SXRlbSk7XHJcbiAgICB9XHJcbiAgICBvblJlbW92ZUZpbGUoZmlsZTogRmlsZUF0dGFjaG1lbnRJbmZvLCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZpbGVEYk5hbWUgPSB0aGlzLmZpbGVDb2x1bW4uTmFtZTtcclxuICAgICAgICBsZXQgZmlsZXMgPSBtb1tmaWxlRGJOYW1lXS5GaWxlcztcclxuICAgICAgICBpZiAoZmlsZS5Jc05ldykge1xyXG4gICAgICAgICAgICBmaWxlcyA9IGZpbGVzLmZpbHRlcigoYykgPT4gYy5JZCAhPT0gZmlsZS5JZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RGaWxlID0gZmlsZXMuZmluZCgoYykgPT4gYy5JZCA9PT0gZmlsZS5JZCk7XHJcbiAgICAgICAgICAgIGV4aXN0RmlsZS5Jc0RlbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtb1tmaWxlRGJOYW1lXS5GaWxlcyA9IFsuLi5maWxlc107XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlTW8obW8pO1xyXG4gICAgfVxyXG4gICAgb25TdGF0dXNDaGFuZ2VkKGU6IHsgdmFsdWU6IG51bWJlcjsgcmVqZWN0ZWRUZXh0OiBzdHJpbmcgfSwgbW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBtb1t0aGlzLnN0YXR1c0NvbHVtbi5OYW1lXSA9IGUudmFsdWU7XHJcbiAgICAgICAgbW9bdGhpcy5yZWplY3RlZFJlYXNvbkNvbHVtbi5OYW1lXSA9IGUucmVqZWN0ZWRUZXh0O1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vKG1vKTtcclxuICAgIH1cclxuICAgIG9uUmVqZWN0ZWRUZXh0Q2hhbmdlKHRleHQ6IHN0cmluZywgbW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBtb1t0aGlzLnJlamVjdGVkUmVhc29uQ29sdW1uLk5hbWVdID0gdGV4dDtcclxuICAgICAgICB0aGlzLl91cGRhdGVNbyhtbyk7XHJcbiAgICB9XHJcbiAgICBfY2hlY2tNYW5kYXRvcnkoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IHRoaXMubW9EYXRhTGlzdDtcclxuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZG9jdW1lbnRJdGVtcy5maWx0ZXIoKGMpID0+IGMuSXNSZXF1aXJlZCk7XHJcbiAgICAgICAgbGV0IG1hbmRhdG9yeSA9IGl0ZW1zLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgY29uc3QgbWFuZGF0b3J5MiA9IGl0ZW1zXHJcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IG1vRGF0YUxpc3QuZmluZCgoYykgPT4gY1t0aGlzLmtleUNvbHVtbi5OYW1lXSA9PT0gaXRlbS5JdGVtS2V5KSlcclxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSlcclxuICAgICAgICAgICAgLnNvbWUoKG1vKSA9PiBtb1t0aGlzLmZpbGVDb2x1bW4uTmFtZV0uRmlsZXMuZmlsdGVyKChjKSA9PiAhYy5Jc0RlbGV0ZWQpLmxlbmd0aCA9PT0gMCk7XHJcbiAgICAgICAgbWFuZGF0b3J5ID0gbWFuZGF0b3J5ICYmIG1hbmRhdG9yeTI7XHJcbiAgICAgICAgdGhpcy5tYW5kYXRvcnkuZW1pdChtYW5kYXRvcnkpO1xyXG4gICAgfVxyXG4gICAgX21hcERvY3VtZW50SXRlbShtb0RhdGFMaXN0OiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiwgZG9jdW1lbnRJdGVtczogQXJyYXk8RG9jdW1lbnRJdGVtPik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGtleU5hbWUgPSB0aGlzLmtleUNvbHVtbi5OYW1lO1xyXG4gICAgICAgIG1vRGF0YUxpc3QuZm9yRWFjaCgobW8sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBkb2N1bWVudEl0ZW0gPSBkb2N1bWVudEl0ZW1zLmZpbmQoKGMpID0+IGMuSXRlbUtleSA9PT0gbW9ba2V5TmFtZV0pOyAvLyBmaW5kIHNldHRpbmcgdGhhdCBtYXRjaGVzIHdpdGggbW8gYnkgaXRlbUtleVxyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBtby4kZG9jdW1lbnRJdGVtID0gZG9jdW1lbnRJdGVtO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRJdGVtID0gZG9jdW1lbnRJdGVtcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBtb0RhdGFMaXN0Lm1hcCgoYykgPT4gY1trZXlOYW1lXSkuaW5kZXhPZihpdGVtLkl0ZW1LZXkpIDwgMFxyXG4gICAgICAgICAgICAgICAgKTsgLy8gZmluZCBhIHNldHRpbmcgaGFzIG5vdCBoYXZlICRSZWxhdGVkTW8geWV0XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9ba2V5TmFtZV0gPSBkb2N1bWVudEl0ZW0uSXRlbUtleTtcclxuICAgICAgICAgICAgICAgICAgICBtby4kZG9jdW1lbnRJdGVtID0gZG9jdW1lbnRJdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW8uZW1pdChtbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfaW5pdENvbHVtbkZpZWxkKGFsbENvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSwgdmlld1NldHRpbmc6IERvY3VtZW50c1NldHRpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBrZXlDb2x1bW4gPSB0aGlzLl9maW5kQ29sdW1uQnlEYk5hbWUudHJhbnNmb3JtKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nLkl0ZW1LZXlGaWVsZCk7XHJcbiAgICAgICAgY29uc3QgZmlsZUNvbHVtbiA9IHRoaXMuX2ZpbmRDb2x1bW5CeURiTmFtZS50cmFuc2Zvcm0oYWxsQ29sdW1ucywgdmlld1NldHRpbmcuRmlsZUZpZWxkKTtcclxuICAgICAgICBjb25zdCBhY2NlcHRlZENvbHVtbiA9IHRoaXMuX2ZpbmRDb2x1bW5CeURiTmFtZS50cmFuc2Zvcm0oYWxsQ29sdW1ucywgdmlld1NldHRpbmcuQWNjZXB0ZWRGaWVsZCk7XHJcbiAgICAgICAgY29uc3QgcmVqZWN0ZWRSZWFzb25Db2x1bW4gPSB0aGlzLl9maW5kQ29sdW1uQnlEYk5hbWUudHJhbnNmb3JtKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nLlJlamVjdGVkUmVhc29uRmllbGQpO1xyXG4gICAgICAgIGNvbnN0IHN0YXR1c0NvbHVtbiA9IHRoaXMuX2ZpbmRDb2x1bW5CeURiTmFtZS50cmFuc2Zvcm0oYWxsQ29sdW1ucywgdmlld1NldHRpbmcuU3RhdHVzRmllbGQpO1xyXG4gICAgICAgICFrZXlDb2x1bW4gJiYgdGhpcy5fY29sdW1uTm90RXhpc3RzSW5SZXBvcnQodmlld1NldHRpbmcuSXRlbUtleUZpZWxkKTtcclxuICAgICAgICAhZmlsZUNvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5GaWxlRmllbGQpO1xyXG4gICAgICAgICFyZWplY3RlZFJlYXNvbkNvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5SZWplY3RlZFJlYXNvbkZpZWxkKTtcclxuICAgICAgICAhYWNjZXB0ZWRDb2x1bW4gJiYgdGhpcy5fY29sdW1uTm90RXhpc3RzSW5SZXBvcnQodmlld1NldHRpbmcuQWNjZXB0ZWRGaWVsZCk7XHJcbiAgICAgICAgIXN0YXR1c0NvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5TdGF0dXNGaWVsZCk7XHJcblxyXG4gICAgICAgIGtleUNvbHVtbiAmJiAodGhpcy5rZXlDb2x1bW4gPSBrZXlDb2x1bW4pO1xyXG4gICAgICAgIGZpbGVDb2x1bW4gJiYgKHRoaXMuZmlsZUNvbHVtbiA9IGZpbGVDb2x1bW4pO1xyXG4gICAgICAgIGFjY2VwdGVkQ29sdW1uICYmICh0aGlzLmFjY2VwdGVkQ29sdW1uID0gYWNjZXB0ZWRDb2x1bW4pO1xyXG4gICAgICAgIHJlamVjdGVkUmVhc29uQ29sdW1uICYmICh0aGlzLnJlamVjdGVkUmVhc29uQ29sdW1uID0gcmVqZWN0ZWRSZWFzb25Db2x1bW4pO1xyXG4gICAgICAgIHN0YXR1c0NvbHVtbiAmJiAodGhpcy5zdGF0dXNDb2x1bW4gPSBzdGF0dXNDb2x1bW4pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zdWJzY3JpYmVPblVwbG9hZEZpbGUoZmlsZUNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVzVmFsaWRhdGlvbkhlbHBlciA9IG5ldyBGaWxlc1ZhbGlkYXRpb25IZWxwZXIoMCwgMCwgMCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3VwbG9hZFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZWFySGVscGVyKHRoaXMuX3VwbG9hZFNlcnZpY2UsIHRoaXMuX2ZpbGVzVmFsaWRhdGlvbkhlbHBlciwgZmlsZUNvbHVtbi5GaWVsZERlZklkKTtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZGluZ1N0YXRlJDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VwbG9hZFNlcnZpY2Ugbm90IHByb3ZpZGVkLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbGluZWFySGVscGVyLm5ld0ZpbGVVcGxvYWRlZCQuc3Vic2NyaWJlKChmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vID0gdGhpcy5tb0RhdGFMaXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IHRoaXMuc2VsZWN0ZWRNby5JZCk7XHJcbiAgICAgICAgICAgIGlmIChtbykge1xyXG4gICAgICAgICAgICAgICAgbW9bZmlsZUNvbHVtbi5OYW1lXS5GaWxlcyA9IFsuLi5tb1tmaWxlQ29sdW1uLk5hbWVdLkZpbGVzLCBmaWxlXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vKG1vKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVNbyhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIG1vLiROZXdJbmxpbmVNbyA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAobW8uJFN0YXRlID09PSAnVW5jaGFuZ2VkJykge1xyXG4gICAgICAgICAgICBtby4kU3RhdGUgPSAnTW9kaWZpZWQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZU1vLmVtaXQobW8pO1xyXG4gICAgICAgIHRoaXMuX2NoZWNrTWFuZGF0b3J5KCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUxpbmVhckhlbHBlcihcclxuICAgICAgICB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyLFxyXG4gICAgICAgIGZpZWxkRGVmSWQ6IHN0cmluZ1xyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGluZWFySGVscGVyID0gbmV3IExpbmVhckxpc3RIZWxwZXIodXBsb2FkU2VydmljZSwgZmlsZXNWYWxpZGF0aW9uSGVscGVyLCBmaWVsZERlZklkKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdXBsb2FkRmlsZShmaWxlczogRmlsZVtdLCBkb2N1bWVudEl0ZW06IERvY3VtZW50SXRlbSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzVmFsaWRhdGlvbkhlbHBlciA9IHRoaXMuX2ZpbGVzVmFsaWRhdGlvbkhlbHBlcjtcclxuICAgICAgICBmaWxlc1ZhbGlkYXRpb25IZWxwZXIubWF4RmlsZUNvdW50ID0gK2RvY3VtZW50SXRlbS5NYXhGaWxlQ291bnQ7XHJcbiAgICAgICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyLm1heEZpbGVTaXplID0gK2RvY3VtZW50SXRlbS5FYWNoRmlsZVNpemU7XHJcbiAgICAgICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyLm1heFRvdGFsRmlsZVNpemUgPSArZG9jdW1lbnRJdGVtLk1heEZpbGVTaXplO1xyXG4gICAgICAgIHRoaXMuX2xpbmVhckhlbHBlci51cGxvYWRUb1NlcnZlcihmaWxlcywgZG9jdW1lbnRJdGVtLlRpdGxlKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY29sdW1uTm90RXhpc3RzSW5SZXBvcnQoY29sdW1uQ2FwdGlvbik6IHZvaWQge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY2FuIG5vdCBmaW5kICR7Y29sdW1uQ2FwdGlvbn0gY29sdW1uIGluIHJlcG9ydC5wbGVhc2UgYWRkIGl0IHRvIHJlcG9ydCBjb2x1bW5zLmApO1xyXG4gICAgfVxyXG59XHJcbiIsIjwhLS0gPHVsIGZkLWxpc3QgW2J5bGluZV09XCJ0cnVlXCIgZmRDb21wYWN0IFtzZWxlY3Rpb25dPVwiZmFsc2VcIj4gLS0+XHJcbjx0YWJsZSBmZC10YWJsZSBhcmlhLWxhYmVsPVwiRGVmYXVsdFwiIFthbGxDZWxsc0ZvY3VzYWJsZV09XCJ0cnVlXCIgW25vQm9yZGVyWF09XCJ0cnVlXCI+XHJcbiAgICA8dGhlYWQgZmQtdGFibGUtaGVhZGVyPlxyXG4gICAgICAgIDx0ciBmZC10YWJsZS1yb3c+XHJcbiAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsPnt7ICfYudqp2LMnIHwgYmJiVHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJtaW4td2lkdGg6IDE0MHB4OyB3aWR0aDogYXV0b1wiPnt7ICfZhtmI2Lkg2YXYr9ix2qknIHwgYmJiVHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogOTklXCI+e3sgJ9in2YTYtdin2YIg2YHYp9uM2YQnIHwgYmJiVHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGw+PC90aD5cclxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogNDAwcHg7IG1pbi13aWR0aDogNDAwcHg7IG1heC13aWR0aDogNDAwcHhcIj57eyAn2YjYtti524zYqicgfCBiYmJUcmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5IGZkLXRhYmxlLWJvZHk+XHJcbiAgICAgICAgQGZvciAobW8gb2YgbW9EYXRhTGlzdDsgdHJhY2sgX3RyYWNrQnlSb3coJGluZGV4LCBtbykpIHsgQGlmIChtby4kZG9jdW1lbnRJdGVtKSB7XHJcbiAgICAgICAgPGJkYy1iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW1cclxuICAgICAgICAgICAgW2RvY3VtZW50SXRlbV09XCJtby4kZG9jdW1lbnRJdGVtXCJcclxuICAgICAgICAgICAgW2FjY2VwdGVkXT1cIm1vW2FjY2VwdGVkQ29sdW1uLk5hbWVdXCJcclxuICAgICAgICAgICAgW2ZpbGVzXT1cIm1vW2ZpbGVDb2x1bW4uTmFtZV0uRmlsZXNcIlxyXG4gICAgICAgICAgICBbdXBsb2FkaW5nU3RhdGVdPVwiKHVwbG9hZGluZ1N0YXRlJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICAgICAgW3JlamVjdGVkUmVhc29uXT1cIm1vW3JlamVjdGVkUmVhc29uQ29sdW1uLk5hbWVdXCJcclxuICAgICAgICAgICAgW2ZpbGVEYk5hbWVdPVwiZmlsZUNvbHVtbi5OYW1lXCJcclxuICAgICAgICAgICAgW3N0YXR1c109XCIrbW9bc3RhdHVzQ29sdW1uLk5hbWVdXCJcclxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCIhYWNjZXNzLkVkaXRcIlxyXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICAgICAgKHJlbW92ZUZpbGUpPVwib25SZW1vdmVGaWxlKCRldmVudCwgbW8pXCJcclxuICAgICAgICAgICAgKGZpbGVTZWxlY3Rpb25DaGFuZ2UpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudCwgbW8uJGRvY3VtZW50SXRlbSwgbW8pXCJcclxuICAgICAgICAgICAgKHJlamVjdFRleHRDaGFuZ2UpPVwib25SZWplY3RlZFRleHRDaGFuZ2UoJGV2ZW50LCBtbylcIlxyXG4gICAgICAgICAgICAoc3RhdHVzQ2hhbmdlZCk9XCJvblN0YXR1c0NoYW5nZWQoJGV2ZW50LCBtbylcIlxyXG4gICAgICAgID48L2JkYy1iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0+XHJcbiAgICAgICAgfSB9XHJcbiAgICAgICAgPCEtLSA8L3VsPiAtLT5cclxuICAgIDwvdGJvZHk+XHJcbjwvdGFibGU+XHJcbiJdfQ==
@@ -0,0 +1,173 @@
1
+ import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { BaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@fundamental-ngx/core/button";
5
+ export class BarsaGeographicLocationComponent extends BaseComponent {
6
+ constructor(_el) {
7
+ super();
8
+ this._el = _el;
9
+ this.move = new EventEmitter();
10
+ this.moveEnd = new EventEmitter();
11
+ this.fullscreen = new EventEmitter();
12
+ this.exitFullscreen = new EventEmitter();
13
+ this.errorEvent = new EventEmitter();
14
+ this.markerChange = new EventEmitter();
15
+ this._navigatorOptions = {
16
+ enableHighAccuracy: true,
17
+ timeout: 5000,
18
+ maximumAge: 0
19
+ };
20
+ }
21
+ ngOnChanges(changes) {
22
+ super.ngOnChanges(changes);
23
+ const { longitude, latitude } = changes;
24
+ if (latitude?.firstChange === false || longitude?.firstChange === false) {
25
+ this._setGeoLocation({
26
+ latitude: latitude.currentValue,
27
+ longitude: longitude.currentValue
28
+ }, this.disableOrReadonly, true, false);
29
+ }
30
+ }
31
+ ngAfterViewInit() {
32
+ super.ngAfterViewInit();
33
+ head.load([
34
+ 'Lib/leaflet/leaflet.css',
35
+ 'Lib/leaflet/leaflet-src.js',
36
+ 'Lib/leaflet/SearchControl.js',
37
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.css',
38
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.js',
39
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker.js',
40
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon-barsa.js'
41
+ ], () => this._initilaize());
42
+ }
43
+ onCurrentLocation() {
44
+ if (this.disableOrReadonly) {
45
+ return;
46
+ }
47
+ this._getNavigatorCurrentPosition();
48
+ }
49
+ onFullscreen() {
50
+ this.fullscreen.emit();
51
+ }
52
+ onExitFullscreen() {
53
+ this.exitFullscreen.emit();
54
+ }
55
+ _addMarkers(disableOrReadonly, pos) {
56
+ this._setGeoLocation({ latitude: pos[0], longitude: pos[1] }, disableOrReadonly);
57
+ }
58
+ _initilaize() {
59
+ this._map = L.map(this._el.nativeElement);
60
+ const location = this.defaultLocation;
61
+ if (this.latitude) {
62
+ location[0] = Number(this.latitude);
63
+ location[1] = Number(this.longitude);
64
+ }
65
+ this._setGeoLocation({
66
+ latitude: location[0],
67
+ longitude: location[1]
68
+ }, this.disableOrReadonly, true, false);
69
+ if (!this.disableOrReadonly && this.setAutomaticLocation && !this.latitude) {
70
+ // درصورتی که از قبل مقدار نداشته باشد
71
+ this._getNavigatorCurrentPosition();
72
+ }
73
+ }
74
+ _onErrorNavigatorLocation(err) {
75
+ this.errorEvent.emit(err);
76
+ }
77
+ _setGeoLocation(position, disableOrReadonly = false, setView = false, fireEvent = true) {
78
+ if (this._marker) {
79
+ this._map.removeLayer(this._marker);
80
+ this._marker = null;
81
+ }
82
+ const { latitude, longitude } = position;
83
+ L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
84
+ attribution: '',
85
+ maxZoom: 18,
86
+ id: 'mapbox/streets-v11',
87
+ tileSize: 512,
88
+ zoomOffset: -1,
89
+ accessToken: 'pk.eyJ1IjoibXJlemFkZXZlbG9wZXIiLCJhIjoiY2p6anlrdTE2MDBxdjNtczZtYWFqbHFmdiJ9.SzniRy2KH6U3gdbOFnwA7Q'
90
+ }).addTo(this._map);
91
+ if (setView) {
92
+ this._map.setView([latitude, longitude], 18);
93
+ }
94
+ const marker = this._createMarker('0', { mo: 'test' }, latitude, longitude, 'my location', '', !disableOrReadonly && this.draggable === true);
95
+ marker.addTo(this._map);
96
+ this._marker = marker;
97
+ if (!disableOrReadonly && fireEvent) {
98
+ this.markerChange.emit({ latitude, longitude });
99
+ }
100
+ }
101
+ _getNavigatorCurrentPosition() {
102
+ if (navigator.geolocation) {
103
+ navigator.geolocation.getCurrentPosition((position) => this._setGeoLocation({ latitude: position.coords.latitude, longitude: position.coords.longitude }, this.disableOrReadonly, true), (err) => this._onErrorNavigatorLocation(err), this._navigatorOptions);
104
+ }
105
+ }
106
+ _createMarker(id, mo, lat, lng, text, icon, draggable) {
107
+ const markerCfg = {
108
+ Id: id,
109
+ Data: mo,
110
+ title: text,
111
+ draggable,
112
+ icon: L.divIcon({
113
+ html: icon
114
+ ? `<fd-icon style="font-size:1rem" class="sap-icon--${icon}"></fd-icon>`
115
+ : `<img style="width:32px" src="${'assets/svg/location-sign.svg'}"/>`,
116
+ iconSize: [20, 20],
117
+ className: 'my-location'
118
+ })
119
+ };
120
+ // var marker = L.BeautifyMarker.marker([Number(lat), Number(lng)], {
121
+ const marker = L.marker([Number(lat), Number(lng)], markerCfg);
122
+ marker.on('moveend', (e) => {
123
+ this._onMoveEnd(e);
124
+ });
125
+ marker.on('move', (e) => {
126
+ this._onMove(e);
127
+ });
128
+ return marker;
129
+ }
130
+ _onMove(e) {
131
+ this.move.emit(e);
132
+ }
133
+ _onMoveEnd(e) {
134
+ this.moveEnd.emit(e);
135
+ }
136
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaGeographicLocationComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: { disableOrReadonly: "disableOrReadonly", setAutomaticLocation: "setAutomaticLocation", showLocationButton: "showLocationButton", showFullscreenButton: "showFullscreenButton", showExitFullscreenButton: "showExitFullscreenButton", draggable: "draggable", defaultLocation: "defaultLocation", latitude: "latitude", longitude: "longitude" }, outputs: { move: "move", moveEnd: "moveEnd", fullscreen: "fullscreen", exitFullscreen: "exitFullscreen", errorEvent: "errorEvent", markerChange: "markerChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\r\n @if (showFullscreenButton) {\r\n <button fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\r\n } @if (showExitFullscreenButton) {\r\n <button fd-button glyph=\"exitfullscreen\" fdType=\"positive\" (click)=\"onExitFullscreen()\"></button>\r\n } @if (showLocationButton || disableOrReadonly) {\r\n <button fd-button glyph=\"map\" fdType=\"positive\" (click)=\"onCurrentLocation()\"></button>\r\n }\r\n</div>\r\n", styles: [":host{display:block;min-height:300px;position:relative}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
138
+ }
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaGeographicLocationComponent, decorators: [{
140
+ type: Component,
141
+ args: [{ selector: 'bdc-barsa-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\r\n @if (showFullscreenButton) {\r\n <button fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\r\n } @if (showExitFullscreenButton) {\r\n <button fd-button glyph=\"exitfullscreen\" fdType=\"positive\" (click)=\"onExitFullscreen()\"></button>\r\n } @if (showLocationButton || disableOrReadonly) {\r\n <button fd-button glyph=\"map\" fdType=\"positive\" (click)=\"onCurrentLocation()\"></button>\r\n }\r\n</div>\r\n", styles: [":host{display:block;min-height:300px;position:relative}\n"] }]
142
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { disableOrReadonly: [{
143
+ type: Input
144
+ }], setAutomaticLocation: [{
145
+ type: Input
146
+ }], showLocationButton: [{
147
+ type: Input
148
+ }], showFullscreenButton: [{
149
+ type: Input
150
+ }], showExitFullscreenButton: [{
151
+ type: Input
152
+ }], draggable: [{
153
+ type: Input
154
+ }], defaultLocation: [{
155
+ type: Input
156
+ }], latitude: [{
157
+ type: Input
158
+ }], longitude: [{
159
+ type: Input
160
+ }], move: [{
161
+ type: Output
162
+ }], moveEnd: [{
163
+ type: Output
164
+ }], fullscreen: [{
165
+ type: Output
166
+ }], exitFullscreen: [{
167
+ type: Output
168
+ }], errorEvent: [{
169
+ type: Output
170
+ }], markerChange: [{
171
+ type: Output
172
+ }] } });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtZ2VvZ3JhcGhpYy1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9iYXJzYS1nZW9ncmFwaGljLWxvY2F0aW9uL2JhcnNhLWdlb2dyYXBoaWMtbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvYmFyc2EtZ2VvZ3JhcGhpYy1sb2NhdGlvbi9iYXJzYS1nZW9ncmFwaGljLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUdmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBWXJELE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxhQUFhO0lBMEIvRCxZQUFvQixHQUFlO1FBQy9CLEtBQUssRUFBRSxDQUFDO1FBRFEsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQWZ6QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMvQixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUc3RCxzQkFBaUIsR0FBRztZQUN4QixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLENBQUM7U0FDaEIsQ0FBQztJ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Y2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuZGVjbGFyZSBjb25zdCBoZWFkOiBhbnk7XHJcbmRlY2xhcmUgY29uc3QgTDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JkYy1iYXJzYS1nZW9ncmFwaGljLWxvY2F0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1nZW9ncmFwaGljLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLWdlb2dyYXBoaWMtbG9jYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhcnNhR2VvZ3JhcGhpY0xvY2F0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICAgQElucHV0KCkgZGlzYWJsZU9yUmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzZXRBdXRvbWF0aWNMb2NhdGlvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dMb2NhdGlvbkJ1dHRvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dGdWxsc2NyZWVuQnV0dG9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd0V4aXRGdWxsc2NyZWVuQnV0dG9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZHJhZ2dhYmxlOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpIGRlZmF1bHRMb2NhdGlvbjogbnVtYmVyW107XHJcbiAgICBASW5wdXQoKSBsYXRpdHVkZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbG9uZ2l0dWRlOiBudW1iZXI7XHJcbiAgICBAT3V0cHV0KCkgbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG1vdmVFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBmdWxsc2NyZWVuID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGV4aXRGdWxsc2NyZWVuID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGVycm9yRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgbWFya2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGxhdGl0dWRlOyBsb25naXR1ZGUgfT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9tYXA6IGFueTtcclxuICAgIHByaXZhdGUgX25hdmlnYXRvck9wdGlvbnMgPSB7XHJcbiAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiB0cnVlLFxyXG4gICAgICAgIHRpbWVvdXQ6IDUwMDAsXHJcbiAgICAgICAgbWF4aW11bUFnZTogMFxyXG4gICAgfTtcclxuICAgIHByaXZhdGUgX21hcmtlcjogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGxhdGl0dWRlPy5maXJzdENoYW5nZSA9PT0gZmFsc2UgfHwgbG9uZ2l0dWRlPy5maXJzdENoYW5nZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0R2VvTG9jYXRpb24oXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF0aXR1ZGU6IGxhdGl0dWRlLmN1cnJlbnRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBsb25naXR1ZGU6IGxvbmdpdHVkZS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVPclJlYWRvbmx5LFxyXG4gICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICAgIGhlYWQubG9hZChcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ0xpYi9sZWFmbGV0L2xlYWZsZXQuY3NzJyxcclxuICAgICAgICAgICAgICAgICdMaWIvbGVhZmxldC9sZWFmbGV0LXNyYy5qcycsXHJcbiAgICAgICAgICAgICAgICAnTGliL2xlYWZsZXQvU2VhcmNoQ29udHJvbC5qcycsXHJcbiAgICAgICAgICAgICAgICAnTGliL2xlYWZsZXQvQmVhdXRpZnlNYXJrZXItbWFzdGVyL2xlYWZsZXQtYmVhdXRpZnktbWFya2VyLWljb24uY3NzJyxcclxuICAgICAgICAgICAgICAgICdMaWIvbGVhZmxldC9CZWF1dGlmeU1hcmtlci1tYXN0ZXIvbGVhZmxldC1iZWF1dGlmeS1tYXJrZXItaWNvbi5qcycsXHJcbiAgICAgICAgICAgICAgICAnTGliL2xlYWZsZXQvQmVhdXRpZnlNYXJrZXItbWFzdGVyL2xlYWZsZXQtYmVhdXRpZnktbWFya2VyLmpzJyxcclxuICAgICAgICAgICAgICAgICdMaWIvbGVhZmxldC9CZWF1dGlmeU1hcmtlci1tYXN0ZXIvbGVhZmxldC1iZWF1dGlmeS1tYXJrZXItaWNvbi1iYXJzYS5qcydcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgKCkgPT4gdGhpcy5faW5pdGlsYWl6ZSgpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIG9uQ3VycmVudExvY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVPclJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZ2V0TmF2aWdhdG9yQ3VycmVudFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBvbkZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuLmVtaXQoKTtcclxuICAgIH1cclxuICAgIG9uRXhpdEZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5leGl0RnVsbHNjcmVlbi5lbWl0KCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2FkZE1hcmtlcnMoZGlzYWJsZU9yUmVhZG9ubHk6IGJvb2xlYW4sIHBvczogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zZXRHZW9Mb2NhdGlvbih7IGxhdGl0dWRlOiBwb3NbMF0sIGxvbmdpdHVkZTogcG9zWzFdIH0sIGRpc2FibGVPclJlYWRvbmx5KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2luaXRpbGFpemUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbWFwID0gTC5tYXAodGhpcy5fZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmRlZmF1bHRMb2NhdGlvbjtcclxuICAgICAgICBpZiAodGhpcy5sYXRpdHVkZSkge1xyXG4gICAgICAgICAgICBsb2NhdGlvblswXSA9IE51bWJlcih0aGlzLmxhdGl0dWRlKTtcclxuICAgICAgICAgICAgbG9jYXRpb25bMV0gPSBOdW1iZXIodGhpcy5sb25naXR1ZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zZXRHZW9Mb2NhdGlvbihcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGF0aXR1ZGU6IGxvY2F0aW9uWzBdLFxyXG4gICAgICAgICAgICAgICAgbG9uZ2l0dWRlOiBsb2NhdGlvblsxXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVPclJlYWRvbmx5LFxyXG4gICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlT3JSZWFkb25seSAmJiB0aGlzLnNldEF1dG9tYXRpY0xvY2F0aW9uICYmICF0aGlzLmxhdGl0dWRlKSB7XHJcbiAgICAgICAgICAgIC8vINiv2LHYtdmI2LHYqtuMINqp2Ycg2KfYsiDZgtio2YQg2YXZgtiv2KfYsSDZhtiv2KfYtNiq2Ycg2KjYp9i02K9cclxuICAgICAgICAgICAgdGhpcy5fZ2V0TmF2aWdhdG9yQ3VycmVudFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9vbkVycm9yTmF2aWdhdG9yTG9jYXRpb24oZXJyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lcnJvckV2ZW50LmVtaXQoZXJyKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0R2VvTG9jYXRpb24oXHJcbiAgICAgICAgcG9zaXRpb246IHsgbGF0aXR1ZGU6IGFueTsgbG9uZ2l0dWRlOiBhbnkgfSxcclxuICAgICAgICBkaXNhYmxlT3JSZWFkb25seSA9IGZhbHNlLFxyXG4gICAgICAgIHNldFZpZXcgPSBmYWxzZSxcclxuICAgICAgICBmaXJlRXZlbnQgPSB0cnVlXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbWFya2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21hcC5yZW1vdmVMYXllcih0aGlzLl9tYXJrZXIpO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXJrZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBsYXRpdHVkZSwgbG9uZ2l0dWRlIH0gPSBwb3NpdGlvbjtcclxuXHJcbiAgICAgICAgTC50aWxlTGF5ZXIoJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL3tpZH0vdGlsZXMve3p9L3t4fS97eX0/YWNjZXNzX3Rva2VuPXthY2Nlc3NUb2tlbn0nLCB7XHJcbiAgICAgICAgICAgIGF0dHJpYnV0aW9uOiAnJyxcclxuICAgICAgICAgICAgbWF4Wm9vbTogMTgsXHJcbiAgICAgICAgICAgIGlkOiAnbWFwYm94L3N0cmVldHMtdjExJyxcclxuICAgICAgICAgICAgdGlsZVNpemU6IDUxMixcclxuICAgICAgICAgICAgem9vbU9mZnNldDogLTEsXHJcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOlxyXG4gICAgICAgICAgICAgICAgJ3BrLmV5SjFJam9pYlhKbGVtRmtaWFpsYkc5d1pYSWlMQ0poSWpvaVkycDZhbmxyZFRFMk1EQnhkak50Y3padFlXRnFiSEZtZGlKOS5Tem5pUnkyS0g2VTNnZGJPRm53QTdRJ1xyXG4gICAgICAgIH0pLmFkZFRvKHRoaXMuX21hcCk7XHJcbiAgICAgICAgaWYgKHNldFZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWFwLnNldFZpZXcoW2xhdGl0dWRlLCBsb25naXR1ZGVdLCAxOCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1hcmtlciA9IHRoaXMuX2NyZWF0ZU1hcmtlcihcclxuICAgICAgICAgICAgJzAnLFxyXG4gICAgICAgICAgICB7IG1vOiAndGVzdCcgfSxcclxuICAgICAgICAgICAgbGF0aXR1ZGUsXHJcbiAgICAgICAgICAgIGxvbmdpdHVkZSxcclxuICAgICAgICAgICAgJ215IGxvY2F0aW9uJyxcclxuICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICFkaXNhYmxlT3JSZWFkb25seSAmJiB0aGlzLmRyYWdnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbWFya2VyLmFkZFRvKHRoaXMuX21hcCk7XHJcbiAgICAgICAgdGhpcy5fbWFya2VyID0gbWFya2VyO1xyXG4gICAgICAgIGlmICghZGlzYWJsZU9yUmVhZG9ubHkgJiYgZmlyZUV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFya2VyQ2hhbmdlLmVtaXQoeyBsYXRpdHVkZSwgbG9uZ2l0dWRlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZ2V0TmF2aWdhdG9yQ3VycmVudFBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24pIHtcclxuICAgICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIChwb3NpdGlvbikgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRHZW9Mb2NhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBsYXRpdHVkZTogcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlLCBsb25naXR1ZGU6IHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlT3JSZWFkb25seSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB0aGlzLl9vbkVycm9yTmF2aWdhdG9yTG9jYXRpb24oZXJyKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRvck9wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZU1hcmtlcihpZCwgbW8sIGxhdCwgbG5nLCB0ZXh0LCBpY29uLCBkcmFnZ2FibGUpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IG1hcmtlckNmZyA9IHtcclxuICAgICAgICAgICAgSWQ6IGlkLFxyXG4gICAgICAgICAgICBEYXRhOiBtbyxcclxuICAgICAgICAgICAgdGl0bGU6IHRleHQsXHJcbiAgICAgICAgICAgIGRyYWdnYWJsZSxcclxuICAgICAgICAgICAgaWNvbjogTC5kaXZJY29uKHtcclxuICAgICAgICAgICAgICAgIGh0bWw6IGljb25cclxuICAgICAgICAgICAgICAgICAgICA/IGA8ZmQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxcmVtXCIgY2xhc3M9XCJzYXAtaWNvbi0tJHtpY29ufVwiPjwvZmQtaWNvbj5gXHJcbiAgICAgICAgICAgICAgICAgICAgOiBgPGltZyAgc3R5bGU9XCJ3aWR0aDozMnB4XCIgc3JjPVwiJHsnYXNzZXRzL3N2Zy9sb2NhdGlvbi1zaWduLnN2Zyd9XCIvPmAsXHJcbiAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzIwLCAyMF0sXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdteS1sb2NhdGlvbidcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyB2YXIgbWFya2VyID0gTC5CZWF1dGlmeU1hcmtlci5tYXJrZXIoW051bWJlcihsYXQpLCBOdW1iZXIobG5nKV0sIHtcclxuICAgICAgICBjb25zdCBtYXJrZXIgPSBMLm1hcmtlcihbTnVtYmVyKGxhdCksIE51bWJlcihsbmcpXSwgbWFya2VyQ2ZnKTtcclxuXHJcbiAgICAgICAgbWFya2VyLm9uKCdtb3ZlZW5kJywgKGUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fb25Nb3ZlRW5kKGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1hcmtlci5vbignbW92ZScsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uTW92ZShlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG1hcmtlcjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX29uTW92ZShlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tb3ZlLmVtaXQoZSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX29uTW92ZUVuZChlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tb3ZlRW5kLmVtaXQoZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTAwMDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgcm93LWdhcDogNXB4OyBsZWZ0OiAwOyBib3R0b206IDBcIj5cclxuICAgIEBpZiAoc2hvd0Z1bGxzY3JlZW5CdXR0b24pIHtcclxuICAgIDxidXR0b24gZmQtYnV0dG9uIGdseXBoPVwicmVzaXplXCIgZmRUeXBlPVwicG9zaXRpdmVcIiAoY2xpY2spPVwib25GdWxsc2NyZWVuKClcIj48L2J1dHRvbj5cclxuICAgIH0gQGlmIChzaG93RXhpdEZ1bGxzY3JlZW5CdXR0b24pIHtcclxuICAgIDxidXR0b24gZmQtYnV0dG9uIGdseXBoPVwiZXhpdGZ1bGxzY3JlZW5cIiBmZFR5cGU9XCJwb3NpdGl2ZVwiIChjbGljayk9XCJvbkV4aXRGdWxsc2NyZWVuKClcIj48L2J1dHRvbj5cclxuICAgIH0gQGlmIChzaG93TG9jYXRpb25CdXR0b24gfHwgZGlzYWJsZU9yUmVhZG9ubHkpIHtcclxuICAgIDxidXR0b24gZmQtYnV0dG9uIGdseXBoPVwibWFwXCIgZmRUeXBlPVwicG9zaXRpdmVcIiAoY2xpY2spPVwib25DdXJyZW50TG9jYXRpb24oKVwiPjwvYnV0dG9uPlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component, ChangeDetectionStrategy, ViewChild, HostBinding } from '@angular/core';
2
+ import { BaseItemContentPropsComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "barsa-novin-ray-core";
5
+ import * as i2 from "@fundamental-ngx/core/icon";
6
+ import * as i3 from "@fundamental-ngx/core/title";
7
+ export class CardContentImageAndTitleComponent extends BaseItemContentPropsComponent {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.backgroundColor = null;
11
+ this.color = null;
12
+ }
13
+ ngOnInit() {
14
+ super.ngOnInit();
15
+ const parameters = this.parameters;
16
+ if (parameters != null) {
17
+ this.color = this.colorSetting = parameters.Color;
18
+ this.backgroundColor = this.backgroundColorSetting = parameters.BackgroundColor;
19
+ this.picture = this._rval.transform(parameters.Picture, this.mo, this.allColumns);
20
+ this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns);
21
+ this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns);
22
+ this.icon = this._rval.transform(parameters.Icon, this.mo, this.allColumns);
23
+ this.prepareNumberSign();
24
+ }
25
+ }
26
+ prepareNumberSign() {
27
+ if (this.color && Number(this.colorSetting[0])) {
28
+ this.color = '#' + this.colorSetting;
29
+ }
30
+ if (this.backgroundColor && Number(this.backgroundColorSetting[0])) {
31
+ this.backgroundColor = '#' + this.backgroundColorSetting;
32
+ }
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentImageAndTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardContentImageAndTitleComponent, selector: "bdc-card-content-image-and-title", host: { properties: { "style.background-color": "this.backgroundColor", "style.color": "this.color" } }, viewQueries: [{ propertyName: "iconRef", first: true, predicate: ["iconRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"card-content\" #elemRef>\r\n <div class=\"item-data\">\r\n @if (picture) {\r\n <img\r\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\r\n height=\"70\"\r\n width=\"100\"\r\n [alt]=\"title | bbbTranslate\"\r\n />\r\n } @else { @if (icon) {\r\n <fd-icon #iconRef [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\r\n } }\r\n </div>\r\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ title | bbbTranslate }}\r\n </h5>\r\n @if (subtitle) {\r\n <h6 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ subtitle | bbbTranslate }}\r\n </h6>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"], dependencies: [{ kind: "directive", type: i1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i2.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentImageAndTitleComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'bdc-card-content-image-and-title', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"card-content\" #elemRef>\r\n <div class=\"item-data\">\r\n @if (picture) {\r\n <img\r\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\r\n height=\"70\"\r\n width=\"100\"\r\n [alt]=\"title | bbbTranslate\"\r\n />\r\n } @else { @if (icon) {\r\n <fd-icon #iconRef [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\r\n } }\r\n </div>\r\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ title | bbbTranslate }}\r\n </h5>\r\n @if (subtitle) {\r\n <h6 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ subtitle | bbbTranslate }}\r\n </h6>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"] }]
40
+ }], propDecorators: { iconRef: [{
41
+ type: ViewChild,
42
+ args: ['iconRef', { static: false }]
43
+ }], backgroundColor: [{
44
+ type: HostBinding,
45
+ args: ['style.background-color']
46
+ }], color: [{
47
+ type: HostBinding,
48
+ args: ['style.color']
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1jb250ZW50LWltYWdlLWFuZC10aXRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9jYXJkLWNvbnRlbnQtaW1hZ2UtYW5kLXRpdGxlL2NhcmQtY29udGVudC1pbWFnZS1hbmQtdGl0bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1jb250ZW50LWltYWdlLWFuZC10aXRsZS9jYXJkLWNvbnRlbnQtaW1hZ2UtYW5kLXRpdGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQXdCLDZCQUE2QixFQUEyQixNQUFNLHNCQUFzQixDQUFDOzs7OztBQVNwSCxNQUFNLE9BQU8saUNBQ1QsU0FBUSw2QkFBc0Q7SUFSbEU7O1FBYTJDLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUNqRCxVQUFLLEdBQWtCLElBQUksQ0FBQztLQWtDM0Q7SUF6QkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ2xELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7WUFFaEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTVFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUM3RCxDQUFDO0lBQ0wsQ0FBQzsrR0F4Q1EsaUNBQWlDO21HQUFqQyxpQ0FBaUMsNFNDVjlDLGl3QkFzQkE7OzRGRFphLGlDQUFpQztrQkFQN0MsU0FBUzsrQkFDSSxrQ0FBa0MsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFNd0IsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVBLGVBQWU7c0JBQXJELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUNULEtBQUs7c0JBQWhDLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlUGljdHVyZUluZm9Nb2RlbCwgQmFzZUl0ZW1Db250ZW50UHJvcHNDb21wb25lbnQsIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JkYy1jYXJkLWNvbnRlbnQtaW1hZ2UtYW5kLXRpdGxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJkLWNvbnRlbnQtaW1hZ2UtYW5kLXRpdGxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NhcmQtY29udGVudC1pbWFnZS1hbmQtdGl0bGUuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcmRDb250ZW50SW1hZ2VBbmRUaXRsZUNvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBCYXNlSXRlbUNvbnRlbnRQcm9wc0NvbXBvbmVudDxVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0XHJcbntcclxuICAgIEBWaWV3Q2hpbGQoJ2ljb25SZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgaWNvblJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmJhY2tncm91bmQtY29sb3InKSBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5jb2xvcicpIGNvbG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3JTZXR0aW5nOiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgc3VidGl0bGU6IHN0cmluZztcclxuICAgIGljb246IHN0cmluZztcclxuICAgIGNvbG9yU2V0dGluZzogc3RyaW5nO1xyXG4gICAgcGljdHVyZTogRmlsZVBpY3R1cmVJbmZvTW9kZWw7XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzO1xyXG4gICAgICAgIGlmIChwYXJhbWV0ZXJzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3JTZXR0aW5nID0gcGFyYW1ldGVycy5Db2xvcjtcclxuICAgICAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmJhY2tncm91bmRDb2xvclNldHRpbmcgPSBwYXJhbWV0ZXJzLkJhY2tncm91bmRDb2xvcjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucGljdHVyZSA9IHRoaXMuX3J2YWwudHJhbnNmb3JtKHBhcmFtZXRlcnMuUGljdHVyZSwgdGhpcy5tbywgdGhpcy5hbGxDb2x1bW5zKTtcclxuICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuX3J2YWwudHJhbnNmb3JtKHBhcmFtZXRlcnMuVGl0bGUsIHRoaXMubW8sIHRoaXMuYWxsQ29sdW1ucyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidGl0bGUgPSB0aGlzLl9ydmFsLnRyYW5zZm9ybShwYXJhbWV0ZXJzLlN1YnRpdGxlLCB0aGlzLm1vLCB0aGlzLmFsbENvbHVtbnMpO1xyXG4gICAgICAgICAgICB0aGlzLmljb24gPSB0aGlzLl9ydmFsLnRyYW5zZm9ybShwYXJhbWV0ZXJzLkljb24sIHRoaXMubW8sIHRoaXMuYWxsQ29sdW1ucyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVOdW1iZXJTaWduKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJlcGFyZU51bWJlclNpZ24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sb3IgJiYgTnVtYmVyKHRoaXMuY29sb3JTZXR0aW5nWzBdKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJyMnICsgdGhpcy5jb2xvclNldHRpbmc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5iYWNrZ3JvdW5kQ29sb3IgJiYgTnVtYmVyKHRoaXMuYmFja2dyb3VuZENvbG9yU2V0dGluZ1swXSkpIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSAnIycgKyB0aGlzLmJhY2tncm91bmRDb2xvclNldHRpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIiAjZWxlbVJlZj5cclxuICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRhdGFcIj5cclxuICAgICAgICBAaWYgKHBpY3R1cmUpIHtcclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgIFtpbWdMYXp5XT1cInBpY3R1cmUuRmlsZUlkIHwgcGljRmllbGRTcmM6ICdJRCc6bnVsbDonJzoxMDA6NzBcIlxyXG4gICAgICAgICAgICBoZWlnaHQ9XCI3MFwiXHJcbiAgICAgICAgICAgIHdpZHRoPVwiMTAwXCJcclxuICAgICAgICAgICAgW2FsdF09XCJ0aXRsZSB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICB9IEBlbHNlIHsgQGlmIChpY29uKSB7XHJcbiAgICAgICAgPGZkLWljb24gI2ljb25SZWYgW2dseXBoXT1cImljb25cIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj4gPC9mZC1pY29uPlxyXG4gICAgICAgIH0gfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8aDUgZmQtdGl0bGUgY2xhc3M9XCJpdGVtLWRhdGEgZmQtdGl0bGUtLXdyYXBcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cclxuICAgICAgICB7eyB0aXRsZSB8IGJiYlRyYW5zbGF0ZSB9fVxyXG4gICAgPC9oNT5cclxuICAgIEBpZiAoc3VidGl0bGUpIHtcclxuICAgIDxoNiBmZC10aXRsZSBjbGFzcz1cIml0ZW0tZGF0YSBmZC10aXRsZS0td3JhcFwiIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPlxyXG4gICAgICAgIHt7IHN1YnRpdGxlIHwgYmJiVHJhbnNsYXRlIH19XHJcbiAgICA8L2g2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { BarsaApi, BaseItemContentPropsComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ export class CardContentLineChartComponent extends BaseItemContentPropsComponent {
5
+ ngOnInit() {
6
+ super.ngOnInit();
7
+ const parameters = this.parameters;
8
+ const { MethodParametersFieldName, RunBlMethodName } = parameters;
9
+ const methodParameters = [];
10
+ MethodParametersFieldName.split(',').forEach((c) => {
11
+ const value = this.mo[c];
12
+ if (typeof value === 'object' && value.Id) {
13
+ methodParameters.push(value.Id);
14
+ }
15
+ else {
16
+ methodParameters.push(value);
17
+ }
18
+ });
19
+ BarsaApi.Bw.RunBlMethodAsync({
20
+ Parameters: methodParameters,
21
+ Method: RunBlMethodName,
22
+ SuccessFn: (chartOption) => {
23
+ this.chartOption = JSON.parse(chartOption);
24
+ this._cdr.detectChanges();
25
+ },
26
+ FailFn: () => { }
27
+ });
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentLineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardContentLineChartComponent, selector: "bdc-card-content-line-chart", usesInheritance: true, ngImport: i0, template: "@if (chartOption) {\r\n<div class=\"card-content\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentLineChartComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'bdc-card-content-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (chartOption) {\r\n<div class=\"card-content\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"] }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1jb250ZW50LWxpbmUtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1jb250ZW50LWxpbmUtY2hhcnQvY2FyZC1jb250ZW50LWxpbmUtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1jb250ZW50LWxpbmUtY2hhcnQvY2FyZC1jb250ZW50LWxpbmUtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUEyQixNQUFNLHNCQUFzQixDQUFDOztBQVN4RyxNQUFNLE9BQU8sNkJBQ1QsU0FBUSw2QkFBc0Q7SUFLOUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDbEUsTUFBTSxnQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFDakMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QixVQUFVLEVBQUUsZ0JBQWdCO1lBQzVCLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLFNBQVMsRUFBRSxDQUFDLFdBQW1CLEVBQUUsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDOytHQTVCUSw2QkFBNkI7bUdBQTdCLDZCQUE2QiwwRkNWMUMsa0pBS0E7OzRGREthLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDSSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXJzYUFwaSwgQmFzZUl0ZW1Db250ZW50UHJvcHNDb21wb25lbnQsIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JkYy1jYXJkLWNvbnRlbnQtbGluZS1jaGFydCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC1jb250ZW50LWxpbmUtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FyZC1jb250ZW50LWxpbmUtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcmRDb250ZW50TGluZUNoYXJ0Q29tcG9uZW50XHJcbiAgICBleHRlbmRzIEJhc2VJdGVtQ29udGVudFByb3BzQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gICAgY2hhcnRPcHRpb246IGFueTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnM7XHJcbiAgICAgICAgY29uc3QgeyBNZXRob2RQYXJhbWV0ZXJzRmllbGROYW1lLCBSdW5CbE1ldGhvZE5hbWUgfSA9IHBhcmFtZXRlcnM7XHJcbiAgICAgICAgY29uc3QgbWV0aG9kUGFyYW1ldGVyczogYW55ID0gW107XHJcbiAgICAgICAgTWV0aG9kUGFyYW1ldGVyc0ZpZWxkTmFtZS5zcGxpdCgnLCcpLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLm1vW2NdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5JZCkge1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kUGFyYW1ldGVycy5wdXNoKHZhbHVlLklkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZFBhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcclxuICAgICAgICAgICAgUGFyYW1ldGVyczogbWV0aG9kUGFyYW1ldGVycyxcclxuICAgICAgICAgICAgTWV0aG9kOiBSdW5CbE1ldGhvZE5hbWUsXHJcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGNoYXJ0T3B0aW9uOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhcnRPcHRpb24gPSBKU09OLnBhcnNlKGNoYXJ0T3B0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge31cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGNoYXJ0T3B0aW9uKSB7XHJcbjxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIiAjZWxlbVJlZj5cclxuICAgIDxkaXYgYmVDaGFydExpbmVUaW1lIFtjaGFydE9wdGlvbl09XCJjaGFydE9wdGlvblwiPjwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { CardHeaderLogoTitleSubtitleComponent } from '../card-header-logo-title-subtitle/card-header-logo-title-subtitle.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "barsa-sap-ui";
6
+ import * as i3 from "@fundamental-ngx/core/avatar";
7
+ import * as i4 from "@fundamental-ngx/core/button";
8
+ import * as i5 from "@fundamental-ngx/core/card";
9
+ import * as i6 from "@fundamental-ngx/core/checkbox";
10
+ import * as i7 from "barsa-novin-ray-core";
11
+ export class CardHeaderBigImageTitleAndSubtitleComponent extends CardHeaderLogoTitleSubtitleComponent {
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardHeaderBigImageTitleAndSubtitleComponent, selector: "bdc-card-header-big-image-title-and-subtitle", usesInheritance: true, ngImport: i0, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\r\n <fd-card-main-header>\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n [styleIndex]=\"styleIndex\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"subtitleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle }}\r\n </h3>\r\n </fd-card-main-header>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default}fd-card-header ::ng-deep .fd-card__header-main-container{display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "directive", type: i2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i5.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i5.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i5.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'bdc-card-header-big-image-title-and-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\r\n <fd-card-main-header>\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n [styleIndex]=\"styleIndex\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"subtitleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle }}\r\n </h3>\r\n </fd-card-main-header>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default}fd-card-header ::ng-deep .fd-card__header-main-container{display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"] }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1oZWFkZXItYmlnLWltYWdlLXRpdGxlLWFuZC1zdWJ0aXRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9jYXJkLWhlYWRlci1iaWctaW1hZ2UtdGl0bGUtYW5kLXN1YnRpdGxlL2NhcmQtaGVhZGVyLWJpZy1pbWFnZS10aXRsZS1hbmQtc3VidGl0bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1oZWFkZXItYmlnLWltYWdlLXRpdGxlLWFuZC1zdWJ0aXRsZS9jYXJkLWhlYWRlci1iaWctaW1hZ2UtdGl0bGUtYW5kLXN1YnRpdGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7Ozs7Ozs7OztBQVFwSSxNQUFNLE9BQU8sMkNBQTRDLFNBQVEsb0NBQW9DOytHQUF4RiwyQ0FBMkM7bUdBQTNDLDJDQUEyQywyR0NUeEQsMmtGQWtFQTs7NEZEekRhLDJDQUEyQztrQkFQdkQsU0FBUzsrQkFDSSw4Q0FBOEMsbUJBR3ZDLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FyZEhlYWRlckxvZ29UaXRsZVN1YnRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FyZC1oZWFkZXItbG9nby10aXRsZS1zdWJ0aXRsZS9jYXJkLWhlYWRlci1sb2dvLXRpdGxlLXN1YnRpdGxlLmNvbXBvbmVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiZGMtY2FyZC1oZWFkZXItYmlnLWltYWdlLXRpdGxlLWFuZC1zdWJ0aXRsZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC1oZWFkZXItYmlnLWltYWdlLXRpdGxlLWFuZC1zdWJ0aXRsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJkLWhlYWRlci1iaWctaW1hZ2UtdGl0bGUtYW5kLXN1YnRpdGxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJkSGVhZGVyQmlnSW1hZ2VUaXRsZUFuZFN1YnRpdGxlQ29tcG9uZW50IGV4dGVuZHMgQ2FyZEhlYWRlckxvZ29UaXRsZVN1YnRpdGxlQ29tcG9uZW50IHt9XHJcbiIsIjxmZC1jYXJkLWhlYWRlciBbY2xhc3MuaGlkZS1ib3JkZXJdPVwicGFyYW1ldGVycy5IaWRlQm9yZGVyXCI+XHJcbiAgICA8ZmQtY2FyZC1tYWluLWhlYWRlcj5cclxuICAgICAgICBAaWYgKGhhc0ljb24pIHtcclxuICAgICAgICA8ZmQtYXZhdGFyXHJcbiAgICAgICAgICAgIFtjaXJjbGVdPVwiYXZhdGFyQ2lyY2xlXCJcclxuICAgICAgICAgICAgc2l6ZT1cInNcIlxyXG4gICAgICAgICAgICBhcmlhTGFiZWw9XCJhdmF0YXIgaW1hZ2VcIlxyXG4gICAgICAgICAgICB0aXRsZT1cImF2YXRhciBpbWFnZVwiXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCJmb250SWNvblwiXHJcbiAgICAgICAgICAgIFtpbWFnZV09XCJpc0ljb25JbWFnZSA/IChpbWFnZUljb24/LkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnR2V0UGljdHVyZUZyb21GaWxlSW5mbyc6bnVsbCkgOiAnJ1wiXHJcbiAgICAgICAgPjwvZmQtYXZhdGFyPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2IGZkLWNhcmQtdGl0bGUgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCInZW5kJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzdGFydDsgZmxleC1ncm93OiAxXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGlzQ2hlY2tMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJtby4kQ2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJldmVudHMuZW1pdCh7IHRpdGxlOiAncm93Q2hlY2snIH0pXCJcclxuICAgICAgICAgICAgICAgID48L2ZkLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgfSBAaWYgKCFzZXR0aW5nLkNvbnRleHRNZW51SW5Gb290ZXIgJiYgY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICB1bHZDb250ZXh0TWVudVxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAoY29tbWFuZENsaWNrKT1cImV2ZW50cy5lbWl0KHsgdGl0bGU6ICd1bHZDb21tYW5kJyB9KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8aDJcclxuICAgICAgICAgICAgICAgICAgICAjaEVsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jYXJkX190aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hvc3RFbF09XCJoRWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYk5hbWVdPVwidGl0bGVEYk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmIChjYW5WaWV3KSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV2ZW50cy5lbWl0KHsgdGl0bGU6ICdyb3dDbGljaycgfSlcIlxyXG4gICAgICAgICAgICAgICAgW2dseXBoXT1cIm5hdmlnYXRpb25BcnJvd1wiXHJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aDNcclxuICAgICAgICAgICAgZmQtY2FyZC1zdWJ0aXRsZVxyXG4gICAgICAgICAgICAjaEVsXHJcbiAgICAgICAgICAgIFtob3N0RWxdPVwiaEVsXCJcclxuICAgICAgICAgICAgW2RiTmFtZV09XCJzdWJ0aXRsZURiTmFtZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxyXG4gICAgICAgICAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHN1YnRpdGxlIH19XHJcbiAgICAgICAgPC9oMz5cclxuICAgIDwvZmQtY2FyZC1tYWluLWhlYWRlcj5cclxuPC9mZC1jYXJkLWhlYWRlcj5cclxuPGRpdj48L2Rpdj5cclxuIl19