zek 16.1.4 → 16.1.6

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 (163) hide show
  1. package/esm2022/lib/modules/age/age.pipe.mjs +3 -2
  2. package/esm2022/lib/modules/age/index.mjs +1 -2
  3. package/esm2022/lib/modules/alert/alert/alert.mjs +4 -3
  4. package/esm2022/lib/modules/alert/index.mjs +1 -2
  5. package/esm2022/lib/modules/alert/toast/toast.mjs +3 -4
  6. package/esm2022/lib/modules/alert/validation/validation.mjs +4 -3
  7. package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +6 -5
  8. package/esm2022/lib/modules/autocomplete/index.mjs +1 -2
  9. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +5 -5
  10. package/esm2022/lib/modules/bb/bb.component.mjs +6 -6
  11. package/esm2022/lib/modules/bb/bb.module.mjs +11 -11
  12. package/esm2022/lib/modules/callback/callback.pipe.mjs +6 -5
  13. package/esm2022/lib/modules/callback/index.mjs +1 -2
  14. package/esm2022/lib/modules/card/card/card.mjs +48 -0
  15. package/esm2022/lib/modules/card/index.mjs +2 -3
  16. package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +3 -2
  17. package/esm2022/lib/modules/date-ago/index.mjs +1 -2
  18. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.mjs +76 -0
  19. package/esm2022/lib/modules/edit-toolbar/index.mjs +2 -3
  20. package/esm2022/lib/modules/file/file-size.pipe.mjs +9 -6
  21. package/esm2022/lib/modules/file/index.mjs +1 -2
  22. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +6 -4
  23. package/esm2022/lib/modules/file-viewer/index.mjs +1 -2
  24. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.mjs +147 -0
  25. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.mjs +16 -0
  26. package/esm2022/lib/modules/grid-toolbar/index.mjs +3 -4
  27. package/esm2022/lib/modules/list-toolbar/index.mjs +2 -3
  28. package/esm2022/lib/modules/list-toolbar/list-toolbar.mjs +111 -0
  29. package/esm2022/lib/modules/page-title/index.mjs +1 -2
  30. package/esm2022/lib/modules/page-title/page-title.component.mjs +8 -6
  31. package/esm2022/lib/modules/pager/index.mjs +2 -3
  32. package/esm2022/lib/modules/pager/pager/pager.mjs +52 -0
  33. package/esm2022/lib/modules/password/index.mjs +1 -2
  34. package/esm2022/lib/modules/password/password.mjs +5 -4
  35. package/esm2022/lib/modules/progress/index.mjs +1 -2
  36. package/esm2022/lib/modules/progress/progress.mjs +3 -4
  37. package/esm2022/lib/modules/radio/index.mjs +2 -3
  38. package/esm2022/lib/modules/radio/radio.mjs +134 -0
  39. package/esm2022/lib/modules/readonly/index.mjs +1 -2
  40. package/esm2022/lib/modules/readonly/readonly.directive.mjs +6 -5
  41. package/esm2022/lib/modules/safe/index.mjs +1 -2
  42. package/esm2022/lib/modules/safe/safe.pipe.mjs +6 -3
  43. package/esm2022/lib/modules/select2/index.mjs +2 -2
  44. package/esm2022/lib/modules/select2/select2.mjs +170 -0
  45. package/esm2022/lib/modules/select2/select2.module.mjs +6 -6
  46. package/esm2022/lib/modules/sort/index.mjs +1 -2
  47. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.mjs +5 -3
  48. package/esm2022/lib/modules/sort/sort.mjs +6 -3
  49. package/esm2022/lib/modules/validator/field-validator.mjs +5 -3
  50. package/esm2022/lib/modules/validator/index.mjs +1 -2
  51. package/esm2022/lib/modules/wizard/index.mjs +3 -4
  52. package/esm2022/lib/modules/wizard/wizard/wizard.mjs +66 -0
  53. package/esm2022/lib/modules/wizard/wizard2/wizard2.mjs +14 -0
  54. package/fesm2022/zek.mjs +194 -618
  55. package/fesm2022/zek.mjs.map +1 -1
  56. package/lib/modules/age/age.pipe.d.ts +1 -1
  57. package/lib/modules/age/index.d.ts +0 -1
  58. package/lib/modules/alert/alert/alert.d.ts +1 -1
  59. package/lib/modules/alert/index.d.ts +0 -1
  60. package/lib/modules/alert/toast/toast.d.ts +1 -1
  61. package/lib/modules/alert/validation/validation.d.ts +1 -1
  62. package/lib/modules/autocomplete/autocomplete.directive.d.ts +3 -3
  63. package/lib/modules/autocomplete/index.d.ts +0 -1
  64. package/lib/modules/bb/bb-modal-toolbar.d.ts +3 -3
  65. package/lib/modules/bb/bb.component.d.ts +3 -3
  66. package/lib/modules/bb/bb.module.d.ts +1 -1
  67. package/lib/modules/callback/callback.pipe.d.ts +3 -3
  68. package/lib/modules/callback/index.d.ts +0 -1
  69. package/lib/modules/card/card/{card.component.d.ts → card.d.ts} +3 -3
  70. package/lib/modules/card/index.d.ts +1 -2
  71. package/lib/modules/date-ago/date-ago.pipe.d.ts +1 -1
  72. package/lib/modules/date-ago/index.d.ts +0 -1
  73. package/lib/modules/edit-toolbar/{edit-toolbar.component.d.ts → edit-toolbar.d.ts} +3 -3
  74. package/lib/modules/edit-toolbar/index.d.ts +1 -2
  75. package/lib/modules/file/file-size.pipe.d.ts +3 -3
  76. package/lib/modules/file/index.d.ts +0 -1
  77. package/lib/modules/file-viewer/file-viewer.d.ts +1 -1
  78. package/lib/modules/file-viewer/index.d.ts +0 -1
  79. package/lib/modules/grid-toolbar/grid-toolbar/{grid-toolbar.component.d.ts → grid-toolbar.d.ts} +3 -3
  80. package/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.d.ts +6 -0
  81. package/lib/modules/grid-toolbar/index.d.ts +2 -3
  82. package/lib/modules/list-toolbar/index.d.ts +1 -2
  83. package/lib/modules/list-toolbar/{list-toolbar.component.d.ts → list-toolbar.d.ts} +3 -3
  84. package/lib/modules/page-title/index.d.ts +0 -1
  85. package/lib/modules/page-title/page-title.component.d.ts +3 -3
  86. package/lib/modules/pager/index.d.ts +1 -2
  87. package/lib/modules/pager/pager/{pager.component.d.ts → pager.d.ts} +1 -1
  88. package/lib/modules/password/index.d.ts +0 -1
  89. package/lib/modules/password/password.d.ts +1 -1
  90. package/lib/modules/progress/index.d.ts +0 -1
  91. package/lib/modules/progress/progress.d.ts +1 -1
  92. package/lib/modules/radio/index.d.ts +1 -2
  93. package/lib/modules/radio/{radio-button.component.d.ts → radio.d.ts} +3 -3
  94. package/lib/modules/readonly/index.d.ts +0 -1
  95. package/lib/modules/readonly/readonly.directive.d.ts +3 -3
  96. package/lib/modules/safe/index.d.ts +0 -1
  97. package/lib/modules/safe/safe.pipe.d.ts +1 -1
  98. package/lib/modules/select2/index.d.ts +1 -1
  99. package/lib/modules/select2/{select2.component.d.ts → select2.d.ts} +3 -3
  100. package/lib/modules/select2/select2.module.d.ts +2 -2
  101. package/lib/modules/sort/index.d.ts +0 -1
  102. package/lib/modules/sort/sort-button-group/sort-button-group.d.ts +1 -1
  103. package/lib/modules/sort/sort.d.ts +1 -1
  104. package/lib/modules/validator/field-validator.d.ts +1 -1
  105. package/lib/modules/validator/index.d.ts +0 -1
  106. package/lib/modules/wizard/index.d.ts +2 -3
  107. package/lib/modules/wizard/wizard/{wizard.component.d.ts → wizard.d.ts} +3 -3
  108. package/lib/modules/wizard/wizard2/wizard2.d.ts +6 -0
  109. package/package.json +1 -1
  110. package/esm2022/lib/modules/age/age.module.mjs +0 -22
  111. package/esm2022/lib/modules/alert/alert.module.mjs +0 -35
  112. package/esm2022/lib/modules/autocomplete/autocomplete.module.mjs +0 -22
  113. package/esm2022/lib/modules/callback/callback.module.mjs +0 -22
  114. package/esm2022/lib/modules/card/card/card.component.mjs +0 -47
  115. package/esm2022/lib/modules/card/card.module.mjs +0 -18
  116. package/esm2022/lib/modules/date-ago/date.module.mjs +0 -22
  117. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.component.mjs +0 -74
  118. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.module.mjs +0 -26
  119. package/esm2022/lib/modules/file/file.module.mjs +0 -22
  120. package/esm2022/lib/modules/file-viewer/module.mjs +0 -30
  121. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +0 -145
  122. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +0 -14
  123. package/esm2022/lib/modules/grid-toolbar/grid-toolbar.module.mjs +0 -33
  124. package/esm2022/lib/modules/list-toolbar/list-toolbar.component.mjs +0 -109
  125. package/esm2022/lib/modules/list-toolbar/list-toolbar.module.mjs +0 -24
  126. package/esm2022/lib/modules/page-title/page-title.module.mjs +0 -26
  127. package/esm2022/lib/modules/pager/pager/pager.component.mjs +0 -50
  128. package/esm2022/lib/modules/pager/pager.module.mjs +0 -26
  129. package/esm2022/lib/modules/password/module.mjs +0 -30
  130. package/esm2022/lib/modules/progress/module.mjs +0 -26
  131. package/esm2022/lib/modules/radio/radio-button.component.mjs +0 -134
  132. package/esm2022/lib/modules/radio/radio.module.mjs +0 -22
  133. package/esm2022/lib/modules/readonly/readonly.module.mjs +0 -22
  134. package/esm2022/lib/modules/safe/safe.module.mjs +0 -20
  135. package/esm2022/lib/modules/select2/select2.component.mjs +0 -170
  136. package/esm2022/lib/modules/sort/module.mjs +0 -33
  137. package/esm2022/lib/modules/validator/validator.module.mjs +0 -26
  138. package/esm2022/lib/modules/wizard/wizard/wizard.component.mjs +0 -65
  139. package/esm2022/lib/modules/wizard/wizard.module.mjs +0 -33
  140. package/esm2022/lib/modules/wizard/wizard2/wizard2.component.mjs +0 -13
  141. package/lib/modules/age/age.module.d.ts +0 -8
  142. package/lib/modules/alert/alert.module.d.ts +0 -10
  143. package/lib/modules/autocomplete/autocomplete.module.d.ts +0 -8
  144. package/lib/modules/callback/callback.module.d.ts +0 -8
  145. package/lib/modules/card/card.module.d.ts +0 -8
  146. package/lib/modules/date-ago/date.module.d.ts +0 -8
  147. package/lib/modules/edit-toolbar/edit-toolbar.module.d.ts +0 -9
  148. package/lib/modules/file/file.module.d.ts +0 -8
  149. package/lib/modules/file-viewer/module.d.ts +0 -10
  150. package/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.d.ts +0 -6
  151. package/lib/modules/grid-toolbar/grid-toolbar.module.d.ts +0 -10
  152. package/lib/modules/list-toolbar/list-toolbar.module.d.ts +0 -9
  153. package/lib/modules/page-title/page-title.module.d.ts +0 -9
  154. package/lib/modules/pager/pager.module.d.ts +0 -9
  155. package/lib/modules/password/module.d.ts +0 -10
  156. package/lib/modules/progress/module.d.ts +0 -9
  157. package/lib/modules/radio/radio.module.d.ts +0 -8
  158. package/lib/modules/readonly/readonly.module.d.ts +0 -8
  159. package/lib/modules/safe/safe.module.d.ts +0 -8
  160. package/lib/modules/sort/module.d.ts +0 -10
  161. package/lib/modules/validator/validator.module.d.ts +0 -9
  162. package/lib/modules/wizard/wizard.module.d.ts +0 -10
  163. package/lib/modules/wizard/wizard2/wizard2.component.d.ts +0 -6
