@tolle_/tolle-ui 0.0.18-beta → 0.0.21-beta

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 (60) hide show
  1. package/esm2022/lib/alert.component.mjs +116 -0
  2. package/esm2022/lib/avatar-fallback.component.mjs +19 -0
  3. package/esm2022/lib/avatar.component.mjs +86 -0
  4. package/esm2022/lib/badge.component.mjs +4 -4
  5. package/esm2022/lib/breadcrumb-item.component.mjs +19 -0
  6. package/esm2022/lib/breadcrumb-link.component.mjs +60 -0
  7. package/esm2022/lib/breadcrumb-separator.component.mjs +23 -0
  8. package/esm2022/lib/breadcrumb.component.mjs +28 -0
  9. package/esm2022/lib/button.component.mjs +20 -24
  10. package/esm2022/lib/card.component.mjs +3 -3
  11. package/esm2022/lib/data-table.component.mjs +1 -1
  12. package/esm2022/lib/date-picker.component.mjs +2 -2
  13. package/esm2022/lib/date-range-picker.component.mjs +1 -1
  14. package/esm2022/lib/empty-state.component.mjs +111 -0
  15. package/esm2022/lib/input.component.mjs +125 -32
  16. package/esm2022/lib/masked-input.component.mjs +210 -46
  17. package/esm2022/lib/multi-select.component.mjs +1 -1
  18. package/esm2022/lib/otp-group.component.mjs +15 -0
  19. package/esm2022/lib/otp-slot.component.mjs +74 -0
  20. package/esm2022/lib/otp.component.mjs +127 -0
  21. package/esm2022/lib/popover-content.component.mjs +44 -0
  22. package/esm2022/lib/popover.component.mjs +105 -0
  23. package/esm2022/lib/radio-group.component.mjs +78 -0
  24. package/esm2022/lib/radio-item.component.mjs +112 -0
  25. package/esm2022/lib/radio-service.mjs +23 -0
  26. package/esm2022/lib/select.component.mjs +38 -9
  27. package/esm2022/lib/textarea.component.mjs +130 -26
  28. package/esm2022/lib/theme.service.mjs +227 -56
  29. package/esm2022/public-api.mjs +16 -1
  30. package/esm2022/tolle-ui.mjs +5 -0
  31. package/fesm2022/{tolle_-tolle-ui.mjs → tolle-ui.mjs} +1730 -201
  32. package/fesm2022/tolle-ui.mjs.map +1 -0
  33. package/lib/alert.component.d.ts +25 -0
  34. package/lib/avatar-fallback.component.d.ts +5 -0
  35. package/lib/avatar.component.d.ts +17 -0
  36. package/lib/breadcrumb-item.component.d.ts +5 -0
  37. package/lib/breadcrumb-link.component.d.ts +6 -0
  38. package/lib/breadcrumb-separator.component.d.ts +5 -0
  39. package/lib/breadcrumb.component.d.ts +8 -0
  40. package/lib/button.component.d.ts +1 -4
  41. package/lib/empty-state.component.d.ts +20 -0
  42. package/lib/input.component.d.ts +11 -3
  43. package/lib/masked-input.component.d.ts +14 -1
  44. package/lib/otp-group.component.d.ts +5 -0
  45. package/lib/otp-slot.component.d.ts +13 -0
  46. package/lib/otp.component.d.ts +21 -0
  47. package/lib/popover-content.component.d.ts +8 -0
  48. package/lib/popover.component.d.ts +19 -0
  49. package/lib/radio-group.component.d.ts +23 -0
  50. package/lib/radio-item.component.d.ts +22 -0
  51. package/lib/radio-service.d.ts +11 -0
  52. package/lib/select.component.d.ts +1 -0
  53. package/lib/textarea.component.d.ts +8 -1
  54. package/lib/theme.service.d.ts +37 -3
  55. package/package.json +7 -6
  56. package/preset.js +47 -33
  57. package/public-api.d.ts +15 -0
  58. package/theme.css +208 -163
  59. package/esm2022/tolle_-tolle-ui.mjs +0 -5
  60. package/fesm2022/tolle_-tolle-ui.mjs.map +0 -1
@@ -3,21 +3,30 @@ import { CommonModule } from '@angular/common';
3
3
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4
4
  import { cn } from './utils/cn';
