valtech-components 2.0.565 → 2.0.567

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 (68) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +51 -14
  2. package/esm2022/lib/components/atoms/fab/fab.component.mjs +63 -25
  3. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +64 -19
  4. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +45 -18
  5. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +55 -13
  6. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +43 -15
  7. package/esm2022/lib/components/molecules/card/card.component.mjs +126 -83
  8. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +52 -8
  9. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +54 -37
  10. package/esm2022/lib/components/molecules/comment/comment.component.mjs +1 -1
  11. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +62 -27
  12. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
  13. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +48 -18
  14. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +74 -46
  15. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +2 -2
  16. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +1 -1
  17. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +49 -21
  18. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +95 -59
  19. package/esm2022/lib/components/molecules/pill/pill.component.mjs +61 -13
  20. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +2 -2
  21. package/esm2022/lib/components/molecules/rating/rating.component.mjs +60 -43
  22. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +56 -26
  23. package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
  24. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +52 -29
  25. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +68 -18
  26. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +2 -2
  27. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +67 -51
  28. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +51 -23
  29. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +59 -21
  30. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +49 -19
  31. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +93 -59
  32. package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +49 -15
  33. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -1
  34. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +2 -2
  35. package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
  36. package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +1 -1
  37. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +2 -2
  38. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +2 -2
  39. package/fesm2022/valtech-components.mjs +1638 -837
  40. package/fesm2022/valtech-components.mjs.map +1 -1
  41. package/lib/components/atoms/avatar/avatar.component.d.ts +26 -5
  42. package/lib/components/atoms/fab/fab.component.d.ts +24 -5
  43. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +21 -6
  44. package/lib/components/molecules/accordion/accordion.component.d.ts +10 -4
  45. package/lib/components/molecules/alert-box/alert-box.component.d.ts +24 -5
  46. package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +10 -4
  47. package/lib/components/molecules/card/card.component.d.ts +24 -5
  48. package/lib/components/molecules/check-input/check-input.component.d.ts +25 -4
  49. package/lib/components/molecules/chip-group/chip-group.component.d.ts +10 -4
  50. package/lib/components/molecules/date-input/date-input.component.d.ts +25 -7
  51. package/lib/components/molecules/email-input/email-input.component.d.ts +25 -6
  52. package/lib/components/molecules/glow-card/glow-card.component.d.ts +16 -5
  53. package/lib/components/molecules/password-input/password-input.component.d.ts +25 -6
  54. package/lib/components/molecules/phone-input/phone-input.component.d.ts +28 -5
  55. package/lib/components/molecules/pill/pill.component.d.ts +27 -3
  56. package/lib/components/molecules/rating/rating.component.d.ts +10 -4
  57. package/lib/components/molecules/searchbar/searchbar.component.d.ts +15 -11
  58. package/lib/components/molecules/searchbar/types.d.ts +33 -0
  59. package/lib/components/molecules/segment-control/segment-control.component.d.ts +17 -6
  60. package/lib/components/molecules/select-input/select-input.component.d.ts +26 -6
  61. package/lib/components/molecules/stats-card/stats-card.component.d.ts +10 -4
  62. package/lib/components/molecules/stepper/stepper.component.d.ts +20 -4
  63. package/lib/components/molecules/tabs/tabs.component.d.ts +27 -4
  64. package/lib/components/molecules/text-input/text-input.component.d.ts +26 -26
  65. package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +27 -4
  66. package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +25 -4
  67. package/package.json +1 -1
  68. package/src/lib/components/styles/_docs-page.scss +310 -0
@@ -1,38 +1,73 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
2
  import { IonAvatar } from '@ionic/angular/standalone';
3
+ import { PresetService } from '../../../services/presets';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * val-avatar
6
7
  *
7
8
  * Displays a user or profile image, optionally with a box style and different sizes.
9
+ * Supports presets for reusable configurations.
8
10
  *
9
- * @example
11
+ * @example With preset (recommended):
12
+ * <val-avatar preset="profile" [props]="{ image: 'url' }" (onClick)="handler()"></val-avatar>
13
+ *
14
+ * @example Static (backwards compatible):
10
15
  * <val-avatar [props]="{ image: 'url', size: 'medium', box: true }" (onClick)="handler()"></val-avatar>
11
16
  *
17
+ * @input preset: string - Name of preset to apply
12
18
  * @input props: AvatarMetadata - Configuration for the avatar (image, size, box, default image)
13
19
  * @output onClick - Emits when the avatar is clicked
14
20
  */