@@ -0,0 +1,134 @@
1
+ import { ChangeDetectionStrategy, Component, forwardRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { CoreUiComponent } from '../../components/core-ui.component';
4
+ import { Convert } from '../../utils';
5
+ import * as i0 from "@angular/core";
6
+ let uniqueId = 0;
7
+ /**
8
+ * Provider Expression that allows zek-radio to register as a ControlValueAccessor. This
9
+ * allows it to support [(ngModel)] and ngControl.
10
+ * @docs-private
11
+ */
12
+ const ZEK_RADIO_CONTROL_VALUE_ACCESSOR = {
13
+ provide: NG_VALUE_ACCESSOR,
14
+ useExisting: forwardRef(() => ZekRadio),
15
+ multi: true,
16
+ };
17
+ export class ZekRadio extends CoreUiComponent {
18
+ constructor(_changeDetector, _renderer, _elementRef) {
19
+ super(_renderer, _elementRef);
20
+ this._changeDetector = _changeDetector;
21
+ this._uniqueId = `zek-radio-${++uniqueId}`;
22
+ /** The unique ID for the radio button. */
23
+ this.id = this._uniqueId;
24
+ this._inline = false;
25
+ this._checked = false;
26
+ }
27
+ get inline() {
28
+ return this._inline;
29
+ }
30
+ set inline(v) {
31
+ let newValue = Convert.toBooleanProperty(v);
32
+ if (this._inline !== newValue) {
33
+ this._inline = newValue;
34
+ this.onInlineChanged();
35
+ }
36
+ }
37
+ onInlineChanged() { }
38
+ get inputId() {
39
+ return `${this.id || this._uniqueId}-input`;
40
+ }
41
+ get checked() {
42
+ return this._checked;
43
+ }
44
+ set checked(value) {
45
+ const newCheckedState = Convert.toBooleanProperty(value);
46
+ if (this._checked !== newCheckedState) {
47
+ this._checked = newCheckedState;
48
+ this._markForCheck();
49
+ }
50
+ }
51
+ writeValue(value) {
52
+ if (this.modelValue !== value) {
53
+ this.modelValue = value;
54
+ this.checked = this.modelValue === this._value;
55
+ }
56
+ }
57
+ onValueChanged() {
58
+ if (!this.checked) {
59
+ // Update checked when the value changed to match the radio group's value
60
+ this.checked = this.modelValue === this._value;
61
+ }
62
+ }
63
+ onRequiredChanged() {
64
+ this._markForCheck();
65
+ }
66
+ onDisabledChanged() {
67
+ this._markForCheck();
68
+ }
69
+ /**
70
+ * Marks the radio button as needing checking for change detection.
71
+ * This method is exposed because the parent radio group will directly
72
+ * update bound properties of the radio button.
73
+ */
74
+ _markForCheck() {
75
+ // When group value changes, the button will not be notified. Use `markForCheck` to explicit
76
+ // update radio button's status
77
+ this._changeDetector.markForCheck();
78
+ }
79
+ init() {
80
+ // Determine if it should be checked
81
+ this.checked = this.modelValue === this._value;
82
+ }
83
+ /** Triggered when the radio button receives an interaction from the user. */
84
+ _onInputInteraction(event) {
85
+ // We always have to stop propagation on the change event.
86
+ // Otherwise the change event, from the input element, will bubble up and
87
+ // emit its event object to the `change` output.
88
+ event.stopPropagation();
89
+ if (!this.checked && !this.disabled) {
90
+ const modelValueChanged = this.value !== this.modelValue;
91
+ this.checked = true;
92
+ this.modelValue = this._value;
93
+ this._emitChangeEvent();
94
+ if (modelValueChanged) {
95
+ this._onChange(this._value);
96
+ }
97
+ }
98
+ }
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ZekRadio, isStandalone: true, selector: "zek-radio", inputs: { id: "id", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], inline: "inline", checked: "checked" }, host: { listeners: { "focus": "_inputElement.nativeElement.focus()" }, properties: { "attr.id": "id", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [ZEK_RADIO_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-check\" [class.form-check-inline]=\"inline\">\r\n <input #input class=\"form-check-input\" type=\"radio\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n (change)=\"_onInputInteraction($event)\">\r\n <label [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekRadio, decorators: [{
103
+ type: Component,
104
+ args: [{ standalone: true, selector: 'zek-radio', host: {
105
+ '[attr.id]': 'id',
106
+ '[attr.tabindex]': 'null',
107
+ '[attr.aria-label]': 'null',
108
+ '[attr.aria-labelledby]': 'null',
109
+ '[attr.aria-describedby]': 'null',
110
+ // Note: under normal conditions focus shouldn't land on this element, however it may be
111
+ // programmatically set, for example inside of a focus trap, in this case we want to forward
112
+ // the focus to the native element.
113
+ '(focus)': '_inputElement.nativeElement.focus()',
114
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [ZEK_RADIO_CONTROL_VALUE_ACCESSOR], template: "<div class=\"form-check\" [class.form-check-inline]=\"inline\">\r\n <input #input class=\"form-check-input\" type=\"radio\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n (change)=\"_onInputInteraction($event)\">\r\n <label [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>" }]
115
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { id: [{
116
+ type: Input
117
+ }], ariaLabel: [{
118
+ type: Input,
119
+ args: ['aria-label']
120
+ }], ariaLabelledby: [{
121
+ type: Input,
122
+ args: ['aria-labelledby']
123
+ }], ariaDescribedby: [{
124
+ type: Input,
125
+ args: ['aria-describedby']
126
+ }], _inputElement: [{
127
+ type: ViewChild,
128
+ args: ['input']
129
+ }], inline: [{
130
+ type: Input
131
+ }], checked: [{
132
+ type: Input
133
+ }] } });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFVBQVUsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFdEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRWpCOzs7O0dBSUc7QUFDSCxNQUFNLGdDQUFnQyxHQUFRO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBdUJGLE1BQU0sT0FBTyxRQUFTLFNBQVEsZUFBZTtJQUV6QyxZQUNZLGVBQWtDLEVBQzFDLFNBQW9CLEVBQ3BCLFdBQXVCO1FBQ3ZCLEtBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFIdEIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBT3RDLGNBQVMsR0FBVyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFFdEQsMENBQTBDO1FBQ2pDLE9BQUUsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBZ0I3QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBdUJ6QixhQUFRLEdBQVksS0FBSyxDQUFDO0lBN0Ns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TSxJQUFJLFlBQ04sV0FBVyxRQUVmO3dCQUNGLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixpQkFBaUIsRUFBRSxNQUFNO3dCQUN6QixtQkFBbUIsRUFBRSxNQUFNO3dCQUMzQix3QkFBd0IsRUFBRSxNQUFNO3dCQUNoQyx5QkFBeUIsRUFBRSxNQUFNO3dCQUNqQyx3RkFBd0Y7d0JBQ3hGLDRGQUE0Rjt3QkFDNUYsbUNBQW1DO3dCQUNuQyxTQUFTLEVBQUUscUNBQXFDO3FCQUVuRCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsZ0NBQWdDLENBQUM7eUpBZXBDLEVBQUU7c0JBQVYsS0FBSztnQkFHZSxTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBR08sY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBR0csZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBR0wsYUFBYTtzQkFBaEMsU0FBUzt1QkFBQyxPQUFPO2dCQVNkLE1BQU07c0JBRFQsS0FBSztnQkFxQkYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IENvcmVVaUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS11aS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb252ZXJ0IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5cclxubGV0IHVuaXF1ZUlkID0gMDtcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlciBFeHByZXNzaW9uIHRoYXQgYWxsb3dzIHplay1yYWRpbyB0byByZWdpc3RlciBhcyBhIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiBUaGlzXHJcbiAqIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldIGFuZCBuZ0NvbnRyb2wuXHJcbiAqIEBkb2NzLXByaXZhdGVcclxuICovXHJcbmNvbnN0IFpFS19SQURJT19DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFpla1JhZGlvKSxcclxuICAgIG11bHRpOiB0cnVlLFxyXG59O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHNlbGVjdG9yOiAnemVrLXJhZGlvJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5odG1sJyxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcclxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ251bGwnLFxyXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdudWxsJyxcclxuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdudWxsJyxcclxuICAgICAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnbnVsbCcsXHJcbiAgICAgICAgLy8gTm90ZTogdW5kZXIgbm9ybWFsIGNvbmRpdGlvbnMgZm9jdXMgc2hvdWxkbid0IGxhbmQgb24gdGhpcyBlbGVtZW50LCBob3dldmVyIGl0IG1heSBiZVxyXG4gICAgICAgIC8vIHByb2dyYW1tYXRpY2FsbHkgc2V0LCBmb3IgZXhhbXBsZSBpbnNpZGUgb2YgYSBmb2N1cyB0cmFwLCBpbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBmb3J3YXJkXHJcbiAgICAgICAgLy8gdGhlIGZvY3VzIHRvIHRoZSBuYXRpdmUgZWxlbWVudC5cclxuICAgICAgICAnKGZvY3VzKSc6ICdfaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKScsXHJcblxyXG4gICAgfSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW1pFS19SQURJT19DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpla1JhZGlvIGV4dGVuZHMgQ29yZVVpQ29tcG9uZW50XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICBzdXBlcihfcmVuZGVyZXIsIF9lbGVtZW50UmVmKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfdW5pcXVlSWQ6IHN0cmluZyA9IGB6ZWstcmFkaW8tJHsrK3VuaXF1ZUlkfWA7XHJcblxyXG4gICAgLyoqIFRoZSB1bmlxdWUgSUQgZm9yIHRoZSByYWRpbyBidXR0b24uICovXHJcbiAgICBASW5wdXQoKSBpZDogc3RyaW5nID0gdGhpcy5fdW5pcXVlSWQ7XHJcblxyXG4gICAgLyoqIFVzZWQgdG8gc2V0IHRoZSAnYXJpYS1sYWJlbCcgYXR0cmlidXRlIG9uIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnQuICovXHJcbiAgICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw/OiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAgIC8qKiBUaGUgJ2FyaWEtbGFiZWxsZWRieScgYXR0cmlidXRlIHRha2VzIHByZWNlZGVuY2UgYXMgdGhlIGVsZW1lbnQncyB0ZXh0IGFsdGVybmF0aXZlLiAqL1xyXG4gICAgQElucHV0KCdhcmlhLWxhYmVsbGVkYnknKSBhcmlhTGFiZWxsZWRieT86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gICAgLyoqIFRoZSAnYXJpYS1kZXNjcmliZWRieScgYXR0cmlidXRlIGlzIHJlYWQgYWZ0ZXIgdGhlIGVsZW1lbnQncyBsYWJlbCBhbmQgZmllbGQgdHlwZS4gKi9cclxuICAgIEBJbnB1dCgnYXJpYS1kZXNjcmliZWRieScpIGFyaWFEZXNjcmliZWRieT86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gICAgLyoqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPXJhZGlvPmAgZWxlbWVudCAqL1xyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBfaW5wdXRFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IG51bGw7XHJcblxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9pbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGdldCBpbmxpbmUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgaW5saW5lKHY6IEJvb2xlYW5JbnB1dCkge1xyXG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IENvbnZlcnQudG9Cb29sZWFuUHJvcGVydHkodik7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lubGluZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5saW5lID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMub25JbmxpbmVDaGFuZ2VkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25JbmxpbmVDaGFuZ2VkKCkgeyB9XHJcblxyXG4gICAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLl91bmlxdWVJZH0taW5wdXRgO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogVGhlIHZhbHVlIGZyb20gbmdNb2RlbC4gKi9cclxuICAgIHByaXZhdGUgbW9kZWxWYWx1ZTogYW55O1xyXG5cclxuXHJcbiAgICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XHJcbiAgICB9XHJcbiAgICBzZXQgY2hlY2tlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgY29uc3QgbmV3Q2hlY2tlZFN0YXRlID0gQ29udmVydC50b0Jvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrZWQgIT09IG5ld0NoZWNrZWRTdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gbmV3Q2hlY2tlZFN0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLm1vZGVsVmFsdWUgPT09IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBvblZhbHVlQ2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tlZCkge1xyXG4gICAgICAgICAgICAvLyBVcGRhdGUgY2hlY2tlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VkIHRvIG1hdGNoIHRoZSByYWRpbyBncm91cCdzIHZhbHVlXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMubW9kZWxWYWx1ZSA9PT0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvdmVycmlkZSBvblJlcXVpcmVkQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIG9uRGlzYWJsZWRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hcmtzIHRoZSByYWRpbyBidXR0b24gYXMgbmVlZGluZyBjaGVja2luZyBmb3IgY2hhbmdlIGRldGVjdGlvbi5cclxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgYmVjYXVzZSB0aGUgcGFyZW50IHJhZGlvIGdyb3VwIHdpbGwgZGlyZWN0bHlcclxuICAgICAqIHVwZGF0ZSBib3VuZCBwcm9wZXJ0aWVzIG9mIHRoZSByYWRpbyBidXR0b24uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21hcmtGb3JDaGVjaygpIHtcclxuICAgICAgICAvLyBXaGVuIGdyb3VwIHZhbHVlIGNoYW5nZXMsIHRoZSBidXR0b24gd2lsbCBub3QgYmUgbm90aWZpZWQuIFVzZSBgbWFya0ZvckNoZWNrYCB0byBleHBsaWNpdFxyXG4gICAgICAgIC8vIHVwZGF0ZSByYWRpbyBidXR0b24ncyBzdGF0dXNcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb3ZlcnJpZGUgaW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaXQgc2hvdWxkIGJlIGNoZWNrZWRcclxuICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLm1vZGVsVmFsdWUgPT09IHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogVHJpZ2dlcmVkIHdoZW4gdGhlIHJhZGlvIGJ1dHRvbiByZWNlaXZlcyBhbiBpbnRlcmFjdGlvbiBmcm9tIHRoZSB1c2VyLiAqL1xyXG4gICAgb3ZlcnJpZGUgX29uSW5wdXRJbnRlcmFjdGlvbihldmVudDogRXZlbnQpIHtcclxuICAgICAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXHJcbiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGFuZ2UgZXZlbnQsIGZyb20gdGhlIGlucHV0IGVsZW1lbnQsIHdpbGwgYnViYmxlIHVwIGFuZFxyXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlQ2hhbmdlZCA9IHRoaXMudmFsdWUgIT09IHRoaXMubW9kZWxWYWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbFZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG1vZGVsVmFsdWVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiIFtjbGFzcy5mb3JtLWNoZWNrLWlubGluZV09XCJpbmxpbmVcIj5cclxuICAgIDxpbnB1dCAjaW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCJcclxuICAgIFtpZF09XCJpbnB1dElkXCJcclxuICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXHJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcclxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5XCJcclxuICAgIChjaGFuZ2UpPVwiX29uSW5wdXRJbnRlcmFjdGlvbigkZXZlbnQpXCI+XHJcbiAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9sYWJlbD5cclxuPC9kaXY+Il19
@@ -1,3 +1,2 @@
1
- export * from './readonly.module';
2
1
  export * from './readonly.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3JlYWRvbmx5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmVhZG9ubHkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZWFkb25seS5kaXJlY3RpdmUnOyJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3JlYWRvbmx5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlYWRvbmx5LmRpcmVjdGl2ZSc7Il19
@@ -1,19 +1,20 @@
1
1
  import { Directive, Input } from '@angular/core';
2
2
  import { Convert } from '../../utils';
3
3
  import * as i0 from "@angular/core";
4
- export class ReadOnlyDirective {
4
+ export class ZekReadOnlyDirective {
5
5
  constructor() {
6
6
  this._readonly = false;
7
7
  }
8
8
  readonly(v) {
9
9
  this._readonly = Convert.toBooleanProperty(v);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ReadOnlyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: ReadOnlyDirective, selector: "[readonly],[readOnly]", inputs: { readonly: "readonly" }, host: { properties: { "attr.readonly": "_readonly ? \"\" : null" } }, ngImport: i0 }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekReadOnlyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: ZekReadOnlyDirective, isStandalone: true, selector: "[readonly],[readOnly]", inputs: { readonly: "readonly" }, host: { properties: { "attr.readonly": "_readonly ? \"\" : null" } }, ngImport: i0 }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ReadOnlyDirective, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekReadOnlyDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{
17
+ standalone: true,
17
18
  selector: '[readonly],[readOnly]',
18
19
  host: {
19
20
  '[attr.readonly]': '_readonly ? "" : null'
@@ -22,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
22
23
  }], propDecorators: { readonly: [{
23
24
  type: Input
24
25
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9yZWFkb25seS9yZWFkb25seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRdEMsTUFBTSxPQUFPLGlCQUFpQjtJQU45QjtRQU9JLGNBQVMsR0FBRyxLQUFLLENBQUM7S0FJckI7SUFIWSxRQUFRLENBQUMsQ0FBZTtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQUpRLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQU43QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLElBQUksRUFBRTt3QkFDRixpQkFBaUIsRUFBRSx1QkFBdUI7cUJBQzdDO2lCQUNKOzhCQUdZLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBDb252ZXJ0IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tyZWFkb25seV0sW3JlYWRPbmx5XScsXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJ1thdHRyLnJlYWRvbmx5XSc6ICdfcmVhZG9ubHkgPyBcIlwiIDogbnVsbCdcclxuICAgIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlYWRPbmx5RGlyZWN0aXZlIHtcclxuICAgIF9yZWFkb25seSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcmVhZG9ubHkodjogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSBDb252ZXJ0LnRvQm9vbGVhblByb3BlcnR5KHYpO1xyXG4gICAgfVxyXG59Il19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9yZWFkb25seS9yZWFkb25seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFTdEMsTUFBTSxPQUFPLG9CQUFvQjtJQVBqQztRQVFJLGNBQVMsR0FBRyxLQUFLLENBQUM7S0FJckI7SUFIWSxRQUFRLENBQUMsQ0FBZTtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQUpRLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQVBoQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxJQUFJLEVBQUU7d0JBQ0YsaUJBQWlCLEVBQUUsdUJBQXVCO3FCQUM3QztpQkFDSjs4QkFHWSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgQ29udmVydCB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHNlbGVjdG9yOiAnW3JlYWRvbmx5XSxbcmVhZE9ubHldJyxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnW2F0dHIucmVhZG9ubHldJzogJ19yZWFkb25seSA/IFwiXCIgOiBudWxsJ1xyXG4gICAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWmVrUmVhZE9ubHlEaXJlY3RpdmUge1xyXG4gICAgX3JlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSByZWFkb25seSh2OiBCb29sZWFuSW5wdXQpIHtcclxuICAgICAgICB0aGlzLl9yZWFkb25seSA9IENvbnZlcnQudG9Cb29sZWFuUHJvcGVydHkodik7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,3 +1,2 @@
1
- export * from './safe.module';
2
1
  export * from './safe.pipe';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NhZmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NhZmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zYWZlLnBpcGUnOyJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NhZmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NhZmUucGlwZSc7Il19
@@ -28,10 +28,13 @@ export class ZekSafePipe {
28
28
  }
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekSafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
31
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: ZekSafePipe, name: "safe" }); }
31
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: ZekSafePipe, isStandalone: true, name: "safe" }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekSafePipe, decorators: [{
34
34
  type: Pipe,
35
- args: [{ name: 'safe' }]
35
+ args: [{
36
+ standalone: true,
37
+ name: 'safe'
38
+ }]
36
39
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9zYWZlL3NhZmUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBSXBELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFDM0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFzRTtRQUM3RixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsS0FBSyxhQUFhO2dCQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQ7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs4R0F6QlUsV0FBVzs0R0FBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCwgU2FmZVJlc291cmNlVXJsLCBTYWZlU2NyaXB0LCBTYWZlU3R5bGUsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBQaXBlKHsgbmFtZTogJ3NhZmUnIH0pXHJcbmV4cG9ydCBjbGFzcyBaZWtTYWZlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zZm9ybVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZhbHVlOiBzdHJpbmdcclxuICAgKiBAcGFyYW0gdHlwZTogc3RyaW5nIGh0bWwsIHN0eWxlLCBzY3JpcHQsIHVybCwgcmVzb3VyY2VVcmxcclxuICAgKi9cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgdHlwZT86ICcnIHwgJ2h0bWwnIHwgJ3N0eWxlJyB8ICdzY3JpcHQnIHwgJ3VybCcgfCAncmVzb3VyY2VVcmwnIHwgbnVsbCk6IFNhZmVIdG1sIHwgU2FmZVN0eWxlIHwgU2FmZVNjcmlwdCB8IFNhZmVVcmwgfCBTYWZlUmVzb3VyY2VVcmwge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2h0bWwnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XHJcbiAgICAgIGNhc2UgJ3N0eWxlJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHZhbHVlKTtcclxuICAgICAgY2FzZSAnc2NyaXB0JzpcclxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCh2YWx1ZSk7XHJcbiAgICAgIGNhc2UgJ3VybCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodmFsdWUpO1xyXG4gICAgICBjYXNlICdyZXNvdXJjZVVybCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbn0iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9zYWZlL3NhZmUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBT3BELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFDM0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFzRTtRQUM3RixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsS0FBSyxhQUFhO2dCQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQ7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs4R0F6QlUsV0FBVzs0R0FBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUp2QixJQUFJO21CQUFDO29CQUNKLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsTUFBTTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCwgU2FmZVJlc291cmNlVXJsLCBTYWZlU2NyaXB0LCBTYWZlU3R5bGUsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBQaXBlKHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIG5hbWU6ICdzYWZlJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgWmVrU2FmZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm1cclxuICAgKlxyXG4gICAqIEBwYXJhbSB2YWx1ZTogc3RyaW5nXHJcbiAgICogQHBhcmFtIHR5cGU6IHN0cmluZyBodG1sLCBzdHlsZSwgc2NyaXB0LCB1cmwsIHJlc291cmNlVXJsXHJcbiAgICovXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIHR5cGU/OiAnJyB8ICdodG1sJyB8ICdzdHlsZScgfCAnc2NyaXB0JyB8ICd1cmwnIHwgJ3Jlc291cmNlVXJsJyB8IG51bGwpOiBTYWZlSHRtbCB8IFNhZmVTdHlsZSB8IFNhZmVTY3JpcHQgfCBTYWZlVXJsIHwgU2FmZVJlc291cmNlVXJsIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdodG1sJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpO1xyXG4gICAgICBjYXNlICdzdHlsZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh2YWx1ZSk7XHJcbiAgICAgIGNhc2UgJ3NjcmlwdCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodmFsdWUpO1xyXG4gICAgICBjYXNlICd1cmwnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHZhbHVlKTtcclxuICAgICAgY2FzZSAncmVzb3VyY2VVcmwnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodmFsdWUpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
@@ -1,3 +1,3 @@
1
1
  export * from './select2.module';
2
- export * from './select2.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0Mi5jb21wb25lbnQnOyJdfQ==
2
+ export * from './select2';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0Mi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdDInOyJdfQ==
@@ -0,0 +1,170 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { RandomHelper, StringHelper } from '../../utils';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ export class ZekSelect2 {
7
+ constructor() {
8
+ this.elementId = RandomHelper.randomHex();
9
+ this._data = [];
10
+ this.filteredData = [];
11
+ this.placeholder = '';
12
+ this.selectedItemChange = new EventEmitter();
13
+ this.valueChange = new EventEmitter();
14
+ }
15
+ get data() {
16
+ return this._data;
17
+ }
18
+ set data(value) {
19
+ if (this._data !== value) {
20
+ this._data = value;
21
+ this.findAndSetItem();
22
+ this.filterData();
23
+ }
24
+ }
25
+ get selectedItem() {
26
+ return this._selectedItem;
27
+ }
28
+ get value() {
29
+ return this._value;
30
+ }
31
+ set value(v) {
32
+ if (this._value !== v) {
33
+ this._value = v;
34
+ this.findAndSetItem();
35
+ }
36
+ }
37
+ findAndSetItem() {
38
+ let foundItem = null;
39
+ if (this._value === undefined || this._value === null || !this.data) {
40
+ }
41
+ else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {
42
+ foundItem = this.data.find(x => x === this._value);
43
+ }
44
+ else {
45
+ foundItem = this.data.find(x => x[this.valueField] === this._value);
46
+ }
47
+ this._selectedItem = foundItem;
48
+ this.setText();
49
+ }
50
+ // private _dropdown: any;
51
+ // public get dropdown(): any {
52
+ // if (!this._dropdown) {
53
+ // let el = document.getElementById('btn-' + this.elementId);
54
+ // this._dropdown = new bootstrap.Dropdown(el);
55
+ // }
56
+ // return this._dropdown;
57
+ // }
58
+ // public set dropdown(v: any) {
59
+ // this._dropdown = v;
60
+ // }
61
+ ngOnDestroy() {
62
+ // this.dropdown?.dispose();
63
+ // this.dropdown = null;
64
+ }
65
+ onTextChange(text) {
66
+ this.filter = StringHelper.tryTrim(text);
67
+ this.filterData();
68
+ }
69
+ filterData() {
70
+ if (this.filter && this.filter !== '') {
71
+ let searchString = this.filter;
72
+ if (this.textField === undefined || this.textField === null) {
73
+ this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);
74
+ }
75
+ else {
76
+ this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);
77
+ }
78
+ }
79
+ else // if (this.filter === undefined || this.filter === null || this.filter === '')
80
+ {
81
+ this.filteredData = this.data;
82
+ }
83
+ }
84
+ onFocus(e) {
85
+ // if (this.dropdown){
86
+ // this.dropdown.show();
87
+ // }
88
+ // let dropdown = document.getElementById(`dropdown-menu-container-${this.elementId}`);
89
+ // console.log(dropdown);
90
+ // if (dropdown) {
91
+ // console.log(dropdown.classList);
92
+ // if (!dropdown.classList.contains('show')) {
93
+ // let el = document.getElementById(`input-${this.elementId}`);
94
+ // if (el) {
95
+ // el.click();
96
+ // }
97
+ // }
98
+ // }
99
+ // let inputId = 'input-' + this.elementId;
100
+ // let el = document.getElementById(inputId);
101
+ // if (el) {
102
+ // if (!el.classList.contains('show')) {
103
+ // this.dropdown?.show();
104
+ // }
105
+ // let menuId = '#dropdown-menu-' + this.elementId + ' ' + 'a';
106
+ // el.addEventListener('keydown', function (e) {
107
+ // if (e.key == 'ArrowDown') {
108
+ // (document.querySelectorAll(menuId)[0] as any).focus();
109
+ // }
110
+ // });
111
+ // }
112
+ }
113
+ inputUnfocused() {
114
+ // this.expanded = false;
115
+ }
116
+ setText() {
117
+ if (this._selectedItem === undefined || this._selectedItem === null) {
118
+ this.text = null;
119
+ }
120
+ else if (this.textField === undefined || this.textField === null) {
121
+ this.text = this._selectedItem;
122
+ }
123
+ else {
124
+ this.text = this._selectedItem[this.textField];
125
+ }
126
+ }
127
+ selectItem(item) {
128
+ if (this._selectedItem !== item) {
129
+ this._selectedItem = item;
130
+ this.selectedItemChange.emit(item);
131
+ this.setText();
132
+ //set value
133
+ let v;
134
+ if (this.valueField === undefined || this.valueField === null || this.valueField === '') {
135
+ // this.value = v
136
+ v = item;
137
+ }
138
+ else {
139
+ // this.value = v[this.valueField];
140
+ v = item[this.valueField];
141
+ }
142
+ //if value not equals then emit valueChange
143
+ if (this._value !== v) {
144
+ this._value = v;
145
+ this.valueChange.emit(v);
146
+ }
147
+ }
148
+ }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekSelect2, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ZekSelect2, selector: "zek-select2,[zek-select2]", inputs: { data: "data", textField: "textField", valueField: "valueField", placeholder: "placeholder", value: "value" }, outputs: { selectedItemChange: "selectedItemChange", valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n [data]=\"data\"\r\n [filterable]=\"true\"\r\n (valueChange)=\"valueChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (open)=\"open()\"\r\n (close)=\"close()\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n</kendo-autocomplete> -->", styles: [".scrollable-menu{max-height:400px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekSelect2, decorators: [{
153
+ type: Component,
154
+ args: [{ selector: 'zek-select2,[zek-select2]', template: "<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n [data]=\"data\"\r\n [filterable]=\"true\"\r\n (valueChange)=\"valueChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (open)=\"open()\"\r\n (close)=\"close()\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n</kendo-autocomplete> -->", styles: [".scrollable-menu{max-height:400px;overflow-y:auto}\n"] }]
155
+ }], propDecorators: { data: [{
156
+ type: Input
157
+ }], textField: [{
158
+ type: Input
159
+ }], valueField: [{
160
+ type: Input
161
+ }], placeholder: [{
162
+ type: Input
163
+ }], selectedItemChange: [{
164
+ type: Output
165
+ }], valueChange: [{
166
+ type: Output
167
+ }], value: [{
168
+ type: Input
169
+ }] } });
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL21vZHVsZXMvc2VsZWN0Mi9zZWxlY3QyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9zZWxlY3QyL3NlbGVjdDIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sVUFBVTtJQVB2QjtRQVdhLGNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQVkvQixpQkFBWSxHQUFlLEVBQUUsQ0FBQztRQUlyQixnQkFBVyxHQUFXLEVBQUUsQ0FBQTtRQUV2Qix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTTdDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztLQWtKbkQ7SUF6S0csSUFDSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFpQjtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBU0QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFJRCxJQUNJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQU07UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ2xCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtTQUVwRTthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDNUYsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0gsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUtELDBCQUEwQjtJQUMxQiwrQkFBK0I7SUFDL0IsNkJBQTZCO0lBQzdCLHFFQUFxRTtJQUNyRSx1REFBdUQ7SUFDdkQsUUFBUTtJQUNSLDZCQUE2QjtJQUM3QixJQUFJO0lBQ0osZ0NBQWdDO0lBQ2hDLDBCQUEwQjtJQUMxQixJQUFJO0lBRUosV0FBVztRQUNQLDRCQUE0QjtRQUM1Qix3QkFBd0I7SUFDNUIsQ0FBQztJQUdELFlBQVksQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9HO2lCQUFNO2dCQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9IO1NBQ0o7YUFDRyxnRkFBZ0Y7U0FDcEY7WUFDSSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLENBQWE7UUFDakIsc0JBQXNCO1FBQ3RCLDBCQUEwQjtRQUMxQixJQUFJO1FBQ0osdUZBQXVGO1FBQ3ZGLHlCQUF5QjtRQUV6QixrQkFBa0I7UUFDbEIscUNBQXFDO1FBRXJDLGdEQUFnRDtRQUNoRCxtRUFBbUU7UUFDbkUsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixRQUFRO1FBQ1IsTUFBTTtRQUNOLElBQUk7UUFJSiwyQ0FBMkM7UUFDM0MsNkNBQTZDO1FBQzdDLFlBQVk7UUFFWiwwQ0FBMEM7UUFDMUMsNkJBQTZCO1FBQzdCLE1BQU07UUFFTiwrREFBK0Q7UUFDL0QsZ0RBQWdEO1FBQ2hELGdDQUFnQztRQUNoQyw2REFBNkQ7UUFDN0QsTUFBTTtRQUNOLE1BQU07UUFDTixJQUFJO0lBQ1IsQ0FBQztJQUNELGNBQWM7UUFDVix5QkFBeUI7SUFDN0IsQ0FBQztJQUVPLE9BQU87UUFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO2FBQ0ksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDbEM7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFFaEIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVmLFdBQVc7WUFDWCxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JGLGlCQUFpQjtnQkFDakIsQ0FBQyxHQUFHLElBQUksQ0FBQzthQUNaO2lCQUFNO2dCQUNILG1DQUFtQztnQkFDbkMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDN0I7WUFFRCwyQ0FBMkM7WUFDM0MsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7SUFDTCxDQUFDOzhHQTdLUSxVQUFVO2tHQUFWLFVBQVUsNFFDVnZCLHc3Q0F5QnlCOzsyRkRmWixVQUFVO2tCQVB0QixTQUFTOytCQUNJLDJCQUEyQjs4QkFjakMsSUFBSTtzQkFEUCxLQUFLO2dCQWFHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFNRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdILEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSYW5kb21IZWxwZXIsIFN0cmluZ0hlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd6ZWstc2VsZWN0MixbemVrLXNlbGVjdDJdJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QyLmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0Mi5jc3MnXVxyXG5cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBaZWtTZWxlY3QyIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIGZpbHRlcj86IHN0cmluZyB8IG51bGw7XHJcbiAgICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICByZWFkb25seSBlbGVtZW50SWQgPSBSYW5kb21IZWxwZXIucmFuZG9tSGV4KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfZGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBkYXRhKCk6IEFycmF5PGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gICAgfVxyXG4gICAgc2V0IGRhdGEodmFsdWU6IEFycmF5PGFueT4pIHtcclxuICAgICAgICBpZiAodGhpcy5fZGF0YSAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXRJdGVtKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZpbHRlcmVkRGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHRleHRGaWVsZDogYW55O1xyXG4gICAgQElucHV0KCkgdmFsdWVGaWVsZDogYW55O1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnXHJcblxyXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtOiBhbnk7XHJcbiAgICBnZXQgc2VsZWN0ZWRJdGVtKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXRJdGVtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmluZEFuZFNldEl0ZW0oKSB7XHJcbiAgICAgICAgbGV0IGZvdW5kSXRlbSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fdmFsdWUgPT09IG51bGwgfHwgIXRoaXMuZGF0YSkge1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWVGaWVsZCA9PT0gbnVsbCB8fCB0aGlzLnZhbHVlRmllbGQgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGZvdW5kSXRlbSA9IHRoaXMuZGF0YS5maW5kKHggPT4geCA9PT0gdGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvdW5kSXRlbSA9IHRoaXMuZGF0YS5maW5kKHggPT4geFt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW0gPSBmb3VuZEl0ZW07XHJcbiAgICAgICAgdGhpcy5zZXRUZXh0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gcHJpdmF0ZSBfZHJvcGRvd246IGFueTtcclxuICAgIC8vIHB1YmxpYyBnZXQgZHJvcGRvd24oKTogYW55IHtcclxuICAgIC8vICAgICBpZiAoIXRoaXMuX2Ryb3Bkb3duKSB7XHJcbiAgICAvLyAgICAgICAgIGxldCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tJyArIHRoaXMuZWxlbWVudElkKTtcclxuICAgIC8vICAgICAgICAgdGhpcy5fZHJvcGRvd24gPSBuZXcgYm9vdHN0cmFwLkRyb3Bkb3duKGVsKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gcHVibGljIHNldCBkcm9wZG93bih2OiBhbnkpIHtcclxuICAgIC8vICAgICB0aGlzLl9kcm9wZG93biA9IHY7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gdGhpcy5kcm9wZG93bj8uZGlzcG9zZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZHJvcGRvd24gPSBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvblRleHRDaGFuZ2UodGV4dDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBTdHJpbmdIZWxwZXIudHJ5VHJpbSh0ZXh0KTtcclxuICAgICAgICB0aGlzLmZpbHRlckRhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbHRlckRhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyICYmIHRoaXMuZmlsdGVyICE9PSAnJykge1xyXG4gICAgICAgICAgICBsZXQgc2VhcmNoU3RyaW5nID0gdGhpcy5maWx0ZXI7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHRGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudGV4dEZpZWxkID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgIT09IC0xKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcihpdGVtID0+IGl0ZW1bdGhpcy50ZXh0RmllbGRdLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgIT09IC0xKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlLy8gaWYgKHRoaXMuZmlsdGVyID09PSB1bmRlZmluZWQgfHwgdGhpcy5maWx0ZXIgPT09IG51bGwgfHwgdGhpcy5maWx0ZXIgPT09ICcnKSBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzKGU6IEZvY3VzRXZlbnQpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy5kcm9wZG93bil7XHJcbiAgICAgICAgLy8gICB0aGlzLmRyb3Bkb3duLnNob3coKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gbGV0IGRyb3Bkb3duID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGRyb3Bkb3duLW1lbnUtY29udGFpbmVyLSR7dGhpcy5lbGVtZW50SWR9YCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZHJvcGRvd24pO1xyXG5cclxuICAgICAgICAvLyBpZiAoZHJvcGRvd24pIHtcclxuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKGRyb3Bkb3duLmNsYXNzTGlzdCk7XHJcblxyXG4gICAgICAgIC8vICAgaWYgKCFkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ3Nob3cnKSkge1xyXG4gICAgICAgIC8vICAgICBsZXQgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgaW5wdXQtJHt0aGlzLmVsZW1lbnRJZH1gKTtcclxuICAgICAgICAvLyAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgLy8gICAgICAgZWwuY2xpY2soKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuXHJcblxyXG5cclxuICAgICAgICAvLyBsZXQgaW5wdXRJZCA9ICdpbnB1dC0nICsgdGhpcy5lbGVtZW50SWQ7XHJcbiAgICAgICAgLy8gbGV0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7XHJcbiAgICAgICAgLy8gaWYgKGVsKSB7XHJcblxyXG4gICAgICAgIC8vICAgaWYgKCFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3Nob3cnKSkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLmRyb3Bkb3duPy5zaG93KCk7XHJcbiAgICAgICAgLy8gICB9XHJcblxyXG4gICAgICAgIC8vIGxldCBtZW51SWQgPSAnI2Ryb3Bkb3duLW1lbnUtJyArIHRoaXMuZWxlbWVudElkICsgJyAnICsgJ2EnO1xyXG4gICAgICAgIC8vIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIC8vICAgaWYgKGUua2V5ID09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgLy8gICAgIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKG1lbnVJZClbMF0gYXMgYW55KS5mb2N1cygpO1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGlucHV0VW5mb2N1c2VkKCkge1xyXG4gICAgICAgIC8vIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFRleHQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3NlbGVjdGVkSXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnRleHQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnRleHRGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudGV4dEZpZWxkID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMuX3NlbGVjdGVkSXRlbTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLl9zZWxlY3RlZEl0ZW1bdGhpcy50ZXh0RmllbGRdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RJdGVtKGl0ZW06IGFueSkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtICE9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlLmVtaXQoaXRlbSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNldFRleHQoKTtcclxuXHJcbiAgICAgICAgICAgIC8vc2V0IHZhbHVlXHJcbiAgICAgICAgICAgIGxldCB2O1xyXG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZUZpZWxkID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZUZpZWxkID09PSBudWxsIHx8IHRoaXMudmFsdWVGaWVsZCA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudmFsdWUgPSB2XHJcbiAgICAgICAgICAgICAgICB2ID0gaXRlbTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudmFsdWUgPSB2W3RoaXMudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgICAgICB2ID0gaXRlbVt0aGlzLnZhbHVlRmllbGRdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2lmIHZhbHVlIG5vdCBlcXVhbHMgdGhlbiBlbWl0IHZhbHVlQ2hhbmdlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHBvc2l0aW9uLXJlbGF0aXZlXCIgaWQ9XCJkcm9wZG93bi1tZW51LWNvbnRhaW5lci17e2VsZW1lbnRJZH19XCI+XHJcbiAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBpZD1cImlucHV0LXt7ZWxlbWVudElkfX1cIiBbKG5nTW9kZWwpXT1cInRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIiAoYmx1cik9XCJpbnB1dFVuZm9jdXNlZCgpXCI+XHJcbiAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgZHJvcGRvd24tdG9nZ2xlXCIgaWQ9XCJidG4te3tlbGVtZW50SWR9fVwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgZGF0YS1icy1yZWZlcmVuY2U9XCJwYXJlbnRcIj48L2J1dHRvbj5cclxuICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtc3RhcnQgdy0xMDAgc2Nyb2xsYWJsZS1tZW51XCIgaWQ9XCJkcm9wZG93bi1tZW51LXt7ZWxlbWVudElkfX1cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZXh0RmllbGRcIj5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBmaWx0ZXJlZERhdGFcIj5cclxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNlbGVjdEl0ZW0oZW50cnkpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+e3tlbnRyeVt0ZXh0RmllbGRdfX08L2E+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGV4dEZpZWxkXCI+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZW50cnkgb2YgZmlsdGVyZWREYXRhXCI+XHJcbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzZWxlY3RJdGVtKGVudHJ5KVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPnt7dGV4dEZpZWxkfX08L2E+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3VsPlxyXG48L2Rpdj5cclxuPCEtLSA8a2VuZG8tYXV0b2NvbXBsZXRlXHJcbiAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgW2ZpbHRlcmFibGVdPVwidHJ1ZVwiXHJcbiAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gIChmaWx0ZXJDaGFuZ2UpPVwiZmlsdGVyQ2hhbmdlKCRldmVudClcIlxyXG4gIChvcGVuKT1cIm9wZW4oKVwiXHJcbiAgKGNsb3NlKT1cImNsb3NlKClcIlxyXG4gIChmb2N1cyk9XCJmb2N1cygpXCJcclxuICAoYmx1cik9XCJibHVyKClcIj5cclxuPC9rZW5kby1hdXRvY29tcGxldGU+IC0tPiJdfQ==
@@ -1,12 +1,12 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule } from '@angular/forms';
4
- import { Select2Component } from './select2.component';
4
+ import { ZekSelect2 } from './select2';
5
5
  import * as i0 from "@angular/core";
6
6
  export class Select2Module {
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Select2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: Select2Module, declarations: [Select2Component], imports: [CommonModule,
9
- FormsModule], exports: [Select2Component] }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: Select2Module, declarations: [ZekSelect2], imports: [CommonModule,
9
+ FormsModule], exports: [ZekSelect2] }); }
10
10
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Select2Module, imports: [CommonModule,
11
11
  FormsModule] }); }
