@villedemontreal/angular-ui 15.3.3 → 16.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/{esm2020 → esm2022}/lib/alert/alert.component.mjs +17 -17
  2. package/{esm2020 → esm2022}/lib/alert/index.mjs +2 -2
  3. package/{esm2020 → esm2022}/lib/alert/module.mjs +14 -14
  4. package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +8 -8
  5. package/{esm2020 → esm2022}/lib/avatar/index.mjs +2 -2
  6. package/{esm2020 → esm2022}/lib/avatar/module.mjs +6 -6
  7. package/{esm2020 → esm2022}/lib/badge/badge.component.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/badge/index.mjs +2 -2
  9. package/{esm2020 → esm2022}/lib/badge/module.mjs +6 -6
  10. package/{esm2020 → esm2022}/lib/bao.module.mjs +58 -58
  11. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +5 -5
  12. package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +2 -2
  13. package/{esm2020 → esm2022}/lib/breadcrumb/module.mjs +6 -6
  14. package/esm2022/lib/button/button.component.mjs +100 -0
  15. package/{esm2020 → esm2022}/lib/button/index.mjs +2 -2
  16. package/{esm2020 → esm2022}/lib/button/module.mjs +6 -6
  17. package/{esm2020 → esm2022}/lib/card/card.component.mjs +17 -17
  18. package/{esm2020 → esm2022}/lib/card/index.mjs +2 -2
  19. package/{esm2020 → esm2022}/lib/card/module.mjs +14 -14
  20. package/{esm2020 → esm2022}/lib/checkbox/checkbox-group.component.mjs +5 -5
  21. package/esm2022/lib/checkbox/checkbox.component.mjs +304 -0
  22. package/{esm2020 → esm2022}/lib/checkbox/index.mjs +2 -2
  23. package/{esm2020 → esm2022}/lib/checkbox/module.mjs +10 -10
  24. package/{esm2020 → esm2022}/lib/common-components/error-text/errorText.component.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/common-components/guiding-text/guidingText.component.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/common-components/index.mjs +2 -2
  27. package/{esm2020 → esm2022}/lib/common-components/label-text/labelText.component.mjs +5 -5
  28. package/{esm2020 → esm2022}/lib/common-components/module.mjs +12 -12
  29. package/{esm2020 → esm2022}/lib/common-components/title-text/titleText.component.mjs +5 -5
  30. package/{esm2020 → esm2022}/lib/core/breakpoints.mjs +2 -2
  31. package/{esm2020 → esm2022}/lib/core/colors.mjs +1 -1
  32. package/{esm2020 → esm2022}/lib/core/index.mjs +2 -2
  33. package/{esm2020 → esm2022}/lib/dropdown-menu/dropdown-menu.component.mjs +23 -23
  34. package/{esm2020 → esm2022}/lib/dropdown-menu/index.mjs +2 -2
  35. package/{esm2020 → esm2022}/lib/dropdown-menu/module.mjs +18 -18
  36. package/esm2022/lib/file/file-input.component.mjs +319 -0
  37. package/{esm2020 → esm2022}/lib/file/file-intl.mjs +8 -8
  38. package/{esm2020 → esm2022}/lib/file/file-preview.component.mjs +5 -5
  39. package/{esm2020 → esm2022}/lib/file/index.mjs +2 -2
  40. package/{esm2020 → esm2022}/lib/file/module.mjs +20 -20
  41. package/{esm2020 → esm2022}/lib/header-info/header-info.component.mjs +20 -20
  42. package/{esm2020 → esm2022}/lib/header-info/index.mjs +2 -2
  43. package/{esm2020 → esm2022}/lib/header-info/module.mjs +16 -16
  44. package/{esm2020 → esm2022}/lib/hyperlink/hyperlink.component.mjs +5 -5
  45. package/{esm2020 → esm2022}/lib/hyperlink/index.mjs +2 -2
  46. package/{esm2020 → esm2022}/lib/hyperlink/module.mjs +6 -6
  47. package/{esm2020 → esm2022}/lib/icon/bao-icon-registry.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
  49. package/{esm2020 → esm2022}/lib/icon/icons-dictionary.mjs +2 -2
  50. package/{esm2020 → esm2022}/lib/icon/index.mjs +2 -2
  51. package/{esm2020 → esm2022}/lib/icon/module.mjs +6 -6
  52. package/{esm2020 → esm2022}/lib/list/index.mjs +2 -2
  53. package/{esm2020 → esm2022}/lib/list/list.component.mjs +17 -17
  54. package/{esm2020 → esm2022}/lib/list/module.mjs +14 -14
  55. package/{esm2020 → esm2022}/lib/modal/index.mjs +2 -2
  56. package/{esm2020 → esm2022}/lib/modal/modal-config.mjs +2 -2
  57. package/{esm2020 → esm2022}/lib/modal/modal-container.mjs +7 -7
  58. package/{esm2020 → esm2022}/lib/modal/modal-directives.mjs +5 -5
  59. package/{esm2020 → esm2022}/lib/modal/modal-ref.mjs +1 -1
  60. package/{esm2020 → esm2022}/lib/modal/modal.mjs +8 -8
  61. package/{esm2020 → esm2022}/lib/modal/module.mjs +6 -6
  62. package/{esm2020 → esm2022}/lib/radio/index.mjs +2 -2
  63. package/{esm2020 → esm2022}/lib/radio/module.mjs +20 -20
  64. package/{esm2020 → esm2022}/lib/radio/radio-group.component.mjs +12 -12
  65. package/{esm2020 → esm2022}/lib/radio/radio.component.mjs +13 -13
  66. package/{esm2020 → esm2022}/lib/shared/enum/display-mode.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/shared/index.mjs +2 -2
  68. package/{esm2020 → esm2022}/lib/snack-bar/index.mjs +2 -2
  69. package/esm2022/lib/snack-bar/module.mjs +51 -0
  70. package/{esm2020 → esm2022}/lib/snack-bar/simple-snack-bar.component.mjs +5 -5
  71. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-animations.mjs +2 -2
  72. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-config.mjs +1 -1
  73. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-container.mjs +10 -5
  74. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-ref.mjs +1 -1
  75. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar.mjs +4 -4
  76. package/{esm2020 → esm2022}/lib/summary/index.mjs +2 -2
  77. package/{esm2020 → esm2022}/lib/summary/list-summary.component.mjs +8 -8
  78. package/{esm2020 → esm2022}/lib/summary/module.mjs +12 -12
  79. package/{esm2020 → esm2022}/lib/summary/summary.component.mjs +8 -8
  80. package/{esm2020 → esm2022}/lib/system-header/index.mjs +2 -2
  81. package/{esm2020 → esm2022}/lib/system-header/module.mjs +10 -10
  82. package/esm2022/lib/system-header/system-header.component.mjs +130 -0
  83. package/{esm2020 → esm2022}/lib/tabs/index.mjs +2 -2
  84. package/{esm2020 → esm2022}/lib/tabs/module.mjs +12 -12
  85. package/{esm2020 → esm2022}/lib/tabs/tabs.component.mjs +14 -14
  86. package/{esm2020 → esm2022}/lib/tag/index.mjs +2 -2
  87. package/{esm2020 → esm2022}/lib/tag/module.mjs +6 -6
  88. package/{esm2020 → esm2022}/lib/tag/tag.component.mjs +5 -5
  89. package/{esm2020 → esm2022}/public-api.mjs +2 -2
  90. package/{fesm2020 → fesm2022}/villedemontreal-angular-ui.mjs +585 -578
  91. package/fesm2022/villedemontreal-angular-ui.mjs.map +1 -0
  92. package/lib/alert/alert.component.d.ts +1 -1
  93. package/lib/avatar/avatar.component.d.ts +1 -1
  94. package/lib/badge/badge.component.d.ts +1 -1
  95. package/lib/button/button.component.d.ts +4 -4
  96. package/lib/card/card.component.d.ts +1 -1
  97. package/lib/checkbox/checkbox-group.component.d.ts +1 -1
  98. package/lib/checkbox/checkbox.component.d.ts +1 -1
  99. package/lib/common-components/label-text/labelText.component.d.ts +1 -1
  100. package/lib/dropdown-menu/dropdown-menu.component.d.ts +2 -2
  101. package/lib/file/file-input.component.d.ts +1 -1
  102. package/lib/file/file-preview.component.d.ts +1 -1
  103. package/lib/header-info/header-info.component.d.ts +1 -1
  104. package/lib/hyperlink/hyperlink.component.d.ts +1 -1
  105. package/lib/icon/icon.component.d.ts +1 -1
  106. package/lib/modal/modal-directives.d.ts +1 -1
  107. package/lib/radio/radio-group.component.d.ts +1 -1
  108. package/lib/radio/radio.component.d.ts +1 -1
  109. package/lib/summary/summary.component.d.ts +1 -1
  110. package/lib/system-header/system-header.component.d.ts +4 -3
  111. package/lib/tabs/tabs.component.d.ts +1 -1
  112. package/lib/tag/tag.component.d.ts +1 -1
  113. package/package.json +13 -19
  114. package/esm2020/lib/button/button.component.mjs +0 -100
  115. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -304
  116. package/esm2020/lib/file/file-input.component.mjs +0 -319
  117. package/esm2020/lib/snack-bar/module.mjs +0 -52
  118. package/esm2020/lib/system-header/system-header.component.mjs +0 -128
  119. package/fesm2015/villedemontreal-angular-ui.mjs +0 -6119
  120. package/fesm2015/villedemontreal-angular-ui.mjs.map +0 -1
  121. package/fesm2020/villedemontreal-angular-ui.mjs.map +0 -1
  122. /package/{esm2020 → esm2022}/villedemontreal-angular-ui.mjs +0 -0