15
21
  export class AvatarComponent {
16
22
  constructor() {
23
+ this.presets = inject(PresetService);
24
+ /**
25
+ * Avatar configuration object. Values here override preset values.
26
+ */
27
+ this.props = {};
28
+ /**
29
+ * Resolved props after merging preset + explicit props.
30
+ */
31
+ this.resolvedProps = {};
17
32
  /**
18
33
  * Event emitted when the avatar is clicked.
19
34
  */
20
35
  this.onClick = new EventEmitter();
21
36
  }
22
- ngOnInit() { }
37
+ ngOnInit() {
38
+ this.resolveProps();
39
+ }
40
+ ngOnChanges(changes) {
41
+ if (changes['preset'] || changes['props']) {
42
+ this.resolveProps();
43
+ }
44
+ }
45
+ /**
46
+ * Merge preset configuration with explicit props.
47
+ * Explicit props take precedence over preset values.
48
+ */
49
+ resolveProps() {
50
+ const presetProps = this.preset
51
+ ? this.presets.get('avatar', this.preset)
52
+ : {};
53
+ this.resolvedProps = {
54
+ ...presetProps,
55
+ ...this.props,
56
+ };
57
+ }
23
58
  onClickHandler() {
24
59
  this.onClick.emit();
25
60
  }
26
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AvatarComponent, isStandalone: true, selector: "val-avatar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AvatarComponent, isStandalone: true, selector: "val-avatar", inputs: { preset: "preset", props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
28
63
  <ion-avatar
29
64
  aria-hidden="true"
30
- [class]="props.size"
31
- [class.box]="props.box"
32
- [class.grayscale]="props.grayscale"
65
+ [class]="resolvedProps.size"
66
+ [class.box]="resolvedProps.box"
67
+ [class.grayscale]="resolvedProps.grayscale"
33
68
  (click)="onClickHandler()"
34
69
  >
35
- <img alt="profile image" [src]="props.image || props.default" />
70
+ <img alt="profile image" [src]="resolvedProps.image || resolvedProps.default" />
36
71
  </ion-avatar>
37
72
  `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.box{--border-radius: pxToRem(4)}.small{width:1.75rem;height:1.75rem}.medium{width:2.375rem;height:2.375rem}.large{width:3rem;height:3rem}.grayscale img{filter:grayscale(100%)}.grayscale:hover img{filter:grayscale(0%)}\n"], dependencies: [{ kind: "component", type: IonAvatar, selector: "ion-avatar" }] }); }
38
73
  }
@@ -41,17 +76,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
41
76
  args: [{ selector: 'val-avatar', standalone: true, imports: [IonAvatar], template: `
42
77
  <ion-avatar
43
78
  aria-hidden="true"
44
- [class]="props.size"
45
- [class.box]="props.box"
46
- [class.grayscale]="props.grayscale"
79
+ [class]="resolvedProps.size"
80
+ [class.box]="resolvedProps.box"
81
+ [class.grayscale]="resolvedProps.grayscale"
47
82
  (click)="onClickHandler()"
48
83
  >
49
- <img alt="profile image" [src]="props.image || props.default" />
84
+ <img alt="profile image" [src]="resolvedProps.image || resolvedProps.default" />
50
85
  </ion-avatar>
51
86
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.box{--border-radius: pxToRem(4)}.small{width:1.75rem;height:1.75rem}.medium{width:2.375rem;height:2.375rem}.large{width:3rem;height:3rem}.grayscale img{filter:grayscale(100%)}.grayscale:hover img{filter:grayscale(0%)}\n"] }]
52
- }], ctorParameters: () => [], propDecorators: { props: [{
87
+ }], propDecorators: { preset: [{
88
+ type: Input
89
+ }], props: [{
53
90
  type: Input
54
91
  }], onClick: [{
55
92
  type: Output
56
93
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFvQnREOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQVMxQjtRQU5BOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFZCxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRWIsY0FBYztRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzsrR0FmVSxlQUFlO21HQUFmLGVBQWUsbUlBeEJoQjs7Ozs7Ozs7OztHQVVULDB5RkFYUyxTQUFTOzs0RkF5QlIsZUFBZTtrQkE1QjNCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFNBQVMsQ0FBQyxZQUNWOzs7Ozs7Ozs7O0dBVVQ7d0RBZVEsS0FBSztzQkFBYixLQUFLO2dCQU1OLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkF2YXRhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWF2YXRhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25BdmF0YXJdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tYXZhdGFyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLmJveF09XCJwcm9wcy5ib3hcIlxuICAgICAgW2NsYXNzLmdyYXlzY2FsZV09XCJwcm9wcy5ncmF5c2NhbGVcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tIYW5kbGVyKClcIlxuICAgID5cbiAgICAgIDxpbWcgYWx0PVwicHJvZmlsZSBpbWFnZVwiIFtzcmNdPVwicHJvcHMuaW1hZ2UgfHwgcHJvcHMuZGVmYXVsdFwiIC8+XG4gICAgPC9pb24tYXZhdGFyPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1hdmF0YXJcbiAqXG4gKiBEaXNwbGF5cyBhIHVzZXIgb3IgcHJvZmlsZSBpbWFnZSwgb3B0aW9uYWxseSB3aXRoIGEgYm94IHN0eWxlIGFuZCBkaWZmZXJlbnQgc2l6ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtYXZhdGFyIFtwcm9wc109XCJ7IGltYWdlOiAndXJsJywgc2l6ZTogJ21lZGl1bScsIGJveDogdHJ1ZSB9XCIgKG9uQ2xpY2spPVwiaGFuZGxlcigpXCI+PC92YWwtYXZhdGFyPlxuICpcbiAqIEBpbnB1dCBwcm9wczogQXZhdGFyTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgYXZhdGFyIChpbWFnZSwgc2l6ZSwgYm94LCBkZWZhdWx0IGltYWdlKVxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdHMgd2hlbiB0aGUgYXZhdGFyIGlzIGNsaWNrZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBBdmF0YXJNZXRhZGF0YTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhdmF0YXIgaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgb25DbGlja0hhbmRsZXIoKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBb0IxRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQWpDNUI7UUFrQ1UsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7V0FFRztRQUNNLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBRTdDOztXQUVHO1FBQ0gsa0JBQWEsR0FBbUIsRUFBb0IsQ0FBQztRQUVyRDs7V0FFRztRQUVILFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBOEI5QjtJQTVCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWTtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUM3QixDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQTZCO1lBQ3RFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOytHQXZEVSxlQUFlO21HQUFmLGVBQWUsMEtBN0JoQjs7Ozs7Ozs7OztHQVVULDB5RkFYUyxTQUFTOzs0RkE4QlIsZUFBZTtrQkFqQzNCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFNBQVMsQ0FBQyxZQUNWOzs7Ozs7Ozs7O0dBVVQ7OEJBNkJRLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBV04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkF2YXRhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWF2YXRhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25BdmF0YXJdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tYXZhdGFyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgW2NsYXNzXT1cInJlc29sdmVkUHJvcHMuc2l6ZVwiXG4gICAgICBbY2xhc3MuYm94XT1cInJlc29sdmVkUHJvcHMuYm94XCJcbiAgICAgIFtjbGFzcy5ncmF5c2NhbGVdPVwicmVzb2x2ZWRQcm9wcy5ncmF5c2NhbGVcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tIYW5kbGVyKClcIlxuICAgID5cbiAgICAgIDxpbWcgYWx0PVwicHJvZmlsZSBpbWFnZVwiIFtzcmNdPVwicmVzb2x2ZWRQcm9wcy5pbWFnZSB8fCByZXNvbHZlZFByb3BzLmRlZmF1bHRcIiAvPlxuICAgIDwvaW9uLWF2YXRhcj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtYXZhdGFyXG4gKlxuICogRGlzcGxheXMgYSB1c2VyIG9yIHByb2ZpbGUgaW1hZ2UsIG9wdGlvbmFsbHkgd2l0aCBhIGJveCBzdHlsZSBhbmQgZGlmZmVyZW50IHNpemVzLlxuICogU3VwcG9ydHMgcHJlc2V0cyBmb3IgcmV1c2FibGUgY29uZmlndXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGUgV2l0aCBwcmVzZXQgKHJlY29tbWVuZGVkKTpcbiAqIDx2YWwtYXZhdGFyIHByZXNldD1cInByb2ZpbGVcIiBbcHJvcHNdPVwieyBpbWFnZTogJ3VybCcgfVwiIChvbkNsaWNrKT1cImhhbmRsZXIoKVwiPjwvdmFsLWF2YXRhcj5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWMgKGJhY2t3YXJkcyBjb21wYXRpYmxlKTpcbiAqIDx2YWwtYXZhdGFyIFtwcm9wc109XCJ7IGltYWdlOiAndXJsJywgc2l6ZTogJ21lZGl1bScsIGJveDogdHJ1ZSB9XCIgKG9uQ2xpY2spPVwiaGFuZGxlcigpXCI+PC92YWwtYXZhdGFyPlxuICpcbiAqIEBpbnB1dCBwcmVzZXQ6IHN0cmluZyAtIE5hbWUgb2YgcHJlc2V0IHRvIGFwcGx5XG4gKiBAaW5wdXQgcHJvcHM6IEF2YXRhck1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF2YXRhciAoaW1hZ2UsIHNpemUsIGJveCwgZGVmYXVsdCBpbWFnZSlcbiAqIEBvdXRwdXQgb25DbGljayAtIEVtaXRzIHdoZW4gdGhlIGF2YXRhciBpcyBjbGlja2VkXG4gKi9cbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogUHJlc2V0IG5hbWUgdG8gYXBwbHkuIFByZXNldHMgZGVmaW5lIHJldXNhYmxlIGF2YXRhciBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtYXZhdGFyIHByZXNldD1cInByb2ZpbGVcIiBbcHJvcHNdPVwieyBpbWFnZTogJ3VybCcgfVwiPjwvdmFsLWF2YXRhcj5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogQXZhdGFyIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8QXZhdGFyTWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBBdmF0YXJNZXRhZGF0YSA9IHt9IGFzIEF2YXRhck1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGF2YXRhciBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXRcbiAgICAgID8gKHRoaXMucHJlc2V0cy5nZXQoJ2F2YXRhcicsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPEF2YXRhck1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBBdmF0YXJNZXRhZGF0YTtcbiAgfVxuXG4gIG9uQ2xpY2tIYW5kbGVyKCkge1xuICAgIHRoaXMub25DbGljay5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { IonFab, IonFabButton, IonFabList, IonIcon, IonLabel } from '@ionic/angular/standalone';
3
3
  import { CommonModule } from '@angular/common';
4
+ import { PresetService } from '../../../services/presets';
4
5
  import { addIcons } from 'ionicons';
5
6
  import { add, close, share, create, trash, heart, star, camera, mic, send } from 'ionicons/icons';
6
7
  import * as i0 from "@angular/core";
@@ -9,6 +10,10 @@ addIcons({ add, close, share, create, trash, heart, star, camera, mic, send });
9
10
  * val-fab
10
11
  *
11
12
  * A Floating Action Button component with optional speed dial actions.
13
+ * Supports presets for reusable configurations.
14
+ *
15
+ * @example With preset:
16
+ * <val-fab preset="default" [props]="{ icon: 'add' }" (fabClick)="onCreate()"></val-fab>
12
17
  *
13
18
  * @example Simple FAB
14
19
  * <val-fab [props]="{
@@ -30,18 +35,49 @@ addIcons({ add, close, share, create, trash, heart, star, camera, mic, send });
30
35
  * side: 'top'
31
36
  * }" (actionClick)="onAction($event)"></val-fab>
32
37
  *
38
+ * @input preset: string - Name of preset to apply
33
39
  * @input props: FabMetadata - Configuration for the FAB
34
40
  * @output fabClick: void - Emits when main FAB is clicked (without actions)
35
41
  * @output actionClick: FabActionMetadata - Emits when an action is clicked
36
42
  */
37
43
  export class FabComponent {
38
44
  constructor() {
45
+ this.presets = inject(PresetService);
46
+ /**
47
+ * FAB configuration object. Values here override preset values.
48
+ */
49
+ this.props = {};
50
+ /**
51
+ * Resolved props after merging preset + explicit props.
52
+ */
53
+ this.resolvedProps = {};
39
54
  this.fabClick = new EventEmitter();
40
55
  this.actionClick = new EventEmitter();
41
56
  this.isActivated = false;
42
57
  }
58
+ ngOnInit() {
59
+ this.resolveProps();
60
+ }
61
+ ngOnChanges(changes) {
62
+ if (changes['preset'] || changes['props']) {
63
+ this.resolveProps();
64
+ }
65
+ }
66
+ /**
67
+ * Merge preset configuration with explicit props.
68
+ * Explicit props take precedence over preset values.
69
+ */
70
+ resolveProps() {
71
+ const presetProps = this.preset
72
+ ? this.presets.get('fab', this.preset)
73
+ : {};
74
+ this.resolvedProps = {
75
+ ...presetProps,
76
+ ...this.props,
77
+ };
78
+ }
43
79
  getVertical() {
44
- const pos = this.props.position || 'bottom-end';
80
+ const pos = this.resolvedProps.position || 'bottom-end';
45
81
  if (pos.startsWith('top'))
46
82
  return 'top';
47
83
  if (pos.startsWith('center'))
@@ -49,7 +85,7 @@ export class FabComponent {
49
85
  return 'bottom';
50
86
  }
51
87
  getHorizontal() {
52
- const pos = this.props.position || 'bottom-end';
88
+ const pos = this.resolvedProps.position || 'bottom-end';
53
89
  if (pos.endsWith('start'))
54
90
  return 'start';
55
91
  if (pos.endsWith('center'))
@@ -57,13 +93,13 @@ export class FabComponent {
57
93
  return 'end';
58
94
  }
59
95
  getMainIcon() {
60
- if (this.isActivated && this.props.iconActivated) {
61
- return this.props.iconActivated;
96
+ if (this.isActivated && this.resolvedProps.iconActivated) {
97
+ return this.resolvedProps.iconActivated;
62
98
  }
63
- return this.props.icon;
99
+ return this.resolvedProps.icon;
64
100
  }
65
101
  onMainClick() {
66
- if (this.props.actions && this.props.actions.length > 0) {
102
+ if (this.resolvedProps.actions && this.resolvedProps.actions.length > 0) {
67
103
  this.isActivated = !this.isActivated;
68
104
  }
69
105
  else {
@@ -72,30 +108,30 @@ export class FabComponent {
72
108
  }
73
109
  onActionClick(action) {
74
110
  this.actionClick.emit(action);
75
- if (this.props.closeOnAction !== false) {
111
+ if (this.resolvedProps.closeOnAction !== false) {
76
112
  this.isActivated = false;
77
113
  }
78
114
  }
79
115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FabComponent, isStandalone: true, selector: "val-fab", inputs: { props: "props" }, outputs: { fabClick: "fabClick", actionClick: "actionClick" }, ngImport: i0, template: `
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FabComponent, isStandalone: true, selector: "val-fab", inputs: { preset: "preset", props: "props" }, outputs: { fabClick: "fabClick", actionClick: "actionClick" }, usesOnChanges: true, ngImport: i0, template: `
81
117
  <ion-fab
82
118
  [vertical]="getVertical()"
83
119
  [horizontal]="getHorizontal()"
84
120
  [activated]="isActivated"
85
121
  >
86
122
  <ion-fab-button
87
- [color]="props.color || 'primary'"
88
- [size]="props.size"
89
- [disabled]="props.disabled"
90
- [translucent]="props.translucent"
123
+ [color]="resolvedProps.color || 'primary'"
124
+ [size]="resolvedProps.size"
125
+ [disabled]="resolvedProps.disabled"
126
+ [translucent]="resolvedProps.translucent"
91
127
  (click)="onMainClick()"
92
128
  >
93
129
  <ion-icon [name]="getMainIcon()"></ion-icon>
94
130
  </ion-fab-button>
95
131
 
96
- @if (props.actions && props.actions.length > 0) {
97
- <ion-fab-list [side]="props.side || 'top'">
98
- @for (action of props.actions; track action.token || $index) {
132
+ @if (resolvedProps.actions && resolvedProps.actions.length > 0) {
133
+ <ion-fab-list [side]="resolvedProps.side || 'top'">
134
+ @for (action of resolvedProps.actions; track action.token || $index) {
99
135
  <ion-fab-button
100
136
  [color]="action.color || 'light'"
101
137
  [disabled]="action.disabled"
@@ -118,18 +154,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118
154
  [activated]="isActivated"
119
155
  >
120
156
  <ion-fab-button
121
- [color]="props.color || 'primary'"
122
- [size]="props.size"
123
- [disabled]="props.disabled"
124
- [translucent]="props.translucent"
157
+ [color]="resolvedProps.color || 'primary'"
158
+ [size]="resolvedProps.size"
159
+ [disabled]="resolvedProps.disabled"
160
+ [translucent]="resolvedProps.translucent"
125
161
  (click)="onMainClick()"
126
162
  >
127
163
  <ion-icon [name]="getMainIcon()"></ion-icon>
128
164
  </ion-fab-button>
129
165
 
130
- @if (props.actions && props.actions.length > 0) {
131
- <ion-fab-list [side]="props.side || 'top'">
132
- @for (action of props.actions; track action.token || $index) {
166
+ @if (resolvedProps.actions && resolvedProps.actions.length > 0) {
167
+ <ion-fab-list [side]="resolvedProps.side || 'top'">
168
+ @for (action of resolvedProps.actions; track action.token || $index) {
133
169
  <ion-fab-button
134
170
  [color]="action.color || 'light'"
135
171
  [disabled]="action.disabled"
@@ -142,11 +178,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
142
178
  }
143
179
  </ion-fab>
144
180
  `, styles: [":host{display:block}ion-fab{position:relative}ion-fab-button{--box-shadow: 0 4px 12px rgba(0, 0, 0, .15);transition:transform .2s}ion-fab-button:hover:not([disabled]){transform:scale(1.05)}ion-fab-button:active:not([disabled]){transform:scale(.95)}ion-fab-list ion-fab-button{--box-shadow: 0 2px 8px rgba(0, 0, 0, .1)}\n"] }]
145
- }], ctorParameters: () => [], propDecorators: { props: [{
181
+ }], propDecorators: { preset: [{
182
+ type: Input
183
+ }], props: [{
146
184
  type: Input
147
185
  }], fabClick: [{
148
186
  type: Output
149
187
  }], actionClick: [{
150
188
  type: Output
151
189
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9mYWIvZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUdsRyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBdUMvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBUXZCO1FBTFUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUU5RCxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUVMLENBQUM7SUFFaEIsV0FBVztRQUNULE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQztRQUNoRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDO1FBQ2hELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUMxQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsTUFBeUI7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQzsrR0E1Q1UsWUFBWTttR0FBWixZQUFZLDhKQTlEYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJULHlZQS9CUyxZQUFZLCtCQUFFLE1BQU0sNkdBQUUsWUFBWSw4T0FBRSxVQUFVLHdGQUFFLE9BQU87OzRGQStEdEQsWUFBWTtrQkFsRXhCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ2xFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQ7d0RBaUNRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uRmFiLCBJb25GYWJCdXR0b24sIElvbkZhYkxpc3QsIElvbkljb24sIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRmFiTWV0YWRhdGEsIEZhYkFjdGlvbk1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFkZCwgY2xvc2UsIHNoYXJlLCBjcmVhdGUsIHRyYXNoLCBoZWFydCwgc3RhciwgY2FtZXJhLCBtaWMsIHNlbmQgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuXG5hZGRJY29ucyh7IGFkZCwgY2xvc2UsIHNoYXJlLCBjcmVhdGUsIHRyYXNoLCBoZWFydCwgc3RhciwgY2FtZXJhLCBtaWMsIHNlbmQgfSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1mYWInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25GYWIsIElvbkZhYkJ1dHRvbiwgSW9uRmFiTGlzdCwgSW9uSWNvbiwgSW9uTGFiZWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tZmFiXG4gICAgICBbdmVydGljYWxdPVwiZ2V0VmVydGljYWwoKVwiXG4gICAgICBbaG9yaXpvbnRhbF09XCJnZXRIb3Jpem9udGFsKClcIlxuICAgICAgW2FjdGl2YXRlZF09XCJpc0FjdGl2YXRlZFwiXG4gICAgPlxuICAgICAgPGlvbi1mYWItYnV0dG9uXG4gICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICBbc2l6ZV09XCJwcm9wcy5zaXplXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgICAgW3RyYW5zbHVjZW50XT1cInByb3BzLnRyYW5zbHVjZW50XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTWFpbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZ2V0TWFpbkljb24oKVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1mYWItYnV0dG9uPlxuXG4gICAgICBAaWYgKHByb3BzLmFjdGlvbnMgJiYgcHJvcHMuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxpb24tZmFiLWxpc3QgW3NpZGVdPVwicHJvcHMuc2lkZSB8fCAndG9wJ1wiPlxuICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBwcm9wcy5hY3Rpb25zOyB0cmFjayBhY3Rpb24udG9rZW4gfHwgJGluZGV4KSB7XG4gICAgICAgICAgICA8aW9uLWZhYi1idXR0b25cbiAgICAgICAgICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvciB8fCAnbGlnaHQnXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiYWN0aW9uLmljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tZmFiLWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWZhYi1saXN0PlxuICAgICAgfVxuICAgIDwvaW9uLWZhYj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZmFiLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtZmFiXG4gKlxuICogQSBGbG9hdGluZyBBY3Rpb24gQnV0dG9uIGNvbXBvbmVudCB3aXRoIG9wdGlvbmFsIHNwZWVkIGRpYWwgYWN0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBTaW1wbGUgRkFCXG4gKiA8dmFsLWZhYiBbcHJvcHNdPVwie1xuICogICBpY29uOiAnYWRkJyxcbiAqICAgY29sb3I6ICdwcmltYXJ5JyxcbiAqICAgcG9zaXRpb246ICdib3R0b20tZW5kJ1xuICogfVwiIChmYWJDbGljayk9XCJvbkNyZWF0ZSgpXCI+PC92YWwtZmFiPlxuICpcbiAqIEBleGFtcGxlIFNwZWVkIGRpYWwgRkFCXG4gKiA8dmFsLWZhYiBbcHJvcHNdPVwie1xuICogICBpY29uOiAnYWRkJyxcbiAqICAgaWNvbkFjdGl2YXRlZDogJ2Nsb3NlJyxcbiAqICAgcG9zaXRpb246ICdib3R0b20tZW5kJyxcbiAqICAgYWN0aW9uczogW1xuICogICAgIHsgaWNvbjogJ2NhbWVyYScsIGxhYmVsOiAnUGhvdG8nLCB0b2tlbjogJ3Bob3RvJyB9LFxuICogICAgIHsgaWNvbjogJ21pYycsIGxhYmVsOiAnQXVkaW8nLCB0b2tlbjogJ2F1ZGlvJyB9LFxuICogICAgIHsgaWNvbjogJ2NyZWF0ZScsIGxhYmVsOiAnTm90ZScsIHRva2VuOiAnbm90ZScgfVxuICogICBdLFxuICogICBzaWRlOiAndG9wJ1xuICogfVwiIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbigkZXZlbnQpXCI+PC92YWwtZmFiPlxuICpcbiAqIEBpbnB1dCBwcm9wczogRmFiTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgRkFCXG4gKiBAb3V0cHV0IGZhYkNsaWNrOiB2b2lkIC0gRW1pdHMgd2hlbiBtYWluIEZBQiBpcyBjbGlja2VkICh3aXRob3V0IGFjdGlvbnMpXG4gKiBAb3V0cHV0IGFjdGlvbkNsaWNrOiBGYWJBY3Rpb25NZXRhZGF0YSAtIEVtaXRzIHdoZW4gYW4gYWN0aW9uIGlzIGNsaWNrZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb3BzOiBGYWJNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgZmFiQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RmFiQWN0aW9uTWV0YWRhdGE+KCk7XG5cbiAgaXNBY3RpdmF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0VmVydGljYWwoKTogJ3RvcCcgfCAnYm90dG9tJyB8ICdjZW50ZXInIHtcbiAgICBjb25zdCBwb3MgPSB0aGlzLnByb3BzLnBvc2l0aW9uIHx8ICdib3R0b20tZW5kJztcbiAgICBpZiAocG9zLnN0YXJ0c1dpdGgoJ3RvcCcpKSByZXR1cm4gJ3RvcCc7XG4gICAgaWYgKHBvcy5zdGFydHNXaXRoKCdjZW50ZXInKSkgcmV0dXJuICdjZW50ZXInO1xuICAgIHJldHVybiAnYm90dG9tJztcbiAgfVxuXG4gIGdldEhvcml6b250YWwoKTogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicge1xuICAgIGNvbnN0IHBvcyA9IHRoaXMucHJvcHMucG9zaXRpb24gfHwgJ2JvdHRvbS1lbmQnO1xuICAgIGlmIChwb3MuZW5kc1dpdGgoJ3N0YXJ0JykpIHJldHVybiAnc3RhcnQnO1xuICAgIGlmIChwb3MuZW5kc1dpdGgoJ2NlbnRlcicpKSByZXR1cm4gJ2NlbnRlcic7XG4gICAgcmV0dXJuICdlbmQnO1xuICB9XG5cbiAgZ2V0TWFpbkljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2YXRlZCAmJiB0aGlzLnByb3BzLmljb25BY3RpdmF0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmljb25BY3RpdmF0ZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmljb247XG4gIH1cblxuICBvbk1haW5DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5hY3Rpb25zICYmIHRoaXMucHJvcHMuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzQWN0aXZhdGVkID0gIXRoaXMuaXNBY3RpdmF0ZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmFiQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBGYWJBY3Rpb25NZXRhZGF0YSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdChhY3Rpb24pO1xuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25BY3Rpb24gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmlzQWN0aXZhdGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9mYWIvZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbEcsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQXVDL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBdkV6QjtRQXdFVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBUXhDOztXQUVHO1FBQ00sVUFBSyxHQUF5QixFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDSCxrQkFBYSxHQUFnQixFQUFpQixDQUFDO1FBRXJDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3BDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFFOUQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7S0E4RHJCO0lBNURDLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQzdCLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBMEI7WUFDaEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsR0FBRyxXQUFXO1lBQ2QsR0FBRyxJQUFJLENBQUMsS0FBSztTQUNDLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUM7UUFDeEQsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUM5QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQztRQUN4RCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFDMUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXlCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7K0dBbkZVLFlBQVk7bUdBQVosWUFBWSxxTUFuRWI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCVCx5WUEvQlMsWUFBWSwrQkFBRSxNQUFNLDZHQUFFLFlBQVksOE9BQUUsVUFBVSx3RkFBRSxPQUFPOzs0RkFvRXRELFlBQVk7a0JBdkV4QixTQUFTOytCQUNFLFNBQVMsY0FDUCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUNsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJUOzhCQTRDUSxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQU9JLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25GYWIsIElvbkZhYkJ1dHRvbiwgSW9uRmFiTGlzdCwgSW9uSWNvbiwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBGYWJNZXRhZGF0YSwgRmFiQWN0aW9uTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgYWRkLCBjbG9zZSwgc2hhcmUsIGNyZWF0ZSwgdHJhc2gsIGhlYXJ0LCBzdGFyLCBjYW1lcmEsIG1pYywgc2VuZCB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuYWRkSWNvbnMoeyBhZGQsIGNsb3NlLCBzaGFyZSwgY3JlYXRlLCB0cmFzaCwgaGVhcnQsIHN0YXIsIGNhbWVyYSwgbWljLCBzZW5kIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uRmFiLCBJb25GYWJCdXR0b24sIElvbkZhYkxpc3QsIElvbkljb24sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWZhYlxuICAgICAgW3ZlcnRpY2FsXT1cImdldFZlcnRpY2FsKClcIlxuICAgICAgW2hvcml6b250YWxdPVwiZ2V0SG9yaXpvbnRhbCgpXCJcbiAgICAgIFthY3RpdmF0ZWRdPVwiaXNBY3RpdmF0ZWRcIlxuICAgID5cbiAgICAgIDxpb24tZmFiLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwicmVzb2x2ZWRQcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICBbc2l6ZV09XCJyZXNvbHZlZFByb3BzLnNpemVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgIFt0cmFuc2x1Y2VudF09XCJyZXNvbHZlZFByb3BzLnRyYW5zbHVjZW50XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTWFpbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZ2V0TWFpbkljb24oKVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1mYWItYnV0dG9uPlxuXG4gICAgICBAaWYgKHJlc29sdmVkUHJvcHMuYWN0aW9ucyAmJiByZXNvbHZlZFByb3BzLmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICA8aW9uLWZhYi1saXN0IFtzaWRlXT1cInJlc29sdmVkUHJvcHMuc2lkZSB8fCAndG9wJ1wiPlxuICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiByZXNvbHZlZFByb3BzLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi50b2tlbiB8fCAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxpb24tZmFiLWJ1dHRvblxuICAgICAgICAgICAgICBbY29sb3JdPVwiYWN0aW9uLmNvbG9yIHx8ICdsaWdodCdcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJhY3Rpb24uaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1mYWItYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tZmFiLWxpc3Q+XG4gICAgICB9XG4gICAgPC9pb24tZmFiPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9mYWIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1mYWJcbiAqXG4gKiBBIEZsb2F0aW5nIEFjdGlvbiBCdXR0b24gY29tcG9uZW50IHdpdGggb3B0aW9uYWwgc3BlZWQgZGlhbCBhY3Rpb25zLlxuICogU3VwcG9ydHMgcHJlc2V0cyBmb3IgcmV1c2FibGUgY29uZmlndXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGUgV2l0aCBwcmVzZXQ6XG4gKiA8dmFsLWZhYiBwcmVzZXQ9XCJkZWZhdWx0XCIgW3Byb3BzXT1cInsgaWNvbjogJ2FkZCcgfVwiIChmYWJDbGljayk9XCJvbkNyZWF0ZSgpXCI+PC92YWwtZmFiPlxuICpcbiAqIEBleGFtcGxlIFNpbXBsZSBGQUJcbiAqIDx2YWwtZmFiIFtwcm9wc109XCJ7XG4gKiAgIGljb246ICdhZGQnLFxuICogICBjb2xvcjogJ3ByaW1hcnknLFxuICogICBwb3NpdGlvbjogJ2JvdHRvbS1lbmQnXG4gKiB9XCIgKGZhYkNsaWNrKT1cIm9uQ3JlYXRlKClcIj48L3ZhbC1mYWI+XG4gKlxuICogQGV4YW1wbGUgU3BlZWQgZGlhbCBGQUJcbiAqIDx2YWwtZmFiIFtwcm9wc109XCJ7XG4gKiAgIGljb246ICdhZGQnLFxuICogICBpY29uQWN0aXZhdGVkOiAnY2xvc2UnLFxuICogICBwb3NpdGlvbjogJ2JvdHRvbS1lbmQnLFxuICogICBhY3Rpb25zOiBbXG4gKiAgICAgeyBpY29uOiAnY2FtZXJhJywgbGFiZWw6ICdQaG90bycsIHRva2VuOiAncGhvdG8nIH0sXG4gKiAgICAgeyBpY29uOiAnbWljJywgbGFiZWw6ICdBdWRpbycsIHRva2VuOiAnYXVkaW8nIH0sXG4gKiAgICAgeyBpY29uOiAnY3JlYXRlJywgbGFiZWw6ICdOb3RlJywgdG9rZW46ICdub3RlJyB9XG4gKiAgIF0sXG4gKiAgIHNpZGU6ICd0b3AnXG4gKiB9XCIgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uKCRldmVudClcIj48L3ZhbC1mYWI+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHlcbiAqIEBpbnB1dCBwcm9wczogRmFiTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgRkFCXG4gKiBAb3V0cHV0IGZhYkNsaWNrOiB2b2lkIC0gRW1pdHMgd2hlbiBtYWluIEZBQiBpcyBjbGlja2VkICh3aXRob3V0IGFjdGlvbnMpXG4gKiBAb3V0cHV0IGFjdGlvbkNsaWNrOiBGYWJBY3Rpb25NZXRhZGF0YSAtIEVtaXRzIHdoZW4gYW4gYWN0aW9uIGlzIGNsaWNrZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgRkFCIGNvbmZpZ3VyYXRpb25zXG4gICAqIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgYXBwIGxldmVsIHZpYSBwcm92aWRlVmFsdGVjaFByZXNldHMoKS5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogRkFCIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8RmFiTWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBGYWJNZXRhZGF0YSA9IHt9IGFzIEZhYk1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBmYWJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxGYWJBY3Rpb25NZXRhZGF0YT4oKTtcblxuICBpc0FjdGl2YXRlZCA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdmYWInLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxGYWJNZXRhZGF0YT4pXG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgRmFiTWV0YWRhdGE7XG4gIH1cblxuICBnZXRWZXJ0aWNhbCgpOiAndG9wJyB8ICdib3R0b20nIHwgJ2NlbnRlcicge1xuICAgIGNvbnN0IHBvcyA9IHRoaXMucmVzb2x2ZWRQcm9wcy5wb3NpdGlvbiB8fCAnYm90dG9tLWVuZCc7XG4gICAgaWYgKHBvcy5zdGFydHNXaXRoKCd0b3AnKSkgcmV0dXJuICd0b3AnO1xuICAgIGlmIChwb3Muc3RhcnRzV2l0aCgnY2VudGVyJykpIHJldHVybiAnY2VudGVyJztcbiAgICByZXR1cm4gJ2JvdHRvbSc7XG4gIH1cblxuICBnZXRIb3Jpem9udGFsKCk6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInIHtcbiAgICBjb25zdCBwb3MgPSB0aGlzLnJlc29sdmVkUHJvcHMucG9zaXRpb24gfHwgJ2JvdHRvbS1lbmQnO1xuICAgIGlmIChwb3MuZW5kc1dpdGgoJ3N0YXJ0JykpIHJldHVybiAnc3RhcnQnO1xuICAgIGlmIChwb3MuZW5kc1dpdGgoJ2NlbnRlcicpKSByZXR1cm4gJ2NlbnRlcic7XG4gICAgcmV0dXJuICdlbmQnO1xuICB9XG5cbiAgZ2V0TWFpbkljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2YXRlZCAmJiB0aGlzLnJlc29sdmVkUHJvcHMuaWNvbkFjdGl2YXRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5pY29uQWN0aXZhdGVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmljb247XG4gIH1cblxuICBvbk1haW5DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmFjdGlvbnMgJiYgdGhpcy5yZXNvbHZlZFByb3BzLmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc0FjdGl2YXRlZCA9ICF0aGlzLmlzQWN0aXZhdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZhYkNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogRmFiQWN0aW9uTWV0YWRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmNsb3NlT25BY3Rpb24gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmlzQWN0aXZhdGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,30 +1,73 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
2
+ import { Component, inject, Input } from '@angular/core';
3
3
  import { IonProgressBar } from '@ionic/angular/standalone';
4
+ import { PresetService } from '../../../services/presets';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  /**
7
8
  * val-progress-bar
8
9
  *
9
10
  * A progress bar for indicating completion or loading state.
11
+ * Supports presets for reusable configurations.
10
12
  *
11
- * @example
13
+ * @example With preset:
14
+ * <val-progress-bar preset="default" [props]="{ progress: 0.5 }"></val-progress-bar>
15
+ *
16
+ * @example Static:
12
17
  * <val-progress-bar [props]="{ progress: 0.5, color: 'success', size: 'small' }"></val-progress-bar>
13
18
  *
19
+ * @input preset: string - Name of preset to apply
14
20
  * @input props: ProgressBarMetadata - Configuration for the progress bar (progress, color, size, etc.)
15
21
  */
16
22
  export class ProgressBarComponent {
17
- constructor() { }
18
- ngOnInit() { }
23
+ constructor() {
24
+ this.presets = inject(PresetService);
25
+ /**
26
+ * Progress bar configuration object. Values here override preset values.
27
+ * @type {ProgressBarMetadata}
28
+ * @property progress - The progress value (0 to 1).
29
+ * @property size - The progress bar size ('small' | 'medium' | 'large' | 'xlarge').
30
+ * @property color - The progress bar color (Ionic color string).
31
+ * @property buffer - The buffer value for the bar.
32
+ * @property type - The type of progress bar ('determinate' | 'indeterminate').
33
+ * @property rounded - Whether the bar has rounded corners.
34
+ */
35
+ this.props = {};
36
+ /**
37
+ * Resolved props after merging preset + explicit props.
38
+ */
39
+ this.resolvedProps = {};
40
+ }
41
+ ngOnInit() {
42
+ this.resolveProps();
43
+ }
44
+ ngOnChanges(changes) {
45
+ if (changes['preset'] || changes['props']) {
46
+ this.resolveProps();
47
+ }
48
+ }
49
+ /**
50
+ * Merge preset configuration with explicit props.
51
+ * Explicit props take precedence over preset values.
52
+ */
53
+ resolveProps() {
54
+ const presetProps = this.preset
55
+ ? this.presets.get('progressBar', this.preset)
56
+ : {};
57
+ this.resolvedProps = {
58
+ ...presetProps,
59
+ ...this.props,
60
+ };
61
+ }
19
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProgressBarComponent, isStandalone: true, selector: "val-progress-bar", inputs: { props: "props" }, ngImport: i0, template: `
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProgressBarComponent, isStandalone: true, selector: "val-progress-bar", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
21
64
  <ion-progress-bar
22
- [ngClass]="[props.size]"
23
- [class.rounded]="props.rounded"
24
- [value]="props.progress"
25
- [color]="props.color"
26
- [buffer]="props.buffer"
27
- [type]="props.type"
65
+ [ngClass]="[resolvedProps.size]"
66
+ [class.rounded]="resolvedProps.rounded"
67
+ [value]="resolvedProps.progress"
68
+ [color]="resolvedProps.color"
69
+ [buffer]="resolvedProps.buffer"
70
+ [type]="resolvedProps.type"
28
71
  ></ion-progress-bar>
29
72
  `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}ion-progress-bar.rounded{border-radius:.5rem}.medium{height:.25rem}.large{height:.375rem}.xlarge{height:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }] }); }
30
73
  }
@@ -32,15 +75,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32
75
  type: Component,
33
76
  args: [{ selector: 'val-progress-bar', standalone: true, imports: [CommonModule, IonProgressBar], template: `
34
77
  <ion-progress-bar
35
- [ngClass]="[props.size]"
36
- [class.rounded]="props.rounded"
37
- [value]="props.progress"
38
- [color]="props.color"
39
- [buffer]="props.buffer"
40
- [type]="props.type"
78
+ [ngClass]="[resolvedProps.size]"
79
+ [class.rounded]="resolvedProps.rounded"
80
+ [value]="resolvedProps.progress"
81
+ [color]="resolvedProps.color"
82
+ [buffer]="resolvedProps.buffer"
83
+ [type]="resolvedProps.type"
41
84
  ></ion-progress-bar>
42
85
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}ion-progress-bar.rounded{border-radius:.5rem}.medium{height:.25rem}.large{height:.375rem}.xlarge{height:.5rem}\n"] }]
43
- }], ctorParameters: () => [], propDecorators: { props: [{
86
+ }], propDecorators: { preset: [{
87
+ type: Input
88
+ }], props: [{
44
89
  type: Input
45
90
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFtQjNEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFjL0IsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQzsrR0FoQkYsb0JBQW9CO21HQUFwQixvQkFBb0Isd0dBdEJyQjs7Ozs7Ozs7O0dBU1QsNnJGQVZTLFlBQVksNkhBQUUsY0FBYzs7NEZBdUIzQixvQkFBb0I7a0JBMUJoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLFlBQzdCOzs7Ozs7Ozs7R0FTVDt3REF5QkQsS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uUHJvZ3Jlc3NCYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFByb2dyZXNzQmFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXByb2dyZXNzLWJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvblByb2dyZXNzQmFyXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLXByb2dyZXNzLWJhclxuICAgICAgW25nQ2xhc3NdPVwiW3Byb3BzLnNpemVdXCJcbiAgICAgIFtjbGFzcy5yb3VuZGVkXT1cInByb3BzLnJvdW5kZWRcIlxuICAgICAgW3ZhbHVlXT1cInByb3BzLnByb2dyZXNzXCJcbiAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvclwiXG4gICAgICBbYnVmZmVyXT1cInByb3BzLmJ1ZmZlclwiXG4gICAgICBbdHlwZV09XCJwcm9wcy50eXBlXCJcbiAgICA+PC9pb24tcHJvZ3Jlc3MtYmFyPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1wcm9ncmVzcy1iYXJcbiAqXG4gKiBBIHByb2dyZXNzIGJhciBmb3IgaW5kaWNhdGluZyBjb21wbGV0aW9uIG9yIGxvYWRpbmcgc3RhdGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcHJvZ3Jlc3MtYmFyIFtwcm9wc109XCJ7IHByb2dyZXNzOiAwLjUsIGNvbG9yOiAnc3VjY2VzcycsIHNpemU6ICdzbWFsbCcgfVwiPjwvdmFsLXByb2dyZXNzLWJhcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IFByb2dyZXNzQmFyTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyIChwcm9ncmVzcywgY29sb3IsIHNpemUsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0JhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBQcm9ncmVzcyBiYXIgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtQcm9ncmVzc0Jhck1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgcHJvZ3Jlc3MgLSBUaGUgcHJvZ3Jlc3MgdmFsdWUgKDAgdG8gMSkuXG4gICAqIEBwcm9wZXJ0eSBzaXplIC0gVGhlIHByb2dyZXNzIGJhciBzaXplICgnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ3hsYXJnZScpLlxuICAgKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgcHJvZ3Jlc3MgYmFyIGNvbG9yIChJb25pYyBjb2xvciBzdHJpbmcpLlxuICAgKiBAcHJvcGVydHkgYnVmZmVyIC0gVGhlIGJ1ZmZlciB2YWx1ZSBmb3IgdGhlIGJhci5cbiAgICogQHByb3BlcnR5IHR5cGUgLSBUaGUgdHlwZSBvZiBwcm9ncmVzcyBiYXIgKCdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScpLlxuICAgKiBAcHJvcGVydHkgcm91bmRlZCAtIFdoZXRoZXIgdGhlIGJhciBoYXMgcm91bmRlZCBjb3JuZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFByb2dyZXNzQmFyTWV0YWRhdGE7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFtQjFEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQS9CakM7UUFnQ1UsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVF4Qzs7Ozs7Ozs7O1dBU0c7UUFDTSxVQUFLLEdBQWlDLEVBQUUsQ0FBQztRQUVsRDs7V0FFRztRQUNILGtCQUFhLEdBQXdCLEVBQXlCLENBQUM7S0EwQmhFO0lBeEJDLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQzdCLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBa0M7WUFDaEYsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsR0FBRyxXQUFXO1lBQ2QsR0FBRyxJQUFJLENBQUMsS0FBSztTQUNTLENBQUM7SUFDM0IsQ0FBQzsrR0FqRFUsb0JBQW9CO21HQUFwQixvQkFBb0IsK0lBM0JyQjs7Ozs7Ozs7O0dBU1QsNnJGQVZTLFlBQVksNkhBQUUsY0FBYzs7NEZBNEIzQixvQkFBb0I7a0JBL0JoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLFlBQzdCOzs7Ozs7Ozs7R0FTVDs4QkF5QlEsTUFBTTtzQkFBZCxLQUFLO2dCQVlHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25Qcm9ncmVzc0JhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcHJvZ3Jlc3MtYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uUHJvZ3Jlc3NCYXJdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tcHJvZ3Jlc3MtYmFyXG4gICAgICBbbmdDbGFzc109XCJbcmVzb2x2ZWRQcm9wcy5zaXplXVwiXG4gICAgICBbY2xhc3Mucm91bmRlZF09XCJyZXNvbHZlZFByb3BzLnJvdW5kZWRcIlxuICAgICAgW3ZhbHVlXT1cInJlc29sdmVkUHJvcHMucHJvZ3Jlc3NcIlxuICAgICAgW2NvbG9yXT1cInJlc29sdmVkUHJvcHMuY29sb3JcIlxuICAgICAgW2J1ZmZlcl09XCJyZXNvbHZlZFByb3BzLmJ1ZmZlclwiXG4gICAgICBbdHlwZV09XCJyZXNvbHZlZFByb3BzLnR5cGVcIlxuICAgID48L2lvbi1wcm9ncmVzcy1iYXI+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Byb2dyZXNzLWJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXByb2dyZXNzLWJhclxuICpcbiAqIEEgcHJvZ3Jlc3MgYmFyIGZvciBpbmRpY2F0aW5nIGNvbXBsZXRpb24gb3IgbG9hZGluZyBzdGF0ZS5cbiAqIFN1cHBvcnRzIHByZXNldHMgZm9yIHJldXNhYmxlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJlc2V0OlxuICogPHZhbC1wcm9ncmVzcy1iYXIgcHJlc2V0PVwiZGVmYXVsdFwiIFtwcm9wc109XCJ7IHByb2dyZXNzOiAwLjUgfVwiPjwvdmFsLXByb2dyZXNzLWJhcj5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWM6XG4gKiA8dmFsLXByb2dyZXNzLWJhciBbcHJvcHNdPVwieyBwcm9ncmVzczogMC41LCBjb2xvcjogJ3N1Y2Nlc3MnLCBzaXplOiAnc21hbGwnIH1cIj48L3ZhbC1wcm9ncmVzcy1iYXI+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHlcbiAqIEBpbnB1dCBwcm9wczogUHJvZ3Jlc3NCYXJNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBwcm9ncmVzcyBiYXIgKHByb2dyZXNzLCBjb2xvciwgc2l6ZSwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBwcm9ncmVzcyBiYXIgY29uZmlndXJhdGlvbnNcbiAgICogdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhcHAgbGV2ZWwgdmlhIHByb3ZpZGVWYWx0ZWNoUHJlc2V0cygpLlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm9ncmVzcyBiYXIgY29uZmlndXJhdGlvbiBvYmplY3QuIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqIEB0eXBlIHtQcm9ncmVzc0Jhck1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgcHJvZ3Jlc3MgLSBUaGUgcHJvZ3Jlc3MgdmFsdWUgKDAgdG8gMSkuXG4gICAqIEBwcm9wZXJ0eSBzaXplIC0gVGhlIHByb2dyZXNzIGJhciBzaXplICgnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ3hsYXJnZScpLlxuICAgKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgcHJvZ3Jlc3MgYmFyIGNvbG9yIChJb25pYyBjb2xvciBzdHJpbmcpLlxuICAgKiBAcHJvcGVydHkgYnVmZmVyIC0gVGhlIGJ1ZmZlciB2YWx1ZSBmb3IgdGhlIGJhci5cbiAgICogQHByb3BlcnR5IHR5cGUgLSBUaGUgdHlwZSBvZiBwcm9ncmVzcyBiYXIgKCdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScpLlxuICAgKiBAcHJvcGVydHkgcm91bmRlZCAtIFdoZXRoZXIgdGhlIGJhciBoYXMgcm91bmRlZCBjb3JuZXJzLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8UHJvZ3Jlc3NCYXJNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFByb2dyZXNzQmFyTWV0YWRhdGEgPSB7fSBhcyBQcm9ncmVzc0Jhck1ldGFkYXRhO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdwcm9ncmVzc0JhcicsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPFByb2dyZXNzQmFyTWV0YWRhdGE+KVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIFByb2dyZXNzQmFyTWV0YWRhdGE7XG4gIH1cbn1cbiJdfQ==