12
12
  }
@@ -18,11 +18,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
18
18
  FormsModule
19
19
  ],
20
20
  declarations: [
21
- Select2Component
21
+ ZekSelect2
22
22
  ],
23
23
  exports: [
24
- Select2Component
24
+ ZekSelect2
25
25
  ],
26
26
  }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvc2VsZWN0Mi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQWV2RCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsaUJBUHRCLGdCQUFnQixhQUpoQixZQUFZO1lBQ1osV0FBVyxhQU1YLGdCQUFnQjsrR0FJUCxhQUFhLFlBWHRCLFlBQVk7WUFDWixXQUFXOzsyRkFVRixhQUFhO2tCQWJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjtxQkFDakI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIgIFxyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2VsZWN0MkNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0Mi5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBTZWxlY3QyQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTZWxlY3QyQ29tcG9uZW50XHJcbiAgXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3QyTW9kdWxlIHtcclxufSJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvc2VsZWN0Mi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBZXZDLE1BQU0sT0FBTyxhQUFhOzhHQUFiLGFBQWE7K0dBQWIsYUFBYSxpQkFQdEIsVUFBVSxhQUpWLFlBQVk7WUFDWixXQUFXLGFBTVgsVUFBVTsrR0FJRCxhQUFhLFlBWHRCLFlBQVk7WUFDWixXQUFXOzsyRkFVRixhQUFhO2tCQWJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLFVBQVU7cUJBQ1g7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFVBQVU7cUJBQ1g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIgIFxyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWmVrU2VsZWN0MiB9IGZyb20gJy4vc2VsZWN0Mic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFpla1NlbGVjdDJcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFpla1NlbGVjdDJcclxuICBdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFNlbGVjdDJNb2R1bGUge1xyXG59Il19