@@ -1,319 +0,0 @@
1
- /*
2
- * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3
- * Licensed under the MIT license.
4
- * See LICENSE file in the project root for full license information.
5
- */
6
- import { Component, ContentChildren, Directive, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
7
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
- import { BaoErrorTextComponent } from '../common-components';
9
- import { BaoFilePreviewComponent } from './file-preview.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./file-intl";
12
- import * as i2 from "@angular/common";
13
- import * as i3 from "../common-components/error-text/errorText.component";
14
- import * as i4 from "../common-components/label-text/labelText.component";
15
- import * as i5 from "../button/button.component";
16
- /**
17
- * Unique number to generate a unique ID
18
- */
19
- let fileInputUniqueId = 0;
20
- let fileTextUniqueId = 0;
21
- export class BaoFileInputComponent {
22
- constructor(intl, elementRef, renderer, cdr) {
23
- this.intl = intl;
24
- this.elementRef = elementRef;
25
- this.renderer = renderer;
26
- this.cdr = cdr;
27
- /**
28
- * Size of the file input label
29
- */
30
- this.size = 'medium';
31
- /**
32
- * Maximum size accepted for uploaded files
33
- */
34
- this.maximalFileSize = -1;
35
- /**
36
- * Accepted types of files
37
- */
38
- this.acceptedMIMETypes = [];
39
- /**
40
- * Is field required
41
- */
42
- this.required = false;
43
- /**
44
- * Is field disabled
45
- */
46
- this.disabled = false;
47
- /**
48
- * File selected to be uploaded
49
- */
50
- this.uploadedFile = new EventEmitter();
51
- this.insertDefaultInstructions = false;
52
- this.isFileTooBig = false;
53
- this.isFileTypeInvalid = false;
54
- /**
55
- * Saves the registerOnChange function so the component can call it whenever it wants.
56
- */
57
- // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
58
- this.propagateChange = (_) => { };
59
- /**
60
- * Saves the registerOnTouched function so the component can call it whenever it wants.
61
- */
62
- // eslint-disable-next-line @typescript-eslint/no-empty-function
63
- this.propagateTouched = () => { };
64
- this._intlChanges = intl.changes.subscribe(() => this.cdr.markForCheck());
65
- }
66
- get nativeElement() {
67
- return this.elementRef.nativeElement;
68
- }
69
- enterKeyEvent() {
70
- if (document.activeElement.id === this.inputId) {
71
- document.getElementById(this.inputId).click();
72
- }
73
- }
74
- tabKeyEvent() {
75
- if (document.activeElement.id === this.inputId) {
76
- this.renderer.addClass(this.dropzoneElement.nativeElement, 'dropzone-focus');
77
- }
78
- }
79
- shiftTabKeyEvent() {
80
- if (document.activeElement.id === this.inputId) {
81
- this.renderer.addClass(this.dropzoneElement.nativeElement, 'dropzone-focus');
82
- }
83
- }
84
- ngAfterContentInit() {
85
- this._errorForm.changes.subscribe(() => this.setErrorTextsAttribute());
86
- if (!this.inputId) {
87
- this.inputId = `file-input-${fileInputUniqueId++}`;
88
- }
89
- // If no content was added for dropzone instructions, add default text.
90
- const dropzoneElement = Array.from(this.nativeElement.children).find((el) => el.className === 'file-drop-zone');
91
- if (!Array.from(dropzoneElement.children).find(el => el.localName === 'bao-file-dropzone-instructions')) {
92
- this.insertDefaultInstructions = true;
93
- }
94
- this.setDescribedByAttribute();
95
- this._files.changes.subscribe((files) => {
96
- const filesList = files.map((el) => el.file);
97
- this.setValue(filesList);
98
- });
99
- }
100
- ngAfterViewInit() {
101
- this._errorTexts.changes.subscribe(() => this.setErrorTextsAttribute());
102
- }
103
- ngOnDestroy() {
104
- this._intlChanges.unsubscribe();
105
- }
106
- /**
107
- * Implements ControlValueAccessor interface
108
- */
109
- writeValue(obj) {
110
- this._value = obj;
111
- }
112
- /**
113
- * Implements ControlValueAccessor interface
114
- */
115
- registerOnChange(fn) {
116
- this.propagateChange = fn;
117
- }
118
- /**
119
- * Implements ControlValueAccessor interface
120
- */
121
- registerOnTouched(fn) {
122
- this.propagateTouched = fn;
123
- }
124
- /**
125
- * Implements ControlValueAccessor interface
126
- */
127
- setDisabledState(isDisabled) {
128
- this.disabled = isDisabled;
129
- }
130
- uploadFile(file) {
131
- if (!this.disabled) {
132
- this.isFileTypeInvalid = false;
133
- this.isFileTooBig = false;
134
- this.uploader.nativeElement.value = '';
135
- if (this.maximalFileSize > 0 && file.size > this.maximalFileSize) {
136
- this.isFileTooBig = true;
137
- }
138
- if (this.acceptedMIMETypes.length > 0 &&
139
- this.acceptedMIMETypes.indexOf(file.type) < 0) {
140
- this.isFileTypeInvalid = true;
141
- }
142
- if (!this.isFileTooBig && !this.isFileTypeInvalid) {
143
- this.uploadedFile.emit(file);
144
- }
145
- }
146
- }
147
- setValue(value) {
148
- this._value = value;
149
- this.propagateChange(this._value);
150
- this.propagateTouched();
151
- }
152
- setDescribedByAttribute() {
153
- const helperText = Array.from(this.nativeElement.children).find((el) => el.localName === 'bao-guiding-text');
154
- if (helperText) {
155
- this._helperTextId = `bao-guiding-text-${fileTextUniqueId++}`;
156
- this.renderer.setAttribute(helperText.firstElementChild, 'id', this._helperTextId);
157
- const inputElement = Array.from(this.nativeElement.children)
158
- .find((el) => el.className == 'file-drop-zone')
159
- .children.item(1);
160
- this.renderer.setAttribute(inputElement, 'aria-describedby', this._helperTextId);
161
- }
162
- }
163
- setErrorTextsAttribute() {
164
- const textsIds = [];
165
- const errors = Array.from(this.nativeElement.children).filter((el) => el.localName == 'bao-error');
166
- errors.forEach((errorText) => {
167
- const errorTextId = `bao-error-${fileTextUniqueId++}`;
168
- this.renderer.setAttribute(errorText.firstElementChild, 'id', errorTextId);
169
- textsIds.push(errorTextId);
170
- });
171
- const inputElement = Array.from(this.nativeElement.children)
172
- .find((el) => el.classList.contains('file-drop-zone'))
173
- .children.item(1);
174
- if (this._helperTextId) {
175
- textsIds.unshift(this._helperTextId);
176
- }
177
- this.renderer.setAttribute(inputElement, 'aria-describedby', textsIds.join(' '));
178
- }
179
- }
180
- BaoFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoFileInputComponent, deps: [{ token: i1.BaoFileIntl }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
181
- BaoFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: BaoFileInputComponent, selector: "bao-file-input, [bao-file-input]", inputs: { inputId: ["id", "inputId"], label: "label", size: "size", maximalFileSize: "maximalFileSize", acceptedMIMETypes: "acceptedMIMETypes", required: "required", disabled: "disabled" }, outputs: { uploadedFile: "uploadedFile" }, host: { listeners: { "window:keyup.enter": "enterKeyEvent()", "window:keyup.tab": "tabKeyEvent()", "window:keyup.shift.tab": "shiftTabKeyEvent()" }, properties: { "class.bao-file-label-small": "size === \"small\"", "class.bao-file-label-medium": "size === \"medium\"", "class.bao-file-input-disabled": "disabled" }, classAttribute: "bao-file-input" }, providers: [
182
- {
183
- provide: NG_VALUE_ACCESSOR,
184
- // tslint:disable-next-line:no-forward-ref
185
- useExisting: forwardRef(() => BaoFileInputComponent),
186
- multi: true
187
- }
188
- ], queries: [{ propertyName: "_files", predicate: BaoFilePreviewComponent, descendants: true }, { propertyName: "_errorForm", predicate: BaoErrorTextComponent, descendants: true }], viewQueries: [{ propertyName: "uploader", first: true, predicate: ["uploader"], descendants: true }, { propertyName: "dropzoneElement", first: true, predicate: ["dropzone"], descendants: true }, { propertyName: "_errorTexts", predicate: BaoErrorTextComponent, descendants: true }], ngImport: i0, template: "<label bao-label [required]=\"required\" [for]=\"inputId\">{{ label }}</label>\n<ng-content select=\"bao-guiding-text\"></ng-content>\n<div\n baoFileDrop\n class=\"file-drop-zone\"\n (fileDrop)=\"uploadFile($event)\"\n #dropzone\n>\n <button\n bao-button\n type=\"button\"\n displayType=\"utility\"\n level=\"secondary\"\n [disabled]=\"disabled\"\n (click)=\"uploader.click()\"\n aria-hidden=\"true\"\n tabIndex=\"-1\"\n >\n {{ intl.dropzoneButtonLabel }}\n </button>\n <input\n [id]=\"inputId\"\n type=\"file\"\n class=\"sr-only\"\n [disabled]=\"disabled\"\n (change)=\"uploadFile($event.target.files[0])\"\n #uploader\n />\n <ng-container\n ><div #ref>\n <ng-content select=\"bao-file-dropzone-instructions\"></ng-content></div\n ></ng-container>\n <ng-container *ngIf=\"ref.childNodes.length === 0\"\n ><bao-file-dropzone-instructions>{{\n intl.defaultDropzoneInstructions\n }}</bao-file-dropzone-instructions></ng-container\n >\n</div>\n<bao-error *ngIf=\"isFileTooBig\">\n {{ intl.fileTooBigErrorMessage }}\n</bao-error>\n<bao-error *ngIf=\"isFileTypeInvalid\">\n {{ intl.invalidFileTypeErrorMessage }}\n</bao-error>\n<ng-content select=\"bao-error\"></ng-content>\n<ng-content></ng-content>\n", styles: ["bao-file-input{width:100%;display:inline-flex;flex-direction:column}bao-file-input>ul{padding:0;margin:0}bao-file-input .bao-label>span{font-size:inherit;font-weight:inherit}bao-file-input.bao-file-label-small label{font-weight:700;font-size:.875rem;line-height:1.25rem}bao-file-input.bao-file-label-medium label{font-weight:700;font-size:1rem;line-height:1.5rem}bao-file-input .bao-guiding-text{margin-bottom:.5rem}bao-file-input .file-drop-zone{padding:.5rem;background-color:#fff;border-radius:.25rem;border-style:dashed;border-color:#ced4da;border-width:1px;display:inline-flex;align-items:center}bao-file-input .file-drop-zone:focus-within.dropzone-focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#eefaf8}bao-file-input .file-drop-zone>.bao-button{margin-right:.5rem}bao-file-input .file-drop-zone.drag-over{background-color:#eefaf8;border-color:#097d6c;cursor:drag}bao-file-input .file-drop-zone.drag-over>.bao-button{background-color:#eefaf8}bao-file-input.bao-file-input-disabled .file-drop-zone{background-color:#f8f9fa;border-color:#ced4da}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button{background-color:#f8f9fa}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button:hover{background-color:#f8f9fa}bao-file-input .bao-file-preview:first-child{margin-top:1rem}bao-file-input .bao-error{margin-top:.5rem}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return i3.BaoErrorTextComponent; }), selector: "bao-error, [bao-error]" }, { kind: "component", type: i0.forwardRef(function () { return i4.BaoLabelTextComponent; }), selector: "bao-label, [bao-label]", inputs: ["required"] }, { kind: "component", type: i0.forwardRef(function () { return i5.BaoButtonComponent; }), selector: "button[bao-button]", inputs: ["displayType", "level", "size", "loading", "reversed", "loadingSpinnerAriaLabel", "fullWidth"] }, { kind: "directive", type: i0.forwardRef(function () { return BaoFileDropzoneIntructions; }), selector: "bao-file-dropzone-instructions, [bao-file-dropzone-instructions]" }, { kind: "directive", type: i0.forwardRef(function () { return BaoFileDropDirective; }), selector: "[baoFileDrop]", outputs: ["fileDrop"] }], encapsulation: i0.ViewEncapsulation.None });
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoFileInputComponent, decorators: [{
190
- type: Component,
191
- args: [{ selector: 'bao-file-input, [bao-file-input]', providers: [
192
- {
193
- provide: NG_VALUE_ACCESSOR,
194
- // tslint:disable-next-line:no-forward-ref
195
- useExisting: forwardRef(() => BaoFileInputComponent),
196
- multi: true
197
- }
198
- ], encapsulation: ViewEncapsulation.None, host: {
199
- class: 'bao-file-input',
200
- '[class.bao-file-label-small]': 'size === "small"',
201
- '[class.bao-file-label-medium]': 'size === "medium"',
202
- '[class.bao-file-input-disabled]': 'disabled'
203
- }, template: "<label bao-label [required]=\"required\" [for]=\"inputId\">{{ label }}</label>\n<ng-content select=\"bao-guiding-text\"></ng-content>\n<div\n baoFileDrop\n class=\"file-drop-zone\"\n (fileDrop)=\"uploadFile($event)\"\n #dropzone\n>\n <button\n bao-button\n type=\"button\"\n displayType=\"utility\"\n level=\"secondary\"\n [disabled]=\"disabled\"\n (click)=\"uploader.click()\"\n aria-hidden=\"true\"\n tabIndex=\"-1\"\n >\n {{ intl.dropzoneButtonLabel }}\n </button>\n <input\n [id]=\"inputId\"\n type=\"file\"\n class=\"sr-only\"\n [disabled]=\"disabled\"\n (change)=\"uploadFile($event.target.files[0])\"\n #uploader\n />\n <ng-container\n ><div #ref>\n <ng-content select=\"bao-file-dropzone-instructions\"></ng-content></div\n ></ng-container>\n <ng-container *ngIf=\"ref.childNodes.length === 0\"\n ><bao-file-dropzone-instructions>{{\n intl.defaultDropzoneInstructions\n }}</bao-file-dropzone-instructions></ng-container\n >\n</div>\n<bao-error *ngIf=\"isFileTooBig\">\n {{ intl.fileTooBigErrorMessage }}\n</bao-error>\n<bao-error *ngIf=\"isFileTypeInvalid\">\n {{ intl.invalidFileTypeErrorMessage }}\n</bao-error>\n<ng-content select=\"bao-error\"></ng-content>\n<ng-content></ng-content>\n", styles: ["bao-file-input{width:100%;display:inline-flex;flex-direction:column}bao-file-input>ul{padding:0;margin:0}bao-file-input .bao-label>span{font-size:inherit;font-weight:inherit}bao-file-input.bao-file-label-small label{font-weight:700;font-size:.875rem;line-height:1.25rem}bao-file-input.bao-file-label-medium label{font-weight:700;font-size:1rem;line-height:1.5rem}bao-file-input .bao-guiding-text{margin-bottom:.5rem}bao-file-input .file-drop-zone{padding:.5rem;background-color:#fff;border-radius:.25rem;border-style:dashed;border-color:#ced4da;border-width:1px;display:inline-flex;align-items:center}bao-file-input .file-drop-zone:focus-within.dropzone-focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#eefaf8}bao-file-input .file-drop-zone>.bao-button{margin-right:.5rem}bao-file-input .file-drop-zone.drag-over{background-color:#eefaf8;border-color:#097d6c;cursor:drag}bao-file-input .file-drop-zone.drag-over>.bao-button{background-color:#eefaf8}bao-file-input.bao-file-input-disabled .file-drop-zone{background-color:#f8f9fa;border-color:#ced4da}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button{background-color:#f8f9fa}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button:hover{background-color:#f8f9fa}bao-file-input .bao-file-preview:first-child{margin-top:1rem}bao-file-input .bao-error{margin-top:.5rem}\n"] }]
204
- }], ctorParameters: function () { return [{ type: i1.BaoFileIntl }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { inputId: [{
205
- type: Input,
206
- args: ['id']
207
- }], label: [{
208
- type: Input
209
- }], size: [{
210
- type: Input
211
- }], maximalFileSize: [{
212
- type: Input
213
- }], acceptedMIMETypes: [{
214
- type: Input
215
- }], required: [{
216
- type: Input
217
- }], disabled: [{
218
- type: Input
219
- }], uploadedFile: [{
220
- type: Output
221
- }], _files: [{
222
- type: ContentChildren,
223
- args: [BaoFilePreviewComponent, { descendants: true }]
224
- }], _errorForm: [{
225
- type: ContentChildren,
226
- args: [BaoErrorTextComponent, { descendants: true }]
227
- }], _errorTexts: [{
228
- type: ViewChildren,
229
- args: [BaoErrorTextComponent]
230
- }], uploader: [{
231
- type: ViewChild,
232
- args: ['uploader', { static: false }]
233
- }], dropzoneElement: [{
234
- type: ViewChild,
235
- args: ['dropzone', { static: false }]
236
- }], enterKeyEvent: [{
237
- type: HostListener,
238
- args: ['window:keyup.enter']
239
- }], tabKeyEvent: [{
240
- type: HostListener,
241
- args: ['window:keyup.tab']
242
- }], shiftTabKeyEvent: [{
243
- type: HostListener,
244
- args: ['window:keyup.shift.tab']
245
- }] } });
246
- export class BaoFileDropDirective {
247
- constructor() {
248
- this.fileDrop = new EventEmitter();
249
- this._isDragOver = false;
250
- }
251
- onDragOver(event) {
252
- this.preventAndStop(event);
253
- this._isDragOver = true;
254
- }
255
- onDragLeave(event) {
256
- this.preventAndStop(event);
257
- this._isDragOver = false;
258
- }
259
- onDrop(event) {
260
- this.preventAndStop(event);
261
- this._isDragOver = false;
262
- const transfer = this.getDataTransfer(event);
263
- this.fileDrop.emit(transfer.files[0]);
264
- }
265
- preventAndStop(event) {
266
- event.preventDefault();
267
- event.stopPropagation();
268
- }
269
- getDataTransfer(event) {
270
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
271
- return event.dataTransfer
272
- ? event.dataTransfer
273
- : event.originalEvent.dataTransfer;
274
- }
275
- }
276
- BaoFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoFileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
277
- BaoFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: BaoFileDropDirective, selector: "[baoFileDrop]", outputs: { fileDrop: "fileDrop" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.drag-over": "_isDragOver == true" } }, ngImport: i0 });
278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoFileDropDirective, decorators: [{
279
- type: Directive,
280
- args: [{
281
- selector: '[baoFileDrop]',
282
- host: { '[class.drag-over]': '_isDragOver == true' }
283
- }]
284
- }], propDecorators: { fileDrop: [{
285
- type: Output
286
- }], onDragOver: [{
287
- type: HostListener,
288
- args: ['dragover', ['$event']]
289
- }], onDragLeave: [{
290
- type: HostListener,
291
- args: ['dragleave', ['$event']]
292
- }], onDrop: [{
293
- type: HostListener,
294
- args: ['drop', ['$event']]
295
- }] } });
296
- export class BaoFileDropzoneIntructions {
297
- constructor(renderer, elementRef) {
298
- this.renderer = renderer;
299
- this.elementRef = elementRef;
300
- }
301
- get nativeElement() {
302
- return this.elementRef.nativeElement;
303
- }
304
- ngAfterContentInit() {
305
- this.renderer.setAttribute(this.nativeElement, 'aria-hidden', 'true');
306
- }
307
- }
308
- BaoFileDropzoneIntructions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoFileDropzoneIntructions, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
309
- BaoFileDropzoneIntructions.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: BaoFileDropzoneIntructions, selector: "bao-file-dropzone-instructions, [bao-file-dropzone-instructions]", host: { classAttribute: "bao-file-dropzone-instructions" }, ngImport: i0 });
310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoFileDropzoneIntructions, decorators: [{
311
- type: Directive,
312
- args: [{
313
- selector: 'bao-file-dropzone-instructions, [bao-file-dropzone-instructions]',
314
- host: {
315
- class: 'bao-file-dropzone-instructions'
316
- }
317
- }]
318
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvZmlsZS9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUVuRTs7R0FFRztBQUNILElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBc0J6QixNQUFNLE9BQU8scUJBQXFCO0lBNEVoQyxZQUNTLElBQWlCLEVBQ2hCLFVBQW1DLEVBQ25DLFFBQW1CLEVBQ25CLEdBQXNCO1FBSHZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQW5FaEM7O1dBRUc7UUFDYSxTQUFJLEdBQXVCLFFBQVEsQ0FBQztRQUVwRDs7V0FFRztRQUNhLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFckM7O1dBRUc7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QVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtFQUFrRTtvQkFDNUUsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxnQ0FBZ0M7cUJBQ3hDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMyBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFvRXJyb3JUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYW9GaWxlSW50bCB9IGZyb20gJy4vZmlsZS1pbnRsJztcbmltcG9ydCB7IEJhb0ZpbGVQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9maWxlLXByZXZpZXcuY29tcG9uZW50JztcblxuLyoqXG4gKiBVbmlxdWUgbnVtYmVyIHRvIGdlbmVyYXRlIGEgdW5pcXVlIElEXG4gKi9cbmxldCBmaWxlSW5wdXRVbmlxdWVJZCA9IDA7XG5sZXQgZmlsZVRleHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhby1maWxlLWlucHV0LCBbYmFvLWZpbGUtaW5wdXRdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZvcndhcmQtcmVmXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYW9GaWxlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1maWxlLWlucHV0JyxcbiAgICAnW2NsYXNzLmJhby1maWxlLWxhYmVsLXNtYWxsXSc6ICdzaXplID09PSBcInNtYWxsXCInLFxuICAgICdbY2xhc3MuYmFvLWZpbGUtbGFiZWwtbWVkaXVtXSc6ICdzaXplID09PSBcIm1lZGl1bVwiJyxcbiAgICAnW2NsYXNzLmJhby1maWxlLWlucHV0LWRpc2FibGVkXSc6ICdkaXNhYmxlZCdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9GaWxlSW5wdXRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZFxuICAgKi9cbiAgQElucHV0KCdpZCcpIHB1YmxpYyBpbnB1dElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYWJlbCBvZiBmaWVsZCB0byBiZSBkaXNwbGF5ZWQgYWJvdmVcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBmaWxlIGlucHV0IGxhYmVsXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nID0gJ21lZGl1bSc7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gc2l6ZSBhY2NlcHRlZCBmb3IgdXBsb2FkZWQgZmlsZXNcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhpbWFsRmlsZVNpemUgPSAtMTtcblxuICAvKipcbiAgICogQWNjZXB0ZWQgdHlwZXMgb2YgZmlsZXNcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhY2NlcHRlZE1JTUVUeXBlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogSXMgZmllbGQgcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZD8gPSBmYWxzZTtcblxuICAvKipcbiAgICogSXMgZmllbGQgZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZD8gPSBmYWxzZTtcblxuICAvKipcbiAgICogRmlsZSBzZWxlY3RlZCB0byBiZSB1cGxvYWRlZFxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyB1cGxvYWRlZEZpbGU6IEV2ZW50RW1pdHRlcjxGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcblxuICAvKipcbiAgICogTGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiB1cGxvYWRlZCBzbyBmYXJcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oQmFvRmlsZVByZXZpZXdDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfZmlsZXM6IFF1ZXJ5TGlzdDxCYW9GaWxlUHJldmlld0NvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqIEZvcm0gZXJyb3JzIHdoZW4gY29tcG9uZW50IGlzIHVzZWQgaW4gYSBmb3JtXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEJhb0Vycm9yVGV4dENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIF9lcnJvckZvcm06IFF1ZXJ5TGlzdDxCYW9FcnJvclRleHRDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBFcnJvciB0ZXh0c1xuICAgKi9cbiAgQFZpZXdDaGlsZHJlbihCYW9FcnJvclRleHRDb21wb25lbnQpXG4gIHByaXZhdGUgX2Vycm9yVGV4dHM6IFF1ZXJ5TGlzdDxCYW9FcnJvclRleHRDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBGaWxlIGlucHV0IHRoYXQgdHJpZ2dlcnMgdXBsb2FkaW5nIHdoZW4gY2xpY2tlZFxuICAgKi9cbiAgQFZpZXdDaGlsZCgndXBsb2FkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSB1cGxvYWRlcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdkcm9wem9uZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3B6b25lRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcHVibGljIGluc2VydERlZmF1bHRJbnN0cnVjdGlvbnMgPSBmYWxzZTtcbiAgcHVibGljIGlzRmlsZVRvb0JpZyA9IGZhbHNlO1xuICBwdWJsaWMgaXNGaWxlVHlwZUludmFsaWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFsdWU6IEZpbGVbXTtcbiAgcHJpdmF0ZSBfaW50bENoYW5nZXM6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfaGVscGVyVGV4dElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGludGw6IEJhb0ZpbGVJbnRsLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLl9pbnRsQ2hhbmdlcyA9IGludGwuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lbnRlcicpXG4gIGVudGVyS2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaWQgPT09IHRoaXMuaW5wdXRJZCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pbnB1dElkKS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC50YWInKVxuICB0YWJLZXlFdmVudCgpIHtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCA9PT0gdGhpcy5pbnB1dElkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICB0aGlzLmRyb3B6b25lRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZHJvcHpvbmUtZm9jdXMnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5zaGlmdC50YWInKVxuICBzaGlmdFRhYktleUV2ZW50KCkge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlkID09PSB0aGlzLmlucHV0SWQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgIHRoaXMuZHJvcHpvbmVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdkcm9wem9uZS1mb2N1cydcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckZvcm0uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXRFcnJvclRleHRzQXR0cmlidXRlKCkpO1xuICAgIGlmICghdGhpcy5pbnB1dElkKSB7XG4gICAgICB0aGlzLmlucHV0SWQgPSBgZmlsZS1pbnB1dC0ke2ZpbGVJbnB1dFVuaXF1ZUlkKyt9YDtcbiAgICB9XG4gICAgLy8gSWYgbm8gY29udGVudCB3YXMgYWRkZWQgZm9yIGRyb3B6b25lIGluc3RydWN0aW9ucywgYWRkIGRlZmF1bHQgdGV4dC5cbiAgICBjb25zdCBkcm9wem9uZUVsZW1lbnQgPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbikuZmluZChcbiAgICAgIChlbDogSFRNTEVsZW1lbnQpID0+IGVsLmNsYXNzTmFtZSA9PT0gJ2ZpbGUtZHJvcC16b25lJ1xuICAgICk7XG4gICAgaWYgKFxuICAgICAgIUFycmF5LmZyb20oZHJvcHpvbmVFbGVtZW50LmNoaWxkcmVuKS5maW5kKFxuICAgICAgICBlbCA9PiBlbC5sb2NhbE5hbWUgPT09ICdiYW8tZmlsZS1kcm9wem9uZS1pbnN0cnVjdGlvbnMnXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLmluc2VydERlZmF1bHRJbnN0cnVjdGlvbnMgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNldERlc2NyaWJlZEJ5QXR0cmlidXRlKCk7XG4gICAgdGhpcy5fZmlsZXMuY2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICAoZmlsZXM6IFF1ZXJ5TGlzdDxCYW9GaWxlUHJldmlld0NvbXBvbmVudD4pID0+IHtcbiAgICAgICAgY29uc3QgZmlsZXNMaXN0OiBGaWxlW10gPSBmaWxlcy5tYXAoXG4gICAgICAgICAgKGVsOiBCYW9GaWxlUHJldmlld0NvbXBvbmVudCkgPT4gZWwuZmlsZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldFZhbHVlKGZpbGVzTGlzdCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZXJyb3JUZXh0cy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEVycm9yVGV4dHNBdHRyaWJ1dGUoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5faW50bENoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IG9iajtcbiAgfVxuICAvKipcbiAgICogSW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xuICB9XG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHVwbG9hZEZpbGUoZmlsZTogRmlsZSkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pc0ZpbGVUeXBlSW52YWxpZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0ZpbGVUb29CaWcgPSBmYWxzZTtcbiAgICAgIHRoaXMudXBsb2FkZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgaWYgKHRoaXMubWF4aW1hbEZpbGVTaXplID4gMCAmJiBmaWxlLnNpemUgPiB0aGlzLm1heGltYWxGaWxlU2l6ZSkge1xuICAgICAgICB0aGlzLmlzRmlsZVRvb0JpZyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYWNjZXB0ZWRNSU1FVHlwZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLmFjY2VwdGVkTUlNRVR5cGVzLmluZGV4T2YoZmlsZS50eXBlKSA8IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmlzRmlsZVR5cGVJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0ZpbGVUb29CaWcgJiYgIXRoaXMuaXNGaWxlVHlwZUludmFsaWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGUuZW1pdChmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIHJlZ2lzdGVyT25DaGFuZ2UgZnVuY3Rpb24gc28gdGhlIGNvbXBvbmVudCBjYW4gY2FsbCBpdCB3aGVuZXZlciBpdCB3YW50cy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cbiAgLyoqXG4gICAqIFNhdmVzIHRoZSByZWdpc3Rlck9uVG91Y2hlZCBmdW5jdGlvbiBzbyB0aGUgY29tcG9uZW50IGNhbiBjYWxsIGl0IHdoZW5ldmVyIGl0IHdhbnRzLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgcHJvcGFnYXRlVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IEZpbGVbXSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZXNjcmliZWRCeUF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBoZWxwZXJUZXh0ID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pLmZpbmQoXG4gICAgICAoZWw6IEhUTUxFbGVtZW50KSA9PiBlbC5sb2NhbE5hbWUgPT09ICdiYW8tZ3VpZGluZy10ZXh0J1xuICAgICk7XG4gICAgaWYgKGhlbHBlclRleHQpIHtcbiAgICAgIHRoaXMuX2hlbHBlclRleHRJZCA9IGBiYW8tZ3VpZGluZy10ZXh0LSR7ZmlsZVRleHRVbmlxdWVJZCsrfWA7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgaGVscGVyVGV4dC5maXJzdEVsZW1lbnRDaGlsZCxcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgdGhpcy5faGVscGVyVGV4dElkXG4gICAgICApO1xuICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pXG4gICAgICAgIC5maW5kKChlbDogSFRNTEVsZW1lbnQpID0+IGVsLmNsYXNzTmFtZSA9PSAnZmlsZS1kcm9wLXpvbmUnKVxuICAgICAgICAuY2hpbGRyZW4uaXRlbSgxKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICBpbnB1dEVsZW1lbnQsXG4gICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JyxcbiAgICAgICAgdGhpcy5faGVscGVyVGV4dElkXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RXJyb3JUZXh0c0F0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXh0c0lkcyA9IFtdO1xuICAgIGNvbnN0IGVycm9ycyA9IEFycmF5LmZyb20odGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAoZWw6IEhUTUxFbGVtZW50KSA9PiBlbC5sb2NhbE5hbWUgPT0gJ2Jhby1lcnJvcidcbiAgICApO1xuICAgIGVycm9ycy5mb3JFYWNoKChlcnJvclRleHQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBlcnJvclRleHRJZCA9IGBiYW8tZXJyb3ItJHtmaWxlVGV4dFVuaXF1ZUlkKyt9YDtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICBlcnJvclRleHQuZmlyc3RFbGVtZW50Q2hpbGQsXG4gICAgICAgICdpZCcsXG4gICAgICAgIGVycm9yVGV4dElkXG4gICAgICApO1xuICAgICAgdGV4dHNJZHMucHVzaChlcnJvclRleHRJZCk7XG4gICAgfSk7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pXG4gICAgICAuZmluZCgoZWw6IEhUTUxFbGVtZW50KSA9PiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZpbGUtZHJvcC16b25lJykpXG4gICAgICAuY2hpbGRyZW4uaXRlbSgxKTtcbiAgICBpZiAodGhpcy5faGVscGVyVGV4dElkKSB7XG4gICAgICB0ZXh0c0lkcy51bnNoaWZ0KHRoaXMuX2hlbHBlclRleHRJZCk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgaW5wdXRFbGVtZW50LFxuICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknLFxuICAgICAgdGV4dHNJZHMuam9pbignICcpXG4gICAgKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYmFvRmlsZURyb3BdJyxcbiAgaG9zdDogeyAnW2NsYXNzLmRyYWctb3Zlcl0nOiAnX2lzRHJhZ092ZXIgPT0gdHJ1ZScgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9GaWxlRHJvcERpcmVjdGl2ZSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZURyb3A6IEV2ZW50RW1pdHRlcjxGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcbiAgcHJpdmF0ZSBfaXNEcmFnT3ZlciA9IGZhbHNlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIHRoaXMuX2lzRHJhZ092ZXIgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICB0aGlzLl9pc0RyYWdPdmVyID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgdGhpcy5faXNEcmFnT3ZlciA9IGZhbHNlO1xuICAgIGNvbnN0IHRyYW5zZmVyID0gdGhpcy5nZXREYXRhVHJhbnNmZXIoZXZlbnQpO1xuICAgIHRoaXMuZmlsZURyb3AuZW1pdCh0cmFuc2Zlci5maWxlc1swXSk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnRBbmRTdG9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRhVHJhbnNmZXIoZXZlbnQ6IERyYWdFdmVudCB8IGFueSk6IERhdGFUcmFuc2ZlciB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIGV2ZW50LmRhdGFUcmFuc2ZlclxuICAgICAgPyBldmVudC5kYXRhVHJhbnNmZXJcbiAgICAgIDogZXZlbnQub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXI7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLWZpbGUtZHJvcHpvbmUtaW5zdHJ1Y3Rpb25zLCBbYmFvLWZpbGUtZHJvcHpvbmUtaW5zdHJ1Y3Rpb25zXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1maWxlLWRyb3B6b25lLWluc3RydWN0aW9ucydcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9GaWxlRHJvcHpvbmVJbnRydWN0aW9ucyBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gIH1cbn1cbiIsIjxsYWJlbCBiYW8tbGFiZWwgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2Zvcl09XCJpbnB1dElkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYmFvLWd1aWRpbmctdGV4dFwiPjwvbmctY29udGVudD5cbjxkaXZcbiAgYmFvRmlsZURyb3BcbiAgY2xhc3M9XCJmaWxlLWRyb3Atem9uZVwiXG4gIChmaWxlRHJvcCk9XCJ1cGxvYWRGaWxlKCRldmVudClcIlxuICAjZHJvcHpvbmVcbj5cbiAgPGJ1dHRvblxuICAgIGJhby1idXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkaXNwbGF5VHlwZT1cInV0aWxpdHlcIlxuICAgIGxldmVsPVwic2Vjb25kYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJ1cGxvYWRlci5jbGljaygpXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIHRhYkluZGV4PVwiLTFcIlxuICA+XG4gICAge3sgaW50bC5kcm9wem9uZUJ1dHRvbkxhYmVsIH19XG4gIDwvYnV0dG9uPlxuICA8aW5wdXRcbiAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgdHlwZT1cImZpbGVcIlxuICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2hhbmdlKT1cInVwbG9hZEZpbGUoJGV2ZW50LnRhcmdldC5maWxlc1swXSlcIlxuICAgICN1cGxvYWRlclxuICAvPlxuICA8bmctY29udGFpbmVyXG4gICAgPjxkaXYgI3JlZj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJhby1maWxlLWRyb3B6b25lLWluc3RydWN0aW9uc1wiPjwvbmctY29udGVudD48L2RpdlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWYuY2hpbGROb2Rlcy5sZW5ndGggPT09IDBcIlxuICAgID48YmFvLWZpbGUtZHJvcHpvbmUtaW5zdHJ1Y3Rpb25zPnt7XG4gICAgICBpbnRsLmRlZmF1bHREcm9wem9uZUluc3RydWN0aW9uc1xuICAgIH19PC9iYW8tZmlsZS1kcm9wem9uZS1pbnN0cnVjdGlvbnM+PC9uZy1jb250YWluZXJcbiAgPlxuPC9kaXY+XG48YmFvLWVycm9yICpuZ0lmPVwiaXNGaWxlVG9vQmlnXCI+XG4gIHt7IGludGwuZmlsZVRvb0JpZ0Vycm9yTWVzc2FnZSB9fVxuPC9iYW8tZXJyb3I+XG48YmFvLWVycm9yICpuZ0lmPVwiaXNGaWxlVHlwZUludmFsaWRcIj5cbiAge3sgaW50bC5pbnZhbGlkRmlsZVR5cGVFcnJvck1lc3NhZ2UgfX1cbjwvYmFvLWVycm9yPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYmFvLWVycm9yXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -1,52 +0,0 @@
1
- /*
2
- * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3
- * Licensed under the MIT license.
4
- * See LICENSE file in the project root for full license information.
5
- */
6
- import { OverlayModule } from '@angular/cdk/overlay';
7
- import { PortalModule } from '@angular/cdk/portal';
8
- import { CommonModule } from '@angular/common';
9
- import { NgModule } from '@angular/core';
10
- import { BaoButtonModule } from '../button/module';
11
- import { BaoIconModule } from '../icon/module';
12
- import { BaoSimpleSnackBarComponent } from './simple-snack-bar.component';
13
- import { BaoSnackBarService } from './snack-bar';
14
- import { BaoSnackBarConfig } from './snack-bar-config';
15
- import { BaoSnackBarContainerComponent } from './snack-bar-container';
16
- import * as i0 from "@angular/core";
17
- const SNACKBAR_DIRECTIVES = [
18
- BaoSimpleSnackBarComponent,
19
- BaoSnackBarContainerComponent
20
- ];
21
- export class BaoSnackBarModule {
22
- }
23
- BaoSnackBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- BaoSnackBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarModule, declarations: [BaoSimpleSnackBarComponent,
25
- BaoSnackBarContainerComponent], imports: [CommonModule,
26
- OverlayModule,
27
- PortalModule,
28
- BaoButtonModule,
29
- BaoIconModule], exports: [BaoSimpleSnackBarComponent,
30
- BaoSnackBarContainerComponent] });
31
- BaoSnackBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarModule, providers: [BaoSnackBarService, BaoSnackBarConfig], imports: [CommonModule,
32
- OverlayModule,
33
- PortalModule,
34
- BaoButtonModule,
35
- BaoIconModule] });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarModule, decorators: [{
37
- type: NgModule,
38
- args: [{
39
- imports: [
40
- CommonModule,
41
- OverlayModule,
42
- PortalModule,
43
- BaoButtonModule,
44
- BaoIconModule
45
- ],
46
- providers: [BaoSnackBarService, BaoSnackBarConfig],
47
- declarations: SNACKBAR_DIRECTIVES,
48
- exports: SNACKBAR_DIRECTIVES,
49
- entryComponents: [SNACKBAR_DIRECTIVES]
50
- }]
51
- }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3NuYWNrLWJhci9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXRFLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsMEJBQTBCO0lBQzFCLDZCQUE2QjtDQUM5QixDQUFDO0FBZUYsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWpCNUIsMEJBQTBCO1FBQzFCLDZCQUE2QixhQUszQixZQUFZO1FBQ1osYUFBYTtRQUNiLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYSxhQVZmLDBCQUEwQjtRQUMxQiw2QkFBNkI7K0dBZ0JsQixpQkFBaUIsYUFMakIsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxZQU5oRCxZQUFZO1FBQ1osYUFBYTtRQUNiLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTsyRkFPSixpQkFBaUI7a0JBYjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTtxQkFDZDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDbEQsWUFBWSxFQUFFLG1CQUFtQjtvQkFDakMsT0FBTyxFQUFFLG1CQUFtQjtvQkFDNUIsZUFBZSxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMyBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhb0J1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9tb2R1bGUnO1xuaW1wb3J0IHsgQmFvSWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vbW9kdWxlJztcbmltcG9ydCB7IEJhb1NpbXBsZVNuYWNrQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zaW1wbGUtc25hY2stYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYW9TbmFja0JhclNlcnZpY2UgfSBmcm9tICcuL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBCYW9TbmFja0JhckNvbmZpZyB9IGZyb20gJy4vc25hY2stYmFyLWNvbmZpZyc7XG5pbXBvcnQgeyBCYW9TbmFja0JhckNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vc25hY2stYmFyLWNvbnRhaW5lcic7XG5cbmNvbnN0IFNOQUNLQkFSX0RJUkVDVElWRVMgPSBbXG4gIEJhb1NpbXBsZVNuYWNrQmFyQ29tcG9uZW50LFxuICBCYW9TbmFja0JhckNvbnRhaW5lckNvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBCYW9CdXR0b25Nb2R1bGUsXG4gICAgQmFvSWNvbk1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtCYW9TbmFja0JhclNlcnZpY2UsIEJhb1NuYWNrQmFyQ29uZmlnXSxcbiAgZGVjbGFyYXRpb25zOiBTTkFDS0JBUl9ESVJFQ1RJVkVTLFxuICBleHBvcnRzOiBTTkFDS0JBUl9ESVJFQ1RJVkVTLFxuICBlbnRyeUNvbXBvbmVudHM6IFtTTkFDS0JBUl9ESVJFQ1RJVkVTXVxufSlcbmV4cG9ydCBjbGFzcyBCYW9TbmFja0Jhck1vZHVsZSB7fVxuIl19
@@ -1,128 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Directive, Input, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { Breakpoints } from '../core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../icon/icon.component";
5
- import * as i2 from "@angular/cdk/layout";
6
- /**
7
- * This component is dynamically added to replace breadcrumb when System Header is viewed on tablet or mobile screens.
8
- * Used internally by BaoSystemHeaderComponent only, not to be used by host application.
9
- */
10
- export class BaoBackNavigationComponent {
11
- constructor(renderer, elementRef) {
12
- this.renderer = renderer;
13
- this.elementRef = elementRef;
14
- }
15
- ngOnChanges(changes) {
16
- if (changes['link'] && changes['link'].currentValue) {
17
- this.renderer.setAttribute(this.elementRef.nativeElement.children[0], 'href', changes['link'].currentValue);
18
- }
19
- }
20
- }
21
- BaoBackNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoBackNavigationComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
22
- BaoBackNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: BaoBackNavigationComponent, selector: "bao-back-navigation-component", inputs: { link: "link" }, host: { classAttribute: "bao-system-header-back-button" }, usesOnChanges: true, ngImport: i0, template: ` <a>
23
- <bao-icon
24
- color="action"
25
- title="arrow-left"
26
- svgIcon="icon-arrow-left"
27
- size="x-small"
28
- ></bao-icon>
29
- </a>`, isInline: true, dependencies: [{ kind: "component", type: i1.BaoIconComponent, selector: "bao-icon", inputs: ["color", "size", "svgIcon", "title"], exportAs: ["baoIcon"] }] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoBackNavigationComponent, decorators: [{
31
- type: Component,
32
- args: [{
33
- selector: 'bao-back-navigation-component',
34
- template: ` <a>
35
- <bao-icon
36
- color="action"
37
- title="arrow-left"
38
- svgIcon="icon-arrow-left"
39
- size="x-small"
40
- ></bao-icon>
41
- </a>`,
42
- host: {
43
- class: 'bao-system-header-back-button'
44
- }
45
- }]
46
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { link: [{
47
- type: Input
48
- }] } });
49
- /**
50
- * This directive is to mark the template where the BaoBackNavigationComponent should be dynamically inserted,
51
- * when a Breadcrumb component needs to be replaced
52
- */
53
- export class BaoBackNavigationInsert {
54
- constructor(viewContainerRef) {
55
- this.viewContainerRef = viewContainerRef;
56
- }
57
- }
58
- BaoBackNavigationInsert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoBackNavigationInsert, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
59
- BaoBackNavigationInsert.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: BaoBackNavigationInsert, selector: "[backNavigationInsert]", ngImport: i0 });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoBackNavigationInsert, decorators: [{
61
- type: Directive,
62
- args: [{
63
- selector: '[backNavigationInsert]'
64
- }]
65
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
66
- export class BaoSystemHeaderComponent {
67
- constructor(breakpointObserver, renderer) {
68
- this.breakpointObserver = breakpointObserver;
69
- this.renderer = renderer;
70
- this.screenType = 'desktop';
71
- }
72
- get textContainerChildren() {
73
- return Array.from(this.textContainer.nativeElement.children);
74
- }
75
- ngOnInit() {
76
- if ([Breakpoints.XSmall, Breakpoints.Small].some(size => this.breakpointObserver.isMatched(size))) {
77
- this.screenType = 'mobile';
78
- }
79
- else if (this.breakpointObserver.isMatched(Breakpoints.Medium)) {
80
- this.screenType = 'tablet';
81
- }
82
- else if ([Breakpoints.Large, Breakpoints.XLarge].some(size => this.breakpointObserver.isMatched(size))) {
83
- this.screenType = 'desktop';
84
- }
85
- }
86
- ngAfterViewInit() {
87
- this.formatNavigation();
88
- this.applySizeClass();
89
- }
90
- formatNavigation() {
91
- // If view is rendered on a mobile/tablet screen
92
- if (this.screenType == 'mobile' || this.screenType == 'tablet') {
93
- if (this.textContainerChildren[0].className == 'bao-breadcrumb') {
94
- // Retrieve link of parent page
95
- const breadcrumbElementsList = this.textContainerChildren[0].children[0];
96
- const breadcrumbLength = breadcrumbElementsList.children.length;
97
- const parentLink = breadcrumbElementsList.children[breadcrumbLength - 2].attributes['href'].value;
98
- // Remove Breadcrumb component and replace it with back button
99
- this.renderer.removeChild(this.textContainer.nativeElement, this.textContainerChildren[0]);
100
- const viewContainerRef = this.backButtonInsert.viewContainerRef;
101
- viewContainerRef.clear();
102
- const componentRef = viewContainerRef.createComponent(BaoBackNavigationComponent);
103
- componentRef.setInput('link', parentLink);
104
- }
105
- }
106
- }
107
- applySizeClass() {
108
- const tagInfoContainer = this.textContainer.nativeElement.childNodes[this.textContainerChildren.length - 1];
109
- if (this.screenType === 'mobile') {
110
- this.renderer.addClass(tagInfoContainer, 'mobile');
111
- }
112
- }
113
- }
114
- BaoSystemHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSystemHeaderComponent, deps: [{ token: i2.BreakpointObserver }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
115
- BaoSystemHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: BaoSystemHeaderComponent, selector: "bao-system-header", host: { classAttribute: "bao-system-header" }, viewQueries: [{ propertyName: "textContainer", first: true, predicate: ["textContainer"], descendants: true }, { propertyName: "backButtonInsert", first: true, predicate: BaoBackNavigationInsert, descendants: true, static: true }], ngImport: i0, template: "<div class=\"left-side-content\">\n <div class=\"back-navigation-container\">\n <ng-content select=\"a\"></ng-content>\n <ng-template backNavigationInsert></ng-template>\n </div>\n <div #textContainer class=\"text-content\">\n <ng-content select=\"bao-breadcrumb\"></ng-content>\n <ng-content select=\"h1\"></ng-content>\n <div class=\"tag-info-container\">\n <ng-content select=\"bao-tag\"></ng-content>\n <span class=\"additional-info\">\n <ng-content select=\"span\"></ng-content>\n </span>\n </div>\n </div>\n</div>\n<div class=\"button-container\">\n <ng-content></ng-content>\n</div>\n", styles: ["@charset \"UTF-8\";.bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.bao-system-header{display:flex;justify-content:flex-start}.bao-system-header .left-side-content{display:inline-flex;width:75%}.bao-system-header .left-side-content .back-navigation-container a{margin-right:1.25rem;border-bottom:none}.bao-system-header .left-side-content .back-navigation-container a:hover{cursor:pointer}.bao-system-header .left-side-content .text-content{width:100%}.bao-system-header .left-side-content .text-content h1{font-weight:700;color:#212529;font-size:1.5rem;line-height:2rem;margin-bottom:.5rem}.bao-system-header .left-side-content .text-content .tag-info-container{width:100%;display:block}.bao-system-header .left-side-content .text-content .tag-info-container>span:nth-child(2):before{content:\"\\b7\";margin:0 .5rem}.bao-system-header .left-side-content .text-content .tag-info-container .additional-info>*{font-weight:400;font-size:.875rem;line-height:1.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .bao-tag{margin-bottom:.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info{display:block}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info:before{content:none}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag{max-width:100%}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag>span{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bao-system-header .button-container{flex-shrink:0;margin-left:auto}.bao-system-header .button-container .bao-button{margin-left:1rem}\n"], dependencies: [{ kind: "directive", type: BaoBackNavigationInsert, selector: "[backNavigationInsert]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSystemHeaderComponent, decorators: [{
117
- type: Component,
118
- args: [{ selector: 'bao-system-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
119
- class: 'bao-system-header'
120
- }, template: "<div class=\"left-side-content\">\n <div class=\"back-navigation-container\">\n <ng-content select=\"a\"></ng-content>\n <ng-template backNavigationInsert></ng-template>\n </div>\n <div #textContainer class=\"text-content\">\n <ng-content select=\"bao-breadcrumb\"></ng-content>\n <ng-content select=\"h1\"></ng-content>\n <div class=\"tag-info-container\">\n <ng-content select=\"bao-tag\"></ng-content>\n <span class=\"additional-info\">\n <ng-content select=\"span\"></ng-content>\n </span>\n </div>\n </div>\n</div>\n<div class=\"button-container\">\n <ng-content></ng-content>\n</div>\n", styles: ["@charset \"UTF-8\";.bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.bao-system-header{display:flex;justify-content:flex-start}.bao-system-header .left-side-content{display:inline-flex;width:75%}.bao-system-header .left-side-content .back-navigation-container a{margin-right:1.25rem;border-bottom:none}.bao-system-header .left-side-content .back-navigation-container a:hover{cursor:pointer}.bao-system-header .left-side-content .text-content{width:100%}.bao-system-header .left-side-content .text-content h1{font-weight:700;color:#212529;font-size:1.5rem;line-height:2rem;margin-bottom:.5rem}.bao-system-header .left-side-content .text-content .tag-info-container{width:100%;display:block}.bao-system-header .left-side-content .text-content .tag-info-container>span:nth-child(2):before{content:\"\\b7\";margin:0 .5rem}.bao-system-header .left-side-content .text-content .tag-info-container .additional-info>*{font-weight:400;font-size:.875rem;line-height:1.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .bao-tag{margin-bottom:.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info{display:block}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info:before{content:none}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag{max-width:100%}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag>span{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bao-system-header .button-container{flex-shrink:0;margin-left:auto}.bao-system-header .button-container .bao-button{margin-left:1rem}\n"] }]
121
- }], ctorParameters: function () { return [{ type: i2.BreakpointObserver }, { type: i0.Renderer2 }]; }, propDecorators: { textContainer: [{
122
- type: ViewChild,
123
- args: ['textContainer', { static: false }]
124
- }], backButtonInsert: [{
125
- type: ViewChild,
126
- args: [BaoBackNavigationInsert, { static: true }]
127
- }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvc3lzdGVtLWhlYWRlci9zeXN0ZW0taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9zeXN0ZW0taGVhZGVyL3N5c3RlbS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUVULEtBQUssRUFLTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7QUFFdEM7OztHQUdHO0FBZUgsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUNVLFFBQW1CLEVBQ25CLFVBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQ3pDLE1BQU0sRUFDTixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUM3QixDQUFDO1NBQ0g7SUFDSCxDQUFDOzt1SEFmVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwrS0FaM0I7Ozs7Ozs7T0FPTDsyRkFLTSwwQkFBMEI7a0JBZHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMs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QUFlLENBQ25ELDBCQUEwQixDQUMzQixDQUFDO2dCQUNGLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLGdCQUFnQixHQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQ3pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN0QyxDQUFDO1FBQ0osSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7O3FIQTNFVSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwyUEFHeEIsdUJBQXVCLDhEQ25GcEMsOG5CQW1CQSxndUVEK0NhLHVCQUF1QjsyRkFjdkIsd0JBQXdCO2tCQVZwQyxTQUFTOytCQUNFLG1CQUFtQixpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSxtQkFBbUI7cUJBQzNCO2lJQUlPLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHckMsZ0JBQWdCO3NCQUR2QixTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tICcuLi9jb3JlJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBkeW5hbWljYWxseSBhZGRlZCB0byByZXBsYWNlIGJyZWFkY3J1bWIgd2hlbiBTeXN0ZW0gSGVhZGVyIGlzIHZpZXdlZCBvbiB0YWJsZXQgb3IgbW9iaWxlIHNjcmVlbnMuXG4gKiBVc2VkIGludGVybmFsbHkgYnkgQmFvU3lzdGVtSGVhZGVyQ29tcG9uZW50IG9ubHksIG5vdCB0byBiZSB1c2VkIGJ5IGhvc3QgYXBwbGljYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhby1iYWNrLW5hdmlnYXRpb24tY29tcG9uZW50JyxcbiAgdGVtcGxhdGU6IGAgPGE+XG4gICAgPGJhby1pY29uXG4gICAgICBjb2xvcj1cImFjdGlvblwiXG4gICAgICB0aXRsZT1cImFycm93LWxlZnRcIlxuICAgICAgc3ZnSWNvbj1cImljb24tYXJyb3ctbGVmdFwiXG4gICAgICBzaXplPVwieC1zbWFsbFwiXG4gICAgPjwvYmFvLWljb24+XG4gIDwvYT5gLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tc3lzdGVtLWhlYWRlci1iYWNrLWJ1dHRvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9CYWNrTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGxpbms6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbGluayddICYmIGNoYW5nZXNbJ2xpbmsnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSxcbiAgICAgICAgJ2hyZWYnLFxuICAgICAgICBjaGFuZ2VzWydsaW5rJ10uY3VycmVudFZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIHRvIG1hcmsgdGhlIHRlbXBsYXRlIHdoZXJlIHRoZSBCYW9CYWNrTmF2aWdhdGlvbkNvbXBvbmVudCBzaG91bGQgYmUgZHluYW1pY2FsbHkgaW5zZXJ0ZWQsXG4gKiB3aGVuIGEgQnJlYWRjcnVtYiBjb21wb25lbnQgbmVlZHMgdG8gYmUgcmVwbGFjZWRcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2JhY2tOYXZpZ2F0aW9uSW5zZXJ0XSdcbn0pXG5leHBvcnQgY2xhc3MgQmFvQmFja05hdmlnYXRpb25JbnNlcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFvLXN5c3RlbS1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3lzdGVtLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N5c3RlbS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Jhby1zeXN0ZW0taGVhZGVyJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb1N5c3RlbUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3RleHRDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0ZXh0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChCYW9CYWNrTmF2aWdhdGlvbkluc2VydCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBiYWNrQnV0dG9uSW5zZXJ0OiBCYW9CYWNrTmF2aWdhdGlvbkluc2VydDtcblxuICBwdWJsaWMgc2NyZWVuVHlwZTogJ21vYmlsZScgfCAndGFibGV0JyB8ICdkZXNrdG9wJyA9ICdkZXNrdG9wJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgZ2V0IHRleHRDb250YWluZXJDaGlsZHJlbigpOiBFbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMudGV4dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChcbiAgICAgIFtCcmVha3BvaW50cy5YU21hbGwsIEJyZWFrcG9pbnRzLlNtYWxsXS5zb21lKHNpemUgPT5cbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKHNpemUpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnNjcmVlblR5cGUgPSAnbW9iaWxlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5NZWRpdW0pKSB7XG4gICAgICB0aGlzLnNjcmVlblR5cGUgPSAndGFibGV0JztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgW0JyZWFrcG9pbnRzLkxhcmdlLCBCcmVha3BvaW50cy5YTGFyZ2VdLnNvbWUoc2l6ZSA9PlxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoc2l6ZSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuc2NyZWVuVHlwZSA9ICdkZXNrdG9wJztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb3JtYXROYXZpZ2F0aW9uKCk7XG4gICAgdGhpcy5hcHBseVNpemVDbGFzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXROYXZpZ2F0aW9uKCkge1xuICAgIC8vIElmIHZpZXcgaXMgcmVuZGVyZWQgb24gYSBtb2JpbGUvdGFibGV0IHNjcmVlblxuICAgIGlmICh0aGlzLnNjcmVlblR5cGUgPT0gJ21vYmlsZScgfHwgdGhpcy5zY3JlZW5UeXBlID09ICd0YWJsZXQnKSB7XG4gICAgICBpZiAodGhpcy50ZXh0Q29udGFpbmVyQ2hpbGRyZW5bMF0uY2xhc3NOYW1lID09ICdiYW8tYnJlYWRjcnVtYicpIHtcbiAgICAgICAgLy8gUmV0cmlldmUgbGluayBvZiBwYXJlbnQgcGFnZVxuICAgICAgICBjb25zdCBicmVhZGNydW1iRWxlbWVudHNMaXN0ID1cbiAgICAgICAgICB0aGlzLnRleHRDb250YWluZXJDaGlsZHJlblswXS5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYkxlbmd0aCA9IGJyZWFkY3J1bWJFbGVtZW50c0xpc3QuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXJlbnRMaW5rID1cbiAgICAgICAgICBicmVhZGNydW1iRWxlbWVudHNMaXN0LmNoaWxkcmVuW2JyZWFkY3J1bWJMZW5ndGggLSAyXS5hdHRyaWJ1dGVzW1xuICAgICAgICAgICAgJ2hyZWYnXG4gICAgICAgICAgXS52YWx1ZTtcbiAgICAgICAgLy8gUmVtb3ZlIEJyZWFkY3J1bWIgY29tcG9uZW50IGFuZCByZXBsYWNlIGl0IHdpdGggYmFjayBidXR0b25cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChcbiAgICAgICAgICB0aGlzLnRleHRDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLnRleHRDb250YWluZXJDaGlsZHJlblswXVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5iYWNrQnV0dG9uSW5zZXJ0LnZpZXdDb250YWluZXJSZWY7XG4gICAgICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgICAgQmFvQmFja05hdmlnYXRpb25Db21wb25lbnRcbiAgICAgICAgKTtcbiAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KCdsaW5rJywgcGFyZW50TGluayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNpemVDbGFzcygpIHtcbiAgICBjb25zdCB0YWdJbmZvQ29udGFpbmVyID1cbiAgICAgIHRoaXMudGV4dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXNbXG4gICAgICAgIHRoaXMudGV4dENvbnRhaW5lckNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgIF07XG4gICAgaWYgKHRoaXMuc2NyZWVuVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGFnSW5mb0NvbnRhaW5lciwgJ21vYmlsZScpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxlZnQtc2lkZS1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiYWNrLW5hdmlnYXRpb24tY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYVwiPjwvbmctY29udGVudD5cbiAgICA8bmctdGVtcGxhdGUgYmFja05hdmlnYXRpb25JbnNlcnQ+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgI3RleHRDb250YWluZXIgY2xhc3M9XCJ0ZXh0LWNvbnRlbnRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJiYW8tYnJlYWRjcnVtYlwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJoMVwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwidGFnLWluZm8tY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJiYW8tdGFnXCI+PC9uZy1jb250ZW50PlxuICAgICAgPHNwYW4gY2xhc3M9XCJhZGRpdGlvbmFsLWluZm9cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3BhblwiPjwvbmctY29udGVudD5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19