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,88 @@
1
+ import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
+ import { BarsaApi } from 'barsa-novin-ray-core';
3
+ import { UiMoInfoSubFormUiComponent } from 'barsa-sap-ui';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "barsa-novin-ray-core";
7
+ import * as i3 from "@fundamental-ngx/core/dialog";
8
+ import * as i4 from "@fundamental-ngx/core/title";
9
+ import * as i5 from "../barsa-geographic-location/barsa-geographic-location.component";
10
+ export class GeographicLocationComponent extends UiMoInfoSubFormUiComponent {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.fullscreen = false;
14
+ }
15
+ get latitudeUi() {
16
+ return this.customFormPanelUi._dictFieldUi.Latitude;
17
+ }
18
+ get longitudeUi() {
19
+ return this.customFormPanelUi._dictFieldUi.Longitude;
20
+ }
21
+ openDialog(dialog) {
22
+ this._dialogService.open(dialog, {
23
+ responsivePadding: true,
24
+ fullScreen: true,
25
+ mobile: true,
26
+ ariaLabelledBy: 'map',
27
+ ariaDescribedBy: 'choose location',
28
+ focusTrapped: true
29
+ });
30
+ }
31
+ ngOnInit() {
32
+ super.ngOnInit();
33
+ this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
34
+ }
35
+ onFullscreen() {
36
+ this.fullscreen = true;
37
+ this.openDialog(this.dialogTemplate);
38
+ }
39
+ onExistFullscreen() {
40
+ this.fullscreen = false;
41
+ this._cdr.detectChanges();
42
+ }
43
+ onOpenChange(isOpen) {
44
+ this.fullscreen = isOpen;
45
+ }
46
+ onErrorNavigatorLocation(err) {
47
+ const err2 = `خطا در دریافت موقعیت مکانی جاری. (${err.message})`;
48
+ BarsaApi.Bw.Toast.Error(err2);
49
+ }
50
+ onMove(e) {
51
+ this._movePos = { latitude: e.latlng.lat, longitude: e.latlng.lng };
52
+ }
53
+ onMoveEnd(e) {
54
+ this._handleMarkerChange(this._movePos);
55
+ }
56
+ onMarkerChange(e) {
57
+ this._handleMarkerChange(e);
58
+ }
59
+ _handleMarkerChange(e) {
60
+ const { latitude, longitude } = e;
61
+ this.latitudeUi.value = latitude;
62
+ this.longitudeUi.value = longitude;
63
+ this._valueChanged();
64
+ }
65
+ _setDefaultLatAndLong(lat, lng) {
66
+ if (lat && lng) {
67
+ this.latValue = lat;
68
+ this.lngValue = lng;
69
+ }
70
+ }
71
+ _titleChanged() {
72
+ this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
73
+ }
74
+ _valueChanged() {
75
+ this.latitudeUi.fireEvent('change', this.latitudeUi, this.latitudeUi.value);
76
+ this.longitudeUi.fireEvent('change', this.longitudeUi, this.longitudeUi.value);
77
+ }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeographicLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GeographicLocationComponent, selector: "bdc-geographic-location", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["confirmationDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (customFormPanelUi) {\r\n<bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\r\n} @if (!fullscreen) {\r\n<ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\r\n}\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n\r\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\r\n <bdc-barsa-geographic-location\r\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\r\n [defaultLocation]=\"[35.7568, 51.412]\"\r\n [latitude]=\"latValue\"\r\n [longitude]=\"lngValue\"\r\n [showExitFullscreenButton]=\"true\"\r\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\r\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\r\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\r\n [draggable]=\"customFieldInfo.Draggable === true\"\r\n (markerChange)=\"onMarkerChange($event)\"\r\n (move)=\"onMove($event)\"\r\n (errorEvent)=\"onErrorNavigatorLocation($event)\"\r\n (moveEnd)=\"onMoveEnd($event)\"\r\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\r\n ></bdc-barsa-geographic-location>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i2.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i3.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i3.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i3.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i5.BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: ["disableOrReadonly", "setAutomaticLocation", "showLocationButton", "showFullscreenButton", "showExitFullscreenButton", "draggable", "defaultLocation", "latitude", "longitude"], outputs: ["move", "moveEnd", "fullscreen", "exitFullscreen", "errorEvent", "markerChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeographicLocationComponent, decorators: [{
82
+ type: Component,
83
+ args: [{ selector: 'bdc-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (customFormPanelUi) {\r\n<bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\r\n} @if (!fullscreen) {\r\n<ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\r\n}\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n\r\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\r\n <bdc-barsa-geographic-location\r\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\r\n [defaultLocation]=\"[35.7568, 51.412]\"\r\n [latitude]=\"latValue\"\r\n [longitude]=\"lngValue\"\r\n [showExitFullscreenButton]=\"true\"\r\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\r\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\r\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\r\n [draggable]=\"customFieldInfo.Draggable === true\"\r\n (markerChange)=\"onMarkerChange($event)\"\r\n (move)=\"onMove($event)\"\r\n (errorEvent)=\"onErrorNavigatorLocation($event)\"\r\n (moveEnd)=\"onMoveEnd($event)\"\r\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\r\n ></bdc-barsa-geographic-location>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}\n"] }]
84
+ }], propDecorators: { dialogTemplate: [{
85
+ type: ViewChild,
86
+ args: ['confirmationDialog']
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvZ3JhcGhpYy1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9nZW9ncmFwaGljLWxvY2F0aW9uL2dlb2dyYXBoaWMtbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvZ2VvZ3JhcGhpYy1sb2NhdGlvbi9nZW9ncmFwaGljLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBUzFELE1BQU0sT0FBTywyQkFBNEIsU0FBUSwwQkFBMEI7SUFQM0U7O1FBU0ksZUFBVSxHQUFHLEtBQUssQ0FBQztLQXNFdEI7SUFoRUcsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQXdCO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxJQUFJO1lBQ1osY0FBYyxFQUFFLEtBQUs7WUFDckIsZUFBZSxFQUFFLGlCQUFpQjtZQUNsQyxZ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Z2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFyc2FBcGkgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IFVpTW9JbmZvU3ViRm9ybVVpQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etc2FwLXVpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiZGMtZ2VvZ3JhcGhpYy1sb2NhdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VvZ3JhcGhpYy1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW9ncmFwaGljLWxvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW9ncmFwaGljTG9jYXRpb25Db21wb25lbnQgZXh0ZW5kcyBVaU1vSW5mb1N1YkZvcm1VaUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdjb25maXJtYXRpb25EaWFsb2cnKSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGZ1bGxzY3JlZW4gPSBmYWxzZTtcclxuXHJcbiAgICBsYXRWYWx1ZTtcclxuICAgIGxuZ1ZhbHVlO1xyXG4gICAgY3VzdG9tRm9ybVBhbmVsVWk6IGFueTtcclxuICAgIHByaXZhdGUgX21vdmVQb3M6IHsgbGF0aXR1ZGU6IGFueTsgbG9uZ2l0dWRlOiBhbnkgfTtcclxuICAgIGdldCBsYXRpdHVkZVVpKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRm9ybVBhbmVsVWkuX2RpY3RGaWVsZFVpLkxhdGl0dWRlO1xyXG4gICAgfVxyXG4gICAgZ2V0IGxvbmdpdHVkZVVpKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRm9ybVBhbmVsVWkuX2RpY3RGaWVsZFVpLkxvbmdpdHVkZTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGlhbG9nKGRpYWxvZzogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihkaWFsb2csIHtcclxuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIGZ1bGxTY3JlZW46IHRydWUsXHJcbiAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtYXAnLFxyXG4gICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnk6ICdjaG9vc2UgbG9jYXRpb24nLFxyXG4gICAgICAgICAgICBmb2N1c1RyYXBwZWQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5fc2V0RGVmYXVsdExhdEFuZExvbmcodGhpcy5sYXRpdHVkZVVpPy52YWx1ZSwgdGhpcy5sb25naXR1ZGVVaT8udmFsdWUpO1xyXG4gICAgfVxyXG4gICAgb25GdWxsc2NyZWVuKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcGVuRGlhbG9nKHRoaXMuZGlhbG9nVGVtcGxhdGUpO1xyXG4gICAgfVxyXG4gICAgb25FeGlzdEZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIG9uT3BlbkNoYW5nZShpc09wZW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW4gPSBpc09wZW47XHJcbiAgICB9XHJcbiAgICBvbkVycm9yTmF2aWdhdG9yTG9jYXRpb24oZXJyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZXJyMiA9IGDYrti32Kcg2K/YsSDYr9ix24zYp9mB2Kog2YXZiNmC2LnbjNiqINmF2qnYp9mG24wg2KzYp9ix24wuICgke2Vyci5tZXNzYWdlfSlgO1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlRvYXN0LkVycm9yKGVycjIpO1xyXG4gICAgfVxyXG4gICAgb25Nb3ZlKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tb3ZlUG9zID0geyBsYXRpdHVkZTogZS5sYXRsbmcubGF0LCBsb25naXR1ZGU6IGUubGF0bG5nLmxuZyB9O1xyXG4gICAgfVxyXG4gICAgb25Nb3ZlRW5kKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVNYXJrZXJDaGFuZ2UodGhpcy5fbW92ZVBvcyk7XHJcbiAgICB9XHJcbiAgICBvbk1hcmtlckNoYW5nZShlOiB7IGxhdGl0dWRlOyBsb25naXR1ZGUgfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZU1hcmtlckNoYW5nZShlKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlTWFya2VyQ2hhbmdlKGU6IHsgbGF0aXR1ZGU7IGxvbmdpdHVkZSB9KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBsYXRpdHVkZSwgbG9uZ2l0dWRlIH0gPSBlO1xyXG4gICAgICAgIHRoaXMubGF0aXR1ZGVVaS52YWx1ZSA9IGxhdGl0dWRlO1xyXG4gICAgICAgIHRoaXMubG9uZ2l0dWRlVWkudmFsdWUgPSBsb25naXR1ZGU7XHJcbiAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3NldERlZmF1bHRMYXRBbmRMb25nKGxhdDogbnVtYmVyLCBsbmc6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmIChsYXQgJiYgbG5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGF0VmFsdWUgPSBsYXQ7XHJcbiAgICAgICAgICAgIHRoaXMubG5nVmFsdWUgPSBsbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF90aXRsZUNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2V0RGVmYXVsdExhdEFuZExvbmcodGhpcy5sYXRpdHVkZVVpPy52YWx1ZSwgdGhpcy5sb25naXR1ZGVVaT8udmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF92YWx1ZUNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sYXRpdHVkZVVpLmZpcmVFdmVudCgnY2hhbmdlJywgdGhpcy5sYXRpdHVkZVVpLCB0aGlzLmxhdGl0dWRlVWkudmFsdWUpO1xyXG4gICAgICAgIHRoaXMubG9uZ2l0dWRlVWkuZmlyZUV2ZW50KCdjaGFuZ2UnLCB0aGlzLmxvbmdpdHVkZVVpLCB0aGlzLmxvbmdpdHVkZVVpLnZhbHVlKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGN1c3RvbUZvcm1QYW5lbFVpKSB7XHJcbjxibnJjLWZvcm0gc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKnVudGlsSW5WaWV3PVwiZWxcIiBbY3VzdG9tRm9ybVBhbmVsVWldPVwiY3VzdG9tRm9ybVBhbmVsVWlcIj48L2JucmMtZm9ybT5cclxufSBAaWYgKCFmdWxsc2NyZWVuKSB7XHJcbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXA7IGNvbnRleHQ6IHsgaW5EaWFsb2c6IGZhbHNlIH1cIj48L25nLWNvbnRhaW5lcj5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNjb25maXJtYXRpb25EaWFsb2c+XHJcbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIj5cclxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICAgICAgPGgxIGlkPVwiZmQtZGlhbG9nLWhlYWRlci0xMFwiIGZkLXRpdGxlPnt7ICdNYXAnIHwgYmJiVHJhbnNsYXRlIH19PC9oMT5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWFwOyBjb250ZXh0OiB7IGluRGlhbG9nOiB0cnVlLCBkaWFsb2c6IGRpYWxvZyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cclxuICAgIDwvZmQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtYXAgbGV0LWluRGlhbG9nPVwiaW5EaWFsb2dcIiBsZXQtZGlhbG9nPVwiZGlhbG9nXCI+XHJcbiAgICA8YmRjLWJhcnNhLWdlb2dyYXBoaWMtbG9jYXRpb25cclxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImluRGlhbG9nID8gJ2hlaWdodDogMTAwJSAhaW1wb3J0YW50JyA6IG51bGxcIlxyXG4gICAgICAgIFtkZWZhdWx0TG9jYXRpb25dPVwiWzM1Ljc1NjgsIDUxLjQxMl1cIlxyXG4gICAgICAgIFtsYXRpdHVkZV09XCJsYXRWYWx1ZVwiXHJcbiAgICAgICAgW2xvbmdpdHVkZV09XCJsbmdWYWx1ZVwiXHJcbiAgICAgICAgW3Nob3dFeGl0RnVsbHNjcmVlbkJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0xvY2F0aW9uQnV0dG9uXT1cImN1c3RvbUZpZWxkSW5mby5TaG93TG9jYXRpb25CdXR0b25cIlxyXG4gICAgICAgIFtzZXRBdXRvbWF0aWNMb2NhdGlvbl09XCJjdXN0b21GaWVsZEluZm8uR2V0Q3VycmVudExvY2F0aW9uXCJcclxuICAgICAgICBbZGlzYWJsZU9yUmVhZG9ubHldPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgW2RyYWdnYWJsZV09XCJjdXN0b21GaWVsZEluZm8uRHJhZ2dhYmxlID09PSB0cnVlXCJcclxuICAgICAgICAobWFya2VyQ2hhbmdlKT1cIm9uTWFya2VyQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChtb3ZlKT1cIm9uTW92ZSgkZXZlbnQpXCJcclxuICAgICAgICAoZXJyb3JFdmVudCk9XCJvbkVycm9yTmF2aWdhdG9yTG9jYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgKG1vdmVFbmQpPVwib25Nb3ZlRW5kKCRldmVudClcIlxyXG4gICAgICAgIChleGl0RnVsbHNjcmVlbik9XCJvbkV4aXN0RnVsbHNjcmVlbigpOyBkaWFsb2cgJiYgZGlhbG9nLmNsb3NlKCdDb250aW51ZScpXCJcclxuICAgID48L2JkYy1iYXJzYS1nZW9ncmFwaGljLWxvY2F0aW9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, HostListener } from '@angular/core';
2
+ import { map, takeUntil } from 'rxjs/operators';
3
+ import { BarsaApi, FormBaseComponent, FormPanelService, getDeviceIsMobile } from 'barsa-novin-ray-core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "barsa-sap-ui";
6
+ import * as i2 from "@fundamental-ngx/core/dynamic-side-content";
7
+ import * as i3 from "@fundamental-ngx/core/layout-grid";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "barsa-novin-ray-core";
10
+ export class LoginFormComponent extends FormBaseComponent {
11
+ constructor() {
12
+ super(...arguments);
13
+ this._desktopmode = !getDeviceIsMobile();
14
+ this.onKeyEnter = (_) => {
15
+ const layoutItem = this._controlUiPipe.transform(' ورود', this.layout94);
16
+ if (layoutItem) {
17
+ layoutItem.FieldUi.fireEvent('click', layoutItem.FieldUi);
18
+ }
19
+ };
20
+ }
21
+ ngOnInit() {
22
+ this._activatedRoute.queryParams.pipe(takeUntil(this._onDestroy$)).subscribe((params) => {
23
+ BarsaApi.Bw.SetCultureByDisplayName(params.culture);
24
+ });
25
+ const root = document.documentElement;
26
+ root.style.setProperty('--absolute-page-top', '0px');
27
+ super.ngOnInit();
28
+ this.layout94$.subscribe((layout94) => {
29
+ this.layout94 = layout94;
30
+ });
31
+ this.size$ = this._portalService.deviceSize$.pipe(map((deviceSize) => {
32
+ switch (deviceSize) {
33
+ case 's':
34
+ return 'sm';
35
+ case 'm':
36
+ return 'md';
37
+ default:
38
+ return 'xl';
39
+ }
40
+ }));
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" }, properties: { "class.desktopmode": "this._desktopmode" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (mo$ | async; as mo) { @if (mo.IsLogging) {\r\n<bsu-mask></bsu-mask>\r\n} @if ((size$ | async) === 'sm') {\r\n<fd-layout-grid [class.mobile]=\"isMobile\">\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n <div [fdLayoutGridCol]=\"10\">\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n [class.desktopMode]=\"!(isMobile === true)\"\r\n ></bsu-ly-layout-container-of-root>\r\n </div>\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n</fd-layout-grid>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"(size$ | async)!!\">\r\n <fd-dynamic-side-content-side>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\r\n <bsu-layout-control\r\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-container> -->\r\n @if ('\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94; as layoutConfig) {\r\n <div\r\n id=\"bgLogin\"\r\n [style.backgroundImage]=\"\r\n 'url(' +\r\n (mo.Background?.FileId | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\r\n ')'\r\n \"\r\n ></div>\r\n }\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"], dependencies: [{ kind: "component", type: i1.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i2.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i2.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginFormComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], standalone: false, template: "@if (mo$ | async; as mo) { @if (mo.IsLogging) {\r\n<bsu-mask></bsu-mask>\r\n} @if ((size$ | async) === 'sm') {\r\n<fd-layout-grid [class.mobile]=\"isMobile\">\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n <div [fdLayoutGridCol]=\"10\">\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n [class.desktopMode]=\"!(isMobile === true)\"\r\n ></bsu-ly-layout-container-of-root>\r\n </div>\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n</fd-layout-grid>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"(size$ | async)!!\">\r\n <fd-dynamic-side-content-side>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\r\n <bsu-layout-control\r\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-container> -->\r\n @if ('\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94; as layoutConfig) {\r\n <div\r\n id=\"bgLogin\"\r\n [style.backgroundImage]=\"\r\n 'url(' +\r\n (mo.Background?.FileId | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\r\n ')'\r\n \"\r\n ></div>\r\n }\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"] }]
48
+ }], propDecorators: { _desktopmode: [{
49
+ type: HostBinding,
50
+ args: ['class.desktopmode']
51
+ }], onKeyEnter: [{
52
+ type: HostListener,
53
+ args: ['keydown.enter', ['$event']]
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbG9naW4tZm9ybS9sb2dpbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQVV4RyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsaUJBQWlCO0lBUnpEOztRQVNzQyxpQkFBWSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV0RSxlQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQVEsRUFBRTtZQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pFLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0tBMEJMO0lBdkJHLFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BGLFFBQVEsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNmLFFBQVEsVUFBVSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssR0FBRztvQkFDSixPQUFPLElBQUksQ0FBQztnQkFDaEIsS0FBSyxHQUFHO29CQUNKLE9BQU8sSUFBSSxDQUFDO2dCQUNoQjtvQkFDSSxPQUFPLElBQUksQ0FBQztZQUNwQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7K0dBakNRLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1LQUhoQixDQUFDLGdCQUFnQixDQUFDLGlEQ1ZqQyx5NERBOENBOzs0RkRqQ2Esa0JBQWtCO2tCQVI5QixTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsZ0JBQWdCLENBQUMsY0FDakIsS0FBSzs4QkFHaUIsWUFBWTtzQkFBN0MsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBRWhDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFyc2FBcGksIEZvcm1CYXNlQ29tcG9uZW50LCBGb3JtUGFuZWxTZXJ2aWNlLCBnZXREZXZpY2VJc01vYmlsZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiZGMtbG9naW4tZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sb2dpbi1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW0Zvcm1QYW5lbFNlcnZpY2VdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luRm9ybUNvbXBvbmVudCBleHRlbmRzIEZvcm1CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZGVza3RvcG1vZGUnKSBfZGVza3RvcG1vZGUgPSAhZ2V0RGV2aWNlSXNNb2JpbGUoKTtcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxyXG4gICAgb25LZXlFbnRlciA9IChfKTogdm9pZCA9PiB7XHJcbiAgICAgICAgY29uc3QgbGF5b3V0SXRlbSA9IHRoaXMuX2NvbnRyb2xVaVBpcGUudHJhbnNmb3JtKCcg2YjYsdmI2K8nLCB0aGlzLmxheW91dDk0KTtcclxuICAgICAgICBpZiAobGF5b3V0SXRlbSkge1xyXG4gICAgICAgICAgICBsYXlvdXRJdGVtLkZpZWxkVWkuZmlyZUV2ZW50KCdjbGljaycsIGxheW91dEl0ZW0uRmllbGRVaSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNpemUkOiBPYnNlcnZhYmxlPCd4bCcgfCAnbWQnIHwgJ3NtJz47XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKHBhcmFtcy5jdWx0dXJlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tYWJzb2x1dGUtcGFnZS10b3AnLCAnMHB4Jyk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmxheW91dDk0JC5zdWJzY3JpYmUoKGxheW91dDk0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0OTQgPSBsYXlvdXQ5NDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNpemUkID0gdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGRldmljZVNpemUpID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZGV2aWNlU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NtJztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdtJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdtZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd4bCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKG1vJCB8IGFzeW5jOyBhcyBtbykgeyBAaWYgKG1vLklzTG9nZ2luZykge1xyXG48YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxufSBAaWYgKChzaXplJCB8IGFzeW5jKSA9PT0gJ3NtJykge1xyXG48ZmQtbGF5b3V0LWdyaWQgW2NsYXNzLm1vYmlsZV09XCJpc01vYmlsZVwiPlxyXG4gICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjFcIj48L2Rpdj5cclxuICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMFwiPlxyXG4gICAgICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XHJcbiAgICAgICAgICAgIFtjb25maWddPVwibGF5b3V0OTQkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kZXNrdG9wTW9kZV09XCIhKGlzTW9iaWxlID09PSB0cnVlKVwiXHJcbiAgICAgICAgPjwvYnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjFcIj48L2Rpdj5cclxuPC9mZC1sYXlvdXQtZ3JpZD5cclxufSBAZWxzZSB7XHJcbjxmZC1keW5hbWljLXNpZGUtY29udGVudCBbc2l6ZV09XCIoc2l6ZSQgfCBhc3luYykhIVwiPlxyXG4gICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50LXNpZGU+XHJcbiAgICAgICAgPGJzdS1seS1sYXlvdXQtY29udGFpbmVyLW9mLXJvb3RcclxuICAgICAgICAgICAgW2NvbmZpZ109XCJsYXlvdXQ5NCQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIFtpc1BhbmVsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2lzUm9vdF09XCJ0cnVlXCJcclxuICAgICAgICA+PC9ic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290PlxyXG4gICAgPC9mZC1keW5hbWljLXNpZGUtY29udGVudC1zaWRlPlxyXG4gICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50LW1haW4+XHJcbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiJ9i52qnYsyDZvtizINiy2YXbjNmG2YcnIHwgY29udHJvbFVpOiBsYXlvdXQ5NCBhcyBsYXlvdXRDb25maWdcIj5cclxuICAgICAgICA8YnN1LWxheW91dC1jb250cm9sXHJcbiAgICAgICAgICBbY2FwdGlvbl09XCIn2LnaqdizINm+2LMg2LLZhduM2YbZhydcIlxyXG4gICAgICAgICAgW2NvbmZpZ109XCJsYXlvdXRDb25maWdcIlxyXG4gICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbaW5saW5lRWRpdF09XCJ0cnVlXCJcclxuICAgICAgICA+PC9ic3UtbGF5b3V0LWNvbnRyb2w+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICBAaWYgKCfYudqp2LMg2b7YsyDYstmF24zZhtmHJyB8IGNvbnRyb2xVaTogbGF5b3V0OTQ7IGFzIGxheW91dENvbmZpZykge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgaWQ9XCJiZ0xvZ2luXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRJbWFnZV09XCJcclxuICAgICAgICAgICAgICAgICd1cmwoJyArXHJcbiAgICAgICAgICAgICAgICAobW8uQmFja2dyb3VuZD8uRmlsZUlkIHwgcGljRmllbGRTcmM6ICdQaWN0dXJlRmlsZUluZm8nOm51bGw6bGF5b3V0Q29uZmlnLkZpZWxkVWkuU2V0dGluZy5GaWVsZERlZklkKSArXHJcbiAgICAgICAgICAgICAgICAnKSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9mZC1keW5hbWljLXNpZGUtY29udGVudC1tYWluPlxyXG48L2ZkLWR5bmFtaWMtc2lkZS1jb250ZW50PlxyXG59IH1cclxuIl19
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
2
+ import { ReportBaseComponent, BarsaApi } 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/button";
6
+ import * as i3 from "@angular/common";
7
+ export class LoginSocialConncetionsComponent extends ReportBaseComponent {
8
+ constructor(_ulvMainService, _portalService, reportValuePipe) {
9
+ super(_portalService, _ulvMainService);
10
+ this._ulvMainService = _ulvMainService;
11
+ this._portalService = _portalService;
12
+ this.reportValuePipe = reportValuePipe;
13
+ this.rtl = BarsaApi.LoginFormData.IsRtl;
14
+ }
15
+ onClick(mo) {
16
+ const provider = this.reportValuePipe.transform('Name', mo, this.allColumns, true);
17
+ const returnUrl = encodeURIComponent(window.location.href);
18
+ BarsaApi.Bw.NavigateTo(`/api/openId/signin?provider=${provider}&returnUrl=${returnUrl}`);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSocialConncetionsComponent, deps: [{ token: i1.UlvMainService }, { token: i1.PortalService }, { token: i1.MoReportValuePipe }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList$ | async; track mo) {\r\n<button\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n}\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSocialConncetionsComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@for (mo of moDataList$ | async; track mo) {\r\n<button\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n}\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"] }]
26
+ }], ctorParameters: () => [{ type: i1.UlvMainService }, { type: i1.PortalService }, { type: i1.MoReportValuePipe }], propDecorators: { rtl: [{
27
+ type: HostBinding,
28
+ args: ['attr.rtl']
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc29jaWFsLWNvbm5jZXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy9sb2dpbi1zb2NpYWwtY29ubmNldGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbG9naW4tc29jaWFsLWNvbm5jZXRpb25zL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFFBQVEsRUFLWCxNQUFNLHNCQUFzQixDQUFDOzs7OztBQVE5QixNQUFNLE9BQU8sK0JBQWdDLFNBQVEsbUJBQW1CO0lBRXBFLFlBQ2MsZUFBK0IsRUFDL0IsY0FBNkIsRUFDL0IsZUFBa0M7UUFFMUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUo3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBSnJCLFFBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQU81RCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEVBQXVCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVuRixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLCtCQUErQixRQUFRLGNBQWMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDOytHQWRRLCtCQUErQjttR0FBL0IsK0JBQStCLDZJQ2pCNUMsd1pBYUE7OzRGRElhLCtCQUErQjtrQkFQM0MsU0FBUzsrQkFDSSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzsrSUFHUSxHQUFHO3NCQUEzQixXQUFXO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFJlcG9ydEJhc2VDb21wb25lbnQsXHJcbiAgICBCYXJzYUFwaSxcclxuICAgIFVsdk1haW5TZXJ2aWNlLFxyXG4gICAgTW9SZXBvcnRWYWx1ZVBpcGUsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgUG9ydGFsU2VydmljZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JkYy1sb2dpbi1zb2NpYWwtY29ubmNldGlvbnMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sb2dpbi1zb2NpYWwtY29ubmNldGlvbnMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luU29jaWFsQ29ubmNldGlvbnNDb21wb25lbnQgZXh0ZW5kcyBSZXBvcnRCYXNlQ29tcG9uZW50IHtcclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5ydGwnKSBydGwgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVwb3J0VmFsdWVQaXBlOiBNb1JlcG9ydFZhbHVlUGlwZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX3BvcnRhbFNlcnZpY2UsIF91bHZNYWluU2VydmljZSk7XHJcbiAgICB9XHJcbiAgICBvbkNsaWNrKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnJlcG9ydFZhbHVlUGlwZS50cmFuc2Zvcm0oJ05hbWUnLCBtbywgdGhpcy5hbGxDb2x1bW5zLCB0cnVlKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmV0dXJuVXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBCYXJzYUFwaS5Cdy5OYXZpZ2F0ZVRvKGAvYXBpL29wZW5JZC9zaWduaW4/cHJvdmlkZXI9JHtwcm92aWRlcn0mcmV0dXJuVXJsPSR7cmV0dXJuVXJsfWApO1xyXG4gICAgfVxyXG59XHJcbiIsIkBmb3IgKG1vIG9mIG1vRGF0YUxpc3QkIHwgYXN5bmM7IHRyYWNrIG1vKSB7XHJcbjxidXR0b25cclxuICAgIGZkLWJ1dHRvblxyXG4gICAgW2xhYmVsXT1cIidEaXNwbGF5IFRleHQnIHwgcnZhbDogbW86YWxsQ29sdW1uc1wiXHJcbiAgICBbZmRUeXBlXT1cIidGZFR5cGUnIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlXCJcclxuICAgIChjbGljayk9XCJvbkNsaWNrKG1vKVwiXHJcbj5cclxuICAgIDxpbWdcclxuICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMjhweFwiXHJcbiAgICAgICAgW3NyY109XCIoJ0xvZ28nIHwgcnZhbDogbW86YWxsQ29sdW1ucyk/LkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnR2V0UGljdHVyZUZyb21GaWxlSW5mbyc6bnVsbFwiXHJcbiAgICAvPlxyXG48L2J1dHRvbj5cclxufVxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FormPropsBaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "barsa-sap-ui";
5
+ import * as i2 from "@fundamental-ngx/core/card";
6
+ export class MasterDetailCardFormComponent extends FormPropsBaseComponent {
7
+ ngOnInit() {
8
+ super.ngOnInit();
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MasterDetailCardFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MasterDetailCardFormComponent, selector: "bdc-master-detail-card-form", usesInheritance: true, ngImport: i0, template: "<fd-card class=\"master-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n<fd-card class=\"details-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"], dependencies: [{ kind: "component", type: i1.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MasterDetailCardFormComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'bdc-master-detail-card-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card class=\"master-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n<fd-card class=\"details-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"] }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVM5RCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsc0JBQXNCO0lBQ3JFLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQzsrR0FIUSw2QkFBNkI7bUdBQTdCLDZCQUE2QiwwRkNWMUMsK09BTUE7OzRGRElhLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDSSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtUHJvcHNCYXNlQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JkYy1tYXN0ZXItZGV0YWlsLWNhcmQtZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50LmNzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFzdGVyRGV0YWlsQ2FyZEZvcm1Db21wb25lbnQgZXh0ZW5kcyBGb3JtUHJvcHNCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZkLWNhcmQgY2xhc3M9XCJtYXN0ZXItdGFiXCI+XHJcbiAgICA8YnN1LWx5LXRhYi1wYWdlIFtjb25maWddPVwibW9kZXJuVGFic1swXVwiPjwvYnN1LWx5LXRhYi1wYWdlPlxyXG48L2ZkLWNhcmQ+XHJcbjxmZC1jYXJkIGNsYXNzPVwiZGV0YWlscy10YWJcIj5cclxuICAgIDxic3UtbHktdGFiLXBhZ2UgW2NvbmZpZ109XCJtb2Rlcm5UYWJzWzFdXCI+PC9ic3UtbHktdGFiLXBhZ2U+XHJcbjwvZmQtY2FyZD5cclxuIl19
@@ -0,0 +1,238 @@
1
+ import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';
2
+ import { AudioRecordingService, BarsaApi, UploadService, VideoRecordingService } from 'barsa-novin-ray-core';
3
+ import { UiPdfViewerComponent } from 'barsa-sap-ui';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@fundamental-ngx/core/button";
7
+ import * as i3 from "@fundamental-ngx/core/card";
8
+ import * as i4 from "@fundamental-ngx/core/nested-list";
9
+ import * as i5 from "@fundamental-ngx/core/progress-indicator";
10
+ import * as i6 from "barsa-novin-ray-core";
11
+ export class MediaFileUploaderComponent extends UiPdfViewerComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.isPlaying = false;
15
+ this.displayControls = true;
16
+ this.isRecording = false;
17
+ this.audioConf = { audio: true };
18
+ this.videoConf = { video: { facingMode: 'user', width: 320 }, audio: true };
19
+ this.recordType = 'audio';
20
+ }
21
+ get video() {
22
+ return this.videoElement?.nativeElement;
23
+ }
24
+ get fileInput() {
25
+ return this.photoElement?.nativeElement;
26
+ }
27
+ ngOnInit() {
28
+ super.ngOnInit();
29
+ this._videoRecoder.recordingFailed().subscribe(() => {
30
+ this.isRecording = false;
31
+ this._cdr.detectChanges();
32
+ });
33
+ this._videoRecoder.getRecordedTime().subscribe((time) => {
34
+ this.recordedTime = time;
35
+ this._cdr.detectChanges();
36
+ });
37
+ this._videoRecoder.getStream().subscribe((stream) => {
38
+ this.videoStream = stream;
39
+ this._cdr.detectChanges();
40
+ });
41
+ this._videoRecoder.getRecordedBlob().subscribe((data) => {
42
+ this.fileBlob = data.blob;
43
+ this.fileName = data.title;
44
+ this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(data.url);
45
+ this._cdr.detectChanges();
46
+ });
47
+ this._audioRecorder.recordingFailed().subscribe(() => {
48
+ this.isRecording = false;
49
+ this._cdr.detectChanges();
50
+ });
51
+ this._audioRecorder.getRecordedTime().subscribe((time) => {
52
+ this.recordedTime = time;
53
+ this._cdr.detectChanges();
54
+ });
55
+ this._audioRecorder.getRecordedBlob().subscribe((data) => {
56
+ this.fileBlob = data.blob;
57
+ this.fileName = data.title;
58
+ this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data.blob));
59
+ this._cdr.detectChanges();
60
+ });
61
+ let glyph = '';
62
+ switch (this.recordType) {
63
+ case 'audio':
64
+ glyph = 'attachment-audio';
65
+ break;
66
+ case 'video':
67
+ glyph = 'attachment-video';
68
+ break;
69
+ default:
70
+ glyph = 'attachment-photo';
71
+ break;
72
+ }
73
+ this.glyph = glyph;
74
+ this.fileName = this.value?.FileName;
75
+ this.recordType = this.parameters?.MediaType$Caption || 'audio';
76
+ }
77
+ onDelete() {
78
+ super.onDelete();
79
+ this.onClearRecord();
80
+ }
81
+ onClearRecord() {
82
+ this.abortVideoRecording();
83
+ this.abortAudioRecording();
84
+ this.fileBlob = null;
85
+ this.valueUrl = null;
86
+ this._cdr.detectChanges();
87
+ }
88
+ onToggleRecord() {
89
+ if (this.recordType === 'audio') {
90
+ if (this.isRecording) {
91
+ this.stopAudioRecording();
92
+ }
93
+ else {
94
+ this.startAudioRecording();
95
+ }
96
+ }
97
+ else if (this.recordType === 'video') {
98
+ this.video.hidden = false;
99
+ if (this.isRecording) {
100
+ this.stopVideoRecording();
101
+ }
102
+ else {
103
+ this.startVideoRecording();
104
+ }
105
+ }
106
+ else if (this.recordType === 'photo') {
107
+ }
108
+ }
109
+ onTakePhoto() {
110
+ if (this.fileInput?.files?.length) {
111
+ const file = this.fileInput.files.item(0);
112
+ if (file) {
113
+ this.fileName = file.name;
114
+ this._uploadFile([file]).subscribe();
115
+ }
116
+ }
117
+ }
118
+ onUpload() {
119
+ const videoFile = new File([this.fileBlob], this.fileName);
120
+ this._uploadFile([videoFile]).subscribe();
121
+ }
122
+ startVideoRecording() {
123
+ if (!this.isRecording) {
124
+ this.video.controls = false;
125
+ this.isRecording = true;
126
+ this._videoRecoder
127
+ .startRecording(this.videoConf)
128
+ .then((stream) => {
129
+ // this.video.src = window.URL.createObjectURL(stream);
130
+ this.video.srcObject = stream;
131
+ this.video.play();
132
+ })
133
+ .catch(function (err) {
134
+ console.log(err.name + ': ' + err.message);
135
+ });
136
+ }
137
+ }
138
+ abortVideoRecording() {
139
+ if (this.isRecording && this.recordType === 'video') {
140
+ this.isRecording = false;
141
+ this._videoRecoder.abortRecording();
142
+ }
143
+ if (this.video) {
144
+ const video = this.video;
145
+ video.controls = false;
146
+ video.hidden = true;
147
+ }
148
+ }
149
+ stopVideoRecording() {
150
+ if (this.isRecording && this.recordType === 'video') {
151
+ this._videoRecoder.stopRecording();
152
+ const video = this.video;
153
+ video.srcObject = this.valueUrl;
154
+ video.controls = true;
155
+ this.isRecording = false;
156
+ }
157
+ }
158
+ clearVideoRecordedData() {
159
+ this.valueUrl = null;
160
+ const video = this.video;
161
+ video.srcObject = null;
162
+ video.controls = false;
163
+ this._cdr.detectChanges();
164
+ }
165
+ downloadVideoRecordedData() {
166
+ this._downloadFile(this.fileBlob, 'video/mp4', this.fileName);
167
+ }
168
+ startAudioRecording() {
169
+ if (!this.isRecording) {
170
+ this.isRecording = true;
171
+ this._audioRecorder.startRecording();
172
+ }
173
+ }
174
+ abortAudioRecording() {
175
+ if (this.isRecording && this.recordType === 'audio') {
176
+ this.isRecording = false;
177
+ this._audioRecorder.abortRecording();
178
+ }
179
+ }
180
+ stopAudioRecording() {
181
+ if (this.isRecording && this.recordType === 'audio') {
182
+ this._audioRecorder.stopRecording();
183
+ this.isRecording = false;
184
+ }
185
+ }
186
+ clearAudioRecordedData() {
187
+ this.valueUrl = null;
188
+ }
189
+ downloadAudioRecordedData() {
190
+ this._downloadFile(this.fileBlob, 'audio/mp3', this.fileName);
191
+ }
192
+ ngOnDestroy() {
193
+ this.abortAudioRecording();
194
+ }
195
+ _downloadFile(data, type, filename) {
196
+ const blob = new Blob([data], { type });
197
+ const url = window.URL.createObjectURL(blob);
198
+ // this.video.srcObject = stream;
199
+ // const url = data;
200
+ const anchor = document.createElement('a');
201
+ anchor.download = filename;
202
+ anchor.href = url;
203
+ document.body.appendChild(anchor);
204
+ anchor.click();
205
+ document.body.removeChild(anchor);
206
+ }
207
+ _downloadFileIdCompleted(response) {
208
+ super._downloadFileIdCompleted(response);
209
+ if (this.valueUrl) {
210
+ if (this.recordType === 'video') {
211
+ this.video.controls = true;
212
+ }
213
+ }
214
+ }
215
+ _refresh(_) {
216
+ if (BarsaApi.Ext.isEmpty(this.value)) {
217
+ return;
218
+ }
219
+ const fileId = this.value.Id;
220
+ this.DownloadFileId(fileId, true, '', null, false);
221
+ }
222
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaFileUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
223
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MediaFileUploaderComponent, selector: "bdc-media-file-uploader", providers: [AudioRecordingService, VideoRecordingService, UploadService], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true }, { propertyName: "photoElement", first: true, predicate: ["photoElement"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["container"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </div>\r\n @if (recordType === 'video') {\r\n <video #videoElement [class.video-novalue]=\"!valueUrl\">\r\n @if (!isRecording && valueUrl) {\r\n <source [src]=\"valueUrl\" />\r\n } @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </video>\r\n } @if (!isRecording && valueUrl && recordType === 'audio') {\r\n <audio controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n } @if (recordType === 'photo') {\r\n <input\r\n #photoElement\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n }\r\n </div>\r\n @if (isRecording || valueUrl) {\r\n <div class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n } @if (uploadingState$ | async; as uploadingState) { @if (uploadingState.state === 'Uploading') {\r\n <div class=\"progress\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n } }\r\n <div class=\"btn-wrapper\">\r\n @if (!value && !valueUrl) {\r\n <button\r\n class=\"btn-record\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n } @if (!value && valueUrl) {\r\n <div class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n } @if (value) {\r\n <div class=\"btn-toolbar\">\r\n @if (value) {\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n } @if (value) {\r\n <button fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i4.NestedListIconComponent, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["role"] }, { kind: "component", type: i5.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
224
+ }
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaFileUploaderComponent, decorators: [{
226
+ type: Component,
227
+ args: [{ selector: 'bdc-media-file-uploader', changeDetection: ChangeDetectionStrategy.OnPush, providers: [AudioRecordingService, VideoRecordingService, UploadService], standalone: false, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </div>\r\n @if (recordType === 'video') {\r\n <video #videoElement [class.video-novalue]=\"!valueUrl\">\r\n @if (!isRecording && valueUrl) {\r\n <source [src]=\"valueUrl\" />\r\n } @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </video>\r\n } @if (!isRecording && valueUrl && recordType === 'audio') {\r\n <audio controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n } @if (recordType === 'photo') {\r\n <input\r\n #photoElement\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n }\r\n </div>\r\n @if (isRecording || valueUrl) {\r\n <div class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n } @if (uploadingState$ | async; as uploadingState) { @if (uploadingState.state === 'Uploading') {\r\n <div class=\"progress\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n } }\r\n <div class=\"btn-wrapper\">\r\n @if (!value && !valueUrl) {\r\n <button\r\n class=\"btn-record\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n } @if (!value && valueUrl) {\r\n <div class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n } @if (value) {\r\n <div class=\"btn-toolbar\">\r\n @if (value) {\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n } @if (value) {\r\n <button fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"] }]
228
+ }], propDecorators: { videoElement: [{
229
+ type: ViewChild,
230
+ args: ['videoElement']
231
+ }], photoElement: [{
232
+ type: ViewChild,
233
+ args: ['photoElement']
234
+ }], dialogContainer: [{
235
+ type: ViewChild,
236
+ args: ['container', { read: TemplateRef }]
237
+ }] } });
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9tZWRpYS1maWxlLXVwbG9hZGVyL21lZGlhLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbWVkaWEtZmlsZS11cGxvYWRlci9tZWRpYS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFVcEQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG9CQUFvQjtJQVJwRTs7UUFjSSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBTXBCLGNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFdkUsZUFBVSxHQUFHLE9BQU8sQ0FBQztLQXlOeEI7SUF2TkcsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztJQUM1QyxD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LE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDOytHQXpPUSwwQkFBMEI7bUdBQTFCLDBCQUEwQixrREFIeEIsQ0FBQyxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLENBQUMsaVRBTXhDLFdBQVcsb0RDZi9DLHN6R0EwRUE7OzRGRDlEYSwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxDQUFDLGNBQzVELEtBQUs7OEJBR1UsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNFLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFekIsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXVkaW9SZWNvcmRpbmdTZXJ2aWNlLCBCYXJzYUFwaSwgVXBsb2FkU2VydmljZSwgVmlkZW9SZWNvcmRpbmdTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBVaVBkZlZpZXdlckNvbXBvbmVudCB9IGZyb20gJ2JhcnNhLXNhcC11aSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmRjLW1lZGlhLWZpbGUtdXBsb2FkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVkaWEtZmlsZS11cGxvYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtBdWRpb1JlY29yZGluZ1NlcnZpY2UsIFZpZGVvUmVjb3JkaW5nU2VydmljZSwgVXBsb2FkU2VydmljZV0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVkaWFGaWxlVXBsb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBVaVBkZlZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCd2aWRlb0VsZW1lbnQnKSB2aWRlb0VsZW1lbnQ6IGFueTtcclxuICAgIEBWaWV3Q2hpbGQoJ3Bob3RvRWxlbWVudCcpIHBob3RvRWxlbWVudDogYW55O1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gICAgZGlhbG9nQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgZGlzcGxheUNvbnRyb2xzID0gdHJ1ZTtcclxuICAgIGlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICByZWNvcmRlZFRpbWU7XHJcbiAgICBmaWxlQmxvYjtcclxuICAgIGZpbGVOYW1lO1xyXG4gICAgYXVkaW9TdHJlYW07XHJcbiAgICB2aWRlb1N0cmVhbTogTWVkaWFTdHJlYW07XHJcbiAgICBhdWRpb0NvbmYgPSB7IGF1ZGlvOiB0cnVlIH07XHJcbiAgICB2aWRlb0NvbmYgPSB7IHZpZGVvOiB7IGZhY2luZ01vZGU6ICd1c2VyJywgd2lkdGg6IDMyMCB9LCBhdWRpbzogdHJ1ZSB9O1xyXG4gICAgZ2x5cGg6IHN0cmluZztcclxuICAgIHJlY29yZFR5cGUgPSAnYXVkaW8nO1xyXG5cclxuICAgIGdldCB2aWRlbygpOiBIVE1MTWVkaWFFbGVtZW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52aWRlb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICBnZXQgZmlsZUlucHV0KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBob3RvRWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5fdmlkZW9SZWNvZGVyLnJlY29yZGluZ0ZhaWxlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fdmlkZW9SZWNvZGVyLmdldFJlY29yZGVkVGltZSgpLnN1YnNjcmliZSgodGltZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlY29yZGVkVGltZSA9IHRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3ZpZGVvUmVjb2Rlci5nZXRTdHJlYW0oKS5zdWJzY3JpYmUoKHN0cmVhbSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnZpZGVvU3RyZWFtID0gc3RyZWFtO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl92aWRlb1JlY29kZXIuZ2V0UmVjb3JkZWRCbG9iKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUJsb2IgPSBkYXRhLmJsb2I7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgPSBkYXRhLnRpdGxlO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlVXJsID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoZGF0YS51cmwpO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9hdWRpb1JlY29yZGVyLnJlY29yZGluZ0ZhaWxlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fYXVkaW9SZWNvcmRlci5nZXRSZWNvcmRlZFRpbWUoKS5zdWJzY3JpYmUoKHRpbWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWNvcmRlZFRpbWUgPSB0aW1lO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9hdWRpb1JlY29yZGVyLmdldFJlY29yZGVkQmxvYigpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVCbG9iID0gZGF0YS5ibG9iO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gZGF0YS50aXRsZTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZVVybCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwoZGF0YS5ibG9iKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGV0IGdseXBoID0gJyc7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnJlY29yZFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnYXVkaW8nOlxyXG4gICAgICAgICAgICAgICAgZ2x5cGggPSAnYXR0YWNobWVudC1hdWRpbyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAndmlkZW8nOlxyXG4gICAgICAgICAgICAgICAgZ2x5cGggPSAnYXR0YWNobWVudC12aWRlbyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGdseXBoID0gJ2F0dGFjaG1lbnQtcGhvdG8nO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2x5cGggPSBnbHlwaDtcclxuICAgICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy52YWx1ZT8uRmlsZU5hbWU7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRUeXBlID0gdGhpcy5wYXJhbWV0ZXJzPy5NZWRpYVR5cGUkQ2FwdGlvbiB8fCAnYXVkaW8nO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGVsZXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm9uRGVsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5vbkNsZWFyUmVjb3JkKCk7XHJcbiAgICB9XHJcbiAgICBvbkNsZWFyUmVjb3JkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWJvcnRWaWRlb1JlY29yZGluZygpO1xyXG4gICAgICAgIHRoaXMuYWJvcnRBdWRpb1JlY29yZGluZygpO1xyXG4gICAgICAgIHRoaXMuZmlsZUJsb2IgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWVVcmwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBvblRvZ2dsZVJlY29yZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5yZWNvcmRUeXBlID09PSAnYXVkaW8nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBdWRpb1JlY29yZGluZygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydEF1ZGlvUmVjb3JkaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjb3JkVHlwZSA9PT0gJ3ZpZGVvJykge1xyXG4gICAgICAgICAgICB0aGlzLnZpZGVvLmhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlY29yZGluZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVmlkZW9SZWNvcmRpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWaWRlb1JlY29yZGluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlY29yZFR5cGUgPT09ICdwaG90bycpIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvblRha2VQaG90bygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQ/LmZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZmlsZUlucHV0LmZpbGVzLml0ZW0oMCk7XHJcbiAgICAgICAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShbZmlsZV0pLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25VcGxvYWQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdmlkZW9GaWxlOiBGaWxlID0gbmV3IEZpbGUoW3RoaXMuZmlsZUJsb2JdLCB0aGlzLmZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKFt2aWRlb0ZpbGVdKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHN0YXJ0VmlkZW9SZWNvcmRpbmcoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVjb3JkaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlkZW8uY29udHJvbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvUmVjb2RlclxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0UmVjb3JkaW5nKHRoaXMudmlkZW9Db25mKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudmlkZW8uc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZGVvLnBsYXkoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVyci5uYW1lICsgJzogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhYm9ydFZpZGVvUmVjb3JkaW5nKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nICYmIHRoaXMucmVjb3JkVHlwZSA9PT0gJ3ZpZGVvJykge1xyXG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvUmVjb2Rlci5hYm9ydFJlY29yZGluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy52aWRlbykge1xyXG4gICAgICAgICAgICBjb25zdCB2aWRlbyA9IHRoaXMudmlkZW87XHJcbiAgICAgICAgICAgIHZpZGVvLmNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHZpZGVvLmhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0b3BWaWRlb1JlY29yZGluZygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc1JlY29yZGluZyAmJiB0aGlzLnJlY29yZFR5cGUgPT09ICd2aWRlbycpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmlkZW9SZWNvZGVyLnN0b3BSZWNvcmRpbmcoKTtcclxuICAgICAgICAgICAgY29uc3QgdmlkZW86IGFueSA9IHRoaXMudmlkZW87XHJcbiAgICAgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IHRoaXMudmFsdWVVcmw7XHJcbiAgICAgICAgICAgIHZpZGVvLmNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhclZpZGVvUmVjb3JkZWREYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWVVcmwgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IHZpZGVvID0gdGhpcy52aWRlbztcclxuICAgICAgICB2aWRlby5zcmNPYmplY3QgPSBudWxsO1xyXG4gICAgICAgIHZpZGVvLmNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZFZpZGVvUmVjb3JkZWREYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSh0aGlzLmZpbGVCbG9iLCAndmlkZW8vbXA0JywgdGhpcy5maWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRBdWRpb1JlY29yZGluZygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNSZWNvcmRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2F1ZGlvUmVjb3JkZXIuc3RhcnRSZWNvcmRpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWJvcnRBdWRpb1JlY29yZGluZygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc1JlY29yZGluZyAmJiB0aGlzLnJlY29yZFR5cGUgPT09ICdhdWRpbycpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9hdWRpb1JlY29yZGVyLmFib3J0UmVjb3JkaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0b3BBdWRpb1JlY29yZGluZygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc1JlY29yZGluZyAmJiB0aGlzLnJlY29yZFR5cGUgPT09ICdhdWRpbycpIHtcclxuICAgICAgICAgICAgdGhpcy5fYXVkaW9SZWNvcmRlci5zdG9wUmVjb3JkaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJBdWRpb1JlY29yZGVkRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlVXJsID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZEF1ZGlvUmVjb3JkZWREYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSh0aGlzLmZpbGVCbG9iLCAnYXVkaW8vbXAzJywgdGhpcy5maWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hYm9ydEF1ZGlvUmVjb3JkaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2Rvd25sb2FkRmlsZShkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtkYXRhXSwgeyB0eXBlIH0pO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIC8vIHRoaXMudmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtO1xyXG4gICAgICAgIC8vIGNvbnN0IHVybCA9IGRhdGE7XHJcbiAgICAgICAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIGFuY2hvci5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gICAgICAgIGFuY2hvci5ocmVmID0gdXJsO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYW5jaG9yKTtcclxuICAgICAgICBhbmNob3IuY2xpY2soKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFuY2hvcik7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZVVybCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNvcmRUeXBlID09PSAndmlkZW8nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvLmNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVmcmVzaChfPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZpbGVJZCA9IHRoaXMudmFsdWUuSWQ7XHJcbiAgICAgICAgdGhpcy5Eb3dubG9hZEZpbGVJZChmaWxlSWQsIHRydWUsICcnLCBudWxsLCBmYWxzZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZkLWNhcmQgY2xhc3M9XCJ1cGxvYWRcIiBbbmdDbGFzc109XCJyZWNvcmRUeXBlXCI+XHJcbiAgICA8ZmQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmlsZS1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBbY2xhc3Mubm8tcmVjb3JkaW5nXT1cIiFpc1JlY29yZGluZyAmJiB2YWx1ZVVybFwiIFtuZ0NsYXNzXT1cInJlY29yZFR5cGVcIiBjbGFzcz1cIm1lZGlhLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoIXZhbHVlICYmICF2YWx1ZVVybCAmJiAhaXNSZWNvcmRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDxpIHN0eWxlPVwibGVmdDogNDUlOyBwb3NpdGlvbjogYWJzb2x1dGVcIiBmZC1uZXN0ZWQtbGlzdC1pY29uIFtnbHlwaF09XCJnbHlwaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIEBpZiAocmVjb3JkVHlwZSA9PT0gJ3ZpZGVvJykge1xyXG4gICAgICAgICAgICA8dmlkZW8gI3ZpZGVvRWxlbWVudCBbY2xhc3MudmlkZW8tbm92YWx1ZV09XCIhdmFsdWVVcmxcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoIWlzUmVjb3JkaW5nICYmIHZhbHVlVXJsKSB7XHJcbiAgICAgICAgICAgICAgICA8c291cmNlIFtzcmNdPVwidmFsdWVVcmxcIiAvPlxyXG4gICAgICAgICAgICAgICAgfSBAaWYgKCF2YWx1ZSAmJiAhdmFsdWVVcmwgJiYgIWlzUmVjb3JkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBzdHlsZT1cImxlZnQ6IDQ1JTsgcG9zaXRpb246IGFic29sdXRlXCIgZmQtbmVzdGVkLWxpc3QtaWNvbiBbZ2x5cGhdPVwiZ2x5cGhcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdmlkZW8+XHJcbiAgICAgICAgICAgIH0gQGlmICghaXNSZWNvcmRpbmcgJiYgdmFsdWVVcmwgJiYgcmVjb3JkVHlwZSA9PT0gJ2F1ZGlvJykge1xyXG4gICAgICAgICAgICA8YXVkaW8gY29udHJvbHM+XHJcbiAgICAgICAgICAgICAgICA8c291cmNlIFtzcmNdPVwidmFsdWVVcmxcIiB0eXBlPVwiYXVkaW8vbXAzXCIgLz5cclxuICAgICAgICAgICAgPC9hdWRpbz5cclxuICAgICAgICAgICAgfSBAaWYgKHJlY29yZFR5cGUgPT09ICdwaG90bycpIHtcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAjcGhvdG9FbGVtZW50XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiZmlsZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRha2VQaG90bygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZiAoaXNSZWNvcmRpbmcgfHwgdmFsdWVVcmwpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWEtaW5mb1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAge3sgIWlzUmVjb3JkaW5nID8gJycgOiAoJ1JlY29yZGluZycgfCBiYmJUcmFuc2xhdGUpIH19IDxzdHJvbmc+e3sgcmVjb3JkZWRUaW1lIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2Pnt7IGZpbGVOYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfSBAaWYgKHVwbG9hZGluZ1N0YXRlJCB8IGFzeW5jOyBhcyB1cGxvYWRpbmdTdGF0ZSkgeyBAaWYgKHVwbG9hZGluZ1N0YXRlLnN0YXRlID09PSAnVXBsb2FkaW5nJykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGZkLXByb2dyZXNzLWluZGljYXRvclxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiaW5mb3JtYXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZU5vd109XCJ1cGxvYWRpbmdTdGF0ZT8ucHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgPjwvZmQtcHJvZ3Jlc3MtaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9IH1cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgQGlmICghdmFsdWUgJiYgIXZhbHVlVXJsKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLXJlY29yZFwiXHJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJpc1JlY29yZGluZyA/ICdzdG9wJyA6ICdyZWNvcmQnXCJcclxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiaXNSZWNvcmRpbmcgPyAnYXR0ZW50aW9uJyA6ICdnaG9zdCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlUmVjb3JkKClcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgIH0gQGlmICghdmFsdWUgJiYgdmFsdWVVcmwpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbZ2x5cGhdPVwiJ2RlbGV0ZSdcIiBmZFR5cGU9XCJuZWdhdGl2ZVwiIChjbGljayk9XCJvbkNsZWFyUmVjb3JkKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtsYWJlbF09XCInVXBsb2FkJyB8IGJiYlRyYW5zbGF0ZVwiIFtnbHlwaF09XCIndXBsb2FkJ1wiIChjbGljayk9XCJvblVwbG9hZCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9IEBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbZ2x5cGhdPVwiJ2RlbGV0ZSdcIiBmZFR5cGU9XCJuZWdhdGl2ZVwiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9IEBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtnbHlwaF09XCInZG93bmxvYWQnXCIgZmRUeXBlPVwic3RhbmRhcmRcIiAoY2xpY2spPVwib25Eb3dubG9hZCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2ZkLWNhcmQtY29udGVudD5cclxuPC9mZC1jYXJkPlxyXG4iXX0=