valtech-components 2.0.943 → 2.0.945

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 (25) hide show
  1. package/esm2022/lib/components/atoms/button/button.component.mjs +3 -3
  2. package/esm2022/lib/components/molecules/article-card/article-card.component.mjs +154 -0
  3. package/esm2022/lib/components/molecules/article-card/types.mjs +10 -0
  4. package/esm2022/lib/components/molecules/cta-card/cta-card.component.mjs +121 -0
  5. package/esm2022/lib/components/molecules/cta-card/types.mjs +11 -0
  6. package/esm2022/lib/components/molecules/media-object/media-object.component.mjs +141 -0
  7. package/esm2022/lib/components/molecules/media-object/types.mjs +11 -0
  8. package/esm2022/lib/components/molecules/stats-bar/stats-bar.component.mjs +99 -0
  9. package/esm2022/lib/components/molecules/stats-bar/types.mjs +10 -0
  10. package/esm2022/lib/config/company-footer.config.mjs +3 -3
  11. package/esm2022/lib/version.mjs +2 -2
  12. package/esm2022/public-api.mjs +9 -1
  13. package/fesm2022/valtech-components.mjs +542 -8
  14. package/fesm2022/valtech-components.mjs.map +1 -1
  15. package/lib/components/molecules/article-card/article-card.component.d.ts +41 -0
  16. package/lib/components/molecules/article-card/types.d.ts +51 -0
  17. package/lib/components/molecules/cta-card/cta-card.component.d.ts +44 -0
  18. package/lib/components/molecules/cta-card/types.d.ts +42 -0
  19. package/lib/components/molecules/media-object/media-object.component.d.ts +38 -0
  20. package/lib/components/molecules/media-object/types.d.ts +53 -0
  21. package/lib/components/molecules/stats-bar/stats-bar.component.d.ts +32 -0
  22. package/lib/components/molecules/stats-bar/types.d.ts +40 -0
  23. package/lib/version.d.ts +1 -1
  24. package/package.json +1 -1
  25. package/public-api.d.ts +8 -0