@@ -1,4 +1,3 @@
1
- export * from './module';
2
1
  export * from './sort';
3
2
  export * from './sort-button-group/sort-button-group';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zb3J0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zb3J0LWJ1dHRvbi1ncm91cC9zb3J0LWJ1dHRvbi1ncm91cCc7Il19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc29ydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc29ydC1idXR0b24tZ3JvdXAvc29ydC1idXR0b24tZ3JvdXAnOyJdfQ==
@@ -1,5 +1,7 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { RandomHelper } from '../../../utils';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { CommonModule } from '@angular/common';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "@angular/common";
5
7
  import * as i2 from "@ngx-translate/core";
@@ -58,11 +60,11 @@ export class ZekSortButtonGroup {
58
60
  this.onChange.emit();
59
61
  }
60
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekSortButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ZekSortButtonGroup, selector: "zek-sort-button-group", inputs: { sort: "sort", asc: "asc", sortFields: "sortFields" }, outputs: { sortChange: "sortChange", ascChange: "ascChange", onChange: "onChange" }, ngImport: i0, template: "<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div><i class=\"\"></i>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ZekSortButtonGroup, isStandalone: true, selector: "zek-sort-button-group", inputs: { sort: "sort", asc: "asc", sortFields: "sortFields" }, outputs: { sortChange: "sortChange", ascChange: "ascChange", onChange: "onChange" }, ngImport: i0, template: "<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div><i class=\"\"></i>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
62
64
  }
