valtech-components 2.0.524 → 2.0.525

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.
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
2
+ import { Component, computed, input } from '@angular/core';
3
3
  import { IonCol, IonGrid, IonRow } from '@ionic/angular/standalone';
4
4
  import { FooterLinksComponent } from '../../molecules/footer-links/footer-links.component';
5
5
  import { RightsFooterComponent } from '../../atoms/rights-footer/rights-footer.component';
@@ -30,22 +30,28 @@ export class CompanyFooterComponent {
30
30
  constructor() {
31
31
  /**
32
32
  * Footer configuration.
33
+ * Signal-based input for full reactivity with computed().
33
34
  */
34
- this.props = {
35
+ this.props = input({
35
36
  links: {
36
37
  leftLinks: { title: '', size: 'medium', links: [] },
37
38
  rightLinks: { title: '', size: 'medium', links: [] },
38
39
  },
39
- };
40
+ });
41
+ // Computed helpers for template bindings
42
+ this.propsWithPadding = computed(() => this.props()?.withPadding);
43
+ this.propsWithBackground = computed(() => this.props()?.withBackground);
44
+ this.propsLinks = computed(() => this.props()?.links);
45
+ this.propsRights = computed(() => this.props()?.rights || {});
40
46
  }
41
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CompanyFooterComponent, isStandalone: true, selector: "val-company-footer", inputs: { props: "props" }, ngImport: i0, template: `
43
- <footer [class.withPadding]="props.withPadding" [class.withBackground]="props.withBackground">
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CompanyFooterComponent, isStandalone: true, selector: "val-company-footer", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
49
+ <footer [class.withPadding]="propsWithPadding()" [class.withBackground]="propsWithBackground()">
44
50
  <ion-grid>
45
- <val-footer-links [props]="props.links" />
51
+ <val-footer-links [props]="propsLinks()" />
46
52
  <ion-row>
47
53
  <ion-col size="12">
48
- <val-rights-footer [props]="props.rights || {}" />
54
+ <val-rights-footer [props]="propsRights()" />
49
55
  </ion-col>
50
56
  </ion-row>
51
57
  </ion-grid>
@@ -55,18 +61,16 @@ export class CompanyFooterComponent {
55
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, decorators: [{
56
62
  type: Component,
57
63
  args: [{ selector: 'val-company-footer', standalone: true, imports: [CommonModule, IonGrid, IonRow, IonCol, RightsFooterComponent, FooterLinksComponent], template: `
58
- <footer [class.withPadding]="props.withPadding" [class.withBackground]="props.withBackground">
64
+ <footer [class.withPadding]="propsWithPadding()" [class.withBackground]="propsWithBackground()">
59
65
  <ion-grid>
60
- <val-footer-links [props]="props.links" />
66
+ <val-footer-links [props]="propsLinks()" />
61
67
  <ion-row>
62
68
  <ion-col size="12">
63
- <val-rights-footer [props]="props.rights || {}" />
69
+ <val-rights-footer [props]="propsRights()" />
64
70
  </ion-col>
65
71
  </ion-row>
66
72
  </ion-grid>
67
73
  </footer>
68
74
  `, styles: [".withPadding{padding:16px}.withBackground{background-color:var(--ion-background-color)}\n"] }]
69
- }], propDecorators: { props: [{
70
- type: Input
71
- }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOztBQUcxRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBMkJILE1BQU0sT0FBTyxzQkFBc0I7SUExQm5DO1FBMkJFOztXQUVHO1FBQ00sVUFBSyxHQUEwQjtZQUN0QyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ3JEO1NBQ0YsQ0FBQztLQUNIOytHQVZZLHNCQUFzQjttR0FBdEIsc0JBQXNCLDBHQXRCdkI7Ozs7Ozs7Ozs7O0dBV1Qsa0tBWlMsWUFBWSwrQkFBRSxPQUFPLHdFQUFFLE1BQU0sb0RBQUUsTUFBTSxrVEFBRSxxQkFBcUIsaUZBQUUsb0JBQW9COzs0RkF1QmpGLHNCQUFzQjtrQkExQmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxZQUNuRjs7Ozs7Ozs7Ozs7R0FXVDs4QkFlUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvb3RlckxpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2Zvb3Rlci1saW5rcy9mb290ZXItbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IFJpZ2h0c0Zvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3JpZ2h0cy1mb290ZXIvcmlnaHRzLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3Rlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLWNvbXBhbnktZm9vdGVyXG4gKlxuICogQSBjb21wbGV0ZSBmb290ZXIgY29tcG9uZW50IGNvbWJpbmluZyBmb290ZXIgbGlua3MgKHdpdGggbG9nbyBhbmQgc29jaWFsIGljb25zKVxuICogYW5kIGEgcmlnaHRzL2NvcHlyaWdodCBmb290ZXIuIENvbmZpZ3VyYWJsZSBwYWRkaW5nIGFuZCBiYWNrZ3JvdW5kIG9wdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtY29tcGFueS1mb290ZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBsaW5rczoge1xuICogICAgICAgbGVmdExpbmtzOiB7IHRpdGxlOiAnQ29tcGFueScsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogWy4uLl0gfSxcbiAqICAgICAgIHJpZ2h0TGlua3M6IHsgdGl0bGU6ICdTdXBwb3J0Jywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbLi4uXSB9LFxuICogICAgICAgbG9nbzogJy9hc3NldHMvbG9nby5wbmcnLFxuICogICAgICAgc29jaWFsTGlua3M6IFsuLi5dXG4gKiAgICAgfSxcbiAqICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lIEluYycgfSxcbiAqICAgICB3aXRoUGFkZGluZzogdHJ1ZVxuICogICB9XCJcbiAqID48L3ZhbC1jb21wYW55LWZvb3Rlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBGb290ZXIgY29uZmlndXJhdGlvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tcGFueS1mb290ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25HcmlkLCBJb25Sb3csIElvbkNvbCwgUmlnaHRzRm9vdGVyQ29tcG9uZW50LCBGb290ZXJMaW5rc0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGZvb3RlciBbY2xhc3Mud2l0aFBhZGRpbmddPVwicHJvcHMud2l0aFBhZGRpbmdcIiBbY2xhc3Mud2l0aEJhY2tncm91bmRdPVwicHJvcHMud2l0aEJhY2tncm91bmRcIj5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPHZhbC1mb290ZXItbGlua3MgW3Byb3BzXT1cInByb3BzLmxpbmtzXCIgLz5cbiAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICA8dmFsLXJpZ2h0cy1mb290ZXIgW3Byb3BzXT1cInByb3BzLnJpZ2h0cyB8fCB7fVwiIC8+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICA8L2lvbi1ncmlkPlxuICAgIDwvZm9vdGVyPlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICAud2l0aFBhZGRpbmcge1xuICAgICAgcGFkZGluZzogMTZweDtcbiAgICB9XG5cbiAgICAud2l0aEJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcGFueUZvb3RlckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBGb290ZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBDb21wYW55Rm9vdGVyTWV0YWRhdGEgPSB7XG4gICAgbGlua3M6IHtcbiAgICAgIGxlZnRMaW5rczogeyB0aXRsZTogJycsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogW10gfSxcbiAgICAgIHJpZ2h0TGlua3M6IHsgdGl0bGU6ICcnLCBzaXplOiAnbWVkaXVtJywgbGlua3M6IFtdIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
75
+ }] });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFHMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQTJCSCxNQUFNLE9BQU8sc0JBQXNCO0lBMUJuQztRQTJCRTs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUF3QjtZQUM1QyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ3JEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgseUNBQXlDO1FBQ3pDLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0Qsd0JBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNuRSxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzFEOytHQWpCWSxzQkFBc0I7bUdBQXRCLHNCQUFzQixrTkF0QnZCOzs7Ozs7Ozs7OztHQVdULGtLQVpTLFlBQVksK0JBQUUsT0FBTyx3RUFBRSxNQUFNLG9EQUFFLE1BQU0sa1RBQUUscUJBQXFCLGlGQUFFLG9CQUFvQjs7NEZBdUJqRixzQkFBc0I7a0JBMUJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMsWUFDbkY7Ozs7Ozs7Ozs7O0dBV1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbCwgSW9uR3JpZCwgSW9uUm93IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBGb290ZXJMaW5rc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9mb290ZXItbGlua3MvZm9vdGVyLWxpbmtzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaWdodHNGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9yaWdodHMtZm9vdGVyL3JpZ2h0cy1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBhbnlGb290ZXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1jb21wYW55LWZvb3RlclxuICpcbiAqIEEgY29tcGxldGUgZm9vdGVyIGNvbXBvbmVudCBjb21iaW5pbmcgZm9vdGVyIGxpbmtzICh3aXRoIGxvZ28gYW5kIHNvY2lhbCBpY29ucylcbiAqIGFuZCBhIHJpZ2h0cy9jb3B5cmlnaHQgZm9vdGVyLiBDb25maWd1cmFibGUgcGFkZGluZyBhbmQgYmFja2dyb3VuZCBvcHRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWNvbXBhbnktZm9vdGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgbGlua3M6IHtcbiAqICAgICAgIGxlZnRMaW5rczogeyB0aXRsZTogJ0NvbXBhbnknLCBzaXplOiAnbWVkaXVtJywgbGlua3M6IFsuLi5dIH0sXG4gKiAgICAgICByaWdodExpbmtzOiB7IHRpdGxlOiAnU3VwcG9ydCcsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogWy4uLl0gfSxcbiAqICAgICAgIGxvZ286ICcvYXNzZXRzL2xvZ28ucG5nJyxcbiAqICAgICAgIHNvY2lhbExpbmtzOiBbLi4uXVxuICogICAgIH0sXG4gKiAgICAgcmlnaHRzOiB7IGNvbXBhbnlOYW1lOiAnQWNtZSBJbmMnIH0sXG4gKiAgICAgd2l0aFBhZGRpbmc6IHRydWVcbiAqICAgfVwiXG4gKiA+PC92YWwtY29tcGFueS1mb290ZXI+XG4gKlxuICogQGlucHV0IHByb3BzIC0gRm9vdGVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNvbXBhbnktZm9vdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uR3JpZCwgSW9uUm93LCBJb25Db2wsIFJpZ2h0c0Zvb3RlckNvbXBvbmVudCwgRm9vdGVyTGlua3NDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxmb290ZXIgW2NsYXNzLndpdGhQYWRkaW5nXT1cInByb3BzV2l0aFBhZGRpbmcoKVwiIFtjbGFzcy53aXRoQmFja2dyb3VuZF09XCJwcm9wc1dpdGhCYWNrZ3JvdW5kKClcIj5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPHZhbC1mb290ZXItbGlua3MgW3Byb3BzXT1cInByb3BzTGlua3MoKVwiIC8+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiPlxuICAgICAgICAgICAgPHZhbC1yaWdodHMtZm9vdGVyIFtwcm9wc109XCJwcm9wc1JpZ2h0cygpXCIgLz5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIDwvaW9uLWdyaWQ+XG4gICAgPC9mb290ZXI+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIC53aXRoUGFkZGluZyB7XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgIH1cblxuICAgIC53aXRoQmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wYW55Rm9vdGVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uLlxuICAgKiBTaWduYWwtYmFzZWQgaW5wdXQgZm9yIGZ1bGwgcmVhY3Rpdml0eSB3aXRoIGNvbXB1dGVkKCkuXG4gICAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PENvbXBhbnlGb290ZXJNZXRhZGF0YT4oe1xuICAgIGxpbmtzOiB7XG4gICAgICBsZWZ0TGlua3M6IHsgdGl0bGU6ICcnLCBzaXplOiAnbWVkaXVtJywgbGlua3M6IFtdIH0sXG4gICAgICByaWdodExpbmtzOiB7IHRpdGxlOiAnJywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbXSB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIENvbXB1dGVkIGhlbHBlcnMgZm9yIHRlbXBsYXRlIGJpbmRpbmdzXG4gIHByb3BzV2l0aFBhZGRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LndpdGhQYWRkaW5nKTtcbiAgcHJvcHNXaXRoQmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8ud2l0aEJhY2tncm91bmQpO1xuICBwcm9wc0xpbmtzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5saW5rcyk7XG4gIHByb3BzUmlnaHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5yaWdodHMgfHwge30pO1xufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
+ import { Component, computed, EventEmitter, inject, input, Output } from '@angular/core';
3
3
  import { NavigationEnd, Router, RouterOutlet } from '@angular/router';
4
4
  import { IonContent } from '@ionic/angular/standalone';
5
5
  import { filter } from 'rxjs';
@@ -38,10 +38,11 @@ export class PageWrapperComponent {
38
38
  this.router = inject(Router);
39
39
  /**
40
40
  * Page wrapper configuration.
41
+ * Signal-based input for full reactivity with computed().
41
42
  */
42
- this.props = {
43
+ this.props = input({
43
44
  scrollToTopOnNavigate: true,
44
- };
45
+ });
45
46
  /**
46
47
  * Emits when a header action is clicked.
47
48
  */
@@ -79,15 +80,23 @@ export class PageWrapperComponent {
79
80
  ],
80
81
  },
81
82
  };
82
- }
83
- /**
84
- * Gets header props, using cached default if not provided.
85
- */
86
- get headerProps() {
87
- return this.props.header || this.defaultHeader;
83
+ // Computed helpers for template bindings
84
+ this.headerProps = computed(() => this.props()?.header || this.defaultHeader);
85
+ this.contentId = computed(() => this.props()?.contentId || 'page-wrapper');
86
+ this.propsFooter = computed(() => this.props()?.footer);
87
+ this.background = computed(() => {
88
+ if (this.theme.IsDark) {
89
+ return 'var(--ion-background-color)';
90
+ }
91
+ const bg = this.props()?.background;
92
+ if (!bg) {
93
+ return 'var(--ion-background-color)';
94
+ }
95
+ return resolveColor(bg);
96
+ });
88
97
  }
89
98
  ngOnInit() {
90
- if (this.props.scrollToTopOnNavigate !== false) {
99
+ if (this.props()?.scrollToTopOnNavigate !== false) {
91
100
  this.routerSubscription = this.router.events
92
101
  .pipe(filter((event) => event instanceof NavigationEnd))
93
102
  .subscribe(() => {
@@ -106,25 +115,12 @@ export class PageWrapperComponent {
106
115
  ionViewWillEnter() {
107
116
  this.scrollToTop();
108
117
  }
109
- /**
110
- * Gets the background color based on theme.
111
- */
112
- getBackground() {
113
- if (this.theme.IsDark) {
114
- return 'var(--ion-background-color)';
115
- }
116
- const bg = this.props.background;
117
- if (!bg) {
118
- return 'var(--ion-background-color)';
119
- }
120
- return resolveColor(bg);
121
- }
122
118
  /**
123
119
  * Scrolls the content to the top.
124
120
  */
125
121
  scrollToTop() {
126
- const contentId = this.props.contentId || 'page-wrapper';
127
- const ionContent = document.querySelector(`#${contentId}`);
122
+ const id = this.props()?.contentId || 'page-wrapper';
123
+ const ionContent = document.querySelector(`#${id}`);
128
124
  if (ionContent && ionContent.scrollToTop) {
129
125
  ionContent.scrollToTop(300);
130
126
  }
@@ -137,30 +133,31 @@ export class PageWrapperComponent {
137
133
  */
138
134
  onHeaderClickHandler(token) {
139
135
  this.onHeaderClick.emit(token);
140
- if (token === 'header-logo' && this.props.homeRoute) {
141
- this.nav.navigateByUrl(this.props.homeRoute);
136
+ const homeRoute = this.props()?.homeRoute;
137
+ if (token === 'header-logo' && homeRoute) {
138
+ this.nav.navigateByUrl(homeRoute);
142
139
  }
143
140
  }
144
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageWrapperComponent, isStandalone: true, selector: "val-page-wrapper", inputs: { props: "props" }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageWrapperComponent, isStandalone: true, selector: "val-page-wrapper", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
146
143
  <div class="ion-page">
147
144
  <val-header
148
- [props]="headerProps"
145
+ [props]="headerProps()"
149
146
  (onClick)="onHeaderClickHandler($event)"
150
147
  />
151
148
  <ion-content
152
- [id]="props.contentId || 'page-wrapper'"
149
+ [id]="contentId()"
153
150
  class="ion-padding"
154
151
  [fullscreen]="true"
155
152
  [ngStyle]="{
156
- '--background': getBackground()
153
+ '--background': background()
157
154
  }"
158
155
  >
159
156
  <main>
160
157
  <router-outlet></router-outlet>
161
158
  </main>
162
- @if (props.footer) {
163
- <val-company-footer [props]="props.footer" />
159
+ @if (propsFooter()) {
160
+ <val-company-footer [props]="propsFooter()" />
164
161
  }
165
162
  </ion-content>
166
163
  </div>
@@ -171,29 +168,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
171
168
  args: [{ selector: 'val-page-wrapper', standalone: true, imports: [CommonModule, HeaderComponent, CompanyFooterComponent, RouterOutlet, IonContent], template: `
172
169
  <div class="ion-page">
173
170
  <val-header
174
- [props]="headerProps"
171
+ [props]="headerProps()"
175
172
  (onClick)="onHeaderClickHandler($event)"
176
173
  />
177
174
  <ion-content
178
- [id]="props.contentId || 'page-wrapper'"
175
+ [id]="contentId()"
179
176
  class="ion-padding"
180
177
  [fullscreen]="true"
181
178
  [ngStyle]="{
182
- '--background': getBackground()
179
+ '--background': background()
183
180
  }"
184
181
  >
185
182
  <main>
186
183
  <router-outlet></router-outlet>
187
184
  </main>
188
- @if (props.footer) {
189
- <val-company-footer [props]="props.footer" />
185
+ @if (propsFooter()) {
186
+ <val-company-footer [props]="propsFooter()" />
190
187
  }
191
188
  </ion-content>
192
189
  </div>
193
190
  `, styles: ["main{min-height:60vh}\n"] }]
194
- }], propDecorators: { props: [{
195
- type: Input
196
- }], onHeaderClick: [{
191
+ }], propDecorators: { onHeaderClick: [{
197
192
  type: Output
198
193
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS13cmFwcGVyL3BhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFnQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFFNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBa0NILE1BQU0sT0FBTyxvQkFBb0I7SUFqQ2pDO1FBa0NVLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHaEM7O1dBRUc7UUFDTSxVQUFLLEdBQXdCO1lB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QUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLElBQUksS0FBSyxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7K0dBekhVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFKQTdCckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQsZ0dBdkJTLFlBQVksb0hBQUUsZUFBZSxnR0FBRSxzQkFBc0Isa0ZBQUUsWUFBWSwySkFBRSxVQUFVOzs0RkE4QjlFLG9CQUFvQjtrQkFqQ2hDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUNoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVDs4QkFnQlEsS0FBSztzQkFBYixLQUFLO2dCQU9JLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkNvbnRlbnQsIFZpZXdXaWxsRW50ZXIsIFZpZXdXaWxsTGVhdmUgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGZpbHRlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQYWdlV3JhcHBlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyByZXNvbHZlQ29sb3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvc3R5bGVzJztcblxuLyoqXG4gKiB2YWwtcGFnZS13cmFwcGVyXG4gKlxuICogQSBjb21wbGV0ZSBwYWdlIHdyYXBwZXIgdGVtcGxhdGUgd2l0aCBoZWFkZXIsIHJvdXRlciBvdXRsZXQsIGZvb3RlcixcbiAqIGFuZCBhdXRvbWF0aWMgc2Nyb2xsLXRvLXRvcCBvbiBuYXZpZ2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBhZ2Utd3JhcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGhvbWVSb3V0ZTogJy8nLFxuICogICAgIHNjcm9sbFRvVG9wT25OYXZpZ2F0ZTogdHJ1ZSxcbiAqICAgICBmb290ZXI6IHtcbiAqICAgICAgIGxpbmtzOiB7IC4uLiB9LFxuICogICAgICAgcmlnaHRzOiB7IGNvbXBhbnlOYW1lOiAnQWNtZScgfVxuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtcGFnZS13cmFwcGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2Ugd3JhcHBlciBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLXdyYXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBIZWFkZXJDb21wb25lbnQsIENvbXBhbnlGb290ZXJDb21wb25lbnQsIFJvdXRlck91dGxldCwgSW9uQ29udGVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWdlXCI+XG4gICAgICA8dmFsLWhlYWRlclxuICAgICAgICBbcHJvcHNdPVwiaGVhZGVyUHJvcHNcIlxuICAgICAgICAob25DbGljayk9XCJvbkhlYWRlckNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8aW9uLWNvbnRlbnRcbiAgICAgICAgW2lkXT1cInByb3BzLmNvbnRlbnRJZCB8fCAncGFnZS13cmFwcGVyJ1wiXG4gICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBnZXRCYWNrZ3JvdW5kKClcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxtYWluPlxuICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgPC9tYWluPlxuICAgICAgICBAaWYgKHByb3BzLmZvb3Rlcikge1xuICAgICAgICAgIDx2YWwtY29tcGFueS1mb290ZXIgW3Byb3BzXT1cInByb3BzLmZvb3RlclwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIG1haW4ge1xuICAgICAgbWluLWhlaWdodDogNjB2aDtcbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgVmlld1dpbGxFbnRlciwgVmlld1dpbGxMZWF2ZSwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHRoZW1lID0gaW5qZWN0KFRoZW1lU2VydmljZSk7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFBhZ2Ugd3JhcHBlciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhZ2VXcmFwcGVyTWV0YWRhdGEgPSB7XG4gICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICB9O1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIG9uSGVhZGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBoZWFkZXIgY29uZmlndXJhdGlvbiAoY2FjaGVkIHRvIGF2b2lkIGluZmluaXRlIGNoYW5nZSBkZXRlY3Rpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0SGVhZGVyID0ge1xuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIHdpdGhCYWNrOiBmYWxzZSxcbiAgICAgIHdpdGhBY3Rpb25zOiB0cnVlLFxuICAgICAgdGV4dENvbG9yOiAnZGFyaycgYXMgY29uc3QsXG4gICAgICB3aXRoTWVudTogdHJ1ZSxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiAnaGVhZGVyLWxvZ28nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnIGFzIGNvbnN0LFxuICAgICAgICAgIHR5cGU6ICdJTUFHRScgYXMgY29uc3QsXG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIHNyYzogJy0tbWFpbi1sb2dvJyxcbiAgICAgICAgICAgIGFsdDogJ2hlYWRlciBsb2dvJyxcbiAgICAgICAgICAgIG1vZGU6ICdib3gnIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2hhZGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNpemU6ICdzbWFsbCcgYXMgY29uc3QsXG4gICAgICAgICAgICBsaW1pdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGZsZXg6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyBoZWFkZXIgcHJvcHMsIHVzaW5nIGNhY2hlZCBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIGdldCBoZWFkZXJQcm9wcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5oZWFkZXIgfHwgdGhpcy5kZWZhdWx0SGVhZGVyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgaW9uVmlld1dpbGxMZWF2ZSgpOiB2b2lkIHtcbiAgICAvLyBPcHRpb25hbDogY2FuIGFkZCBsb2dpYyBvbiB2aWV3IGxlYXZlXG4gIH1cblxuICBpb25WaWV3V2lsbEVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJhc2VkIG9uIHRoZW1lLlxuICAgKi9cbiAgZ2V0QmFja2dyb3VuZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnRoZW1lLklzRGFyaykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIGNvbnN0IGJnID0gdGhpcy5wcm9wcy5iYWNrZ3JvdW5kO1xuICAgIGlmICghYmcpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKGJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRoZSBjb250ZW50IHRvIHRoZSB0b3AuXG4gICAqL1xuICBwcml2YXRlIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9IHRoaXMucHJvcHMuY29udGVudElkIHx8ICdwYWdlLXdyYXBwZXInO1xuICAgIGNvbnN0IGlvbkNvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtjb250ZW50SWR9YCkgYXMgYW55O1xuICAgIGlmIChpb25Db250ZW50ICYmIGlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3ApIHtcbiAgICAgIGlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3AoMzAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIHRoaXMucHJvcHMuaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucHJvcHMuaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS13cmFwcGVyL3BhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBZ0MsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsTUFBTSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQWtDSCxNQUFNLE9BQU8sb0JBQW9CO0lBakNqQztRQWtDVSxVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBR2hDOzs7V0FHRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQXNCO1lBQzFDLHFCQUFxQixFQUFFLElBQUk7U0FDNUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFckQ7O1dBRUc7UUFDYyxrQkFBYSxHQUFHO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixTQUFTLEVBQUUsTUFBZTtnQkFDMUIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxhQUFhO3dCQUNwQixXQUFXLEVBQUUsRUFBRTt3QkFDZixRQUFRLEVBQUUsTUFBZTt3QkFDekIsSUFBSSxFQUFFLE9BQWdCO3dCQUN0QixLQUFLLEVBQUU7NEJBQ0wsS0FBSyxFQUFFLEVBQUU7NEJBQ1QsR0FBRyxFQUFFLGFBQWE7NEJBQ2xCLEdBQUcsRUFBRSxhQUFhOzRCQUNsQixJQUFJLEVBQUUsS0FBYzs0QkFDcEIsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsUUFBUSxFQUFFLEtBQUs7NEJBQ2YsSUFBSSxFQUFFLE9BQWdCOzRCQUN0QixPQUFPLEVBQUUsS0FBSzs0QkFDZCxJQUFJLEVBQUUsSUFBSTt5QkFDWDtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLHlDQUF5QztRQUN6QyxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLElBQUksY0FBYyxDQUFDLENBQUM7UUFDdEUsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyw2QkFBNkIsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQztZQUNwQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1IsT0FBTyw2QkFBNkIsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7S0FrREo7SUFoREMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLHFCQUFxQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07aUJBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQztpQkFDdkQsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLHdDQUF3QztJQUMxQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsSUFBSSxjQUFjLENBQUM7UUFDckQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFRLENBQUM7UUFDM0QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDO1FBQzFDLElBQUksS0FBSyxLQUFLLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzsrR0FuSFUsb0JBQW9CO21HQUFwQixvQkFBb0IsNlBBN0JyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVCxnR0F2QlMsWUFBWSxvSEFBRSxlQUFlLGdHQUFFLHNCQUFzQixrRkFBRSxZQUFZLDJKQUFFLFVBQVU7OzRGQThCOUUsb0JBQW9CO2tCQWpDaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQ2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUOzhCQXdCUyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQ29udGVudCwgVmlld1dpbGxFbnRlciwgVmlld1dpbGxMZWF2ZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wYW55Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2NvbXBhbnktZm9vdGVyL2NvbXBhbnktZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VXcmFwcGVyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJlc29sdmVDb2xvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHlsZXMnO1xuXG4vKipcbiAqIHZhbC1wYWdlLXdyYXBwZXJcbiAqXG4gKiBBIGNvbXBsZXRlIHBhZ2Ugd3JhcHBlciB0ZW1wbGF0ZSB3aXRoIGhlYWRlciwgcm91dGVyIG91dGxldCwgZm9vdGVyLFxuICogYW5kIGF1dG9tYXRpYyBzY3JvbGwtdG8tdG9wIG9uIG5hdmlnYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS13cmFwcGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaG9tZVJvdXRlOiAnLycsXG4gKiAgICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICogICAgIGZvb3Rlcjoge1xuICogICAgICAgbGlua3M6IHsgLi4uIH0sXG4gKiAgICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lJyB9XG4gKiAgICAgfVxuICogICB9XCJcbiAqID48L3ZhbC1wYWdlLXdyYXBwZXI+XG4gKlxuICogQGlucHV0IHByb3BzIC0gUGFnZSB3cmFwcGVyIGNvbmZpZ3VyYXRpb25cbiAqIEBvdXRwdXQgb25IZWFkZXJDbGljayAtIEVtaXRzIHdoZW4gYSBoZWFkZXIgYWN0aW9uIGlzIGNsaWNrZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhZ2Utd3JhcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEhlYWRlckNvbXBvbmVudCwgQ29tcGFueUZvb3RlckNvbXBvbmVudCwgUm91dGVyT3V0bGV0LCBJb25Db250ZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZ2VcIj5cbiAgICAgIDx2YWwtaGVhZGVyXG4gICAgICAgIFtwcm9wc109XCJoZWFkZXJQcm9wcygpXCJcbiAgICAgICAgKG9uQ2xpY2spPVwib25IZWFkZXJDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGlvbi1jb250ZW50XG4gICAgICAgIFtpZF09XCJjb250ZW50SWQoKVwiXG4gICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kKClcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxtYWluPlxuICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgPC9tYWluPlxuICAgICAgICBAaWYgKHByb3BzRm9vdGVyKCkpIHtcbiAgICAgICAgICA8dmFsLWNvbXBhbnktZm9vdGVyIFtwcm9wc109XCJwcm9wc0Zvb3RlcigpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9pb24tY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgbWFpbiB7XG4gICAgICBtaW4taGVpZ2h0OiA2MHZoO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBWaWV3V2lsbEVudGVyLCBWaWV3V2lsbExlYXZlLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogUGFnZSB3cmFwcGVyIGNvbmZpZ3VyYXRpb24uXG4gICAqIFNpZ25hbC1iYXNlZCBpbnB1dCBmb3IgZnVsbCByZWFjdGl2aXR5IHdpdGggY29tcHV0ZWQoKS5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQ8UGFnZVdyYXBwZXJNZXRhZGF0YT4oe1xuICAgIHNjcm9sbFRvVG9wT25OYXZpZ2F0ZTogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBoZWFkZXIgYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25IZWFkZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGhlYWRlciBjb25maWd1cmF0aW9uIChjYWNoZWQgdG8gYXZvaWQgaW5maW5pdGUgY2hhbmdlIGRldGVjdGlvbikuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRIZWFkZXIgPSB7XG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgdG9vbGJhcjoge1xuICAgICAgd2l0aEJhY2s6IGZhbHNlLFxuICAgICAgd2l0aEFjdGlvbnM6IHRydWUsXG4gICAgICB0ZXh0Q29sb3I6ICdkYXJrJyBhcyBjb25zdCxcbiAgICAgIHdpdGhNZW51OiB0cnVlLFxuICAgICAgdGl0bGU6ICcnLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdG9rZW46ICdoZWFkZXItbG9nbycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcgYXMgY29uc3QsXG4gICAgICAgICAgdHlwZTogJ0lNQUdFJyBhcyBjb25zdCxcbiAgICAgICAgICBpbWFnZToge1xuICAgICAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICAgICAgc3JjOiAnLS1tYWluLWxvZ28nLFxuICAgICAgICAgICAgYWx0OiAnaGVhZGVyIGxvZ28nLFxuICAgICAgICAgICAgbW9kZTogJ2JveCcgYXMgY29uc3QsXG4gICAgICAgICAgICBzaGFkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGxpbWl0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZmxleDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9O1xuXG4gIC8vIENvbXB1dGVkIGhlbHBlcnMgZm9yIHRlbXBsYXRlIGJpbmRpbmdzXG4gIGhlYWRlclByb3BzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5oZWFkZXIgfHwgdGhpcy5kZWZhdWx0SGVhZGVyKTtcbiAgY29udGVudElkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5jb250ZW50SWQgfHwgJ3BhZ2Utd3JhcHBlcicpO1xuICBwcm9wc0Zvb3RlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8uZm9vdGVyKTtcbiAgYmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy50aGVtZS5Jc0RhcmspIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzKCk/LmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKGJnKTtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMoKT8uc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgaW9uVmlld1dpbGxMZWF2ZSgpOiB2b2lkIHtcbiAgICAvLyBPcHRpb25hbDogY2FuIGFkZCBsb2dpYyBvbiB2aWV3IGxlYXZlXG4gIH1cblxuICBpb25WaWV3V2lsbEVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRoZSBjb250ZW50IHRvIHRoZSB0b3AuXG4gICAqL1xuICBwcml2YXRlIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdGhpcy5wcm9wcygpPy5jb250ZW50SWQgfHwgJ3BhZ2Utd3JhcHBlcic7XG4gICAgY29uc3QgaW9uQ29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApIGFzIGFueTtcbiAgICBpZiAoaW9uQ29udGVudCAmJiBpb25Db250ZW50LnNjcm9sbFRvVG9wKSB7XG4gICAgICBpb25Db250ZW50LnNjcm9sbFRvVG9wKDMwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGhlYWRlciBhY3Rpb24gY2xpY2tzLlxuICAgKi9cbiAgb25IZWFkZXJDbGlja0hhbmRsZXIodG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25IZWFkZXJDbGljay5lbWl0KHRva2VuKTtcblxuICAgIGNvbnN0IGhvbWVSb3V0ZSA9IHRoaXMucHJvcHMoKT8uaG9tZVJvdXRlO1xuICAgIGlmICh0b2tlbiA9PT0gJ2hlYWRlci1sb2dvJyAmJiBob21lUm91dGUpIHtcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlQnlVcmwoaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -20742,22 +20742,28 @@ class CompanyFooterComponent {
20742
20742
  constructor() {
20743
20743
  /**
20744
20744
  * Footer configuration.
20745
+ * Signal-based input for full reactivity with computed().
20745
20746
  */
20746
- this.props = {
20747
+ this.props = input({
20747
20748
  links: {
20748
20749
  leftLinks: { title: '', size: 'medium', links: [] },
20749
20750
  rightLinks: { title: '', size: 'medium', links: [] },
20750
20751
  },
20751
- };
20752
+ });
20753
+ // Computed helpers for template bindings
20754
+ this.propsWithPadding = computed(() => this.props()?.withPadding);
20755
+ this.propsWithBackground = computed(() => this.props()?.withBackground);
20756
+ this.propsLinks = computed(() => this.props()?.links);
20757
+ this.propsRights = computed(() => this.props()?.rights || {});
20752
20758
  }
20753
20759
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20754
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CompanyFooterComponent, isStandalone: true, selector: "val-company-footer", inputs: { props: "props" }, ngImport: i0, template: `
20755
- <footer [class.withPadding]="props.withPadding" [class.withBackground]="props.withBackground">
20760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CompanyFooterComponent, isStandalone: true, selector: "val-company-footer", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
20761
+ <footer [class.withPadding]="propsWithPadding()" [class.withBackground]="propsWithBackground()">
20756
20762
  <ion-grid>
20757
- <val-footer-links [props]="props.links" />
20763
+ <val-footer-links [props]="propsLinks()" />
20758
20764
  <ion-row>
20759
20765
  <ion-col size="12">
20760
- <val-rights-footer [props]="props.rights || {}" />
20766
+ <val-rights-footer [props]="propsRights()" />
20761
20767
  </ion-col>
20762
20768
  </ion-row>
20763
20769
  </ion-grid>
@@ -20767,20 +20773,18 @@ class CompanyFooterComponent {
20767
20773
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, decorators: [{
20768
20774
  type: Component,
20769
20775
  args: [{ selector: 'val-company-footer', standalone: true, imports: [CommonModule, IonGrid, IonRow, IonCol, RightsFooterComponent, FooterLinksComponent], template: `
20770
- <footer [class.withPadding]="props.withPadding" [class.withBackground]="props.withBackground">
20776
+ <footer [class.withPadding]="propsWithPadding()" [class.withBackground]="propsWithBackground()">
20771
20777
  <ion-grid>
20772
- <val-footer-links [props]="props.links" />
20778
+ <val-footer-links [props]="propsLinks()" />
20773
20779
  <ion-row>
20774
20780
  <ion-col size="12">
20775
- <val-rights-footer [props]="props.rights || {}" />
20781
+ <val-rights-footer [props]="propsRights()" />
20776
20782
  </ion-col>
20777
20783
  </ion-row>
20778
20784
  </ion-grid>
20779
20785
  </footer>
20780
20786
  `, styles: [".withPadding{padding:16px}.withBackground{background-color:var(--ion-background-color)}\n"] }]
20781
- }], propDecorators: { props: [{
20782
- type: Input
20783
- }] } });
20787
+ }] });
20784
20788
 
20785
20789
  /**
20786
20790
  * val-menu
@@ -22466,10 +22470,11 @@ class PageWrapperComponent {
22466
22470
  this.router = inject(Router);
22467
22471
  /**
22468
22472
  * Page wrapper configuration.
22473
+ * Signal-based input for full reactivity with computed().
22469
22474
  */
22470
- this.props = {
22475
+ this.props = input({
22471
22476
  scrollToTopOnNavigate: true,
22472
- };
22477
+ });
22473
22478
  /**
22474
22479
  * Emits when a header action is clicked.
22475
22480
  */
@@ -22507,15 +22512,23 @@ class PageWrapperComponent {
22507
22512
  ],
22508
22513
  },
22509
22514
  };
22510
- }
22511
- /**
22512
- * Gets header props, using cached default if not provided.
22513
- */
22514
- get headerProps() {
22515
- return this.props.header || this.defaultHeader;
22515
+ // Computed helpers for template bindings
22516
+ this.headerProps = computed(() => this.props()?.header || this.defaultHeader);
22517
+ this.contentId = computed(() => this.props()?.contentId || 'page-wrapper');
22518
+ this.propsFooter = computed(() => this.props()?.footer);
22519
+ this.background = computed(() => {
22520
+ if (this.theme.IsDark) {
22521
+ return 'var(--ion-background-color)';
22522
+ }
22523
+ const bg = this.props()?.background;
22524
+ if (!bg) {
22525
+ return 'var(--ion-background-color)';
22526
+ }
22527
+ return resolveColor(bg);
22528
+ });
22516
22529
  }
22517
22530
  ngOnInit() {
22518
- if (this.props.scrollToTopOnNavigate !== false) {
22531
+ if (this.props()?.scrollToTopOnNavigate !== false) {
22519
22532
  this.routerSubscription = this.router.events
22520
22533
  .pipe(filter((event) => event instanceof NavigationEnd))
22521
22534
  .subscribe(() => {
@@ -22534,25 +22547,12 @@ class PageWrapperComponent {
22534
22547
  ionViewWillEnter() {
22535
22548
  this.scrollToTop();
22536
22549
  }
22537
- /**
22538
- * Gets the background color based on theme.
22539
- */
22540
- getBackground() {
22541
- if (this.theme.IsDark) {
22542
- return 'var(--ion-background-color)';
22543
- }
22544
- const bg = this.props.background;
22545
- if (!bg) {
22546
- return 'var(--ion-background-color)';
22547
- }
22548
- return resolveColor(bg);
22549
- }
22550
22550
  /**
22551
22551
  * Scrolls the content to the top.
22552
22552
  */
22553
22553
  scrollToTop() {
22554
- const contentId = this.props.contentId || 'page-wrapper';
22555
- const ionContent = document.querySelector(`#${contentId}`);
22554
+ const id = this.props()?.contentId || 'page-wrapper';
22555
+ const ionContent = document.querySelector(`#${id}`);
22556
22556
  if (ionContent && ionContent.scrollToTop) {
22557
22557
  ionContent.scrollToTop(300);
22558
22558
  }
@@ -22565,30 +22565,31 @@ class PageWrapperComponent {
22565
22565
  */
22566
22566
  onHeaderClickHandler(token) {
22567
22567
  this.onHeaderClick.emit(token);
22568
- if (token === 'header-logo' && this.props.homeRoute) {
22569
- this.nav.navigateByUrl(this.props.homeRoute);
22568
+ const homeRoute = this.props()?.homeRoute;
22569
+ if (token === 'header-logo' && homeRoute) {
22570
+ this.nav.navigateByUrl(homeRoute);
22570
22571
  }
22571
22572
  }
22572
22573
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22573
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageWrapperComponent, isStandalone: true, selector: "val-page-wrapper", inputs: { props: "props" }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
22574
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageWrapperComponent, isStandalone: true, selector: "val-page-wrapper", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
22574
22575
  <div class="ion-page">
22575
22576
  <val-header
22576
- [props]="headerProps"
22577
+ [props]="headerProps()"
22577
22578
  (onClick)="onHeaderClickHandler($event)"
22578
22579
  />
22579
22580
  <ion-content
22580
- [id]="props.contentId || 'page-wrapper'"
22581
+ [id]="contentId()"
22581
22582
  class="ion-padding"
22582
22583
  [fullscreen]="true"
22583
22584
  [ngStyle]="{
22584
- '--background': getBackground()
22585
+ '--background': background()
22585
22586
  }"
22586
22587
  >
22587
22588
  <main>
22588
22589
  <router-outlet></router-outlet>
22589
22590
  </main>
22590
- @if (props.footer) {
22591
- <val-company-footer [props]="props.footer" />
22591
+ @if (propsFooter()) {
22592
+ <val-company-footer [props]="propsFooter()" />
22592
22593
  }
22593
22594
  </ion-content>
22594
22595
  </div>
@@ -22599,29 +22600,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
22599
22600
  args: [{ selector: 'val-page-wrapper', standalone: true, imports: [CommonModule, HeaderComponent, CompanyFooterComponent, RouterOutlet, IonContent], template: `
22600
22601
  <div class="ion-page">
22601
22602
  <val-header
22602
- [props]="headerProps"
22603
+ [props]="headerProps()"
22603
22604
  (onClick)="onHeaderClickHandler($event)"
22604
22605
  />
22605
22606
  <ion-content
22606
- [id]="props.contentId || 'page-wrapper'"
22607
+ [id]="contentId()"
22607
22608
  class="ion-padding"
22608
22609
  [fullscreen]="true"
22609
22610
  [ngStyle]="{
22610
- '--background': getBackground()
22611
+ '--background': background()
22611
22612
  }"
22612
22613
  >
22613
22614
  <main>
22614
22615
  <router-outlet></router-outlet>
22615
22616
  </main>
22616
- @if (props.footer) {
22617
- <val-company-footer [props]="props.footer" />
22617
+ @if (propsFooter()) {
22618
+ <val-company-footer [props]="propsFooter()" />
22618
22619
  }
22619
22620
  </ion-content>
22620
22621
  </div>
22621
22622
  `, styles: ["main{min-height:60vh}\n"] }]
22622
- }], propDecorators: { props: [{
22623
- type: Input
22624
- }], onHeaderClick: [{
22623
+ }], propDecorators: { onHeaderClick: [{
22625
22624
  type: Output
22626
22625
  }] } });
22627
22626