@@ -140,7 +140,7 @@ export class ButtonComponent {
140
140
  <ion-spinner *ngIf="resolvedProps.state === states.WORKING" name="circular"></ion-spinner>
141
141
  <ion-text *ngIf="resolvedProps.state !== states.WORKING">{{ displayText }}</ion-text>
142
142
  </ion-button>
143
- `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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-button{font-family:var(--ion-default-font),Arial,sans-serif;min-width:6.25rem;margin:0}ion-button.small{--padding-bottom: 12px;--padding-end: 14px;--padding-start: 14px;--padding-top: 12px}ion-button.button-clear{padding:0;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
143
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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-button{font-family:var(--ion-default-font),Arial,sans-serif;min-width:6.25rem;margin:0}ion-button.small{--padding-bottom: 12px;--padding-end: 14px;--padding-start: 14px;--padding-top: 12px}ion-button.button-clear{padding:0;margin:0}ion-button ion-spinner{--color: currentColor}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
144
144
  }
145
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, decorators: [{
146
146
  type: Component,
@@ -163,7 +163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
163
163
  <ion-spinner *ngIf="resolvedProps.state === states.WORKING" name="circular"></ion-spinner>
164
164
  <ion-text *ngIf="resolvedProps.state !== states.WORKING">{{ displayText }}</ion-text>
165
165
  </ion-button>
166
- `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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-button{font-family:var(--ion-default-font),Arial,sans-serif;min-width:6.25rem;margin:0}ion-button.small{--padding-bottom: 12px;--padding-end: 14px;--padding-start: 14px;--padding-top: 12px}ion-button.button-clear{padding:0;margin:0}\n"] }]
166
+ `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--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)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--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-button{font-family:var(--ion-default-font),Arial,sans-serif;min-width:6.25rem;margin:0}ion-button.small{--padding-bottom: 12px;--padding-end: 14px;--padding-start: 14px;--padding-top: 12px}ion-button.button-clear{padding:0;margin:0}ion-button ion-spinner{--color: currentColor}\n"] }]
167
167
  }], ctorParameters: () => [{ type: i1.DownloadService }, { type: i2.IconService }, { type: i3.NavigationService }], propDecorators: { preset: [{
168
168
  type: Input
169
169
  }], props: [{
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
171
171
  }], onClick: [{
172
172
  type: Output
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBNEIxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQXFDMUIsWUFDVSxRQUF5QixFQUNqQyxLQUFrQixFQUNWLFVBQTZCO1FBRjdCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRXpCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBdkN2QyxXQUFNLEdBQUcsZUFBZSxDQUFDO1FBRWpCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQVd6Qjs7O1dBR0c7UUFDTSxVQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFtQixFQUFvQixDQUFDO1FBRXJEOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFNbEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFD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Q0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBbkhVLGVBQWU7bUdBQWYsZUFBZSwwS0EzQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULGcrRkFwQlMsWUFBWSxpT0FBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsVUFBVSx5R0FBRSxPQUFPOzs0RkE0Q3BELGVBQWU7a0JBL0MzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQ3REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUOzhJQXlDUSxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQVlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TcGlubmVyLCBJb25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kb3dubG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1idXR0b25cbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInJlc29sdmVkUHJvcHMudG9rZW5cIlxuICAgICAgW3R5cGVdPVwicmVzb2x2ZWRQcm9wcy50eXBlXCJcbiAgICAgIFtjb2xvcl09XCJyZXNvbHZlZFByb3BzLmNvbG9yXCJcbiAgICAgIFtleHBhbmRdPVwicmVzb2x2ZWRQcm9wcy5leHBhbmRcIlxuICAgICAgW2ZpbGxdPVwicmVzb2x2ZWRQcm9wcy5maWxsXCJcbiAgICAgIFtzaXplXT1cInJlc29sdmVkUHJvcHMuc2l6ZVwiXG4gICAgICBbaHJlZl09XCJyZXNvbHZlZFByb3BzLmhyZWZcIlxuICAgICAgW3RhcmdldF09XCJyZXNvbHZlZFByb3BzLnRhcmdldFwiXG4gICAgICBbc2hhcGVdPVwicmVzb2x2ZWRQcm9wcy5zaGFwZVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKClcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICBbbmdDbGFzc109XCJyZXNvbHZlZFByb3BzLnNpemUgPyBbcmVzb2x2ZWRQcm9wcy5zaXplXSA6IFtdXCJcbiAgICA+XG4gICAgICA8aW9uLWljb24gKm5nSWY9XCJyZXNvbHZlZFByb3BzLmljb25cIiBbc2xvdF09XCJyZXNvbHZlZFByb3BzLmljb24uc2xvdFwiIFtuYW1lXT1cInJlc29sdmVkUHJvcHMuaWNvbi5uYW1lXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HXCIgbmFtZT1cImNpcmN1bGFyXCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgIDxpb24tdGV4dCAqbmdJZj1cInJlc29sdmVkUHJvcHMuc3RhdGUgIT09IHN0YXRlcy5XT1JLSU5HXCI+e3sgZGlzcGxheVRleHQgfX08L2lvbi10ZXh0PlxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtYnV0dG9uXG4gKlxuICogQSBjdXN0b21pemFibGUgYnV0dG9uIHN1cHBvcnRpbmcgaWNvbnMsIGxvYWRpbmcgc3RhdGUsIG5hdmlnYXRpb24sIGFuZCBwcmVzZXRzLlxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJlc2V0IChyZWNvbW1lbmRlZCB3aXRoIGkxOG4pOlxuICogPHZhbC1idXR0b24gcHJlc2V0PVwicHJpbWFyeS1hY3Rpb25cIiBbcHJvcHNdPVwieyB0ZXh0OiAnU3VibWl0JyB8IHQgfVwiPjwvdmFsLWJ1dHRvbj5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWMgdGV4dDpcbiAqIDx2YWwtYnV0dG9uIFtwcm9wc109XCJ7XG4gKiAgIHRleHQ6ICdTYXZlJyxcbiAqICAgY29sb3I6ICdwcmltYXJ5JyxcbiAqICAgdHlwZTogJ2J1dHRvbicsXG4gKiAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gKiAgIGljb246IHsgbmFtZTogJ3NhdmUnLCBzbG90OiAnc3RhcnQnIH1cbiAqIH1cIiAob25DbGljayk9XCJoYW5kbGVyKClcIj48L3ZhbC1idXR0b24+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHkgKGUuZy4sICdwcmltYXJ5LWFjdGlvbicsICdkYW5nZXInKVxuICogQGlucHV0IHByb3BzOiBCdXR0b25NZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBidXR0b24gKG92ZXJyaWRlcyBwcmVzZXQgdmFsdWVzKVxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdHMgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLlxuICAgKi9cbiAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgYnV0dG9uIGNvbmZpZ3VyYXRpb25zXG4gICAqIChzaXplLCBjb2xvciwgZmlsbCwgZXRjLikgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhcHAgbGV2ZWwuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtYnV0dG9uIHByZXNldD1cInByaW1hcnktYWN0aW9uXCIgW3Byb3BzXT1cInsgdGV4dDogJ1NhdmUnIH1cIj48L3ZhbC1idXR0b24+XG4gICAqL1xuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiBjb25maWd1cmF0aW9uLiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKiBXaGVuIHVzaW5nIHByZXNldHMsIG9ubHkgcGFydGlhbCBwcm9wcyBhcmUgbmVlZGVkIChwcmVzZXQgcHJvdmlkZXMgZGVmYXVsdHMpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqIFByZXNldCB2YWx1ZXMgYXJlIG92ZXJyaWRkZW4gYnkgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBCdXR0b25NZXRhZGF0YSA9IHt9IGFzIEJ1dHRvbk1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvd25sb2FkOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgX2ljb246IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvbjogTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgdGhpcy5zZXR1cERpc3BsYXlUZXh0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgICB0aGlzLnNldHVwRGlzcGxheVRleHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXQgPyAodGhpcy5wcmVzZXRzLmdldCgnYnV0dG9uJywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+KSA6IHt9O1xuXG4gICAgLy8gTWVyZ2U6IHByZXNldCBkZWZhdWx0cyA8IGV4cGxpY2l0IHByb3BzXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgQnV0dG9uTWV0YWRhdGE7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIHRoZSB0ZXh0IGNvbnRlbnQgYmFzZWQgb24gdGhlIHJlc29sdmVkIHByb3BzIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHNldHVwRGlzcGxheVRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy50ZXh0KSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmNvbnRlbnRJbnRlcnBvbGF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLmludGVycG9sYXRlQ29udGVudCh0aGlzLnJlc29sdmVkUHJvcHMudGV4dCwgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRlbnRJbnRlcnBvbGF0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLnJlc29sdmVkUHJvcHMudGV4dDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250ZW50RmFsbGJhY2spIHtcbiAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiB1c2UgZmFsbGJhY2sgaWYgdGV4dCBpcyBub3QgcHJvdmlkZWRcbiAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLnJlc29sdmVkUHJvcHMuY29udGVudEZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVycG9sYXRlIHBsYWNlaG9sZGVycyBpbiBjb250ZW50IHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICAgKiBTdXBwb3J0cyB7e3BsYWNlaG9sZGVyfX0gZm9ybWF0LlxuICAgKi9cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0ZUNvbnRlbnQoY29udGVudDogc3RyaW5nLCB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xce1xceyhcXHcrKVxcfVxcfS9nLCAobWF0Y2gsIGtleSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbHVlc1trZXldICE9PSB1bmRlZmluZWQgPyBTdHJpbmcodmFsdWVzW2tleV0pIDogbWF0Y2g7XG4gICAgfSk7XG4gIH1cblxuICBjbGlja0hhbmRsZXIoKSB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5zdGF0ZSA9PT0gdGhpcy5zdGF0ZXMuRElTQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmFjdGlvblR5cGUgPT09IEFjdGlvblR5cGUuQVBQX05BVklHQVRJT04pIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVzb2x2ZWRQcm9wcy5saW5rKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmRvd25sb2FkKSB7XG4gICAgICB0aGlzLmRvd25sb2FkLmRvd25sb2FkTGlua0Zyb21Ccm93c2VyKHRoaXMucmVzb2x2ZWRQcm9wcy5kb3dubG9hZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5oYW5kbGVyKSB7XG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuaGFuZGxlcih0aGlzLnJlc29sdmVkUHJvcHMucmVmKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh0aGlzLnJlc29sdmVkUHJvcHMudG9rZW4pO1xuICB9XG59XG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBNEIxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQXFDMUIsWUFDVSxRQUF5QixFQUNqQyxLQUFrQixFQUNWLFVBQTZCO1FBRjdCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRXpCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBdkN2QyxXQUFNLEdBQUcsZUFBZSxDQUFDO1FBRWpCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQVd6Qjs7O1dBR0c7UUFDTSxVQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFtQixFQUFvQixDQUFDO1FBRXJEOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFNbEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUE2QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFNUcsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsR0FBRyxXQUFXO1lBQ2QsR0FBRyxJQUFJLENBQUMsS0FBSztTQUNJLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQy9HLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzlDLGdFQUFnRTtZQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDO1FBQ3hELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FBQyxPQUFlLEVBQUUsTUFBMkI7UUFDckUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3RELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBbkhVLGVBQWU7bUdBQWYsZUFBZSwwS0EzQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULDZnR0FwQlMsWUFBWSxpT0FBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsVUFBVSx5R0FBRSxPQUFPOzs0RkE0Q3BELGVBQWU7a0JBL0MzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQ3REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUOzhJQXlDUSxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQVlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TcGlubmVyLCBJb25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kb3dubG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1idXR0b25cbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInJlc29sdmVkUHJvcHMudG9rZW5cIlxuICAgICAgW3R5cGVdPVwicmVzb2x2ZWRQcm9wcy50eXBlXCJcbiAgICAgIFtjb2xvcl09XCJyZXNvbHZlZFByb3BzLmNvbG9yXCJcbiAgICAgIFtleHBhbmRdPVwicmVzb2x2ZWRQcm9wcy5leHBhbmRcIlxuICAgICAgW2ZpbGxdPVwicmVzb2x2ZWRQcm9wcy5maWxsXCJcbiAgICAgIFtzaXplXT1cInJlc29sdmVkUHJvcHMuc2l6ZVwiXG4gICAgICBbaHJlZl09XCJyZXNvbHZlZFByb3BzLmhyZWZcIlxuICAgICAgW3RhcmdldF09XCJyZXNvbHZlZFByb3BzLnRhcmdldFwiXG4gICAgICBbc2hhcGVdPVwicmVzb2x2ZWRQcm9wcy5zaGFwZVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKClcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICBbbmdDbGFzc109XCJyZXNvbHZlZFByb3BzLnNpemUgPyBbcmVzb2x2ZWRQcm9wcy5zaXplXSA6IFtdXCJcbiAgICA+XG4gICAgICA8aW9uLWljb24gKm5nSWY9XCJyZXNvbHZlZFByb3BzLmljb25cIiBbc2xvdF09XCJyZXNvbHZlZFByb3BzLmljb24uc2xvdFwiIFtuYW1lXT1cInJlc29sdmVkUHJvcHMuaWNvbi5uYW1lXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HXCIgbmFtZT1cImNpcmN1bGFyXCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgIDxpb24tdGV4dCAqbmdJZj1cInJlc29sdmVkUHJvcHMuc3RhdGUgIT09IHN0YXRlcy5XT1JLSU5HXCI+e3sgZGlzcGxheVRleHQgfX08L2lvbi10ZXh0PlxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtYnV0dG9uXG4gKlxuICogQSBjdXN0b21pemFibGUgYnV0dG9uIHN1cHBvcnRpbmcgaWNvbnMsIGxvYWRpbmcgc3RhdGUsIG5hdmlnYXRpb24sIGFuZCBwcmVzZXRzLlxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJlc2V0IChyZWNvbW1lbmRlZCB3aXRoIGkxOG4pOlxuICogPHZhbC1idXR0b24gcHJlc2V0PVwicHJpbWFyeS1hY3Rpb25cIiBbcHJvcHNdPVwieyB0ZXh0OiAnU3VibWl0JyB8IHQgfVwiPjwvdmFsLWJ1dHRvbj5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWMgdGV4dDpcbiAqIDx2YWwtYnV0dG9uIFtwcm9wc109XCJ7XG4gKiAgIHRleHQ6ICdTYXZlJyxcbiAqICAgY29sb3I6ICdwcmltYXJ5JyxcbiAqICAgdHlwZTogJ2J1dHRvbicsXG4gKiAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gKiAgIGljb246IHsgbmFtZTogJ3NhdmUnLCBzbG90OiAnc3RhcnQnIH1cbiAqIH1cIiAob25DbGljayk9XCJoYW5kbGVyKClcIj48L3ZhbC1idXR0b24+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHkgKGUuZy4sICdwcmltYXJ5LWFjdGlvbicsICdkYW5nZXInKVxuICogQGlucHV0IHByb3BzOiBCdXR0b25NZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBidXR0b24gKG92ZXJyaWRlcyBwcmVzZXQgdmFsdWVzKVxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdHMgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLlxuICAgKi9cbiAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgYnV0dG9uIGNvbmZpZ3VyYXRpb25zXG4gICAqIChzaXplLCBjb2xvciwgZmlsbCwgZXRjLikgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhcHAgbGV2ZWwuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtYnV0dG9uIHByZXNldD1cInByaW1hcnktYWN0aW9uXCIgW3Byb3BzXT1cInsgdGV4dDogJ1NhdmUnIH1cIj48L3ZhbC1idXR0b24+XG4gICAqL1xuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiBjb25maWd1cmF0aW9uLiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKiBXaGVuIHVzaW5nIHByZXNldHMsIG9ubHkgcGFydGlhbCBwcm9wcyBhcmUgbmVlZGVkIChwcmVzZXQgcHJvdmlkZXMgZGVmYXVsdHMpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqIFByZXNldCB2YWx1ZXMgYXJlIG92ZXJyaWRkZW4gYnkgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBCdXR0b25NZXRhZGF0YSA9IHt9IGFzIEJ1dHRvbk1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvd25sb2FkOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgX2ljb246IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvbjogTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgdGhpcy5zZXR1cERpc3BsYXlUZXh0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgICB0aGlzLnNldHVwRGlzcGxheVRleHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXQgPyAodGhpcy5wcmVzZXRzLmdldCgnYnV0dG9uJywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+KSA6IHt9O1xuXG4gICAgLy8gTWVyZ2U6IHByZXNldCBkZWZhdWx0cyA8IGV4cGxpY2l0IHByb3BzXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgQnV0dG9uTWV0YWRhdGE7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIHRoZSB0ZXh0IGNvbnRlbnQgYmFzZWQgb24gdGhlIHJlc29sdmVkIHByb3BzIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHNldHVwRGlzcGxheVRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy50ZXh0KSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmNvbnRlbnRJbnRlcnBvbGF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLmludGVycG9sYXRlQ29udGVudCh0aGlzLnJlc29sdmVkUHJvcHMudGV4dCwgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRlbnRJbnRlcnBvbGF0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLnJlc29sdmVkUHJvcHMudGV4dDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250ZW50RmFsbGJhY2spIHtcbiAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiB1c2UgZmFsbGJhY2sgaWYgdGV4dCBpcyBub3QgcHJvdmlkZWRcbiAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLnJlc29sdmVkUHJvcHMuY29udGVudEZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVycG9sYXRlIHBsYWNlaG9sZGVycyBpbiBjb250ZW50IHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICAgKiBTdXBwb3J0cyB7e3BsYWNlaG9sZGVyfX0gZm9ybWF0LlxuICAgKi9cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0ZUNvbnRlbnQoY29udGVudDogc3RyaW5nLCB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xce1xceyhcXHcrKVxcfVxcfS9nLCAobWF0Y2gsIGtleSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbHVlc1trZXldICE9PSB1bmRlZmluZWQgPyBTdHJpbmcodmFsdWVzW2tleV0pIDogbWF0Y2g7XG4gICAgfSk7XG4gIH1cblxuICBjbGlja0hhbmRsZXIoKSB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5zdGF0ZSA9PT0gdGhpcy5zdGF0ZXMuRElTQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmFjdGlvblR5cGUgPT09IEFjdGlvblR5cGUuQVBQX05BVklHQVRJT04pIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVzb2x2ZWRQcm9wcy5saW5rKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmRvd25sb2FkKSB7XG4gICAgICB0aGlzLmRvd25sb2FkLmRvd25sb2FkTGlua0Zyb21Ccm93c2VyKHRoaXMucmVzb2x2ZWRQcm9wcy5kb3dubG9hZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5oYW5kbGVyKSB7XG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuaGFuZGxlcih0aGlzLnJlc29sdmVkUHJvcHMucmVmKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh0aGlzLnJlc29sdmVkUHJvcHMudG9rZW4pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,154 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, EventEmitter, inject, input, Output } from '@angular/core';
3
+ import { RouterLink } from '@angular/router';
4
+ import { IonRippleEffect } from '@ionic/angular/standalone';
5
+ import { NavigationService } from '../../../services/navigation';
6
+ import { ARTICLE_CARD_DEFAULTS } from './types';
7
+ import * as i0 from "@angular/core";
8
+ const IONIC_COLORS = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
9
+ /**
10
+ * val-article-card
11
+ *
12
+ * Article / blog teaser card: cover image, topic chip, title, excerpt and date.
13
+ * Clickable (routerLink or external href).
14
+ *
15
+ * Presentational — pass already-resolved/formatted strings (pre-format the date
16
+ * in the consumer with a locale-aware pipe).
17
+ *
18
+ * @example
19
+ * ```html
20
+ * <val-article-card
21
+ * [props]="{
22
+ * image: '/assets/post.jpg',
23
+ * topic: 'Holidays',
24
+ * title: 'New Holiday Shopping Features',
25
+ * excerpt: 'A short summary of the article that gets clamped after a few lines.',
26
+ * date: 'Oct 31, 2025',
27
+ * routerLink: '/blog/holiday-shopping'
28
+ * }"
29
+ * (onClick)="open($event)"
30
+ * />
31
+ * ```
32
+ */
33
+ export class ArticleCardComponent {
34
+ constructor() {
35
+ this.navigation = inject(NavigationService);
36
+ /** Component configuration */
37
+ this.props = input({});
38
+ /** Emitted when the card is clicked */
39
+ this.onClick = new EventEmitter();
40
+ /** Merged configuration with defaults */
41
+ this.config = computed(() => ({
42
+ ...ARTICLE_CARD_DEFAULTS,
43
+ ...this.props(),
44
+ }));
45
+ this.isClickable = computed(() => !!this.config().routerLink || !!this.config().href);
46
+ }
47
+ getTopicColor() {
48
+ const color = this.config().topicColor;
49
+ if (!color)
50
+ return 'var(--ion-color-primary)';
51
+ return IONIC_COLORS.includes(color) ? `var(--ion-color-${color})` : color;
52
+ }
53
+ handleClick(event) {
54
+ const cfg = this.config();
55
+ this.onClick.emit({ token: cfg.token, navigated: this.isClickable() });
56
+ if (cfg.href) {
57
+ event.preventDefault();
58
+ this.navigation.openInNewTab(cfg.href);
59
+ }
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ArticleCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ArticleCardComponent, isStandalone: true, selector: "val-article-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
63
+ <article
64
+ class="article-card"
65
+ [class.article-card--bordered]="config().bordered"
66
+ [class.article-card--shadowed]="config().shadowed"
67
+ [class.article-card--clickable]="isClickable()"
68
+ [routerLink]="config().routerLink ?? null"
69
+ (click)="handleClick($event)"
70
+ [attr.tabindex]="isClickable() ? 0 : null"
71
+ [attr.role]="isClickable() ? 'link' : null"
72
+ >
73
+ @if (isClickable()) {
74
+ <ion-ripple-effect></ion-ripple-effect>
75
+ }
76
+
77
+ @if (config().image) {
78
+ <div class="article-card__media" [style.aspect-ratio]="config().aspectRatio">
79
+ <img [src]="config().image" [alt]="config().imageAlt || config().title" />
80
+ </div>
81
+ }
82
+
83
+ <div class="article-card__body">
84
+ @if (config().date || config().topic) {
85
+ <div class="article-card__meta">
86
+ @if (config().date) {
87
+ <span class="article-card__date">{{ config().date }}</span>
88
+ }
89
+ @if (config().topic) {
90
+ <span class="article-card__topic" [style.color]="getTopicColor()">{{ config().topic }}</span>
91
+ }
92
+ </div>
93
+ }
94
+
95
+ <h3 class="article-card__title">{{ config().title }}</h3>
96
+
97
+ @if (config().excerpt) {
98
+ <p class="article-card__excerpt" [style.-webkit-line-clamp]="config().excerptLines">
99
+ {{ config().excerpt }}
100
+ </p>
101
+ }
102
+ </div>
103
+ </article>
104
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column}.article-card{position:relative;display:flex;flex:1;flex-direction:column;background:var(--ion-card-background, var(--ion-background-color));border-radius:14px;overflow:hidden;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease;--ripple-color: var(--ion-color-primary)}.article-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.article-card--shadowed{box-shadow:0 2px 8px #00000014}.article-card--clickable{cursor:pointer}.article-card--clickable:hover{transform:translateY(-3px);box-shadow:0 6px 20px #0000001f}.article-card--clickable:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.article-card__media{width:100%;overflow:hidden;background:var(--ion-color-light, #f4f5f8)}.article-card__media img{width:100%;height:100%;object-fit:cover;display:block}.article-card__body{display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.1rem 1.25rem}.article-card__meta{display:flex;align-items:center;gap:.75rem;font-size:.8rem}.article-card__date{color:var(--ion-color-medium)}.article-card__topic{font-weight:600;color:var(--ion-color-primary)}.article-card__title{margin:0;font-size:1.05rem;font-weight:700;line-height:1.35;color:var(--ion-text-color)}.article-card__excerpt{margin:0;font-size:.9rem;line-height:1.5;color:var(--ion-color-medium-shade);display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}:host-context(.dark) .article-card--bordered,:host-context(.ion-palette-dark) .article-card--bordered,:host-context(html.ion-palette-dark) .article-card--bordered,:host-context(body.dark) .article-card--bordered,:host-context([data-theme=dark]) .article-card--bordered{border-color:#ffffff1f}:host-context(.dark) .article-card--shadowed,:host-context(.ion-palette-dark) .article-card--shadowed,:host-context(html.ion-palette-dark) .article-card--shadowed,:host-context(body.dark) .article-card--shadowed,:host-context([data-theme=dark]) .article-card--shadowed{box-shadow:0 2px 8px #0000004d}:host-context(.dark) .article-card--clickable:hover,:host-context(.ion-palette-dark) .article-card--clickable:hover,:host-context(html.ion-palette-dark) .article-card--clickable:hover,:host-context(body.dark) .article-card--clickable:hover,:host-context([data-theme=dark]) .article-card--clickable:hover{box-shadow:0 6px 20px #0006}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }] }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ArticleCardComponent, decorators: [{
107
+ type: Component,
108
+ args: [{ selector: 'val-article-card', standalone: true, imports: [CommonModule, RouterLink, IonRippleEffect], template: `
109
+ <article
110
+ class="article-card"
111
+ [class.article-card--bordered]="config().bordered"
112
+ [class.article-card--shadowed]="config().shadowed"
113
+ [class.article-card--clickable]="isClickable()"
114
+ [routerLink]="config().routerLink ?? null"
115
+ (click)="handleClick($event)"
116
+ [attr.tabindex]="isClickable() ? 0 : null"
117
+ [attr.role]="isClickable() ? 'link' : null"
118
+ >
119
+ @if (isClickable()) {
120
+ <ion-ripple-effect></ion-ripple-effect>
121
+ }
122
+
123
+ @if (config().image) {
124
+ <div class="article-card__media" [style.aspect-ratio]="config().aspectRatio">
125
+ <img [src]="config().image" [alt]="config().imageAlt || config().title" />
126
+ </div>
127
+ }
128
+
129
+ <div class="article-card__body">
130
+ @if (config().date || config().topic) {
131
+ <div class="article-card__meta">
132
+ @if (config().date) {
133
+ <span class="article-card__date">{{ config().date }}</span>
134
+ }
135
+ @if (config().topic) {
136
+ <span class="article-card__topic" [style.color]="getTopicColor()">{{ config().topic }}</span>
137
+ }
138
+ </div>
139
+ }
140
+
141
+ <h3 class="article-card__title">{{ config().title }}</h3>
142
+
143
+ @if (config().excerpt) {
144
+ <p class="article-card__excerpt" [style.-webkit-line-clamp]="config().excerptLines">
145
+ {{ config().excerpt }}
146
+ </p>
147
+ }
148
+ </div>
149
+ </article>
150
+ `, styles: [":host{display:flex;flex-direction:column}.article-card{position:relative;display:flex;flex:1;flex-direction:column;background:var(--ion-card-background, var(--ion-background-color));border-radius:14px;overflow:hidden;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease;--ripple-color: var(--ion-color-primary)}.article-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.article-card--shadowed{box-shadow:0 2px 8px #00000014}.article-card--clickable{cursor:pointer}.article-card--clickable:hover{transform:translateY(-3px);box-shadow:0 6px 20px #0000001f}.article-card--clickable:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.article-card__media{width:100%;overflow:hidden;background:var(--ion-color-light, #f4f5f8)}.article-card__media img{width:100%;height:100%;object-fit:cover;display:block}.article-card__body{display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.1rem 1.25rem}.article-card__meta{display:flex;align-items:center;gap:.75rem;font-size:.8rem}.article-card__date{color:var(--ion-color-medium)}.article-card__topic{font-weight:600;color:var(--ion-color-primary)}.article-card__title{margin:0;font-size:1.05rem;font-weight:700;line-height:1.35;color:var(--ion-text-color)}.article-card__excerpt{margin:0;font-size:.9rem;line-height:1.5;color:var(--ion-color-medium-shade);display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}:host-context(.dark) .article-card--bordered,:host-context(.ion-palette-dark) .article-card--bordered,:host-context(html.ion-palette-dark) .article-card--bordered,:host-context(body.dark) .article-card--bordered,:host-context([data-theme=dark]) .article-card--bordered{border-color:#ffffff1f}:host-context(.dark) .article-card--shadowed,:host-context(.ion-palette-dark) .article-card--shadowed,:host-context(html.ion-palette-dark) .article-card--shadowed,:host-context(body.dark) .article-card--shadowed,:host-context([data-theme=dark]) .article-card--shadowed{box-shadow:0 2px 8px #0000004d}:host-context(.dark) .article-card--clickable:hover,:host-context(.ion-palette-dark) .article-card--clickable:hover,:host-context(html.ion-palette-dark) .article-card--clickable:hover,:host-context(body.dark) .article-card--clickable:hover,:host-context([data-theme=dark]) .article-card--clickable:hover{box-shadow:0 6px 20px #0006}\n"] }]
151
+ }], propDecorators: { onClick: [{
152
+ type: Output
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvYXJ0aWNsZS1jYXJkL2FydGljbGUtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBOEMscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRTVGLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVySDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFrREgsTUFBTSxPQUFPLG9CQUFvQjtJQWpEakM7UUFrRFUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9DLDhCQUE4QjtRQUNyQixVQUFLLEdBQUcsS0FBSyxDQUErQixFQUFFLENBQUMsQ0FBQztRQUV6RCx1Q0FBdUM7UUFDN0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRTlELHlDQUF5QztRQUN6QyxXQUFNLEdBQUcsUUFBUSxDQUNmLEdBQUcsRUFBRSxDQUNILENBQUM7WUFDQyxHQUFHLHFCQUFxQjtZQUN4QixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDaEIsQ0FBdUQsQ0FDM0QsQ0FBQztRQUVGLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FnQmxGO0lBZEMsYUFBYTtRQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFnQyxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTywwQkFBMEIsQ0FBQztRQUM5QyxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVFLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOytHQWpDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixpUEE3Q3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1QsbzRFQTNDUyxZQUFZLCtCQUFFLFVBQVUsb09BQUUsZUFBZTs7NEZBOEN4QyxvQkFBb0I7a0JBakRoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxZQUMxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQVVTLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uUmlwcGxlRWZmZWN0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgQXJ0aWNsZUNhcmRNZXRhZGF0YSwgQXJ0aWNsZUNhcmRDbGlja0V2ZW50LCBBUlRJQ0xFX0NBUkRfREVGQVVMVFMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgSU9OSUNfQ09MT1JTID0gWydwcmltYXJ5JywgJ3NlY29uZGFyeScsICd0ZXJ0aWFyeScsICdzdWNjZXNzJywgJ3dhcm5pbmcnLCAnZGFuZ2VyJywgJ2xpZ2h0JywgJ21lZGl1bScsICdkYXJrJ107XG5cbi8qKlxuICogdmFsLWFydGljbGUtY2FyZFxuICpcbiAqIEFydGljbGUgLyBibG9nIHRlYXNlciBjYXJkOiBjb3ZlciBpbWFnZSwgdG9waWMgY2hpcCwgdGl0bGUsIGV4Y2VycHQgYW5kIGRhdGUuXG4gKiBDbGlja2FibGUgKHJvdXRlckxpbmsgb3IgZXh0ZXJuYWwgaHJlZikuXG4gKlxuICogUHJlc2VudGF0aW9uYWwg4oCUIHBhc3MgYWxyZWFkeS1yZXNvbHZlZC9mb3JtYXR0ZWQgc3RyaW5ncyAocHJlLWZvcm1hdCB0aGUgZGF0ZVxuICogaW4gdGhlIGNvbnN1bWVyIHdpdGggYSBsb2NhbGUtYXdhcmUgcGlwZSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtYXJ0aWNsZS1jYXJkXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaW1hZ2U6ICcvYXNzZXRzL3Bvc3QuanBnJyxcbiAqICAgICB0b3BpYzogJ0hvbGlkYXlzJyxcbiAqICAgICB0aXRsZTogJ05ldyBIb2xpZGF5IFNob3BwaW5nIEZlYXR1cmVzJyxcbiAqICAgICBleGNlcnB0OiAnQSBzaG9ydCBzdW1tYXJ5IG9mIHRoZSBhcnRpY2xlIHRoYXQgZ2V0cyBjbGFtcGVkIGFmdGVyIGEgZmV3IGxpbmVzLicsXG4gKiAgICAgZGF0ZTogJ09jdCAzMSwgMjAyNScsXG4gKiAgICAgcm91dGVyTGluazogJy9ibG9nL2hvbGlkYXktc2hvcHBpbmcnXG4gKiAgIH1cIlxuICogICAob25DbGljayk9XCJvcGVuKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXJ0aWNsZS1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTGluaywgSW9uUmlwcGxlRWZmZWN0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXJ0aWNsZVxuICAgICAgY2xhc3M9XCJhcnRpY2xlLWNhcmRcIlxuICAgICAgW2NsYXNzLmFydGljbGUtY2FyZC0tYm9yZGVyZWRdPVwiY29uZmlnKCkuYm9yZGVyZWRcIlxuICAgICAgW2NsYXNzLmFydGljbGUtY2FyZC0tc2hhZG93ZWRdPVwiY29uZmlnKCkuc2hhZG93ZWRcIlxuICAgICAgW2NsYXNzLmFydGljbGUtY2FyZC0tY2xpY2thYmxlXT1cImlzQ2xpY2thYmxlKClcIlxuICAgICAgW3JvdXRlckxpbmtdPVwiY29uZmlnKCkucm91dGVyTGluayA/PyBudWxsXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzQ2xpY2thYmxlKCkgPyAwIDogbnVsbFwiXG4gICAgICBbYXR0ci5yb2xlXT1cImlzQ2xpY2thYmxlKCkgPyAnbGluaycgOiBudWxsXCJcbiAgICA+XG4gICAgICBAaWYgKGlzQ2xpY2thYmxlKCkpIHtcbiAgICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoY29uZmlnKCkuaW1hZ2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImFydGljbGUtY2FyZF9fbWVkaWFcIiBbc3R5bGUuYXNwZWN0LXJhdGlvXT1cImNvbmZpZygpLmFzcGVjdFJhdGlvXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImNvbmZpZygpLmltYWdlXCIgW2FsdF09XCJjb25maWcoKS5pbWFnZUFsdCB8fCBjb25maWcoKS50aXRsZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYXJ0aWNsZS1jYXJkX19ib2R5XCI+XG4gICAgICAgIEBpZiAoY29uZmlnKCkuZGF0ZSB8fCBjb25maWcoKS50b3BpYykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnRpY2xlLWNhcmRfX21ldGFcIj5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnKCkuZGF0ZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFydGljbGUtY2FyZF9fZGF0ZVwiPnt7IGNvbmZpZygpLmRhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNvbmZpZygpLnRvcGljKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJ0aWNsZS1jYXJkX190b3BpY1wiIFtzdHlsZS5jb2xvcl09XCJnZXRUb3BpY0NvbG9yKClcIj57eyBjb25maWcoKS50b3BpYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxoMyBjbGFzcz1cImFydGljbGUtY2FyZF9fdGl0bGVcIj57eyBjb25maWcoKS50aXRsZSB9fTwvaDM+XG5cbiAgICAgICAgQGlmIChjb25maWcoKS5leGNlcnB0KSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJhcnRpY2xlLWNhcmRfX2V4Y2VycHRcIiBbc3R5bGUuLXdlYmtpdC1saW5lLWNsYW1wXT1cImNvbmZpZygpLmV4Y2VycHRMaW5lc1wiPlxuICAgICAgICAgICAge3sgY29uZmlnKCkuZXhjZXJwdCB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9hcnRpY2xlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hcnRpY2xlLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJ0aWNsZUNhcmRDb21wb25lbnQge1xuICBwcml2YXRlIG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFBhcnRpYWw8QXJ0aWNsZUNhcmRNZXRhZGF0YT4+KHt9KTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjYXJkIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFydGljbGVDYXJkQ2xpY2tFdmVudD4oKTtcblxuICAvKiogTWVyZ2VkIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyAqL1xuICBjb25maWcgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgLi4uQVJUSUNMRV9DQVJEX0RFRkFVTFRTLFxuICAgICAgICAuLi50aGlzLnByb3BzKCksXG4gICAgICB9KSBhcyBBcnRpY2xlQ2FyZE1ldGFkYXRhICYgdHlwZW9mIEFSVElDTEVfQ0FSRF9ERUZBVUxUU1xuICApO1xuXG4gIGlzQ2xpY2thYmxlID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLmNvbmZpZygpLnJvdXRlckxpbmsgfHwgISF0aGlzLmNvbmZpZygpLmhyZWYpO1xuXG4gIGdldFRvcGljQ29sb3IoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbmZpZygpLnRvcGljQ29sb3IgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghY29sb3IpIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgICByZXR1cm4gSU9OSUNfQ09MT1JTLmluY2x1ZGVzKGNvbG9yKSA/IGB2YXIoLS1pb24tY29sb3ItJHtjb2xvcn0pYCA6IGNvbG9yO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICAgIHRoaXMub25DbGljay5lbWl0KHsgdG9rZW46IGNmZy50b2tlbiwgbmF2aWdhdGVkOiB0aGlzLmlzQ2xpY2thYmxlKCkgfSk7XG4gICAgaWYgKGNmZy5ocmVmKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uLm9wZW5Jbk5ld1RhYihjZmcuaHJlZik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Default values for ArticleCardMetadata.
3
+ */
4
+ export const ARTICLE_CARD_DEFAULTS = {
5
+ aspectRatio: '16 / 9',
6
+ bordered: true,
7
+ shadowed: false,
8
+ excerptLines: 3,
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FydGljbGUtY2FyZC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1REE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FFOUI7SUFDRixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxLQUFLO0lBQ2YsWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG4vKipcbiAqIENsaWNrIGV2ZW50IGVtaXR0ZWQgYnkgdmFsLWFydGljbGUtY2FyZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlQ2FyZENsaWNrRXZlbnQge1xuICAvKiogVG9rZW4gaWRlbnRpZmllciBmb3IgdGhlIGNhcmQgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCAocm91dGVyTGluayAvIGhyZWYgc2V0KSAqL1xuICBuYXZpZ2F0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIGZvciB2YWwtYXJ0aWNsZS1jYXJkLlxuICpcbiAqIEFydGljbGUgLyBibG9nIHRlYXNlciBjYXJkOiBjb3ZlciBpbWFnZSwgdG9waWMgY2hpcCwgdGl0bGUsIGV4Y2VycHQgYW5kIGRhdGUuXG4gKiBQcmVzZW50YXRpb25hbCDigJQgcGFzcyBhbHJlYWR5LXJlc29sdmVkL2Zvcm1hdHRlZCBzdHJpbmdzICh0aGUgZGF0ZSBzaG91bGQgYmVcbiAqIHByZS1mb3JtYXR0ZWQgYnkgdGhlIGNvbnN1bWVyLCBlLmcuIHdpdGggYSBsb2NhbGUtYXdhcmUgcGlwZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWNsZUNhcmRNZXRhZGF0YSB7XG4gIC8qKiBVbmlxdWUgdG9rZW4gaWRlbnRpZmllciAqL1xuICB0b2tlbj86IHN0cmluZztcblxuICAvKiogQ292ZXIgaW1hZ2UgVVJMICovXG4gIGltYWdlPzogc3RyaW5nO1xuICAvKiogQWx0IHRleHQgZm9yIHRoZSBjb3ZlciBpbWFnZSAqL1xuICBpbWFnZUFsdD86IHN0cmluZztcbiAgLyoqIEltYWdlIGFzcGVjdCByYXRpbyAoQ1NTKS4gRGVmYXVsdDogJzE2IC8gOScgKi9cbiAgYXNwZWN0UmF0aW8/OiBzdHJpbmc7XG5cbiAgLyoqIFRvcGljIC8gY2F0ZWdvcnkgbGFiZWwgKHJlbmRlcmVkIGFzIGEgY2hpcCkgKi9cbiAgdG9waWM/OiBzdHJpbmc7XG4gIC8qKiBUb3BpYyBjaGlwIGNvbG9yIChJb25pYyBjb2xvciBuYW1lIG9yIENTUyBjb2xvcikgKi9cbiAgdG9waWNDb2xvcj86IENvbG9yIHwgc3RyaW5nO1xuXG4gIC8qKiBBcnRpY2xlIHRpdGxlICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKiBTaG9ydCBleGNlcnB0IC8gc3VtbWFyeSAqL1xuICBleGNlcnB0Pzogc3RyaW5nO1xuICAvKiogUHJlLWZvcm1hdHRlZCBwdWJsaWNhdGlvbiBkYXRlIHN0cmluZyAqL1xuICBkYXRlPzogc3RyaW5nO1xuXG4gIC8qKiBJbnRlcm5hbCBBbmd1bGFyIHJvdXRlICovXG4gIHJvdXRlckxpbms/OiBzdHJpbmcgfCBhbnlbXTtcbiAgLyoqIEV4dGVybmFsIFVSTCAob3BlbnMgaW4gYSBuZXcgdGFiKSAqL1xuICBocmVmPzogc3RyaW5nO1xuXG4gIC8qKiBTaG93IGJvcmRlci4gRGVmYXVsdDogdHJ1ZSAqL1xuICBib3JkZXJlZD86IGJvb2xlYW47XG4gIC8qKiBTaG93IHNoYWRvdy4gRGVmYXVsdDogZmFsc2UgKi9cbiAgc2hhZG93ZWQ/OiBib29sZWFuO1xuICAvKiogTnVtYmVyIG9mIGxpbmVzIGJlZm9yZSB0aGUgZXhjZXJwdCBpcyBjbGFtcGVkLiBEZWZhdWx0OiAzICovXG4gIGV4Y2VycHRMaW5lcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHZhbHVlcyBmb3IgQXJ0aWNsZUNhcmRNZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFSVElDTEVfQ0FSRF9ERUZBVUxUUzogUmVxdWlyZWQ8XG4gIFBpY2s8QXJ0aWNsZUNhcmRNZXRhZGF0YSwgJ2FzcGVjdFJhdGlvJyB8ICdib3JkZXJlZCcgfCAnc2hhZG93ZWQnIHwgJ2V4Y2VycHRMaW5lcyc+XG4+ID0ge1xuICBhc3BlY3RSYXRpbzogJzE2IC8gOScsXG4gIGJvcmRlcmVkOiB0cnVlLFxuICBzaGFkb3dlZDogZmFsc2UsXG4gIGV4Y2VycHRMaW5lczogMyxcbn07XG4iXX0=
@@ -0,0 +1,121 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, EventEmitter, input, Output } from '@angular/core';
3
+ import { ButtonGroupComponent } from '../button-group/button-group.component';
4
+ import { CTA_CARD_DEFAULTS } from './types';
5
+ import * as i0 from "@angular/core";
6
+ const IONIC_COLORS = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
7
+ /**
8
+ * val-cta-card
9
+ *
10
+ * Card with a title, optional description and a group of action buttons, with
11
+ * customisable padding, corner rounding and background (Ionic colors
12
+ * supported). Buttons reuse `val-button-group`.
13
+ *
14
+ * Presentational — pass already-resolved strings.
15
+ *
16
+ * @example
17
+ * ```html
18
+ * <val-cta-card
19
+ * [props]="{
20
+ * title: 'Read the Bible Online',
21
+ * description: 'Trusted translations, in your language.',
22
+ * actions: {
23
+ * position: 'left',
24
+ * columned: false,
25
+ * buttons: [
26
+ * { text: 'Continue Reading', color: 'dark', type: 'button', shape: 'round', state: 'ENABLED', token: 'read' },
27
+ * { text: 'Listen', color: 'dark', fill: 'outline', type: 'button', shape: 'round', state: 'ENABLED', token: 'listen' }
28
+ * ]
29
+ * }
30
+ * }"
31
+ * (onAction)="onAction($event)"
32
+ * />
33
+ * ```
34
+ */
35
+ export class CtaCardComponent {
36
+ constructor() {
37
+ /** Component configuration */
38
+ this.props = input({});
39
+ /** Emitted with the token of the clicked action button */
40
+ this.onAction = new EventEmitter();
41
+ /** Merged configuration with defaults */
42
+ this.config = computed(() => ({
43
+ ...CTA_CARD_DEFAULTS,
44
+ ...this.props(),
45
+ }));
46
+ }
47
+ resolveColor(color) {
48
+ if (!color)
49
+ return null;
50
+ return IONIC_COLORS.includes(color) ? `var(--ion-color-${color})` : color;
51
+ }
52
+ getBackground() {
53
+ return this.resolveColor(this.config().backgroundColor) || 'var(--ion-color-light, #f4f5f8)';
54
+ }
55
+ getColor() {
56
+ return this.resolveColor(this.config().color);
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CtaCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CtaCardComponent, isStandalone: true, selector: "val-cta-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onAction: "onAction" }, ngImport: i0, template: `
60
+ <section
61
+ class="cta-card"
62
+ [class.cta-card--center]="config().align === 'center'"
63
+ [class.cta-card--bordered]="config().bordered"
64
+ [class.cta-card--shadowed]="config().shadowed"
65
+ [style.padding]="config().padding"
66
+ [style.border-radius]="config().borderRadius"
67
+ [style.background]="getBackground()"
68
+ [style.color]="getColor()"
69
+ >
70
+ @if (config().overtitle) {
71
+ <span class="cta-card__overtitle">{{ config().overtitle }}</span>
72
+ }
73
+
74
+ <h2 class="cta-card__title">{{ config().title }}</h2>
75
+
76
+ @if (config().description) {
77
+ <p class="cta-card__description">{{ config().description }}</p>
78
+ }
79
+
80
+ @if (config().actions; as actions) {
81
+ <div class="cta-card__actions">
82
+ <val-button-group [props]="actions" (onClick)="onAction.emit($event)"></val-button-group>
83
+ </div>
84
+ }
85
+ </section>
86
+ `, isInline: true, styles: [":host{display:block}.cta-card{display:flex;flex-direction:column;gap:.5rem}.cta-card--center{align-items:center;text-align:center}.cta-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.cta-card--shadowed{box-shadow:0 4px 16px #00000014}.cta-card__overtitle{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;opacity:.7}.cta-card__title{margin:0;font-size:1.75rem;font-weight:800;line-height:1.2;letter-spacing:-.02em}.cta-card__description{margin:0;font-size:1rem;line-height:1.5;opacity:.8}.cta-card__actions{margin-top:1rem;width:100%}@media (max-width: 576px){.cta-card__title{font-size:1.4rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }] }); }
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CtaCardComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'val-cta-card', standalone: true, imports: [CommonModule, ButtonGroupComponent], template: `
91
+ <section
92
+ class="cta-card"
93
+ [class.cta-card--center]="config().align === 'center'"
94
+ [class.cta-card--bordered]="config().bordered"
95
+ [class.cta-card--shadowed]="config().shadowed"
96
+ [style.padding]="config().padding"
97
+ [style.border-radius]="config().borderRadius"
98
+ [style.background]="getBackground()"
99
+ [style.color]="getColor()"
100
+ >
101
+ @if (config().overtitle) {
102
+ <span class="cta-card__overtitle">{{ config().overtitle }}</span>
103
+ }
104
+
105
+ <h2 class="cta-card__title">{{ config().title }}</h2>
106
+
107
+ @if (config().description) {
108
+ <p class="cta-card__description">{{ config().description }}</p>
109
+ }
110
+
111
+ @if (config().actions; as actions) {
112
+ <div class="cta-card__actions">
113
+ <val-button-group [props]="actions" (onClick)="onAction.emit($event)"></val-button-group>
114
+ </div>
115
+ }
116
+ </section>
117
+ `, styles: [":host{display:block}.cta-card{display:flex;flex-direction:column;gap:.5rem}.cta-card--center{align-items:center;text-align:center}.cta-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.cta-card--shadowed{box-shadow:0 4px 16px #00000014}.cta-card__overtitle{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;opacity:.7}.cta-card__title{margin:0;font-size:1.75rem;font-weight:800;line-height:1.2;letter-spacing:-.02em}.cta-card__description{margin:0;font-size:1rem;line-height:1.5;opacity:.8}.cta-card__actions{margin-top:1rem;width:100%}@media (max-width: 576px){.cta-card__title{font-size:1.4rem}}\n"] }]
118
+ }], propDecorators: { onAction: [{
119
+ type: Output
120
+ }] } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RhLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jdGEtY2FyZC9jdGEtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRTdELE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVySDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBbUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFsQzdCO1FBbUNFLDhCQUE4QjtRQUNyQixVQUFLLEdBQUcsS0FBSyxDQUEyQixFQUFFLENBQUMsQ0FBQztRQUVyRCwwREFBMEQ7UUFDaEQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFaEQseUNBQXlDO1FBQ3pDLFdBQU0sR0FBRyxRQUFRLENBQ2YsR0FBRyxFQUFFLENBQ0gsQ0FBQztZQUNDLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNoQixDQUErQyxDQUNuRCxDQUFDO0tBY0g7SUFaUyxZQUFZLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUUsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGVBQXlCLENBQUMsSUFBSSxpQ0FBaUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBZSxDQUFDLENBQUM7SUFDMUQsQ0FBQzsrR0EzQlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsK09BOUJqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJULDJ0QkE1QlMsWUFBWSwrQkFBRSxvQkFBb0I7OzRGQStCakMsZ0JBQWdCO2tCQWxDNUIsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLFlBQ25DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7OEJBUVMsUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGlucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3RhQ2FyZE1ldGFkYXRhLCBDVEFfQ0FSRF9ERUZBVUxUUyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBJT05JQ19DT0xPUlMgPSBbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3RlcnRpYXJ5JywgJ3N1Y2Nlc3MnLCAnd2FybmluZycsICdkYW5nZXInLCAnbGlnaHQnLCAnbWVkaXVtJywgJ2RhcmsnXTtcblxuLyoqXG4gKiB2YWwtY3RhLWNhcmRcbiAqXG4gKiBDYXJkIHdpdGggYSB0aXRsZSwgb3B0aW9uYWwgZGVzY3JpcHRpb24gYW5kIGEgZ3JvdXAgb2YgYWN0aW9uIGJ1dHRvbnMsIHdpdGhcbiAqIGN1c3RvbWlzYWJsZSBwYWRkaW5nLCBjb3JuZXIgcm91bmRpbmcgYW5kIGJhY2tncm91bmQgKElvbmljIGNvbG9yc1xuICogc3VwcG9ydGVkKS4gQnV0dG9ucyByZXVzZSBgdmFsLWJ1dHRvbi1ncm91cGAuXG4gKlxuICogUHJlc2VudGF0aW9uYWwg4oCUIHBhc3MgYWxyZWFkeS1yZXNvbHZlZCBzdHJpbmdzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWN0YS1jYXJkXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdSZWFkIHRoZSBCaWJsZSBPbmxpbmUnLFxuICogICAgIGRlc2NyaXB0aW9uOiAnVHJ1c3RlZCB0cmFuc2xhdGlvbnMsIGluIHlvdXIgbGFuZ3VhZ2UuJyxcbiAqICAgICBhY3Rpb25zOiB7XG4gKiAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICogICAgICAgY29sdW1uZWQ6IGZhbHNlLFxuICogICAgICAgYnV0dG9uczogW1xuICogICAgICAgICB7IHRleHQ6ICdDb250aW51ZSBSZWFkaW5nJywgY29sb3I6ICdkYXJrJywgdHlwZTogJ2J1dHRvbicsIHNoYXBlOiAncm91bmQnLCBzdGF0ZTogJ0VOQUJMRUQnLCB0b2tlbjogJ3JlYWQnIH0sXG4gKiAgICAgICAgIHsgdGV4dDogJ0xpc3RlbicsIGNvbG9yOiAnZGFyaycsIGZpbGw6ICdvdXRsaW5lJywgdHlwZTogJ2J1dHRvbicsIHNoYXBlOiAncm91bmQnLCBzdGF0ZTogJ0VOQUJMRUQnLCB0b2tlbjogJ2xpc3RlbicgfVxuICogICAgICAgXVxuICogICAgIH1cbiAqICAgfVwiXG4gKiAgIChvbkFjdGlvbik9XCJvbkFjdGlvbigkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWN0YS1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQnV0dG9uR3JvdXBDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzZWN0aW9uXG4gICAgICBjbGFzcz1cImN0YS1jYXJkXCJcbiAgICAgIFtjbGFzcy5jdGEtY2FyZC0tY2VudGVyXT1cImNvbmZpZygpLmFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICBbY2xhc3MuY3RhLWNhcmQtLWJvcmRlcmVkXT1cImNvbmZpZygpLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5jdGEtY2FyZC0tc2hhZG93ZWRdPVwiY29uZmlnKCkuc2hhZG93ZWRcIlxuICAgICAgW3N0eWxlLnBhZGRpbmddPVwiY29uZmlnKCkucGFkZGluZ1wiXG4gICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1c109XCJjb25maWcoKS5ib3JkZXJSYWRpdXNcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZ2V0QmFja2dyb3VuZCgpXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRDb2xvcigpXCJcbiAgICA+XG4gICAgICBAaWYgKGNvbmZpZygpLm92ZXJ0aXRsZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImN0YS1jYXJkX19vdmVydGl0bGVcIj57eyBjb25maWcoKS5vdmVydGl0bGUgfX08L3NwYW4+XG4gICAgICB9XG5cbiAgICAgIDxoMiBjbGFzcz1cImN0YS1jYXJkX190aXRsZVwiPnt7IGNvbmZpZygpLnRpdGxlIH19PC9oMj5cblxuICAgICAgQGlmIChjb25maWcoKS5kZXNjcmlwdGlvbikge1xuICAgICAgICA8cCBjbGFzcz1cImN0YS1jYXJkX19kZXNjcmlwdGlvblwiPnt7IGNvbmZpZygpLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGNvbmZpZygpLmFjdGlvbnM7IGFzIGFjdGlvbnMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImN0YS1jYXJkX19hY3Rpb25zXCI+XG4gICAgICAgICAgPHZhbC1idXR0b24tZ3JvdXAgW3Byb3BzXT1cImFjdGlvbnNcIiAob25DbGljayk9XCJvbkFjdGlvbi5lbWl0KCRldmVudClcIj48L3ZhbC1idXR0b24tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY3RhLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3RhQ2FyZENvbXBvbmVudCB7XG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFBhcnRpYWw8Q3RhQ2FyZE1ldGFkYXRhPj4oe30pO1xuXG4gIC8qKiBFbWl0dGVkIHdpdGggdGhlIHRva2VuIG9mIHRoZSBjbGlja2VkIGFjdGlvbiBidXR0b24gKi9cbiAgQE91dHB1dCgpIG9uQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIE1lcmdlZCBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHMgKi9cbiAgY29uZmlnID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgICh7XG4gICAgICAgIC4uLkNUQV9DQVJEX0RFRkFVTFRTLFxuICAgICAgICAuLi50aGlzLnByb3BzKCksXG4gICAgICB9KSBhcyBDdGFDYXJkTWV0YWRhdGEgJiB0eXBlb2YgQ1RBX0NBUkRfREVGQVVMVFNcbiAgKTtcblxuICBwcml2YXRlIHJlc29sdmVDb2xvcihjb2xvcj86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghY29sb3IpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBJT05JQ19DT0xPUlMuaW5jbHVkZXMoY29sb3IpID8gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgIDogY29sb3I7XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUNvbG9yKHRoaXMuY29uZmlnKCkuYmFja2dyb3VuZENvbG9yIGFzIHN0cmluZykgfHwgJ3ZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCknO1xuICB9XG5cbiAgZ2V0Q29sb3IoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUNvbG9yKHRoaXMuY29uZmlnKCkuY29sb3IgYXMgc3RyaW5nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Default values for CtaCardMetadata.
3
+ */
4
+ export const CTA_CARD_DEFAULTS = {
5
+ padding: '2rem',
6
+ borderRadius: '20px',
7
+ align: 'start',
8
+ bordered: false,
9
+ shadowed: false,
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2N0YS1jYXJkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZDQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUUxQjtJQUNGLE9BQU8sRUFBRSxNQUFNO0lBQ2YsWUFBWSxFQUFFLE1BQU07SUFDcEIsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsS0FBSztJQUNmLFFBQVEsRUFBRSxLQUFLO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwTWV0YWRhdGEgfSBmcm9tICcuLi9idXR0b24tZ3JvdXAvdHlwZXMnO1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciB2YWwtY3RhLWNhcmQuXG4gKlxuICogQ2FyZCB3aXRoIGEgdGl0bGUsIG9wdGlvbmFsIGRlc2NyaXB0aW9uIGFuZCBhIGdyb3VwIG9mIGFjdGlvbiBidXR0b25zLCB3aXRoXG4gKiBjdXN0b21pc2FibGUgcGFkZGluZywgY29ybmVyIHJvdW5kaW5nIGFuZCBiYWNrZ3JvdW5kIChJb25pYyBjb2xvcnNcbiAqIHN1cHBvcnRlZCkuIFRoZSBcIlJlYWQgdGhlIEJpYmxlIE9ubGluZSAvIENvbnRpbnVlIFJlYWRpbmcgKyBMaXN0ZW5cIiBwYXR0ZXJuLlxuICpcbiAqIFByZXNlbnRhdGlvbmFsIOKAlCBwYXNzIGFscmVhZHktcmVzb2x2ZWQgc3RyaW5ncy4gQnV0dG9ucyByZXVzZVxuICogYEJ1dHRvbkdyb3VwTWV0YWRhdGFgIChzYW1lIGFzIGJhbm5lciAvIGxheWVyZWQtY2FyZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3RhQ2FyZE1ldGFkYXRhIHtcbiAgLyoqIFVuaXF1ZSB0b2tlbiBpZGVudGlmaWVyICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKiBTbWFsbCBsYWJlbCBhYm92ZSB0aGUgdGl0bGUgKi9cbiAgb3ZlcnRpdGxlPzogc3RyaW5nO1xuICAvKiogTWFpbiB0aXRsZSAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRpb24gLyBzdXBwb3J0aW5nIHRleHQgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEFjdGlvbiBidXR0b25zIGNvbmZpZ3VyYXRpb24gKHJldXNlcyB2YWwtYnV0dG9uLWdyb3VwKSAqL1xuICBhY3Rpb25zPzogQnV0dG9uR3JvdXBNZXRhZGF0YTtcblxuICAvKiogQmFja2dyb3VuZCBjb2xvciAoSW9uaWMgY29sb3IgbmFtZSBvciBDU1MgY29sb3IpLiBEZWZhdWx0OiBsaWdodCBzdXJmYWNlICovXG4gIGJhY2tncm91bmRDb2xvcj86IENvbG9yIHwgc3RyaW5nO1xuICAvKiogVGV4dCBjb2xvciAoSW9uaWMgY29sb3IgbmFtZSBvciBDU1MgY29sb3IpICovXG4gIGNvbG9yPzogQ29sb3IgfCBzdHJpbmc7XG5cbiAgLyoqIEN1c3RvbSBwYWRkaW5nIChDU1MgdmFsdWUpLiBEZWZhdWx0OiAnMnJlbScgKi9cbiAgcGFkZGluZz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBjb3JuZXIgcm91bmRpbmcgKENTUyB2YWx1ZSkuIERlZmF1bHQ6ICcyMHB4JyAqL1xuICBib3JkZXJSYWRpdXM/OiBzdHJpbmc7XG5cbiAgLyoqIENvbnRlbnQgYWxpZ25tZW50LiBEZWZhdWx0OiAnc3RhcnQnICovXG4gIGFsaWduPzogJ3N0YXJ0JyB8ICdjZW50ZXInO1xuICAvKiogU2hvdyBib3JkZXIuIERlZmF1bHQ6IGZhbHNlICovXG4gIGJvcmRlcmVkPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgc2hhZG93LiBEZWZhdWx0OiBmYWxzZSAqL1xuICBzaGFkb3dlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmYXVsdCB2YWx1ZXMgZm9yIEN0YUNhcmRNZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IENUQV9DQVJEX0RFRkFVTFRTOiBSZXF1aXJlZDxcbiAgUGljazxDdGFDYXJkTWV0YWRhdGEsICdwYWRkaW5nJyB8ICdib3JkZXJSYWRpdXMnIHwgJ2FsaWduJyB8ICdib3JkZXJlZCcgfCAnc2hhZG93ZWQnPlxuPiA9IHtcbiAgcGFkZGluZzogJzJyZW0nLFxuICBib3JkZXJSYWRpdXM6ICcyMHB4JyxcbiAgYWxpZ246ICdzdGFydCcsXG4gIGJvcmRlcmVkOiBmYWxzZSxcbiAgc2hhZG93ZWQ6IGZhbHNlLFxufTtcbiJdfQ==
@@ -0,0 +1,141 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, EventEmitter, inject, input, Output } from '@angular/core';
3
+ import { RouterLink } from '@angular/router';
4
+ import { IonIcon } from '@ionic/angular/standalone';
5
+ import { NavigationService } from '../../../services/navigation';
6
+ import { MEDIA_OBJECT_DEFAULTS } from './types';
7
+ import * as i0 from "@angular/core";
8
+ const IONIC_COLORS = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
9
+ /**
10
+ * val-media-object
11
+ *
12
+ * Image (or icon) on one side, title + long body text on the other. Useful for
13
+ * feature rows, informational blocks, "what is X" sections, etc.
14
+ *
15
+ * Presentational: pass already-resolved strings (build them with
16
+ * `I18nService.t()` in the consumer page).
17
+ *
18
+ * @example
19
+ * ```html
20
+ * <val-media-object
21
+ * [props]="{
22
+ * image: '/assets/feature.png',
23
+ * overtitle: 'Privacy',
24
+ * title: 'Your data stays yours',
25
+ * body: 'A long explanation that can span several lines without truncation.',
26
+ * link: { label: 'Learn more', routerLink: '/privacy' }
27
+ * }"
28
+ * />
29
+ * ```
30
+ */
31
+ export class MediaObjectComponent {
32
+ constructor() {
33
+ this.navigation = inject(NavigationService);
34
+ /** Component configuration */
35
+ this.props = input({});
36
+ /** Emitted when the inline link is clicked */
37
+ this.onLinkClick = new EventEmitter();
38
+ /** Merged configuration with defaults */
39
+ this.config = computed(() => ({
40
+ ...MEDIA_OBJECT_DEFAULTS,
41
+ ...this.props(),
42
+ }));
43
+ }
44
+ getColor() {
45
+ const color = this.config().color;
46
+ if (!color)
47
+ return 'var(--ion-color-primary)';
48
+ return IONIC_COLORS.includes(color) ? `var(--ion-color-${color})` : color;
49
+ }
50
+ handleLinkClick(event) {
51
+ const link = this.config().link;
52
+ this.onLinkClick.emit(this.config().token);
53
+ if (link?.href) {
54
+ event.preventDefault();
55
+ this.navigation.openInNewTab(link.href);
56
+ }
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MediaObjectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MediaObjectComponent, isStandalone: true, selector: "val-media-object", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onLinkClick: "onLinkClick" }, ngImport: i0, template: `
60
+ <div
61
+ class="media-object"
62
+ [class.media-object--reversed]="config().reversed"
63
+ [class.media-object--center]="config().align === 'center'"
64
+ >
65
+ <!-- Media (image or icon) -->
66
+ <div
67
+ class="media-object__media"
68
+ [class.media-object__media--rounded]="config().rounded && !config().circle"
69
+ [class.media-object__media--circle]="config().circle"
70
+ [style.width]="config().mediaWidth"
71
+ [style.--media-color]="getColor()"
72
+ >
73
+ @if (config().image) {
74
+ <img [src]="config().image" [alt]="config().imageAlt || config().title" />
75
+ } @else if (config().icon) {
76
+ <ion-icon [name]="config().icon!"></ion-icon>
77
+ }
78
+ </div>
79
+
80
+ <!-- Content -->
81
+ <div class="media-object__content">
82
+ @if (config().overtitle) {
83
+ <span class="media-object__overtitle">{{ config().overtitle }}</span>
84
+ }
85
+ <h3 class="media-object__title">{{ config().title }}</h3>
86
+ @if (config().body) {
87
+ <p class="media-object__body">{{ config().body }}</p>
88
+ }
89
+ @if (config().link; as link) {
90
+ <a class="media-object__link" [routerLink]="link.routerLink ?? null" (click)="handleLinkClick($event)">
91
+ {{ link.label }}
92
+ </a>
93
+ }
94
+ </div>
95
+ </div>
96
+ `, isInline: true, styles: [":host{display:block}.media-object{display:flex;align-items:flex-start;gap:1.25rem}.media-object--center{align-items:center}.media-object--reversed{flex-direction:row-reverse}.media-object__media{flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--media-color, var(--ion-color-primary))}.media-object__media img{width:100%;height:100%;object-fit:cover;display:block}.media-object__media ion-icon{font-size:2.5rem}.media-object__media--rounded{border-radius:12px}.media-object__media--circle{aspect-ratio:1;border-radius:50%}.media-object__content{flex:1;min-width:0}.media-object__overtitle{display:block;margin-bottom:.25rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium)}.media-object__title{margin:0 0 .5rem;font-size:1.15rem;font-weight:700;line-height:1.3;color:var(--ion-text-color)}.media-object__body{margin:0;font-size:.95rem;line-height:1.6;color:var(--ion-color-medium-shade)}.media-object__link{display:inline-block;margin-top:.75rem;font-size:.9rem;font-weight:600;color:var(--ion-color-primary);text-decoration:none;cursor:pointer}.media-object__link:hover{text-decoration:underline}@media (max-width: 576px){.media-object{gap:1rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MediaObjectComponent, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: 'val-media-object', standalone: true, imports: [CommonModule, RouterLink, IonIcon], template: `
101
+ <div
102
+ class="media-object"
103
+ [class.media-object--reversed]="config().reversed"
104
+ [class.media-object--center]="config().align === 'center'"
105
+ >
106
+ <!-- Media (image or icon) -->
107
+ <div
108
+ class="media-object__media"
109
+ [class.media-object__media--rounded]="config().rounded && !config().circle"
110
+ [class.media-object__media--circle]="config().circle"
111
+ [style.width]="config().mediaWidth"
112
+ [style.--media-color]="getColor()"
113
+ >
114
+ @if (config().image) {
115
+ <img [src]="config().image" [alt]="config().imageAlt || config().title" />
116
+ } @else if (config().icon) {
117
+ <ion-icon [name]="config().icon!"></ion-icon>
118
+ }
119
+ </div>
120
+
121
+ <!-- Content -->
122
+ <div class="media-object__content">
123
+ @if (config().overtitle) {
124
+ <span class="media-object__overtitle">{{ config().overtitle }}</span>
125
+ }
126
+ <h3 class="media-object__title">{{ config().title }}</h3>
127
+ @if (config().body) {
128
+ <p class="media-object__body">{{ config().body }}</p>
129
+ }
130
+ @if (config().link; as link) {
131
+ <a class="media-object__link" [routerLink]="link.routerLink ?? null" (click)="handleLinkClick($event)">
132
+ {{ link.label }}
133
+ </a>
134
+ }
135
+ </div>
136
+ </div>
137
+ `, styles: [":host{display:block}.media-object{display:flex;align-items:flex-start;gap:1.25rem}.media-object--center{align-items:center}.media-object--reversed{flex-direction:row-reverse}.media-object__media{flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--media-color, var(--ion-color-primary))}.media-object__media img{width:100%;height:100%;object-fit:cover;display:block}.media-object__media ion-icon{font-size:2.5rem}.media-object__media--rounded{border-radius:12px}.media-object__media--circle{aspect-ratio:1;border-radius:50%}.media-object__content{flex:1;min-width:0}.media-object__overtitle{display:block;margin-bottom:.25rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium)}.media-object__title{margin:0 0 .5rem;font-size:1.15rem;font-weight:700;line-height:1.3;color:var(--ion-text-color)}.media-object__body{margin:0;font-size:.95rem;line-height:1.6;color:var(--ion-color-medium-shade)}.media-object__link{display:inline-block;margin-top:.75rem;font-size:.9rem;font-weight:600;color:var(--ion-color-primary);text-decoration:none;cursor:pointer}.media-object__link:hover{text-decoration:underline}@media (max-width: 576px){.media-object{gap:1rem}}\n"] }]
138
+ }], propDecorators: { onLinkClick: [{
139
+ type: Output
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtb2JqZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbWVkaWEtb2JqZWN0L21lZGlhLW9iamVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXJFLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVySDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBNkNILE1BQU0sT0FBTyxvQkFBb0I7SUE1Q2pDO1FBNkNVLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUvQyw4QkFBOEI7UUFDckIsVUFBSyxHQUFHLEtBQUssQ0FBK0IsRUFBRSxDQUFDLENBQUM7UUFFekQsOENBQThDO1FBQ3BDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFL0QseUNBQXlDO1FBQ3pDLFdBQU0sR0FBRyxRQUFRLENBQ2YsR0FBRyxFQUFFLENBQ0gsQ0FBQztZQUNDLEdBQUcscUJBQXFCO1lBQ3hCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNoQixDQUF1RCxDQUMzRCxDQUFDO0tBZ0JIO0lBZEMsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUEyQixDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTywwQkFBMEIsQ0FBQztRQUM5QyxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBaUI7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDZixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDOytHQS9CVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix5UEF4Q3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULCt5Q0F0Q1MsWUFBWSwrQkFBRSxVQUFVLG9PQUFFLE9BQU87OzRGQXlDaEMsb0JBQW9CO2tCQTVDaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsWUFDbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7OEJBVVMsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgTWVkaWFPYmplY3RNZXRhZGF0YSwgTUVESUFfT0JKRUNUX0RFRkFVTFRTIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IElPTklDX0NPTE9SUyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2RhbmdlcicsICdsaWdodCcsICdtZWRpdW0nLCAnZGFyayddO1xuXG4vKipcbiAqIHZhbC1tZWRpYS1vYmplY3RcbiAqXG4gKiBJbWFnZSAob3IgaWNvbikgb24gb25lIHNpZGUsIHRpdGxlICsgbG9uZyBib2R5IHRleHQgb24gdGhlIG90aGVyLiBVc2VmdWwgZm9yXG4gKiBmZWF0dXJlIHJvd3MsIGluZm9ybWF0aW9uYWwgYmxvY2tzLCBcIndoYXQgaXMgWFwiIHNlY3Rpb25zLCBldGMuXG4gKlxuICogUHJlc2VudGF0aW9uYWw6IHBhc3MgYWxyZWFkeS1yZXNvbHZlZCBzdHJpbmdzIChidWlsZCB0aGVtIHdpdGhcbiAqIGBJMThuU2VydmljZS50KClgIGluIHRoZSBjb25zdW1lciBwYWdlKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1tZWRpYS1vYmplY3RcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBpbWFnZTogJy9hc3NldHMvZmVhdHVyZS5wbmcnLFxuICogICAgIG92ZXJ0aXRsZTogJ1ByaXZhY3knLFxuICogICAgIHRpdGxlOiAnWW91ciBkYXRhIHN0YXlzIHlvdXJzJyxcbiAqICAgICBib2R5OiAnQSBsb25nIGV4cGxhbmF0aW9uIHRoYXQgY2FuIHNwYW4gc2V2ZXJhbCBsaW5lcyB3aXRob3V0IHRydW5jYXRpb24uJyxcbiAqICAgICBsaW5rOiB7IGxhYmVsOiAnTGVhcm4gbW9yZScsIHJvdXRlckxpbms6ICcvcHJpdmFjeScgfVxuICogICB9XCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lZGlhLW9iamVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlckxpbmssIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibWVkaWEtb2JqZWN0XCJcbiAgICAgIFtjbGFzcy5tZWRpYS1vYmplY3QtLXJldmVyc2VkXT1cImNvbmZpZygpLnJldmVyc2VkXCJcbiAgICAgIFtjbGFzcy5tZWRpYS1vYmplY3QtLWNlbnRlcl09XCJjb25maWcoKS5hbGlnbiA9PT0gJ2NlbnRlcidcIlxuICAgID5cbiAgICAgIDwhLS0gTWVkaWEgKGltYWdlIG9yIGljb24pIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lZGlhLW9iamVjdF9fbWVkaWFcIlxuICAgICAgICBbY2xhc3MubWVkaWEtb2JqZWN0X19tZWRpYS0tcm91bmRlZF09XCJjb25maWcoKS5yb3VuZGVkICYmICFjb25maWcoKS5jaXJjbGVcIlxuICAgICAgICBbY2xhc3MubWVkaWEtb2JqZWN0X19tZWRpYS0tY2lyY2xlXT1cImNvbmZpZygpLmNpcmNsZVwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJjb25maWcoKS5tZWRpYVdpZHRoXCJcbiAgICAgICAgW3N0eWxlLi0tbWVkaWEtY29sb3JdPVwiZ2V0Q29sb3IoKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY29uZmlnKCkuaW1hZ2UpIHtcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiY29uZmlnKCkuaW1hZ2VcIiBbYWx0XT1cImNvbmZpZygpLmltYWdlQWx0IHx8IGNvbmZpZygpLnRpdGxlXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoY29uZmlnKCkuaWNvbikge1xuICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJjb25maWcoKS5pY29uIVwiPjwvaW9uLWljb24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVkaWEtb2JqZWN0X19jb250ZW50XCI+XG4gICAgICAgIEBpZiAoY29uZmlnKCkub3ZlcnRpdGxlKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZWRpYS1vYmplY3RfX292ZXJ0aXRsZVwiPnt7IGNvbmZpZygpLm92ZXJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA8aDMgY2xhc3M9XCJtZWRpYS1vYmplY3RfX3RpdGxlXCI+e3sgY29uZmlnKCkudGl0bGUgfX08L2gzPlxuICAgICAgICBAaWYgKGNvbmZpZygpLmJvZHkpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cIm1lZGlhLW9iamVjdF9fYm9keVwiPnt7IGNvbmZpZygpLmJvZHkgfX08L3A+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChjb25maWcoKS5saW5rOyBhcyBsaW5rKSB7XG4gICAgICAgICAgPGEgY2xhc3M9XCJtZWRpYS1vYmplY3RfX2xpbmtcIiBbcm91dGVyTGlua109XCJsaW5rLnJvdXRlckxpbmsgPz8gbnVsbFwiIChjbGljayk9XCJoYW5kbGVMaW5rQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLW9iamVjdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYU9iamVjdENvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2aWdhdGlvbiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG5cbiAgLyoqIENvbXBvbmVudCBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQ8UGFydGlhbDxNZWRpYU9iamVjdE1ldGFkYXRhPj4oe30pO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGlubGluZSBsaW5rIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIG9uTGlua0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqIE1lcmdlZCBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHMgKi9cbiAgY29uZmlnID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgICh7XG4gICAgICAgIC4uLk1FRElBX09CSkVDVF9ERUZBVUxUUyxcbiAgICAgICAgLi4udGhpcy5wcm9wcygpLFxuICAgICAgfSkgYXMgTWVkaWFPYmplY3RNZXRhZGF0YSAmIHR5cGVvZiBNRURJQV9PQkpFQ1RfREVGQVVMVFNcbiAgKTtcblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcoKS5jb2xvciBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFjb2xvcikgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICAgIHJldHVybiBJT05JQ19DT0xPUlMuaW5jbHVkZXMoY29sb3IpID8gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgIDogY29sb3I7XG4gIH1cblxuICBoYW5kbGVMaW5rQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBsaW5rID0gdGhpcy5jb25maWcoKS5saW5rO1xuICAgIHRoaXMub25MaW5rQ2xpY2suZW1pdCh0aGlzLmNvbmZpZygpLnRva2VuKTtcbiAgICBpZiAobGluaz8uaHJlZikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubmF2aWdhdGlvbi5vcGVuSW5OZXdUYWIobGluay5ocmVmKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==