63
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ZekSortButtonGroup, decorators: [{
64
66
  type: Component,
65
- args: [{ selector: 'zek-sort-button-group', template: "<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div><i class=\"\"></i>" }]
67
+ args: [{ standalone: true, selector: 'zek-sort-button-group', imports: [CommonModule, TranslateModule], template: "<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div><i class=\"\"></i>" }]
66
68
  }], ctorParameters: function () { return []; }, propDecorators: { sortChange: [{
67
69
  type: Output
68
70
  }], ascChange: [{
@@ -76,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
76
78
  }], sortFields: [{
77
79
  type: Input
78
80
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1idXR0b24tZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NvcnQvc29ydC1idXR0b24tZ3JvdXAvc29ydC1idXR0b24tZ3JvdXAudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NvcnQvc29ydC1idXR0b24tZ3JvdXAvc29ydC1idXR0b24tZ3JvdXAuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU05QyxNQUFNLE9BQU8sa0JBQWtCO0lBb0IzQixJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQ0ksSUFBSSxDQUFDLEtBQW9CO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBSUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUNJLEdBQUcsQ0FBQyxLQUFjO1FBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBSUQ7O09BRUc7SUFDSDtRQTlDQSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUV6RDs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWxEOztXQUVHO1FBQ08sYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEMsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFZNUIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQVdyQixlQUFVLEdBQXFCLElBQUksQ0FBQztRQU16QyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDcEIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUUvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBbEVRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLGtOQ1IvQiwyc0NBYXNCOzsyRkRMVCxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0ksdUJBQXVCOzBFQVN2QixVQUFVO3NCQUFuQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFRSCxJQUFJO3NCQURQLEtBQUs7Z0JBYUYsR0FBRztzQkFETixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2tleS1wYWlyLm1vZGVsJztcclxuaW1wb3J0IHsgUmFuZG9tSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3play1zb3J0LWJ1dHRvbi1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc29ydC1idXR0b24tZ3JvdXAuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFpla1NvcnRCdXR0b25Hcm91cCB7XHJcbiAgICBlbGVtZW50TmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVjdXRlcyBhZnRlciAnc29ydCcgaW5wdXQgY2hhbmdlZFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGVzIGFmdGVyICdhc2MnIGlucHV0IGNoYW5nZWRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGFzY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqICBFeGVjdXRlcyBhZnRlciBjbGljayBvbiBjb2x1bW5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHNvcnRGaWVsZDogYW55O1xyXG4gICAgcHJpdmF0ZSBfc29ydDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBnZXQgc29ydCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc29ydDtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc29ydCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9zb3J0ICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zb3J0ID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9hc2M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGdldCBhc2MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzYztcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgYXNjKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FzYyAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fYXNjID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIHNvcnRGaWVsZHM6IEtleVBhaXJbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnROYW1lID0gJ3NvcnQtYnV0dG9uLWdyb3VwLScgKyBSYW5kb21IZWxwZXIucmFuZG9tSGV4KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc29ydEZpZWxkQ2xpY2soaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmtleSkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnNvcnRGaWVsZCA9IGl0ZW07XHJcbiAgICAgICAgaWYgKHRoaXMuc29ydCAhPT0gaXRlbS5rZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zb3J0ID0gaXRlbS5rZXk7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHRoaXMuc29ydCk7XHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc2NEZXNjQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5hc2MgPSAhdGhpcy5hc2M7XHJcbiAgICAgICAgdGhpcy5hc2NDaGFuZ2UuZW1pdCh0aGlzLmFzYyk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBtZS0zXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlNvcnQgZ3JvdXBcIj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIChjbGljayk9XCJhc2NEZXNjQ2xpY2soKVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYXNjID09PSB1bmRlZmluZWQgfHwgYXNjID09PSBudWxsXCI+PGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1zb3J0IGZhLWZ3XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImFzYyA9PT0gdHJ1ZVwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3ctZG93bi16LWEgZmEtZndcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYXNjID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3ctdXAtei1hIGZhLWZ3XCI+PC9pPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNvcnRGaWVsZHMgJiYgc29ydEZpZWxkcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGRyb3Bkb3duLXRvZ2dsZVwiIHR5cGU9XCJidXR0b25cIiBpZD1cInt7ZWxlbWVudE5hbWV9fVwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydEZpZWxkOyBlbHNlIGVsc2VGaWVsZEJsb2NrXCI+e3sgc29ydEZpZWxkLnZhbHVlIHwgdHJhbnNsYXRlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlRmllbGRCbG9jaz57eyAnQWN0aW9uLlNvcnQnIHwgdHJhbnNsYXRlIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPHVsICpuZ0lmPVwic29ydEZpZWxkcyAmJiBzb3J0RmllbGRzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZWxlbWVudE5hbWVcIj5cclxuICAgICAgICA8bGk+PGEgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc29ydEZpZWxkc1wiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwic29ydEZpZWxkQ2xpY2soaXRlbSlcIj57eyAoaXRlbS52YWx1ZSkgfCB0cmFuc2xhdGUgfX08L2E+PC9saT5cclxuICAgIDwvdWw+XHJcbjwvZGl2PjxpIGNsYXNzPVwiXCI+PC9pPiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1idXR0b24tZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NvcnQvc29ydC1idXR0b24tZ3JvdXAvc29ydC1idXR0b24tZ3JvdXAudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NvcnQvc29ydC1idXR0b24tZ3JvdXAvc29ydC1idXR0b24tZ3JvdXAuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBUS9DLE1BQU0sT0FBTyxrQkFBa0I7SUFvQjNCLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFDSSxJQUFJLENBQUMsS0FBb0I7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFJRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUNELElBQ0ksR0FBRyxDQUFDLEtBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFJRDs7T0FFRztJQUNIO1FBOUNBLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCOztXQUVHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRXpEOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFbEQ7O1dBRUc7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdoQyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQVk1QixTQUFJLEdBQVksS0FBSyxDQUFDO1FBV3JCLGVBQVUsR0FBcUIsSUFBSSxDQUFDO1FBTXpDLElBQUksQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUNwQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBRS9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FsRVEsa0JBQWtCO2tHQUFsQixrQkFBa0Isc09DWi9CLDJzQ0Fhc0IsMkNESFIsWUFBWSwrUEFBRSxlQUFlOzsyRkFFOUIsa0JBQWtCO2tCQU45QixTQUFTO2lDQUNNLElBQUksWUFDTix1QkFBdUIsV0FFeEIsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDOzBFQVE5QixVQUFVO3NCQUFuQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFRSCxJQUFJO3NCQURQLEtBQUs7Z0JBYUYsR0FBRztzQkFETixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2tleS1wYWlyLm1vZGVsJztcclxuaW1wb3J0IHsgUmFuZG9tSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHNlbGVjdG9yOiAnemVrLXNvcnQtYnV0dG9uLWdyb3VwJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zb3J0LWJ1dHRvbi1ncm91cC5odG1sJyxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZWtTb3J0QnV0dG9uR3JvdXAge1xyXG4gICAgZWxlbWVudE5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhlY3V0ZXMgYWZ0ZXIgJ3NvcnQnIGlucHV0IGNoYW5nZWRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVjdXRlcyBhZnRlciAnYXNjJyBpbnB1dCBjaGFuZ2VkXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBhc2NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgRXhlY3V0ZXMgYWZ0ZXIgY2xpY2sgb24gY29sdW1uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBzb3J0RmllbGQ6IGFueTtcclxuICAgIHByaXZhdGUgX3NvcnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgZ2V0IHNvcnQoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnQ7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHNvcnQodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fc29ydCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc29ydCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfYXNjOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBnZXQgYXNjKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hc2M7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGFzYyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh0aGlzLl9hc2MgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FzYyA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBzb3J0RmllbGRzOiBLZXlQYWlyW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmF1bHQgY29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50TmFtZSA9ICdzb3J0LWJ1dHRvbi1ncm91cC0nICsgUmFuZG9tSGVscGVyLnJhbmRvbUhleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnRGaWVsZENsaWNrKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICghaXRlbSB8fCAhaXRlbS5rZXkpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5zb3J0RmllbGQgPSBpdGVtO1xyXG4gICAgICAgIGlmICh0aGlzLnNvcnQgIT09IGl0ZW0ua2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydCA9IGl0ZW0ua2V5O1xyXG4gICAgICAgICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh0aGlzLnNvcnQpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXNjRGVzY0NsaWNrKCkge1xyXG4gICAgICAgIHRoaXMuYXNjID0gIXRoaXMuYXNjO1xyXG4gICAgICAgIHRoaXMuYXNjQ2hhbmdlLmVtaXQodGhpcy5hc2MpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbWUtM1wiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJTb3J0IGdyb3VwXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiAoY2xpY2spPVwiYXNjRGVzY0NsaWNrKClcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImFzYyA9PT0gdW5kZWZpbmVkIHx8IGFzYyA9PT0gbnVsbFwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtc29ydCBmYS1md1wiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJhc2MgPT09IHRydWVcIj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWFycm93LWRvd24tei1hIGZhLWZ3XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImFzYyA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWFycm93LXVwLXotYSBmYS1md1wiPjwvaT48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJzb3J0RmllbGRzICYmIHNvcnRGaWVsZHMubGVuZ3RoID4gMFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ7e2VsZW1lbnROYW1lfX1cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRGaWVsZDsgZWxzZSBlbHNlRmllbGRCbG9ja1wiPnt7IHNvcnRGaWVsZC52YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUZpZWxkQmxvY2s+e3sgJ0FjdGlvbi5Tb3J0JyB8IHRyYW5zbGF0ZSB9fTwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDx1bCAqbmdJZj1cInNvcnRGaWVsZHMgJiYgc29ydEZpZWxkcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImVsZW1lbnROYW1lXCI+XHJcbiAgICAgICAgPGxpPjxhICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvcnRGaWVsZHNcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNvcnRGaWVsZENsaWNrKGl0ZW0pXCI+e3sgKGl0ZW0udmFsdWUpIHwgdHJhbnNsYXRlIH19PC9hPjwvbGk+XHJcbiAgICA8L3VsPlxyXG48L2Rpdj48aSBjbGFzcz1cIlwiPjwvaT4iXX0=