5
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
6
7
  export class MaskedInputComponent {
7
8
  el;
8
9
  cdr;
10
+ id = `masked-input-${Math.random().toString(36).substr(2, 9)}`;
11
+ label = '';
12
+ hint = '';
13
+ errorMessage = '';
9
14
  mask = '';
10
15
  placeholder = '';
11
16
  type = 'text';
12
17
  disabled = false;
18
+ readonly = false;
13
19
  class = '';
20
+ containerClass = '';
14
21
  error = false;
15
22
  size = 'default';
16
23
  returnRaw = false;
24
+ hideHintOnFocus = true;
17
25
  inputEl;
18
26
  hasPrefix = false;
19
27
  hasSuffix = false;
20
28
  displayValue = '';
29
+ isFocused = false;
21
30
  tokens = {
22
31
  '0': /\d/, '9': /\d/, 'a': /[a-z]/i, 'A': /[a-z]/i, '*': /[a-z0-9]/i
23
32
  };
@@ -27,7 +36,6 @@ export class MaskedInputComponent {
27
36
  this.el = el;
28
37
  this.cdr = cdr;
29
38
  }
30
- // FIXED DETECTION: Check the actual DOM nodes projected into the component
31
39
  ngAfterContentChecked() {
32
40
  const prefix = this.el.nativeElement.querySelector('[prefix]');
33
41
  const suffix = this.el.nativeElement.querySelector('[suffix]');
@@ -37,11 +45,76 @@ export class MaskedInputComponent {
37
45
  this.cdr.detectChanges();
38
46
  }
39
47
  }
48
+ get computedLabelClass() {
49
+ return cn("text-sm font-medium text-foreground leading-none transition-opacity duration-200", this.disabled && "opacity-50");
50
+ }
51
+ get computedContainerClass() {
52
+ return cn(
53
+ // Base styles
54
+ "group relative flex items-center w-full rounded-md border transition-all duration-200", "bg-background",
55
+ // Border and shadow
56
+ "border-input shadow-sm",
57
+ // Sizing
58
+ this.size === 'xs' && "h-8 px-2 gap-1.5 text-xs", this.size === 'sm' && "h-9 px-3 gap-2 text-sm", this.size === 'default' && "h-10 px-3 gap-2 text-sm", this.size === 'lg' && "h-11 px-4 gap-3 text-base",
59
+ // Focus state - SIMPLE LIKE ZARDUI
60
+ !(this.readonly || this.disabled) && [
61
+ "focus-within:border-primary/80",
62
+ "focus-within:ring-4",
63
+ "focus-within:ring-ring/30",
64
+ "focus-within:ring-offset-0",
65
+ "focus-within:shadow-none",
66
+ ],
67
+ // Error state
68
+ this.error && [
69
+ "border-destructive",
70
+ !(this.readonly || this.disabled) && [
71
+ "focus-within:border-destructive/80",
72
+ "focus-within:ring-destructive/30"
73
+ ]
74
+ ],
75
+ // Disabled state
76
+ this.disabled && [
77
+ "cursor-not-allowed opacity-50",
78
+ "border-opacity-50"
79
+ ],
80
+ // Readonly state
81
+ this.readonly && [
82
+ "cursor-default",
83
+ "border-dashed",
84
+ !this.disabled && "focus-within:ring-0 focus-within:border-opacity-100"
85
+ ], this.containerClass);
86
+ }
40
87
  get computedInputClass() {
41
- return cn("flex w-full rounded-md border border-input bg-background text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50 transition-all", 'disabled:opacity-50 shadow-sm transition-shadow', this.size === 'xs' && "h-8 text-xs px-2", this.size === 'sm' && "h-9 px-3", this.size === 'default' && "h-10 px-3", this.size === 'lg' && "h-11 px-4 text-base", "group-has-[[prefix]]:pl-10 group-has-[[suffix]]:pr-10", this.size === 'xs' && "group-has-[[prefix]]:pl-8 group-has-[[suffix]]:pr-8", this.error && "border-destructive focus-visible:ring-destructive", this.class);
88
+ return cn(
89
+ // Base styles
90
+ "flex-1 bg-transparent border-none p-0", "placeholder:text-muted-foreground",
91
+ // Remove all default focus styles
92
+ "focus:outline-none focus:ring-0 focus:shadow-none",
93
+ // Text sizing
94
+ this.size === 'xs' && "text-xs", this.size === 'sm' && "text-sm", this.size === 'default' && "text-sm", this.size === 'lg' && "text-base",
95
+ // Cursor states
96
+ this.disabled && "cursor-not-allowed", this.readonly && "cursor-default",
97
+ // Text color
98
+ "text-foreground",
99
+ // Selection color
100
+ "selection:bg-primary/20 selection:text-foreground", this.class);
101
+ }
102
+ focusInput() {
103
+ if (!this.disabled && this.inputEl) {
104
+ this.inputEl.nativeElement.focus();
105
+ }
106
+ }
107
+ onFocus() {
108
+ this.isFocused = true;
109
+ }
110
+ onBlur() {
111
+ this.isFocused = false;
112
+ this.onTouched();
42
113
  }
43
114
  // --- Masking Logic ---
44
115
  onInput(event) {
116
+ if (this.readonly || this.disabled)
117
+ return;
45
118
  const input = event.target;
46
119
  const raw = this.unmask(input.value);
47
120
  const masked = this.applyMask(raw);
@@ -75,47 +148,90 @@ export class MaskedInputComponent {
75
148
  }
76
149
  return formatted;
77
150
  }
78
- unmask(val) { return val.replace(/[^a-zA-Z0-9]/g, ''); }
151
+ unmask(val) {
152
+ return val.replace(/[^a-zA-Z0-9]/g, '');
153
+ }
79
154
  writeValue(value) {
80
155
  this.displayValue = value ? this.applyMask(this.unmask(value.toString())) : '';
81
156
  this.cdr.markForCheck();
82
157
  }
83
- registerOnChange(fn) { this.onChange = fn; }
84
- registerOnTouched(fn) { this.onTouched = fn; }
85
- setDisabledState(isDisabled) { this.disabled = isDisabled; }
158
+ registerOnChange(fn) {
159
+ this.onChange = fn;
160
+ }
161
+ registerOnTouched(fn) {
162
+ this.onTouched = fn;
163
+ }
164
+ setDisabledState(isDisabled) {
165
+ this.disabled = isDisabled;
166
+ this.cdr.markForCheck();
167
+ }
86
168
  cn = cn;
87
169
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaskedInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
88
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MaskedInputComponent, isStandalone: true, selector: "tolle-masked-input", inputs: { mask: "mask", placeholder: "placeholder", type: "type", disabled: "disabled", class: "class", error: "error", size: "size", returnRaw: "returnRaw" }, providers: [
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MaskedInputComponent, isStandalone: true, selector: "tolle-masked-input", inputs: { id: "id", label: "label", hint: "hint", errorMessage: "errorMessage", mask: "mask", placeholder: "placeholder", type: "type", disabled: "disabled", readonly: "readonly", class: "class", containerClass: "containerClass", error: "error", size: "size", returnRaw: "returnRaw", hideHintOnFocus: "hideHintOnFocus" }, providers: [
89
171
  {
90
172
  provide: NG_VALUE_ACCESSOR,
91
173
  useExisting: forwardRef(() => MaskedInputComponent),
92
174
  multi: true
93
175
  }
94
176
  ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, static: true }], ngImport: i0, template: `
95
- <div [class]="cn('relative flex items-center w-full group', 'size-' + size, class)">
177
+ <div class="flex flex-col gap-1.5 w-full">
178
+ <label
179
+ *ngIf="label"
180
+ [for]="id"
181
+ [class]="computedLabelClass"
182
+ >
183
+ {{ label }}
184
+ </label>
96
185
 
97
- <div class="absolute left-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
98
- [class.left-2.5]="size === 'xs'">
99
- <ng-content select="[prefix]"></ng-content>
100
- </div>
186
+ <div
187
+ [class]="computedContainerClass"
188
+ (click)="focusInput()"
189
+ >
190
+ <!-- Prefix Icon -->
191
+ <div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
192
+ <ng-content select="[prefix]"></ng-content>
193
+ </div>
101
194
 
102
- <input
103
- #inputEl
104
- [type]="type"
105
- [placeholder]="placeholder"
106
- [disabled]="disabled"
107
- [value]="displayValue"
108
- (input)="onInput($event)"
109
- (blur)="onTouched()"
110
- [class]="computedInputClass"
111
- />
195
+ <input
196
+ #inputEl
197
+ [id]="id"
198
+ [type]="type"
199
+ [placeholder]="placeholder"
200
+ [disabled]="disabled"
201
+ [readOnly]="readonly"
202
+ [value]="displayValue"
203
+ (input)="onInput($event)"
204
+ (blur)="onBlur()"
205
+ (focus)="onFocus()"
206
+ [class]="computedInputClass"
207
+ [attr.aria-invalid]="error"
208
+ [attr.aria-describedby]="error && errorMessage ? id + '-error' : null"
209
+ />
112
210
 
113
- <div class="absolute right-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
114
- [class.right-2.5]="size === 'xs'">
115
- <ng-content select="[suffix]"></ng-content>
211
+ <!-- Suffix Icon -->
212
+ <div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
213
+ <ng-content select="[suffix]"></ng-content>
214
+ </div>
116
215
  </div>
216
+
217
+ <ng-container *ngIf="!disabled">
218
+ <p
219
+ *ngIf="hint && !error"
220
+ class="text-xs text-muted-foreground px-1 transition-opacity duration-200"
221
+ [class.opacity-0]="isFocused && hideHintOnFocus"
222
+ >
223
+ {{ hint }}
224
+ </p>
225
+ <p
226
+ *ngIf="error && errorMessage"
227
+ [id]="id + '-error'"
228
+ class="text-xs text-destructive px-1"
229
+ >
230
+ {{ errorMessage }}
231
+ </p>
232
+ </ng-container>
117
233
  </div>
118
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] });
234
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] });
119
235
  }
120
236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaskedInputComponent, decorators: [{
121
237
  type: Component,
@@ -131,32 +247,74 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
131
247
  }
132
248
  ],
133
249
  template: `
134
- <div [class]="cn('relative flex items-center w-full group', 'size-' + size, class)">
250
+ <div class="flex flex-col gap-1.5 w-full">
251
+ <label
252
+ *ngIf="label"
253
+ [for]="id"
254
+ [class]="computedLabelClass"
255
+ >
256
+ {{ label }}
257
+ </label>
135
258
 
136
- <div class="absolute left-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
137
- [class.left-2.5]="size === 'xs'">
138
- <ng-content select="[prefix]"></ng-content>
139
- </div>
259
+ <div
260
+ [class]="computedContainerClass"
261
+ (click)="focusInput()"
262
+ >
263
+ <!-- Prefix Icon -->
264
+ <div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
265
+ <ng-content select="[prefix]"></ng-content>
266
+ </div>
140
267
 
141
- <input
142
- #inputEl
143
- [type]="type"
144
- [placeholder]="placeholder"
145
- [disabled]="disabled"
146
- [value]="displayValue"
147
- (input)="onInput($event)"
148
- (blur)="onTouched()"
149
- [class]="computedInputClass"
150
- />
268
+ <input
269
+ #inputEl
270
+ [id]="id"
271
+ [type]="type"
272
+ [placeholder]="placeholder"
273
+ [disabled]="disabled"
274
+ [readOnly]="readonly"
275
+ [value]="displayValue"
276
+ (input)="onInput($event)"
277
+ (blur)="onBlur()"
278
+ (focus)="onFocus()"
279
+ [class]="computedInputClass"
280
+ [attr.aria-invalid]="error"
281
+ [attr.aria-describedby]="error && errorMessage ? id + '-error' : null"
282
+ />
151
283
 
152
- <div class="absolute right-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
153
- [class.right-2.5]="size === 'xs'">
154
- <ng-content select="[suffix]"></ng-content>
284
+ <!-- Suffix Icon -->
285
+ <div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
286
+ <ng-content select="[suffix]"></ng-content>
287
+ </div>
155
288
  </div>
289
+
290
+ <ng-container *ngIf="!disabled">
291
+ <p
292
+ *ngIf="hint && !error"
293
+ class="text-xs text-muted-foreground px-1 transition-opacity duration-200"
294
+ [class.opacity-0]="isFocused && hideHintOnFocus"
295
+ >
296
+ {{ hint }}
297
+ </p>
298
+ <p
299
+ *ngIf="error && errorMessage"
300
+ [id]="id + '-error'"
301
+ class="text-xs text-destructive px-1"
302
+ >
303
+ {{ errorMessage }}
304
+ </p>
305
+ </ng-container>
156
306
  </div>
157
307
  `
158
308
  }]
159
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { mask: [{
309
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { id: [{
310
+ type: Input
311
+ }], label: [{
312
+ type: Input
313
+ }], hint: [{
314
+ type: Input
315
+ }], errorMessage: [{
316
+ type: Input
317
+ }], mask: [{
160
318
  type: Input
161
319
  }], placeholder: [{
162
320
  type: Input
@@ -164,16 +322,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
164
322
  type: Input
165
323
  }], disabled: [{
166
324
  type: Input
325
+ }], readonly: [{
326
+ type: Input
167
327
  }], class: [{
168
328
  type: Input
329
+ }], containerClass: [{
330
+ type: Input
169
331
  }], error: [{
170
332
  type: Input
171
333
  }], size: [{
172
334
  type: Input
173
335
  }], returnRaw: [{
174
336
  type: Input
337
+ }], hideHintOnFocus: [{
338
+ type: Input
175
339
  }], inputEl: [{
176
340
  type: ViewChild,
177
341
  args: ['inputEl', { static: true }]
178
342
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbWFza2VkLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWMsU0FBUyxFQUVwRCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQXVDaEMsTUFBTSxPQUFPLG9CQUFvQjtJQXVCWDtJQUF3QjtJQXRCbkMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksR0FBRyxNQUFNLENBQUM7SUFDZCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxLQUFLLEdBQVksS0FBSyxDQUFDO0lBQ3ZCLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFYSxPQUFPLENBQWdDO0lBRS9FLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRVYsTUFBTSxHQUE4QjtRQUMxQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXO0tBQ3JFLENBQUM7SUFFRixRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBUSxHQUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlQsMkRBaENTLFlBQVksOEJBQUUsV0FBVzs7NEZBa0N4QixvQkFBb0I7a0JBckNoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO2lCQUNGOytHQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWtDLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLW1hc2tlZC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXNrZWRJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbigncmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGdyb3VwJywgJ3NpemUtJyArIHNpemUsIGNsYXNzKVwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1mb2N1cy13aXRoaW46dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgW2NsYXNzLmxlZnQtMi41XT1cInNpemUgPT09ICd4cydcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dEVsXG4gICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkSW5wdXRDbGFzc1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgIFtjbGFzcy5yaWdodC0yLjVdPVwic2l6ZSA9PT0gJ3hzJ1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE1hc2tlZElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBASW5wdXQoKSBtYXNrOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgdHlwZSA9ICd0ZXh0JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSByZXR1cm5SYXcgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgaGFzUHJlZml4ID0gZmFsc2U7XG4gIGhhc1N1ZmZpeCA9IGZhbHNlO1xuICBkaXNwbGF5VmFsdWUgPSAnJztcblxuICBwcml2YXRlIHRva2VuczogeyBba2V5OiBzdHJpbmddOiBSZWdFeHAgfSA9IHtcbiAgICAnMCc6IC9cXGQvLCAnOSc6IC9cXGQvLCAnYSc6IC9bYS16XS9pLCAnQSc6IC9bYS16XS9pLCAnKic6IC9bYS16MC05XS9pXG4gIH07XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvLyBGSVhFRCBERVRFQ1RJT046IENoZWNrIHRoZSBhY3R1YWwgRE9NIG5vZGVzIHByb2plY3RlZCBpbnRvIHRoZSBjb21wb25lbnRcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcHJlZml4XScpO1xuICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbc3VmZml4XScpO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJlZml4ICE9PSAhIXByZWZpeCB8fCB0aGlzLmhhc1N1ZmZpeCAhPT0gISFzdWZmaXgpIHtcbiAgICAgIHRoaXMuaGFzUHJlZml4ID0gISFwcmVmaXg7XG4gICAgICB0aGlzLmhhc1N1ZmZpeCA9ICEhc3VmZml4O1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb21wdXRlZElucHV0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJmbGV4IHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgdHJhbnNpdGlvbi1hbGxcIixcbiAgICAgICdkaXNhYmxlZDpvcGFjaXR5LTUwIHNoYWRvdy1zbSB0cmFuc2l0aW9uLXNoYWRvdycsXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJoLTggdGV4dC14cyBweC0yXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdzbScgJiYgXCJoLTkgcHgtM1wiLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgXCJoLTEwIHB4LTNcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiBcImgtMTEgcHgtNCB0ZXh0LWJhc2VcIixcbiAgICAgIFwiZ3JvdXAtaGFzLVtbcHJlZml4XV06cGwtMTAgZ3JvdXAtaGFzLVtbc3VmZml4XV06cHItMTBcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiBcImdyb3VwLWhhcy1bW3ByZWZpeF1dOnBsLTggZ3JvdXAtaGFzLVtbc3VmZml4XV06cHItOFwiLFxuICAgICAgdGhpcy5lcnJvciAmJiBcImJvcmRlci1kZXN0cnVjdGl2ZSBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmVcIixcbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG5cbiAgLy8gLS0tIE1hc2tpbmcgTG9naWMgLS0tXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCByYXcgPSB0aGlzLnVubWFzayhpbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgbWFza2VkID0gdGhpcy5hcHBseU1hc2socmF3KTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG1hc2tlZDtcbiAgICBpbnB1dC52YWx1ZSA9IG1hc2tlZDtcbiAgICB0aGlzLnJldHVyblJhdyA/IHRoaXMub25DaGFuZ2UocmF3KSA6IHRoaXMub25DaGFuZ2UobWFza2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlNYXNrKHJhd1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByYXdJbmRleCA9IDA7IGxldCBmb3JtYXR0ZWQgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJhd0luZGV4ID49IHJhd1ZhbHVlLmxlbmd0aCkgYnJlYWs7XG4gICAgICBjb25zdCBtYXNrQ2hhciA9IHRoaXMubWFza1tpXTtcbiAgICAgIGNvbnN0IHJhd0NoYXIgPSByYXdWYWx1ZVtyYXdJbmRleF07XG4gICAgICBpZiAodGhpcy50b2tlbnNbbWFza0NoYXJdKSB7XG4gICAgICAgIGlmICh0aGlzLnRva2Vuc1ttYXNrQ2hhcl0udGVzdChyYXdDaGFyKSkgeyBmb3JtYXR0ZWQgKz0gcmF3Q2hhcjsgcmF3SW5kZXgrKzsgfVxuICAgICAgICBlbHNlIHsgcmF3SW5kZXgrKzsgaS0tOyB9XG4gICAgICB9IGVsc2UgeyBmb3JtYXR0ZWQgKz0gbWFza0NoYXI7IGlmIChyYXdDaGFyID09PSBtYXNrQ2hhcikgcmF3SW5kZXgrKzsgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSB1bm1hc2sodmFsOiBzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gdmFsLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJyk7IH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlID8gdGhpcy5hcHBseU1hc2sodGhpcy51bm1hc2sodmFsdWUudG9TdHJpbmcoKSkpIDogJyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbWFza2VkLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWMsU0FBUyxFQUVwRCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUF5RWhDLE1BQU0sT0FBTyxvQkFBb0I7SUErQlg7SUFBd0I7SUE5Qm5DLEVBQUUsR0FBVyxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkUsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksR0FBRyxNQUFNLENBQUM7SUFDZCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUNqRCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFFRCxPQUFPLENB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aEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztvQkFDcEMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRFQ7aUJBQ0Y7K0dBRVUsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVrQyxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsXG4gIEFmdGVyQ29udGVudENoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1tYXNrZWQtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWFza2VkSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEuNSB3LWZ1bGxcIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICAqbmdJZj1cImxhYmVsXCJcbiAgICAgICAgW2Zvcl09XCJpZFwiXG4gICAgICAgIFtjbGFzc109XCJjb21wdXRlZExhYmVsQ2xhc3NcIlxuICAgICAgPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRDb250YWluZXJDbGFzc1wiXG4gICAgICAgIChjbGljayk9XCJmb2N1c0lucHV0KClcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFByZWZpeCBJY29uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGdyb3VwLWZvY3VzLXdpdGhpbjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dEVsXG4gICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkSW5wdXRDbGFzc1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImVycm9yXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImVycm9yICYmIGVycm9yTWVzc2FnZSA/IGlkICsgJy1lcnJvcicgOiBudWxsXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8IS0tIFN1ZmZpeCBJY29uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGdyb3VwLWZvY3VzLXdpdGhpbjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImhpbnQgJiYgIWVycm9yXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHB4LTEgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgW2NsYXNzLm9wYWNpdHktMF09XCJpc0ZvY3VzZWQgJiYgaGlkZUhpbnRPbkZvY3VzXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGhpbnQgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiZXJyb3IgJiYgZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZGVzdHJ1Y3RpdmUgcHgtMVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTWFza2VkSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSBgbWFza2VkLWlucHV0LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGludDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1hc2s6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSB0eXBlID0gJ3RleHQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICd4cycgfCAnc20nIHwgJ2RlZmF1bHQnIHwgJ2xnJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgcmV0dXJuUmF3ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVIaW50T25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRFbCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWwhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIGhhc1ByZWZpeCA9IGZhbHNlO1xuICBoYXNTdWZmaXggPSBmYWxzZTtcbiAgZGlzcGxheVZhbHVlID0gJyc7XG4gIGlzRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdG9rZW5zOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9ID0ge1xuICAgICcwJzogL1xcZC8sICc5JzogL1xcZC8sICdhJzogL1thLXpdL2ksICdBJzogL1thLXpdL2ksICcqJzogL1thLXowLTldL2lcbiAgfTtcblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3ByZWZpeF0nKTtcbiAgICBjb25zdCBzdWZmaXggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3N1ZmZpeF0nKTtcblxuICAgIGlmICh0aGlzLmhhc1ByZWZpeCAhPT0gISFwcmVmaXggfHwgdGhpcy5oYXNTdWZmaXggIT09ICEhc3VmZml4KSB7XG4gICAgICB0aGlzLmhhc1ByZWZpeCA9ICEhcHJlZml4O1xuICAgICAgdGhpcy5oYXNTdWZmaXggPSAhIXN1ZmZpeDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29tcHV0ZWRMYWJlbENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmQgbGVhZGluZy1ub25lIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDBcIixcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgXCJvcGFjaXR5LTUwXCJcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXNcbiAgICAgIFwiZ3JvdXAgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiLFxuICAgICAgXCJiZy1iYWNrZ3JvdW5kXCIsXG5cbiAgICAgIC8vIEJvcmRlciBhbmQgc2hhZG93XG4gICAgICBcImJvcmRlci1pbnB1dCBzaGFkb3ctc21cIixcblxuICAgICAgLy8gU2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJoLTggcHgtMiBnYXAtMS41IHRleHQteHNcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiBcImgtOSBweC0zIGdhcC0yIHRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmIFwiaC0xMCBweC0zIGdhcC0yIHRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiBcImgtMTEgcHgtNCBnYXAtMyB0ZXh0LWJhc2VcIixcblxuICAgICAgLy8gRm9jdXMgc3RhdGUgLSBTSU1QTEUgTElLRSBaQVJEVUlcbiAgICAgICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSAmJiBbXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOmJvcmRlci1wcmltYXJ5LzgwXCIsXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOnJpbmctNFwiLFxuICAgICAgICBcImZvY3VzLXdpdGhpbjpyaW5nLXJpbmcvMzBcIixcbiAgICAgICAgXCJmb2N1cy13aXRoaW46cmluZy1vZmZzZXQtMFwiLFxuICAgICAgICBcImZvY3VzLXdpdGhpbjpzaGFkb3ctbm9uZVwiLFxuICAgICAgXSxcblxuICAgICAgLy8gRXJyb3Igc3RhdGVcbiAgICAgIHRoaXMuZXJyb3IgJiYgW1xuICAgICAgICBcImJvcmRlci1kZXN0cnVjdGl2ZVwiLFxuICAgICAgICAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgJiYgW1xuICAgICAgICAgIFwiZm9jdXMtd2l0aGluOmJvcmRlci1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICAgIFwiZm9jdXMtd2l0aGluOnJpbmctZGVzdHJ1Y3RpdmUvMzBcIlxuICAgICAgICBdXG4gICAgICBdLFxuXG4gICAgICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAgICAgdGhpcy5kaXNhYmxlZCAmJiBbXG4gICAgICAgIFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIixcbiAgICAgICAgXCJib3JkZXItb3BhY2l0eS01MFwiXG4gICAgICBdLFxuXG4gICAgICAvLyBSZWFkb25seSBzdGF0ZVxuICAgICAgdGhpcy5yZWFkb25seSAmJiBbXG4gICAgICAgIFwiY3Vyc29yLWRlZmF1bHRcIixcbiAgICAgICAgXCJib3JkZXItZGFzaGVkXCIsXG4gICAgICAgICF0aGlzLmRpc2FibGVkICYmIFwiZm9jdXMtd2l0aGluOnJpbmctMCBmb2N1cy13aXRoaW46Ym9yZGVyLW9wYWNpdHktMTAwXCJcbiAgICAgIF0sXG5cbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkSW5wdXRDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAvLyBCYXNlIHN0eWxlc1xuICAgICAgXCJmbGV4LTEgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcC0wXCIsXG4gICAgICBcInBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuXG4gICAgICAvLyBSZW1vdmUgYWxsIGRlZmF1bHQgZm9jdXMgc3R5bGVzXG4gICAgICBcImZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6c2hhZG93LW5vbmVcIixcblxuICAgICAgLy8gVGV4dCBzaXppbmdcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiBcInRleHQteHNcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiBcInRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmIFwidGV4dC1zbVwiLFxuICAgICAgdGhpcy5zaXplID09PSAnbGcnICYmIFwidGV4dC1iYXNlXCIsXG5cbiAgICAgIC8vIEN1cnNvciBzdGF0ZXNcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgXCJjdXJzb3Itbm90LWFsbG93ZWRcIixcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgXCJjdXJzb3ItZGVmYXVsdFwiLFxuXG4gICAgICAvLyBUZXh0IGNvbG9yXG4gICAgICBcInRleHQtZm9yZWdyb3VuZFwiLFxuXG4gICAgICAvLyBTZWxlY3Rpb24gY29sb3JcbiAgICAgIFwic2VsZWN0aW9uOmJnLXByaW1hcnkvMjAgc2VsZWN0aW9uOnRleHQtZm9yZWdyb3VuZFwiLFxuXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuaW5wdXRFbCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvLyAtLS0gTWFza2luZyBMb2dpYyAtLS1cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCByYXcgPSB0aGlzLnVubWFzayhpbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgbWFza2VkID0gdGhpcy5hcHBseU1hc2socmF3KTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG1hc2tlZDtcbiAgICBpbnB1dC52YWx1ZSA9IG1hc2tlZDtcbiAgICB0aGlzLnJldHVyblJhdyA/IHRoaXMub25DaGFuZ2UocmF3KSA6IHRoaXMub25DaGFuZ2UobWFza2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlNYXNrKHJhd1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByYXdJbmRleCA9IDA7XG4gICAgbGV0IGZvcm1hdHRlZCA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmF3SW5kZXggPj0gcmF3VmFsdWUubGVuZ3RoKSBicmVhaztcbiAgICAgIGNvbnN0IG1hc2tDaGFyID0gdGhpcy5tYXNrW2ldO1xuICAgICAgY29uc3QgcmF3Q2hhciA9IHJhd1ZhbHVlW3Jhd0luZGV4XTtcbiAgICAgIGlmICh0aGlzLnRva2Vuc1ttYXNrQ2hhcl0pIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5zW21hc2tDaGFyXS50ZXN0KHJhd0NoYXIpKSB7XG4gICAgICAgICAgZm9ybWF0dGVkICs9IHJhd0NoYXI7XG4gICAgICAgICAgcmF3SW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByYXdJbmRleCsrO1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0dGVkICs9IG1hc2tDaGFyO1xuICAgICAgICBpZiAocmF3Q2hhciA9PT0gbWFza0NoYXIpIHJhd0luZGV4Kys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICBwcml2YXRlIHVubWFzayh2YWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZSA/IHRoaXMuYXBwbHlNYXNrKHRoaXMudW5tYXNrKHZhbHVlLnRvU3RyaW5nKCkpKSA6ICcnO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
@@ -157,7 +157,7 @@ export class MultiSelectComponent {
157
157
  </div>
158
158
  </div>
159
159
  </div>
160
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BadgeComponent, selector: "tolle-badge", inputs: ["variant", "size", "removable", "class"], outputs: ["onRemove"] }, { kind: "component", type: InputComponent, selector: "tolle-input", inputs: ["id", "label", "hint", "errorMessage", "type", "placeholder", "size", "containerClass", "class", "disabled", "readonly", "error"] }] });
160
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BadgeComponent, selector: "tolle-badge", inputs: ["variant", "size", "removable", "class"], outputs: ["onRemove"] }, { kind: "component", type: InputComponent, selector: "tolle-input", inputs: ["id", "label", "hint", "errorMessage", "type", "placeholder", "size", "containerClass", "class", "disabled", "readonly", "error", "hideHintOnFocus"] }] });
161
161
  }
162
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiSelectComponent, decorators: [{
163
163
  type: Component,
@@ -0,0 +1,15 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class OtpGroupComponent {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OtpGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OtpGroupComponent, isStandalone: true, selector: "tolle-otp-group", ngImport: i0, template: `
6
+ <div class="flex items-center"><ng-content></ng-content></div>
7
+ `, isInline: true, styles: [""] });
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OtpGroupComponent, decorators: [{
10
+ type: Component,
11
+ args: [{ selector: 'tolle-otp-group', standalone: true, imports: [], template: `
12
+ <div class="flex items-center"><ng-content></ng-content></div>
13
+ ` }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvb3RwLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVcxQyxNQUFNLE9BQU8saUJBQWlCO3dHQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQiwyRUFMbEI7O0dBRVQ7OzRGQUdVLGlCQUFpQjtrQkFUN0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsRUFBRSxZQUNEOztHQUVUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLW90cC1ncm91cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgYFxufSlcbmV4cG9ydCBjbGFzcyBPdHBHcm91cENvbXBvbmVudCB7XG5cbn1cbiJdfQ==
@@ -0,0 +1,74 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { cn } from "./utils/cn";
3
+ import { NgIf } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ export class OtpSlotComponent {
6
+ char = '';
7
+ isActive = false;
8
+ isFirst = false;
9
+ isLast = false;
10
+ class = '';
11
+ cn = cn;
12
+ get computedClass() {
13
+ return cn(
14
+ // Base styles (matching input container)
15
+ 'relative flex h-10 w-10 items-center justify-center', 'transition-all duration-200', 'text-center font-medium select-none',
16
+ // Border styling - exactly like input
17
+ 'border border-input shadow-sm bg-background',
18
+ // FOCUS STYLING - EXACTLY LIKE INPUT COMPONENT
19
+ this.isActive && [
20
+ // Darker border on focus
21
+ 'border-primary/80',
22
+ // Remove shadow on focus
23
+ 'shadow-none',
24
+ // Focus ring with same styling as input
25
+ 'ring-4',
26
+ 'ring-ring/30',
27
+ 'ring-offset-0',
28
+ // Ensure it's above other slots
29
+ 'z-10'
30
+ ],
31
+ // Filled state
32
+ this.char && !this.isActive && 'border-primary/60',
33
+ // Border radius
34
+ this.isFirst && 'rounded-l-md', this.isLast && 'rounded-r-md',
35
+ // Remove left border for all but first slot
36
+ !this.isFirst && '-ml-px', this.class);
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OtpSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OtpSlotComponent, isStandalone: true, selector: "tolle-otp-slot", inputs: { char: "char", isActive: "isActive", isFirst: "isFirst", isLast: "isLast", class: "class" }, ngImport: i0, template: `
40
+ <div [class]="computedClass">
41
+ <span class="text-lg font-medium">{{ char || '' }}</span>
42
+ <div *ngIf="isActive && !char" class="pointer-events-none absolute inset-0 flex items-center justify-center">
43
+ <div class="h-6 w-0.5 animate-caret-blink bg-foreground"></div>
44
+ </div>
45
+ </div>
46
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OtpSlotComponent, decorators: [{
49
+ type: Component,
50
+ args: [{
51
+ selector: 'tolle-otp-slot',
52
+ standalone: true,
53
+ imports: [NgIf],
54
+ template: `
55
+ <div [class]="computedClass">
56
+ <span class="text-lg font-medium">{{ char || '' }}</span>
57
+ <div *ngIf="isActive && !char" class="pointer-events-none absolute inset-0 flex items-center justify-center">
58
+ <div class="h-6 w-0.5 animate-caret-blink bg-foreground"></div>
59
+ </div>
60
+ </div>
61
+ `
62
+ }]
63
+ }], propDecorators: { char: [{
64
+ type: Input
65
+ }], isActive: [{
66
+ type: Input
67
+ }], isFirst: [{
68
+ type: Input
69
+ }], isLast: [{
70
+ type: Input
71
+ }], class: [{
72
+ type: Input
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLXNsb3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9vdHAtc2xvdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsSUFBSSxHQUF1QixFQUFFLENBQUM7SUFDOUIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFDeEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNsQixFQUFFLEdBQUcsRUFBRSxDQUFDO0lBRWxCLElBQUksYUFBYTtRQUNmLE9BQU8sRUFBRTtRQUNQLHlDQUF5QztRQUN6QyxxREFBcUQsRUFDckQsNkJBQTZCLEVBQzdCLHFDQUFxQztRQUVyQyxzQ0FBc0M7UUFDdEMsNkNBQTZDO1FBRTdDLCtDQUErQztRQUMvQyxJQUFJLENBQUMsUUFBUSxJQUFJO1lBQ2YseUJBQXlCO1lBQ3pCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsYUFBYTtZQUNiLHdDQUF3QztZQUN4QyxRQUFRO1lBQ1IsY0FBYztZQUNkLGVBQWU7WUFDZixnQ0FBZ0M7WUFDaEMsTUFBTTtTQUNQO1FBRUQsZUFBZTtRQUNmLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLG1CQUFtQjtRQUVsRCxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxjQUFjLEVBQzlCLElBQUksQ0FBQyxNQUFNLElBQUksY0FBYztRQUU3Qiw0Q0FBNEM7UUFDNUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsRUFFekIsSUFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO0lBQ0osQ0FBQzt3R0E1Q1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsZ0xBVGpCOzs7Ozs7O0dBT1QsNERBUlMsSUFBSTs7NEZBVUgsZ0JBQWdCO2tCQWI1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0JBQ2YsUUFBUSxFQUFFOzs7Ozs7O0dBT1Q7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuL3V0aWxzL2NuXCI7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtb3RwLXNsb3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtXCI+e3sgY2hhciB8fCAnJyB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0FjdGl2ZSAmJiAhY2hhclwiIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTYgdy0wLjUgYW5pbWF0ZS1jYXJldC1ibGluayBiZy1mb3JlZ3JvdW5kXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBPdHBTbG90Q29tcG9uZW50IHtcbiAgQElucHV0KCkgY2hhcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIEBJbnB1dCgpIGlzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzRmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMYXN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIGNuID0gY247XG5cbiAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXMgKG1hdGNoaW5nIGlucHV0IGNvbnRhaW5lcilcbiAgICAgICdyZWxhdGl2ZSBmbGV4IGgtMTAgdy0xMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLFxuICAgICAgJ3RyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCcsXG4gICAgICAndGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gc2VsZWN0LW5vbmUnLFxuXG4gICAgICAvLyBCb3JkZXIgc3R5bGluZyAtIGV4YWN0bHkgbGlrZSBpbnB1dFxuICAgICAgJ2JvcmRlciBib3JkZXItaW5wdXQgc2hhZG93LXNtIGJnLWJhY2tncm91bmQnLFxuXG4gICAgICAvLyBGT0NVUyBTVFlMSU5HIC0gRVhBQ1RMWSBMSUtFIElOUFVUIENPTVBPTkVOVFxuICAgICAgdGhpcy5pc0FjdGl2ZSAmJiBbXG4gICAgICAgIC8vIERhcmtlciBib3JkZXIgb24gZm9jdXNcbiAgICAgICAgJ2JvcmRlci1wcmltYXJ5LzgwJyxcbiAgICAgICAgLy8gUmVtb3ZlIHNoYWRvdyBvbiBmb2N1c1xuICAgICAgICAnc2hhZG93LW5vbmUnLFxuICAgICAgICAvLyBGb2N1cyByaW5nIHdpdGggc2FtZSBzdHlsaW5nIGFzIGlucHV0XG4gICAgICAgICdyaW5nLTQnLFxuICAgICAgICAncmluZy1yaW5nLzMwJyxcbiAgICAgICAgJ3Jpbmctb2Zmc2V0LTAnLFxuICAgICAgICAvLyBFbnN1cmUgaXQncyBhYm92ZSBvdGhlciBzbG90c1xuICAgICAgICAnei0xMCdcbiAgICAgIF0sXG5cbiAgICAgIC8vIEZpbGxlZCBzdGF0ZVxuICAgICAgdGhpcy5jaGFyICYmICF0aGlzLmlzQWN0aXZlICYmICdib3JkZXItcHJpbWFyeS82MCcsXG5cbiAgICAgIC8vIEJvcmRlciByYWRpdXNcbiAgICAgIHRoaXMuaXNGaXJzdCAmJiAncm91bmRlZC1sLW1kJyxcbiAgICAgIHRoaXMuaXNMYXN0ICYmICdyb3VuZGVkLXItbWQnLFxuXG4gICAgICAvLyBSZW1vdmUgbGVmdCBib3JkZXIgZm9yIGFsbCBidXQgZmlyc3Qgc2xvdFxuICAgICAgIXRoaXMuaXNGaXJzdCAmJiAnLW1sLXB4JyxcblxuICAgICAgdGhpcy5jbGFzc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==