@rolatech/angular-components 20.3.2-beta.4 → 20.3.3-beta.1

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.
@@ -71,15 +71,15 @@ import { marked } from 'marked';
71
71
 
72
72
  class EnumSelect {
73
73
  api = inject(EnumApiClient);
74
- resource = input.required(...(ngDevMode ? [{ debugName: "resource" }] : [])); // e.g. "properties", "billing"
75
- enumName = input.required(...(ngDevMode ? [{ debugName: "enumName" }] : [])); // e.g. "AdverseCreditStatus"
76
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : [])); // field label
77
- placeholder = input('—', ...(ngDevMode ? [{ debugName: "placeholder" }] : [])); // placeholder
78
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
79
- value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
80
- loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : []));
81
- error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : []));
82
- options = signal([], ...(ngDevMode ? [{ debugName: "options" }] : []));
74
+ resource = input.required(...(ngDevMode ? [{ debugName: "resource" }] : /* istanbul ignore next */ [])); // e.g. "properties", "billing"
75
+ enumName = input.required(...(ngDevMode ? [{ debugName: "enumName" }] : /* istanbul ignore next */ [])); // e.g. "AdverseCreditStatus"
76
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ [])); // field label
77
+ placeholder = input('—', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ [])); // placeholder
78
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
79
+ value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
80
+ loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
81
+ error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
82
+ options = signal([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
83
83
  ngOnInit() {
84
84
  this.loading.set(true);
85
85
  this.error.set(null);
@@ -94,19 +94,19 @@ class EnumSelect {
94
94
  },
95
95
  });
96
96
  }
97
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: EnumSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: EnumSelect, isStandalone: true, selector: "rolatech-enum-select", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, enumName: { classPropertyName: "enumName", publicName: "enumName", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, ngImport: i0, template: "<mat-form-field appearance=\"fill\" class=\"w-full\" subscriptSizing=\"dynamic\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <mat-select [disabled]=\"disabled() || loading()\" [value]=\"value()\" (selectionChange)=\"value.set($event.value)\">\n <mat-option [value]=\"null\">{{ placeholder() }}</mat-option>\n\n @for (opt of options(); track opt.value) {\n <mat-option [value]=\"opt.value\">{{ opt.label }}</mat-option>\n }\n </mat-select>\n\n @if (loading()) {\n <mat-hint>\n <span class=\"inline-flex items-center gap-2\">\n <mat-progress-spinner diameter=\"14\" mode=\"indeterminate\"></mat-progress-spinner>\n Loading\u2026\n </span>\n </mat-hint>\n } @if (error()) {\n <mat-error>{{ error() }}</mat-error>\n }\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: EnumSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: EnumSelect, isStandalone: true, selector: "rolatech-enum-select", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, enumName: { classPropertyName: "enumName", publicName: "enumName", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, ngImport: i0, template: "<mat-form-field appearance=\"fill\" class=\"w-full\" subscriptSizing=\"dynamic\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <mat-select [disabled]=\"disabled() || loading()\" [value]=\"value()\" (selectionChange)=\"value.set($event.value)\">\n <mat-option [value]=\"null\">{{ placeholder() }}</mat-option>\n\n @for (opt of options(); track opt.value) {\n <mat-option [value]=\"opt.value\">{{ opt.label }}</mat-option>\n }\n </mat-select>\n\n @if (loading()) {\n <mat-hint>\n <span class=\"inline-flex items-center gap-2\">\n <mat-progress-spinner diameter=\"14\" mode=\"indeterminate\"></mat-progress-spinner>\n Loading\u2026\n </span>\n </mat-hint>\n } @if (error()) {\n <mat-error>{{ error() }}</mat-error>\n }\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: EnumSelect, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: EnumSelect, decorators: [{
101
101
  type: Component,
102
102
  args: [{ selector: 'rolatech-enum-select', imports: [MatFormFieldModule, MatSelectModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<mat-form-field appearance=\"fill\" class=\"w-full\" subscriptSizing=\"dynamic\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <mat-select [disabled]=\"disabled() || loading()\" [value]=\"value()\" (selectionChange)=\"value.set($event.value)\">\n <mat-option [value]=\"null\">{{ placeholder() }}</mat-option>\n\n @for (opt of options(); track opt.value) {\n <mat-option [value]=\"opt.value\">{{ opt.label }}</mat-option>\n }\n </mat-select>\n\n @if (loading()) {\n <mat-hint>\n <span class=\"inline-flex items-center gap-2\">\n <mat-progress-spinner diameter=\"14\" mode=\"indeterminate\"></mat-progress-spinner>\n Loading\u2026\n </span>\n </mat-hint>\n } @if (error()) {\n <mat-error>{{ error() }}</mat-error>\n }\n</mat-form-field>\n" }]
103
103
  }], propDecorators: { resource: [{ type: i0.Input, args: [{ isSignal: true, alias: "resource", required: true }] }], enumName: [{ type: i0.Input, args: [{ isSignal: true, alias: "enumName", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
104
104
 
105
105
  class Skeleton {
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: Skeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: Skeleton, isStandalone: true, selector: "rolatech-skeleton", host: { attributes: { "id": "rolatech-skeleton" }, classAttribute: "rolatech-skeleton rounded" }, ngImport: i0, template: "<div class=\"rolatech-skeleton-inner inline-grid animate-pulse\"></div>\n", styles: ["rolatech-skeleton{display:grid}.rolatech-skeleton{background-color:var(--rt-skeleton-background)}.rolatech-skeleton-inner{width:100%;height:100%;border-radius:inherit;background-color:inherit}\n"], encapsulation: i0.ViewEncapsulation.None });
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Skeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: Skeleton, isStandalone: true, selector: "rolatech-skeleton", host: { attributes: { "id": "rolatech-skeleton" }, classAttribute: "rolatech-skeleton rounded" }, ngImport: i0, template: "<div class=\"rolatech-skeleton-inner inline-grid animate-pulse\"></div>\n", styles: ["rolatech-skeleton{display:grid}.rolatech-skeleton{background-color:var(--rt-skeleton-background)}.rolatech-skeleton-inner{width:100%;height:100%;border-radius:inherit;background-color:inherit}\n"], encapsulation: i0.ViewEncapsulation.None });
108
108
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: Skeleton, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Skeleton, decorators: [{
110
110
  type: Component,
111
111
  args: [{ selector: 'rolatech-skeleton', imports: [], encapsulation: ViewEncapsulation.None, host: {
112
112
  id: 'rolatech-skeleton',
@@ -116,7 +116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
116
116
 
117
117
  class ChatBox {
118
118
  isStreaming = false;
119
- userInput = model(...(ngDevMode ? [undefined, { debugName: "userInput" }] : []));
119
+ userInput = model(...(ngDevMode ? [undefined, { debugName: "userInput" }] : /* istanbul ignore next */ []));
120
120
  send = output();
121
121
  onEnter(event) {
122
122
  if (event.key === 'Enter' && !event.shiftKey) {
@@ -127,26 +127,26 @@ class ChatBox {
127
127
  sendMessage() {
128
128
  this.send.emit();
129
129
  }
130
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ChatBox, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: ChatBox, isStandalone: true, selector: "rolatech-chat-box", inputs: { userInput: { classPropertyName: "userInput", publicName: "userInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { userInput: "userInputChange", send: "send" }, ngImport: i0, template: "<div\n class=\"h-auto dark:bg-(--rt-raised-background) rounded-2xl w-full my-3 mx-auto border border-black border-opacity-20 overflow-hidden flex items-end p-1\"\n>\n <div\n class=\"w-full grid text-sm border-black after:px-3.5 after:py-2.5 [&>textarea]:text-inherit after:text-inherit [&>textarea]:resize-none [&>textarea]:overflow-hidden [&>textarea]:[grid-area:1/1/2/2] after:[grid-area:1/1/2/2] after:whitespace-pre-wrap after:invisible after:content-[attr(data-cloned-val)_'_'] after:border after:border-(--rt-border-color)\"\n >\n <textarea\n class=\"w-full border border-transparent appearance-none rounded px-3.5 py-2.5 outline-none dark:bg-(--rt-raised-background)\"\n name=\"message\"\n id=\"message\"\n rows=\"1\"\n [(ngModel)]=\"userInput\"\n onInput=\"this.parentNode.dataset.clonedVal = this.value\"\n placeholder=\"Ask anything\"\n (keydown.enter)=\"onEnter($event)\"\n [disabled]=\"isStreaming\"\n required\n ></textarea>\n </div>\n <button\n matIconButton\n (click)=\"sendMessage()\"\n [disabled]=\"!userInput()?.trim()\"\n [ngClass]=\"!userInput()?.trim() ? '' : '!bg-(--rt-brand-color) !text-(--rt-text-primary-inverse)'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n</div>\n", styles: ["rolatech-chat-box{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ChatBox, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ChatBox, isStandalone: true, selector: "rolatech-chat-box", inputs: { userInput: { classPropertyName: "userInput", publicName: "userInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { userInput: "userInputChange", send: "send" }, ngImport: i0, template: "<div\n class=\"h-auto dark:bg-(--rt-raised-background) rounded-2xl w-full my-3 mx-auto border border-black border-opacity-20 overflow-hidden flex items-end p-1\"\n>\n <div\n class=\"w-full grid text-sm border-black after:px-3.5 after:py-2.5 [&>textarea]:text-inherit after:text-inherit [&>textarea]:resize-none [&>textarea]:overflow-hidden [&>textarea]:[grid-area:1/1/2/2] after:[grid-area:1/1/2/2] after:whitespace-pre-wrap after:invisible after:content-[attr(data-cloned-val)_'_'] after:border after:border-(--rt-border-color)\"\n >\n <textarea\n class=\"w-full border border-transparent appearance-none rounded px-3.5 py-2.5 outline-none dark:bg-(--rt-raised-background)\"\n name=\"message\"\n id=\"message\"\n rows=\"1\"\n [(ngModel)]=\"userInput\"\n onInput=\"this.parentNode.dataset.clonedVal = this.value\"\n placeholder=\"Ask anything\"\n (keydown.enter)=\"onEnter($event)\"\n [disabled]=\"isStreaming\"\n required\n ></textarea>\n </div>\n <button\n matIconButton\n (click)=\"sendMessage()\"\n [disabled]=\"!userInput()?.trim()\"\n [ngClass]=\"!userInput()?.trim() ? '' : 'bg-(--rt-brand-color)! text-(--rt-text-primary-inverse)!'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n</div>\n", styles: ["rolatech-chat-box{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
132
132
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ChatBox, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ChatBox, decorators: [{
134
134
  type: Component,
135
- args: [{ selector: 'rolatech-chat-box', imports: [CommonModule, MatInputModule, FormsModule, MatButtonModule, MatIcon], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"h-auto dark:bg-(--rt-raised-background) rounded-2xl w-full my-3 mx-auto border border-black border-opacity-20 overflow-hidden flex items-end p-1\"\n>\n <div\n class=\"w-full grid text-sm border-black after:px-3.5 after:py-2.5 [&>textarea]:text-inherit after:text-inherit [&>textarea]:resize-none [&>textarea]:overflow-hidden [&>textarea]:[grid-area:1/1/2/2] after:[grid-area:1/1/2/2] after:whitespace-pre-wrap after:invisible after:content-[attr(data-cloned-val)_'_'] after:border after:border-(--rt-border-color)\"\n >\n <textarea\n class=\"w-full border border-transparent appearance-none rounded px-3.5 py-2.5 outline-none dark:bg-(--rt-raised-background)\"\n name=\"message\"\n id=\"message\"\n rows=\"1\"\n [(ngModel)]=\"userInput\"\n onInput=\"this.parentNode.dataset.clonedVal = this.value\"\n placeholder=\"Ask anything\"\n (keydown.enter)=\"onEnter($event)\"\n [disabled]=\"isStreaming\"\n required\n ></textarea>\n </div>\n <button\n matIconButton\n (click)=\"sendMessage()\"\n [disabled]=\"!userInput()?.trim()\"\n [ngClass]=\"!userInput()?.trim() ? '' : '!bg-(--rt-brand-color) !text-(--rt-text-primary-inverse)'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n</div>\n", styles: ["rolatech-chat-box{width:100%}\n"] }]
135
+ args: [{ selector: 'rolatech-chat-box', imports: [CommonModule, MatInputModule, FormsModule, MatButtonModule, MatIcon], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"h-auto dark:bg-(--rt-raised-background) rounded-2xl w-full my-3 mx-auto border border-black border-opacity-20 overflow-hidden flex items-end p-1\"\n>\n <div\n class=\"w-full grid text-sm border-black after:px-3.5 after:py-2.5 [&>textarea]:text-inherit after:text-inherit [&>textarea]:resize-none [&>textarea]:overflow-hidden [&>textarea]:[grid-area:1/1/2/2] after:[grid-area:1/1/2/2] after:whitespace-pre-wrap after:invisible after:content-[attr(data-cloned-val)_'_'] after:border after:border-(--rt-border-color)\"\n >\n <textarea\n class=\"w-full border border-transparent appearance-none rounded px-3.5 py-2.5 outline-none dark:bg-(--rt-raised-background)\"\n name=\"message\"\n id=\"message\"\n rows=\"1\"\n [(ngModel)]=\"userInput\"\n onInput=\"this.parentNode.dataset.clonedVal = this.value\"\n placeholder=\"Ask anything\"\n (keydown.enter)=\"onEnter($event)\"\n [disabled]=\"isStreaming\"\n required\n ></textarea>\n </div>\n <button\n matIconButton\n (click)=\"sendMessage()\"\n [disabled]=\"!userInput()?.trim()\"\n [ngClass]=\"!userInput()?.trim() ? '' : 'bg-(--rt-brand-color)! text-(--rt-text-primary-inverse)!'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n</div>\n", styles: ["rolatech-chat-box{width:100%}\n"] }]
136
136
  }], propDecorators: { userInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "userInput", required: false }] }, { type: i0.Output, args: ["userInputChange"] }], send: [{ type: i0.Output, args: ["send"] }] } });
137
137
 
138
138
  class VideoUpload {
139
- myVideo = viewChild('video', ...(ngDevMode ? [{ debugName: "myVideo" }] : []));
140
- item = input(...(ngDevMode ? [undefined, { debugName: "item" }] : []));
141
- uploading = model(false, ...(ngDevMode ? [{ debugName: "uploading" }] : []));
142
- editing = model(false, ...(ngDevMode ? [{ debugName: "editing" }] : []));
143
- progress = input(0, ...(ngDevMode ? [{ debugName: "progress" }] : []));
139
+ myVideo = viewChild('video', ...(ngDevMode ? [{ debugName: "myVideo" }] : /* istanbul ignore next */ []));
140
+ item = input(...(ngDevMode ? [undefined, { debugName: "item" }] : /* istanbul ignore next */ []));
141
+ uploading = model(false, ...(ngDevMode ? [{ debugName: "uploading" }] : /* istanbul ignore next */ []));
142
+ editing = model(false, ...(ngDevMode ? [{ debugName: "editing" }] : /* istanbul ignore next */ []));
143
+ progress = input(0, ...(ngDevMode ? [{ debugName: "progress" }] : /* istanbul ignore next */ []));
144
144
  mediaEdit = output();
145
145
  thumbnailUpload = output();
146
146
  upload = output();
147
147
  deleteMedia = output();
148
- editId = model(...(ngDevMode ? [undefined, { debugName: "editId" }] : []));
149
- hasUnsaved = input(false, ...(ngDevMode ? [{ debugName: "hasUnsaved" }] : []));
148
+ editId = model(...(ngDevMode ? [undefined, { debugName: "editId" }] : /* istanbul ignore next */ []));
149
+ hasUnsaved = input(false, ...(ngDevMode ? [{ debugName: "hasUnsaved" }] : /* istanbul ignore next */ []));
150
150
  onLoadedMetadata(event) {
151
151
  if (this.item()?.duration) {
152
152
  return;
@@ -173,10 +173,10 @@ class VideoUpload {
173
173
  this.deleteMedia.emit(item);
174
174
  }
175
175
  }
176
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: VideoUpload, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: VideoUpload, isStandalone: true, selector: "rolatech-video-upload", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, uploading: { classPropertyName: "uploading", publicName: "uploading", isSignal: true, isRequired: false, transformFunction: null }, editing: { classPropertyName: "editing", publicName: "editing", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null }, editId: { classPropertyName: "editId", publicName: "editId", isSignal: true, isRequired: false, transformFunction: null }, hasUnsaved: { classPropertyName: "hasUnsaved", publicName: "hasUnsaved", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { uploading: "uploadingChange", editing: "editingChange", mediaEdit: "mediaEdit", thumbnailUpload: "thumbnailUpload", upload: "upload", deleteMedia: "deleteMedia", editId: "editIdChange" }, viewQueries: [{ propertyName: "myVideo", first: true, predicate: ["video"], descendants: true, isSignal: true }], ngImport: i0, template: "<div>\n @if (item()) {\n <div class=\"flex flex-row p-2 gap-3\">\n <div class=\"bg-black h-fit\">\n <video\n id=\"video\"\n #video\n [src]=\"item()?.url\"\n class=\"w-32 aspect-video\"\n (loadedmetadata)=\"onLoadedMetadata($event)\"\n [poster]=\"item()?.thumbnail\"\n ></video>\n </div>\n <div class=\"flex flex-col justify-between w-full\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center w-full px-2\">\n <span i18n>Video</span>\n </div>\n @if (item()?.isUploading) {\n <div>\n <span> {{ item()?.progress }}%</span>\n </div>\n }\n </div>\n <div class=\"flex justify-between items-center\">\n <div>\n <button mat-button class=\"max-h-8\" (click)=\"onMediaEdit(); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Edit</span>\n </button>\n <button mat-button class=\"max-h-8\" (click)=\"onDeleteMedia(); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n <span i18n>Delete</span>\n </button>\n </div>\n <div>\n <span>{{ item()!.duration | duration }}</span>\n </div>\n </div>\n </div>\n </div>\n @if (uploading()) {\n <div class=\"p-2\">\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\"> </mat-progress-bar>\n </div>\n } }@else {\n <div class=\"px-3\">\n <input\n class=\"ud-sr-only\"\n type=\"file\"\n accept=\".avi,.mpg,.mpeg,.flv,.mov,.m2v,.m4v,.mp4,.rm,.ram,.vob,.ogv,.webm,.wmv\"\n (change)=\"onUpload($event)\"\n #fileInput\n />\n <div class=\"flex justify-between items-center\">\n <div i18n>No videos</div>\n <button mat-flat-button class=\"max-h-8\" (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n </div>\n }\n</div>\n", styles: [".ud-sr-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: DurationPipe, name: "duration" }] });
176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: VideoUpload, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: VideoUpload, isStandalone: true, selector: "rolatech-video-upload", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, uploading: { classPropertyName: "uploading", publicName: "uploading", isSignal: true, isRequired: false, transformFunction: null }, editing: { classPropertyName: "editing", publicName: "editing", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null }, editId: { classPropertyName: "editId", publicName: "editId", isSignal: true, isRequired: false, transformFunction: null }, hasUnsaved: { classPropertyName: "hasUnsaved", publicName: "hasUnsaved", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { uploading: "uploadingChange", editing: "editingChange", mediaEdit: "mediaEdit", thumbnailUpload: "thumbnailUpload", upload: "upload", deleteMedia: "deleteMedia", editId: "editIdChange" }, viewQueries: [{ propertyName: "myVideo", first: true, predicate: ["video"], descendants: true, isSignal: true }], ngImport: i0, template: "<div>\n @if (item()) {\n <div class=\"flex flex-row p-2 gap-3\">\n <div class=\"bg-black h-fit\">\n <video\n id=\"video\"\n #video\n [src]=\"item()?.url\"\n class=\"w-32 aspect-video\"\n (loadedmetadata)=\"onLoadedMetadata($event)\"\n [poster]=\"item()?.thumbnail\"\n ></video>\n </div>\n <div class=\"flex flex-col justify-between w-full\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center w-full px-2\">\n <span i18n>Video</span>\n </div>\n @if (item()?.isUploading) {\n <div>\n <span> {{ item()?.progress }}%</span>\n </div>\n }\n </div>\n <div class=\"flex justify-between items-center\">\n <div>\n <button mat-button class=\"max-h-8\" (click)=\"onMediaEdit(); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Edit</span>\n </button>\n <button mat-button class=\"max-h-8\" (click)=\"onDeleteMedia(); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n <span i18n>Delete</span>\n </button>\n </div>\n <div>\n <span>{{ item()!.duration | duration }}</span>\n </div>\n </div>\n </div>\n </div>\n @if (uploading()) {\n <div class=\"p-2\">\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\"> </mat-progress-bar>\n </div>\n } }@else {\n <div class=\"px-3\">\n <input\n class=\"ud-sr-only\"\n type=\"file\"\n accept=\".avi,.mpg,.mpeg,.flv,.mov,.m2v,.m4v,.mp4,.rm,.ram,.vob,.ogv,.webm,.wmv\"\n (change)=\"onUpload($event)\"\n #fileInput\n />\n <div class=\"flex justify-between items-center\">\n <div i18n>No videos</div>\n <button mat-flat-button class=\"max-h-8\" (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n </div>\n }\n</div>\n", styles: [".ud-sr-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: DurationPipe, name: "duration" }] });
178
178
  }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: VideoUpload, decorators: [{
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: VideoUpload, decorators: [{
180
180
  type: Component,
181
181
  args: [{ selector: 'rolatech-video-upload', imports: [CommonModule, MatProgressBarModule, MatButtonModule, MatIcon, DurationPipe], template: "<div>\n @if (item()) {\n <div class=\"flex flex-row p-2 gap-3\">\n <div class=\"bg-black h-fit\">\n <video\n id=\"video\"\n #video\n [src]=\"item()?.url\"\n class=\"w-32 aspect-video\"\n (loadedmetadata)=\"onLoadedMetadata($event)\"\n [poster]=\"item()?.thumbnail\"\n ></video>\n </div>\n <div class=\"flex flex-col justify-between w-full\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center w-full px-2\">\n <span i18n>Video</span>\n </div>\n @if (item()?.isUploading) {\n <div>\n <span> {{ item()?.progress }}%</span>\n </div>\n }\n </div>\n <div class=\"flex justify-between items-center\">\n <div>\n <button mat-button class=\"max-h-8\" (click)=\"onMediaEdit(); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Edit</span>\n </button>\n <button mat-button class=\"max-h-8\" (click)=\"onDeleteMedia(); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n <span i18n>Delete</span>\n </button>\n </div>\n <div>\n <span>{{ item()!.duration | duration }}</span>\n </div>\n </div>\n </div>\n </div>\n @if (uploading()) {\n <div class=\"p-2\">\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\"> </mat-progress-bar>\n </div>\n } }@else {\n <div class=\"px-3\">\n <input\n class=\"ud-sr-only\"\n type=\"file\"\n accept=\".avi,.mpg,.mpeg,.flv,.mov,.m2v,.m4v,.mp4,.rm,.ram,.vob,.ogv,.webm,.wmv\"\n (change)=\"onUpload($event)\"\n #fileInput\n />\n <div class=\"flex justify-between items-center\">\n <div i18n>No videos</div>\n <button mat-flat-button class=\"max-h-8\" (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n </div>\n }\n</div>\n", styles: [".ud-sr-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"] }]
182
182
  }], propDecorators: { myVideo: [{ type: i0.ViewChild, args: ['video', { isSignal: true }] }], item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: false }] }], uploading: [{ type: i0.Input, args: [{ isSignal: true, alias: "uploading", required: false }] }, { type: i0.Output, args: ["uploadingChange"] }], editing: [{ type: i0.Input, args: [{ isSignal: true, alias: "editing", required: false }] }, { type: i0.Output, args: ["editingChange"] }], progress: [{ type: i0.Input, args: [{ isSignal: true, alias: "progress", required: false }] }], mediaEdit: [{ type: i0.Output, args: ["mediaEdit"] }], thumbnailUpload: [{ type: i0.Output, args: ["thumbnailUpload"] }], upload: [{ type: i0.Output, args: ["upload"] }], deleteMedia: [{ type: i0.Output, args: ["deleteMedia"] }], editId: [{ type: i0.Input, args: [{ isSignal: true, alias: "editId", required: false }] }, { type: i0.Output, args: ["editIdChange"] }], hasUnsaved: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasUnsaved", required: false }] }] } });
@@ -189,21 +189,21 @@ class PdfViewerComponent {
189
189
  constructor() {
190
190
  this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.url);
191
191
  }
192
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PdfViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
193
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: PdfViewerComponent, isStandalone: true, selector: "rolatech-pdf-viewer", ngImport: i0, template: "<iframe [src]=\"safeUrl\" width=\"100%\" height=\"100%\" frameborder=\"0\"></iframe>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PdfViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: PdfViewerComponent, isStandalone: true, selector: "rolatech-pdf-viewer", ngImport: i0, template: "<iframe [src]=\"safeUrl\" width=\"100%\" height=\"100%\" frameborder=\"0\"></iframe>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
194
194
  }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PdfViewerComponent, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PdfViewerComponent, decorators: [{
196
196
  type: Component,
197
197
  args: [{ selector: 'rolatech-pdf-viewer', imports: [CommonModule], template: "<iframe [src]=\"safeUrl\" width=\"100%\" height=\"100%\" frameborder=\"0\"></iframe>\n" }]
198
198
  }], ctorParameters: () => [] });
199
199
 
200
200
  class RichLabelComponent {
201
- label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
202
- title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
203
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
204
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: RichLabelComponent, isStandalone: true, selector: "rolatech-rich-label", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col justify-center h-11\">\n <div class=\"text-sm opacity-80\" i18n>{{ label() }}</div>\n <div>{{ title() }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
201
+ label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
202
+ title = input.required(...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
203
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
204
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: RichLabelComponent, isStandalone: true, selector: "rolatech-rich-label", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col justify-center h-11\">\n <div class=\"text-sm opacity-80\" i18n>{{ label() }}</div>\n <div>{{ title() }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
205
205
  }
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichLabelComponent, decorators: [{
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichLabelComponent, decorators: [{
207
207
  type: Component,
208
208
  args: [{ selector: 'rolatech-rich-label', imports: [CommonModule], template: "<div class=\"flex flex-col justify-center h-11\">\n <div class=\"text-sm opacity-80\" i18n>{{ label() }}</div>\n <div>{{ title() }}</div>\n</div>\n" }]
209
209
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }] } });
@@ -234,10 +234,10 @@ class ResizableContainerComponent {
234
234
  stopResizing() {
235
235
  this.isResizing = false;
236
236
  }
237
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ResizableContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: ResizableContainerComponent, isStandalone: true, selector: "rolatech-resizable-container", viewQueries: [{ propertyName: "leftDiv", first: true, predicate: ["leftDiv"], descendants: true }, { propertyName: "rightDiv", first: true, predicate: ["rightDiv"], descendants: true }, { propertyName: "divider", first: true, predicate: ["divider"], descendants: true }], ngImport: i0, template: "<div class=\"flex w-full p-3\">\n <div class=\"w-2/6 px-1\" #leftDiv>\n <ng-content select=\"[position='left']\"></ng-content>\n </div>\n <div class=\"divider\" #divider (mousedown)=\"startResizing($event)\"></div>\n <div class=\"w-4/6 px-1\" #rightDiv>\n <ng-content select=\"[position='right']\"></ng-content>\n </div>\n</div>\n", styles: [".resizable-container{display:flex;width:100%;height:100vh}.left,.right{flex-grow:1;padding:20px;overflow:auto}.left{background:#f4f4f4;width:50%}.right{background:#e0e0e0;width:50%}.divider{width:5px;cursor:ew-resize;background:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ResizableContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ResizableContainerComponent, isStandalone: true, selector: "rolatech-resizable-container", viewQueries: [{ propertyName: "leftDiv", first: true, predicate: ["leftDiv"], descendants: true }, { propertyName: "rightDiv", first: true, predicate: ["rightDiv"], descendants: true }, { propertyName: "divider", first: true, predicate: ["divider"], descendants: true }], ngImport: i0, template: "<div class=\"flex w-full p-3\">\n <div class=\"w-2/6 px-1\" #leftDiv>\n <ng-content select=\"[position='left']\"></ng-content>\n </div>\n <div class=\"divider\" #divider (mousedown)=\"startResizing($event)\"></div>\n <div class=\"w-4/6 px-1\" #rightDiv>\n <ng-content select=\"[position='right']\"></ng-content>\n </div>\n</div>\n", styles: [".resizable-container{display:flex;width:100%;height:100vh}.left,.right{flex-grow:1;padding:20px;overflow:auto}.left{background:#f4f4f4;width:50%}.right{background:#e0e0e0;width:50%}.divider{width:5px;cursor:ew-resize;background:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
239
239
  }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ResizableContainerComponent, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ResizableContainerComponent, decorators: [{
241
241
  type: Component,
242
242
  args: [{ selector: 'rolatech-resizable-container', imports: [CommonModule], template: "<div class=\"flex w-full p-3\">\n <div class=\"w-2/6 px-1\" #leftDiv>\n <ng-content select=\"[position='left']\"></ng-content>\n </div>\n <div class=\"divider\" #divider (mousedown)=\"startResizing($event)\"></div>\n <div class=\"w-4/6 px-1\" #rightDiv>\n <ng-content select=\"[position='right']\"></ng-content>\n </div>\n</div>\n", styles: [".resizable-container{display:flex;width:100%;height:100vh}.left,.right{flex-grow:1;padding:20px;overflow:auto}.left{background:#f4f4f4;width:50%}.right{background:#e0e0e0;width:50%}.divider{width:5px;cursor:ew-resize;background:#666}\n"] }]
243
243
  }], propDecorators: { leftDiv: [{
@@ -252,10 +252,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
252
252
  }] } });
253
253
 
254
254
  class RichGridMediaComponent {
255
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichGridMediaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
256
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: RichGridMediaComponent, isStandalone: true, selector: "rolatech-rich-grid-media", ngImport: i0, template: "<p>rich-grid-media works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
255
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichGridMediaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: RichGridMediaComponent, isStandalone: true, selector: "rolatech-rich-grid-media", ngImport: i0, template: "<p>rich-grid-media works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
257
257
  }
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichGridMediaComponent, decorators: [{
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichGridMediaComponent, decorators: [{
259
259
  type: Component,
260
260
  args: [{ selector: 'rolatech-rich-grid-media', imports: [CommonModule], template: "<p>rich-grid-media works!</p>\n" }]
261
261
  }] });
@@ -274,10 +274,10 @@ class RejectDialogComponent {
274
274
  });
275
275
  this.rejectForm.setValue(this.data);
276
276
  }
277
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RejectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
278
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: RejectDialogComponent, isStandalone: true, selector: "rolatech-reject-dialog", ngImport: i0, template: "<mat-dialog-content>\n <form [formGroup]=\"rejectForm\">\n <div class=\"py-2\">\n <h2 class=\"mb-2\" i18n>Reject reason</h2>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Reason </mat-label>\n <textarea matInput formControlName=\"content\" required></textarea>\n </mat-form-field>\n </div>\n </form>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"rejectForm.value\" cdkFocusInitial i18n>Confirm</button>\n</mat-dialog-actions>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
277
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RejectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
278
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: RejectDialogComponent, isStandalone: true, selector: "rolatech-reject-dialog", ngImport: i0, template: "<mat-dialog-content>\n <form [formGroup]=\"rejectForm\">\n <div class=\"py-2\">\n <h2 class=\"mb-2\" i18n>Reject reason</h2>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Reason </mat-label>\n <textarea matInput formControlName=\"content\" required></textarea>\n </mat-form-field>\n </div>\n </form>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"rejectForm.value\" cdkFocusInitial i18n>Confirm</button>\n</mat-dialog-actions>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
279
279
  }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RejectDialogComponent, decorators: [{
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RejectDialogComponent, decorators: [{
281
281
  type: Component,
282
282
  args: [{ selector: 'rolatech-reject-dialog', imports: [
283
283
  MatDialogContent,
@@ -297,17 +297,17 @@ class AcceptDialogComponent {
297
297
  onNoClick() {
298
298
  this.dialogRef.close();
299
299
  }
300
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AcceptDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
301
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: AcceptDialogComponent, isStandalone: true, selector: "rolatech-accept-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n {{ data.message }}\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial i18n>Confirm</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
300
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AcceptDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
301
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AcceptDialogComponent, isStandalone: true, selector: "rolatech-accept-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n {{ data.message }}\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial i18n>Confirm</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
302
302
  }
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AcceptDialogComponent, decorators: [{
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AcceptDialogComponent, decorators: [{
304
304
  type: Component,
305
305
  args: [{ selector: 'rolatech-accept-dialog', imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButtonModule, MatDialogClose], template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n {{ data.message }}\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial i18n>Confirm</button>\n</div>\n" }]
306
306
  }] });
307
307
 
308
308
  class IconComponent {
309
309
  hasClass = true;
310
- filled = input(false, { ...(ngDevMode ? { debugName: "filled" } : {}), transform: booleanAttribute });
310
+ filled = input(false, { ...(ngDevMode ? { debugName: "filled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
311
311
  el = inject(ElementRef);
312
312
  constructor() {
313
313
  effect(() => {
@@ -319,10 +319,10 @@ class IconComponent {
319
319
  }
320
320
  });
321
321
  }
322
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
323
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: IconComponent, isStandalone: true, selector: "rolatech-icon", inputs: { filled: { classPropertyName: "filled", publicName: "filled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-icon": "this.hasClass" } }, ngImport: i0, template: "<mat-icon>\n <ng-content></ng-content>\n</mat-icon>\n", styles: [".rolatech-icon{display:inline-flex;align-items:center;justify-content:center;position:relative;vertical-align:middle;width:var(--rt-icon-width, 24px);height:var(--rt-icon-height, 24px)}.rolatech-icon mat-icon{font-family:Material Symbols Rounded}.rolatech-icon[filled] mat-icon{font-family:Material Symbols Rounded Filled}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
322
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
323
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: IconComponent, isStandalone: true, selector: "rolatech-icon", inputs: { filled: { classPropertyName: "filled", publicName: "filled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-icon": "this.hasClass" } }, ngImport: i0, template: "<mat-icon>\n <ng-content></ng-content>\n</mat-icon>\n", styles: [".rolatech-icon{display:inline-flex;align-items:center;justify-content:center;position:relative;vertical-align:middle;width:var(--rt-icon-width, 24px);height:var(--rt-icon-height, 24px)}.rolatech-icon mat-icon{font-family:Material Symbols Rounded}.rolatech-icon[filled] mat-icon{font-family:Material Symbols Rounded Filled}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
324
324
  }
325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: IconComponent, decorators: [{
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: IconComponent, decorators: [{
326
326
  type: Component,
327
327
  args: [{ selector: 'rolatech-icon', imports: [CommonModule, MatIcon], encapsulation: ViewEncapsulation.None, template: "<mat-icon>\n <ng-content></ng-content>\n</mat-icon>\n", styles: [".rolatech-icon{display:inline-flex;align-items:center;justify-content:center;position:relative;vertical-align:middle;width:var(--rt-icon-width, 24px);height:var(--rt-icon-height, 24px)}.rolatech-icon mat-icon{font-family:Material Symbols Rounded}.rolatech-icon[filled] mat-icon{font-family:Material Symbols Rounded Filled}\n"] }]
328
328
  }], ctorParameters: () => [], propDecorators: { hasClass: [{
@@ -332,10 +332,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
332
332
 
333
333
  class IconButtonComponent {
334
334
  hasClass = true;
335
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: IconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
336
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: IconButtonComponent, isStandalone: true, selector: "rolatech-icon-button", host: { properties: { "class.rolatech-icon-button": "this.hasClass" } }, ngImport: i0, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-(--rt-10-percent-layer) rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <!-- <ng-content select=\"rolatech-icon\"></ng-content> -->\n <rolatech-icon>\n <ng-content></ng-content>\n </rolatech-icon>\n</button>\n", styles: [".rolatech-icon-button{--rt-icon-button-icon-width: 24px;--rt-icon-button-icon-height: 24px;color:var(--rt-spec-icon-active-other);width:40px;height:40px;box-sizing:border-box;display:block}button.rolatech-icon-button{vertical-align:middle;color:inherit;outline:none;background:none;margin:0;border:none;width:100%;height:100%;line-height:0;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }], encapsulation: i0.ViewEncapsulation.None });
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: IconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
336
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: IconButtonComponent, isStandalone: true, selector: "rolatech-icon-button", host: { properties: { "class.rolatech-icon-button": "this.hasClass" } }, ngImport: i0, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-(--rt-10-percent-layer) rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <!-- <ng-content select=\"rolatech-icon\"></ng-content> -->\n <rolatech-icon>\n <ng-content></ng-content>\n </rolatech-icon>\n</button>\n", styles: [".rolatech-icon-button{--rt-icon-button-icon-width: 24px;--rt-icon-button-icon-height: 24px;color:var(--rt-spec-icon-active-other);width:40px;height:40px;box-sizing:border-box;display:block}button.rolatech-icon-button{vertical-align:middle;color:inherit;outline:none;background:none;margin:0;border:none;width:100%;height:100%;line-height:0;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }], encapsulation: i0.ViewEncapsulation.None });
337
337
  }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: IconButtonComponent, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: IconButtonComponent, decorators: [{
339
339
  type: Component,
340
340
  args: [{ selector: 'rolatech-icon-button', imports: [CommonModule, IconComponent], encapsulation: ViewEncapsulation.None, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-(--rt-10-percent-layer) rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <!-- <ng-content select=\"rolatech-icon\"></ng-content> -->\n <rolatech-icon>\n <ng-content></ng-content>\n </rolatech-icon>\n</button>\n", styles: [".rolatech-icon-button{--rt-icon-button-icon-width: 24px;--rt-icon-button-icon-height: 24px;color:var(--rt-spec-icon-active-other);width:40px;height:40px;box-sizing:border-box;display:block}button.rolatech-icon-button{vertical-align:middle;color:inherit;outline:none;background:none;margin:0;border:none;width:100%;height:100%;line-height:0;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent}\n"] }]
341
341
  }], propDecorators: { hasClass: [{
@@ -345,13 +345,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
345
345
 
346
346
  class TitleComponent {
347
347
  hasClass = true;
348
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
349
- subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : []));
350
- large = input(false, { ...(ngDevMode ? { debugName: "large" } : {}), transform: booleanAttribute });
351
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
352
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: TitleComponent, isStandalone: true, selector: "rolatech-title", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, large: { classPropertyName: "large", publicName: "large", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-title": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n @if (large()) {\n <a class=\"block text-3xl font-bold py-3\"\n ><span>{{ title() }}</span></a\n >\n } @else {\n <a class=\"block text-xl font-bold py-3\"\n ><span>{{ title() }}</span></a\n >\n }\n\n <a class=\"text-sm leading-3 text-(--rt-text-secondary)\"\n ><span>{{ subtitle() }}</span></a\n >\n</div>\n", styles: ["rolatech-title{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
348
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
349
+ subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
350
+ large = input(false, { ...(ngDevMode ? { debugName: "large" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
351
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
352
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TitleComponent, isStandalone: true, selector: "rolatech-title", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, large: { classPropertyName: "large", publicName: "large", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-title": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n @if (large()) {\n <a class=\"block text-3xl font-bold py-3\"\n ><span>{{ title() }}</span></a\n >\n } @else {\n <a class=\"block text-xl font-bold py-3\"\n ><span>{{ title() }}</span></a\n >\n }\n\n <a class=\"text-sm leading-3 text-(--rt-text-secondary)\"\n ><span>{{ subtitle() }}</span></a\n >\n</div>\n", styles: ["rolatech-title{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
353
353
  }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TitleComponent, decorators: [{
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TitleComponent, decorators: [{
355
355
  type: Component,
356
356
  args: [{ selector: 'rolatech-title', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-row items-center\">\n @if (large()) {\n <a class=\"block text-3xl font-bold py-3\"\n ><span>{{ title() }}</span></a\n >\n } @else {\n <a class=\"block text-xl font-bold py-3\"\n ><span>{{ title() }}</span></a\n >\n }\n\n <a class=\"text-sm leading-3 text-(--rt-text-secondary)\"\n ><span>{{ subtitle() }}</span></a\n >\n</div>\n", styles: ["rolatech-title{display:block}\n"] }]
357
357
  }], propDecorators: { hasClass: [{
@@ -360,13 +360,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
360
360
  }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], large: [{ type: i0.Input, args: [{ isSignal: true, alias: "large", required: false }] }] } });
361
361
 
362
362
  class PageCollectionShellComponent {
363
- eyebrow = input(null, ...(ngDevMode ? [{ debugName: "eyebrow" }] : []));
364
- title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
365
- subtitle = input('', ...(ngDevMode ? [{ debugName: "subtitle" }] : []));
366
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PageCollectionShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
367
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: PageCollectionShellComponent, isStandalone: true, selector: "rolatech-page-collection-shell", inputs: { eyebrow: { classPropertyName: "eyebrow", publicName: "eyebrow", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"page-collection-shell xl:max-w-[1024px] 2xl:max-w-[1280px] m-auto\">\n <header class=\"page-collection-shell__header\">\n <div class=\"page-collection-shell__copy\">\n @if (eyebrow()) {\n <span class=\"page-collection-shell__eyebrow\">{{ eyebrow() }}</span>\n }\n\n <h1 class=\"page-collection-shell__title\">{{ title() }}</h1>\n\n @if (subtitle()) {\n <p class=\"page-collection-shell__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n\n <div class=\"page-collection-shell__meta\">\n <ng-content select=\"[page-shell-header-meta]\"></ng-content>\n </div>\n </header>\n\n <div class=\"page-collection-shell__body\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [":host{display:block;padding:1rem}.page-collection-shell{display:flex;flex-direction:column;gap:1rem}.page-collection-shell__header{display:grid;gap:1rem;padding:1.25rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.5rem;background:var(--rt-base-background, #ffffff);box-shadow:0 20px 48px -42px color-mix(in srgb,var(--rt-text-primary) 22%,transparent)}.page-collection-shell__copy{display:flex;flex-direction:column;gap:.75rem}.page-collection-shell__eyebrow{display:inline-flex;align-self:flex-start;border-radius:9999px;padding:.38rem .72rem;background:color-mix(in srgb,var(--rt-brand-color) 12%,transparent);color:var(--rt-brand-color);font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.page-collection-shell__title{margin:0;color:var(--rt-text-primary);font-size:clamp(1.8rem,2.8vw,2.7rem);line-height:1.05;font-weight:800}.page-collection-shell__subtitle{margin:0;color:var(--rt-text-secondary);line-height:1.7}.page-collection-shell__meta{display:flex;flex-direction:column;gap:.85rem}.page-collection-shell__body{display:flex;flex-direction:column;gap:1rem}@media(min-width:900px){.page-collection-shell__header{grid-template-columns:minmax(0,1.6fr) minmax(17rem,.95fr);align-items:start}}@media(min-width:768px){:host{padding:1.25rem}}\n"] });
363
+ eyebrow = input(null, ...(ngDevMode ? [{ debugName: "eyebrow" }] : /* istanbul ignore next */ []));
364
+ title = input.required(...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
365
+ subtitle = input('', ...(ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []));
366
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PageCollectionShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
367
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: PageCollectionShellComponent, isStandalone: true, selector: "rolatech-page-collection-shell", inputs: { eyebrow: { classPropertyName: "eyebrow", publicName: "eyebrow", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"page-collection-shell xl:max-w-[1024px] 2xl:max-w-[1280px] m-auto\">\n <header class=\"page-collection-shell__header\">\n <div class=\"page-collection-shell__copy\">\n @if (eyebrow()) {\n <span class=\"page-collection-shell__eyebrow\">{{ eyebrow() }}</span>\n }\n\n <h1 class=\"page-collection-shell__title\">{{ title() }}</h1>\n\n @if (subtitle()) {\n <p class=\"page-collection-shell__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n\n <div class=\"page-collection-shell__meta\">\n <ng-content select=\"[page-shell-header-meta]\"></ng-content>\n </div>\n </header>\n\n <div class=\"page-collection-shell__body\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [":host{display:block;padding:1rem}.page-collection-shell{display:flex;flex-direction:column;gap:1rem}.page-collection-shell__header{display:grid;gap:1rem;padding:1.25rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.5rem;background:var(--rt-base-background, #ffffff);box-shadow:0 20px 48px -42px color-mix(in srgb,var(--rt-text-primary) 22%,transparent)}.page-collection-shell__copy{display:flex;flex-direction:column;gap:.75rem}.page-collection-shell__eyebrow{display:inline-flex;align-self:flex-start;border-radius:9999px;padding:.38rem .72rem;background:color-mix(in srgb,var(--rt-brand-color) 12%,transparent);color:var(--rt-brand-color);font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.page-collection-shell__title{margin:0;color:var(--rt-text-primary);font-size:clamp(1.8rem,2.8vw,2.7rem);line-height:1.05;font-weight:800}.page-collection-shell__subtitle{margin:0;color:var(--rt-text-secondary);line-height:1.7}.page-collection-shell__meta{display:flex;flex-direction:column;gap:.85rem}.page-collection-shell__body{display:flex;flex-direction:column;gap:1rem}@media(min-width:900px){.page-collection-shell__header{grid-template-columns:minmax(0,1.6fr) minmax(17rem,.95fr);align-items:start}}@media(min-width:768px){:host{padding:1.25rem}}\n"] });
368
368
  }
369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PageCollectionShellComponent, decorators: [{
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PageCollectionShellComponent, decorators: [{
370
370
  type: Component,
371
371
  args: [{ selector: 'rolatech-page-collection-shell', template: "<section class=\"page-collection-shell xl:max-w-[1024px] 2xl:max-w-[1280px] m-auto\">\n <header class=\"page-collection-shell__header\">\n <div class=\"page-collection-shell__copy\">\n @if (eyebrow()) {\n <span class=\"page-collection-shell__eyebrow\">{{ eyebrow() }}</span>\n }\n\n <h1 class=\"page-collection-shell__title\">{{ title() }}</h1>\n\n @if (subtitle()) {\n <p class=\"page-collection-shell__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n\n <div class=\"page-collection-shell__meta\">\n <ng-content select=\"[page-shell-header-meta]\"></ng-content>\n </div>\n </header>\n\n <div class=\"page-collection-shell__body\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [":host{display:block;padding:1rem}.page-collection-shell{display:flex;flex-direction:column;gap:1rem}.page-collection-shell__header{display:grid;gap:1rem;padding:1.25rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.5rem;background:var(--rt-base-background, #ffffff);box-shadow:0 20px 48px -42px color-mix(in srgb,var(--rt-text-primary) 22%,transparent)}.page-collection-shell__copy{display:flex;flex-direction:column;gap:.75rem}.page-collection-shell__eyebrow{display:inline-flex;align-self:flex-start;border-radius:9999px;padding:.38rem .72rem;background:color-mix(in srgb,var(--rt-brand-color) 12%,transparent);color:var(--rt-brand-color);font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.page-collection-shell__title{margin:0;color:var(--rt-text-primary);font-size:clamp(1.8rem,2.8vw,2.7rem);line-height:1.05;font-weight:800}.page-collection-shell__subtitle{margin:0;color:var(--rt-text-secondary);line-height:1.7}.page-collection-shell__meta{display:flex;flex-direction:column;gap:.85rem}.page-collection-shell__body{display:flex;flex-direction:column;gap:1rem}@media(min-width:900px){.page-collection-shell__header{grid-template-columns:minmax(0,1.6fr) minmax(17rem,.95fr);align-items:start}}@media(min-width:768px){:host{padding:1.25rem}}\n"] }]
372
372
  }], propDecorators: { eyebrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "eyebrow", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }] } });
@@ -374,10 +374,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
374
374
  class ContainerComponent {
375
375
  hasId = 'rolatech-container';
376
376
  hasClass = true;
377
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
378
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: ContainerComponent, isStandalone: true, selector: "rolatech-container", host: { properties: { "id": "this.hasId", "class.rolatech-container": "this.hasClass" } }, ngImport: i0, template: "<div class=\"xl:max-w-[1024px] 2xl:max-w-[1280px] m-auto text-(--rt-text-primary) h-full\">\n <ng-content select=\"rolatech-toolbar\"></ng-content>\n <ng-content select=\"rolatech-filter\"></ng-content>\n <ng-content select=\"rolatech-tabs\"></ng-content>\n <ng-content select=\"rolatech-chip-bar\"></ng-content>\n <ng-content select=\"rolatech-list\"></ng-content>\n <ng-content select=\"rolatech-content\"></ng-content>\n <div class=\"container-content h-fit\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-container{--rt-tabs-padding-left: 4px;--rt-tabs-padding-right: 4px}@media(min-width:1280px){.rolatech-container{max-width:var(--rt-container-max-width, 1024px)}}@media(min-width:1536px){.rolatech-container{max-width:var(--rt-container-max-width, 1280px)}}rolatech-container .container-content{margin:0 auto;display:block;padding-left:var(--rt-container-content-padding-left, 16px);padding-right:var(--rt-container-content-padding-right, 16px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
377
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
378
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ContainerComponent, isStandalone: true, selector: "rolatech-container", host: { properties: { "id": "this.hasId", "class.rolatech-container": "this.hasClass" } }, ngImport: i0, template: "<div class=\"xl:max-w-[1024px] 2xl:max-w-[1280px] m-auto text-(--rt-text-primary) h-full\">\n <ng-content select=\"rolatech-toolbar\"></ng-content>\n <ng-content select=\"rolatech-filter\"></ng-content>\n <ng-content select=\"rolatech-tabs\"></ng-content>\n <ng-content select=\"rolatech-chip-bar\"></ng-content>\n <ng-content select=\"rolatech-list\"></ng-content>\n <ng-content select=\"rolatech-content\"></ng-content>\n <div class=\"container-content h-fit\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-container{--rt-tabs-padding-left: 4px;--rt-tabs-padding-right: 4px}@media(min-width:1280px){.rolatech-container{max-width:var(--rt-container-max-width, 1024px)}}@media(min-width:1536px){.rolatech-container{max-width:var(--rt-container-max-width, 1280px)}}rolatech-container .container-content{margin:0 auto;display:block;padding-left:var(--rt-container-content-padding-left, 16px);padding-right:var(--rt-container-content-padding-right, 16px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
379
379
  }
380
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ContainerComponent, decorators: [{
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ContainerComponent, decorators: [{
381
381
  type: Component,
382
382
  args: [{ selector: 'rolatech-container', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"xl:max-w-[1024px] 2xl:max-w-[1280px] m-auto text-(--rt-text-primary) h-full\">\n <ng-content select=\"rolatech-toolbar\"></ng-content>\n <ng-content select=\"rolatech-filter\"></ng-content>\n <ng-content select=\"rolatech-tabs\"></ng-content>\n <ng-content select=\"rolatech-chip-bar\"></ng-content>\n <ng-content select=\"rolatech-list\"></ng-content>\n <ng-content select=\"rolatech-content\"></ng-content>\n <div class=\"container-content h-fit\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-container{--rt-tabs-padding-left: 4px;--rt-tabs-padding-right: 4px}@media(min-width:1280px){.rolatech-container{max-width:var(--rt-container-max-width, 1024px)}}@media(min-width:1536px){.rolatech-container{max-width:var(--rt-container-max-width, 1280px)}}rolatech-container .container-content{margin:0 auto;display:block;padding-left:var(--rt-container-content-padding-left, 16px);padding-right:var(--rt-container-content-padding-right, 16px)}\n"] }]
383
383
  }], propDecorators: { hasId: [{
@@ -401,10 +401,10 @@ function provideAngularLayout(config) {
401
401
 
402
402
  class MenuIconComponent {
403
403
  hasClass = true;
404
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MenuIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
405
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: MenuIconComponent, isStandalone: true, selector: "rolatech-menu-icon", host: { properties: { "class.rolatech-icon-button": "this.hasClass" } }, ngImport: i0, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-(--rt-10-percent-layer) rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <div style=\"width: 100%; height: 100%; display: block; fill: currentcolor\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M21 6H3V5h18v1zm0 5H3v1h18v-1zm0 6H3v1h18v-1z\"></path>\n </svg>\n </div>\n</button>\n", styles: ["rolatech-menu-icon{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
404
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MenuIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
405
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: MenuIconComponent, isStandalone: true, selector: "rolatech-menu-icon", host: { properties: { "class.rolatech-icon-button": "this.hasClass" } }, ngImport: i0, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-(--rt-10-percent-layer) rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <div style=\"width: 100%; height: 100%; display: block; fill: currentcolor\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M21 6H3V5h18v1zm0 5H3v1h18v-1zm0 6H3v1h18v-1z\"></path>\n </svg>\n </div>\n</button>\n", styles: ["rolatech-menu-icon{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
406
406
  }
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MenuIconComponent, decorators: [{
407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MenuIconComponent, decorators: [{
408
408
  type: Component,
409
409
  args: [{ selector: 'rolatech-menu-icon', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-(--rt-10-percent-layer) rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <div style=\"width: 100%; height: 100%; display: block; fill: currentcolor\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M21 6H3V5h18v1zm0 5H3v1h18v-1zm0 6H3v1h18v-1z\"></path>\n </svg>\n </div>\n</button>\n", styles: ["rolatech-menu-icon{display:block}\n"] }]
410
410
  }], propDecorators: { hasClass: [{
@@ -421,7 +421,7 @@ class TopbarComponent {
421
421
  platformId = inject(PLATFORM_ID);
422
422
  breakpointObserver = inject(BreakpointObserver);
423
423
  appLayout = inject(APP_LAYOUT);
424
- link = input('/', ...(ngDevMode ? [{ debugName: "link" }] : []));
424
+ link = input('/', ...(ngDevMode ? [{ debugName: "link" }] : /* istanbul ignore next */ []));
425
425
  appDrawer;
426
426
  miniGuide;
427
427
  ngOnInit() {
@@ -438,10 +438,10 @@ class TopbarComponent {
438
438
  }
439
439
  this.appDrawer.toggle();
440
440
  }
441
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
442
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: TopbarComponent, isStandalone: true, selector: "rolatech-topbar", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hostId", "class.rolatech-topbar": "this.hasClass" } }, ngImport: i0, template: "<div class=\"h-14 flex items-center\">\n <rolatech-menu-icon id=\"topbar-menu-button\" (click)=\"onToggle()\"></rolatech-menu-icon>\n <div class=\"cursor-pointer ml-1\" [routerLink]=\"link()\">\n <div class=\"text-(--rt-text-primary) text-lg md:text-xl font-bold\">\n <span class=\"text-(--rt-brand-color)\">{{ appLayout.title }}</span>\n <span>{{ appLayout.subtitle }}</span>\n </div>\n </div>\n <div class=\"flex-1\"></div>\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-topbar{position:fixed;top:0;width:100%;z-index:900;transform:translateY(0);transition:transform .3s ease;background:var(--rt-base-background, #fff);color:var(--rt-text-primary, #030303);padding-left:var(--rt-topbar-padding-left, 16px);padding-right:var(--rt-topbar-padding-right, 16px)}rolatech-topbar:not([persistent]) #topbar-menu-button{display:none}rolatech-topbar:not(:has(#topbar-menu-button)){--rt-topbar-padding-left: 16px}rolatech-layout rolatech-drawer[persistent][opened]~rolatech-topbar{margin-left:256px}@media(max-width:768px){:root{--rt-topbar-padding-left: 8px}rolatech-topbar #topbar-menu-button{display:block!important}}\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: "ngmodule", type: MatButtonModule }, { kind: "component", type: MenuIconComponent, selector: "rolatech-menu-icon" }], encapsulation: i0.ViewEncapsulation.None });
441
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
442
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: TopbarComponent, isStandalone: true, selector: "rolatech-topbar", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hostId", "class.rolatech-topbar": "this.hasClass" } }, ngImport: i0, template: "<div class=\"h-14 flex items-center\">\n <rolatech-menu-icon id=\"topbar-menu-button\" (click)=\"onToggle()\"></rolatech-menu-icon>\n <div class=\"cursor-pointer ml-1\" [routerLink]=\"link()\">\n <div class=\"text-(--rt-text-primary) text-lg md:text-xl font-bold\">\n <span class=\"text-(--rt-brand-color)\">{{ appLayout.title }}</span>\n <span>{{ appLayout.subtitle }}</span>\n </div>\n </div>\n <div class=\"flex-1\"></div>\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-topbar{position:fixed;top:0;width:100%;z-index:900;transform:translateY(0);transition:transform .3s ease;background:var(--rt-base-background, #fff);color:var(--rt-text-primary, #030303);padding-left:var(--rt-topbar-padding-left, 16px);padding-right:var(--rt-topbar-padding-right, 16px)}rolatech-topbar:not([persistent]) #topbar-menu-button{display:none}rolatech-topbar:not(:has(#topbar-menu-button)){--rt-topbar-padding-left: 16px}rolatech-layout rolatech-drawer[persistent][opened]~rolatech-topbar{margin-left:256px}@media(max-width:768px){:root{--rt-topbar-padding-left: 8px}rolatech-topbar #topbar-menu-button{display:block!important}}\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: "ngmodule", type: MatButtonModule }, { kind: "component", type: MenuIconComponent, selector: "rolatech-menu-icon" }], encapsulation: i0.ViewEncapsulation.None });
443
443
  }
444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TopbarComponent, decorators: [{
444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TopbarComponent, decorators: [{
445
445
  type: Component,
446
446
  args: [{ selector: 'rolatech-topbar', imports: [CommonModule, RouterLink, MatButtonModule, MenuIconComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"h-14 flex items-center\">\n <rolatech-menu-icon id=\"topbar-menu-button\" (click)=\"onToggle()\"></rolatech-menu-icon>\n <div class=\"cursor-pointer ml-1\" [routerLink]=\"link()\">\n <div class=\"text-(--rt-text-primary) text-lg md:text-xl font-bold\">\n <span class=\"text-(--rt-brand-color)\">{{ appLayout.title }}</span>\n <span>{{ appLayout.subtitle }}</span>\n </div>\n </div>\n <div class=\"flex-1\"></div>\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-topbar{position:fixed;top:0;width:100%;z-index:900;transform:translateY(0);transition:transform .3s ease;background:var(--rt-base-background, #fff);color:var(--rt-text-primary, #030303);padding-left:var(--rt-topbar-padding-left, 16px);padding-right:var(--rt-topbar-padding-right, 16px)}rolatech-topbar:not([persistent]) #topbar-menu-button{display:none}rolatech-topbar:not(:has(#topbar-menu-button)){--rt-topbar-padding-left: 16px}rolatech-layout rolatech-drawer[persistent][opened]~rolatech-topbar{margin-left:256px}@media(max-width:768px){:root{--rt-topbar-padding-left: 8px}rolatech-topbar #topbar-menu-button{display:block!important}}\n"] }]
447
447
  }], propDecorators: { hostId: [{
@@ -500,8 +500,8 @@ const MAT_MODULE = [
500
500
  ScrollingModule,
501
501
  ];
502
502
  class MaterialModule {
503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
504
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: MaterialModule, imports: [A11yModule,
503
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
504
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: MaterialModule, imports: [A11yModule,
505
505
  ClipboardModule,
506
506
  CdkStepperModule,
507
507
  CdkTableModule,
@@ -590,7 +590,7 @@ class MaterialModule {
590
590
  MatTreeModule,
591
591
  PortalModule,
592
592
  ScrollingModule] });
593
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MaterialModule, imports: [MAT_MODULE, A11yModule,
593
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MaterialModule, imports: [MAT_MODULE, A11yModule,
594
594
  ClipboardModule,
595
595
  CdkStepperModule,
596
596
  CdkTableModule,
@@ -636,7 +636,7 @@ class MaterialModule {
636
636
  PortalModule,
637
637
  ScrollingModule] });
638
638
  }
639
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MaterialModule, decorators: [{
639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MaterialModule, decorators: [{
640
640
  type: NgModule,
641
641
  args: [{
642
642
  imports: [...MAT_MODULE],
@@ -645,11 +645,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
645
645
  }] });
646
646
 
647
647
  class AngularComponentsModule {
648
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
649
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: AngularComponentsModule, imports: [MaterialModule], exports: [MaterialModule] });
650
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AngularComponentsModule, imports: [MaterialModule, MaterialModule] });
648
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
649
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: AngularComponentsModule, imports: [MaterialModule], exports: [MaterialModule] });
650
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AngularComponentsModule, imports: [MaterialModule, MaterialModule] });
651
651
  }
652
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AngularComponentsModule, decorators: [{
652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AngularComponentsModule, decorators: [{
653
653
  type: NgModule,
654
654
  args: [{
655
655
  imports: [MaterialModule],
@@ -660,24 +660,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
660
660
  class DrawerComponent {
661
661
  _enableAnimations = false;
662
662
  persistent = inject(APP_LAYOUT).persistent;
663
- links = input(...(ngDevMode ? [undefined, { debugName: "links" }] : []));
663
+ links = input(...(ngDevMode ? [undefined, { debugName: "links" }] : /* istanbul ignore next */ []));
664
664
  /** index of the FIRST item that has children (or -1 if none) */
665
665
  firstChildrenIndex = computed(() => {
666
666
  const arr = this.links() ?? [];
667
667
  return arr.findIndex((x) => !!x.children?.length);
668
- }, ...(ngDevMode ? [{ debugName: "firstChildrenIndex" }] : []));
669
- position = input('left', ...(ngDevMode ? [{ debugName: "position" }] : []));
670
- opened = input(true, ...(ngDevMode ? [{ debugName: "opened" }] : []));
668
+ }, ...(ngDevMode ? [{ debugName: "firstChildrenIndex" }] : /* istanbul ignore next */ []));
669
+ position = input('left', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
670
+ opened = input(true, ...(ngDevMode ? [{ debugName: "opened" }] : /* istanbul ignore next */ []));
671
671
  el = inject(ElementRef);
672
672
  renderer = inject(Renderer2);
673
673
  platformId = inject(PLATFORM_ID);
674
674
  breakpointObserver = inject(BreakpointObserver);
675
675
  appLayout = inject(APP_LAYOUT);
676
676
  router = inject(Router);
677
- guideEl = viewChild('guide', ...(ngDevMode ? [{ debugName: "guideEl" }] : []));
678
- content = viewChild('content', ...(ngDevMode ? [{ debugName: "content" }] : []));
679
- scrimEl = viewChild('scrim', ...(ngDevMode ? [{ debugName: "scrimEl" }] : []));
680
- headerEl = viewChild('header', ...(ngDevMode ? [{ debugName: "headerEl" }] : []));
677
+ guideEl = viewChild('guide', ...(ngDevMode ? [{ debugName: "guideEl" }] : /* istanbul ignore next */ []));
678
+ content = viewChild('content', ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
679
+ scrimEl = viewChild('scrim', ...(ngDevMode ? [{ debugName: "scrimEl" }] : /* istanbul ignore next */ []));
680
+ headerEl = viewChild('header', ...(ngDevMode ? [{ debugName: "headerEl" }] : /* istanbul ignore next */ []));
681
681
  isMobile = false;
682
682
  isPersistent = true;
683
683
  panelOpenState = false;
@@ -778,10 +778,10 @@ class DrawerComponent {
778
778
  this._enableAnimations = true;
779
779
  }
780
780
  }
781
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
782
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: DrawerComponent, isStandalone: true, selector: "rolatech-drawer", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "id": "rolatech-drawer", "style.transition-duration": "200ms", "ngSkipHydration": "" }, classAttribute: "rolatech-drawer" }, viewQueries: [{ propertyName: "guideEl", first: true, predicate: ["guide"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "scrimEl", first: true, predicate: ["scrim"], descendants: true, isSignal: true }, { propertyName: "headerEl", first: true, predicate: ["header"], descendants: true, isSignal: true }], ngImport: i0, template: "<div id=\"scrim\" #scrim class=\"rolatech-drawer\" (click)=\"close()\"></div>\n<div id=\"contentContainer\" #content class=\"rolatech-drawer\">\n <div id=\"guide-wrapper\" class=\"rolatech-drawer\">\n <div id=\"guide-spacer\"></div>\n <div id=\"guide-content\" class=\"rolatech-drawer\">\n <div id=\"header\" #header class=\"flex pl-4 h-14 items-center\">\n <rolatech-menu-icon #menuButton (click)=\"this.toggle()\" onclick=\"this.blur()\"></rolatech-menu-icon>\n <div class=\"text-(--rt-text-primary) text-lg md:text-xl font-bold cursor-pointer\" routerLink=\"/\">\n <span class=\"text-(--rt-brand-color)\" i18n>{{ appLayout.title }}</span>\n <span i18n>{{ appLayout.subtitle }}</span>\n </div>\n </div>\n <div id=\"guide-inner-content\" class=\"rolatech-drawer\">\n <div class=\"block p-3\">\n @for (item of links(); track $index; let i = $index) {\n @if (item.children) {\n <div\n class=\"children-group flex cursor-pointer overflow-hidden my-3 py-3 border-b border-(--rt-border-color)\"\n [class.border-t]=\"!isPreviousItemChildren(i)\"\n [class.mt-0]=\"isPreviousItemChildren(i)\"\n [class.mb-0]=\"isNextItemChildren(i)\"\n >\n <div class=\"w-full\">\n <div class=\"flex items-center h-10\">\n <span class=\"ml-3 text-md font-bold\" i18n>{{ labelOf(item) }}</span>\n </div>\n <div class=\"flex flex-col\">\n @for (child of item.children; track child) {\n <a\n id=\"endpoint\"\n class=\"flex hover:bg-(--rt-10-percent-layer) min-h-11 rt-guide-entry cursor-pointer\"\n [class.drawer-active]=\"isRouteActive(child, routerLink.isActive)\"\n [routerLink]=\"routerLinkOf(child)\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n routerLinkActive\n [routerLinkActiveOptions]=\"{ exact: child.exact === false ? false : true }\"\n #routerLink=\"routerLinkActive\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (child.icon) {\n <rolatech-icon class=\"ml-3 cursor-pointer\" [filled]=\"isRouteActive(child, routerLink.isActive)\">{{\n child.icon\n }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span i18n>{{ labelOf(child) }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitleOf(child) }}</span>\n </div>\n </div>\n </div>\n </a>\n }\n </div>\n </div>\n </div>\n } @else {\n @if (isExternal(item)) {\n <a\n class=\"flex hover:bg-(--rt-10-percent-layer) min-h-11\"\n [href]=\"hrefOf(item)\"\n target=\"_blank\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (item.icon) {\n <rolatech-icon class=\"ml-3\">{{ item.icon }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span>{{ labelOf(item) }}</span>\n <span class=\"text-sm opacity-75 text-(--rt-text-secondary)\" i18n>{{ subtitleOf(item) }}</span>\n </div>\n </div>\n <rolatech-icon class=\"scale-90 mr-3\">open_in_new</rolatech-icon>\n </div>\n </a>\n } @else {\n @if (item.button) {\n <a\n class=\"flex rolatech-drawer-button min-h-11 rounded-xl mb-2 cursor-pointer\"\n [routerLink]=\"routerLinkOf(item)\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (item.icon) {\n <rolatech-icon class=\"ml-3\">{{ item.icon }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span i18n>{{ labelOf(item) }}</span>\n <span class=\"text-sm\" i18n>{{ subtitleOf(item) }}</span>\n </div>\n </div>\n </div>\n </a>\n } @else {\n <a\n id=\"endpoint\"\n class=\"flex hover:bg-(--rt-10-percent-layer) min-h-11 rt-guide-entry cursor-pointer\"\n [class.drawer-active]=\"isRouteActive(item, routerLink.isActive)\"\n [routerLink]=\"routerLinkOf(item)\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n routerLinkActive\n [routerLinkActiveOptions]=\"{ exact: item.exact === false ? false : true }\"\n #routerLink=\"routerLinkActive\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (item.icon) {\n <rolatech-icon class=\"ml-3 cursor-pointer\" [filled]=\"isRouteActive(item, routerLink.isActive)\">{{\n item.icon\n }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span i18n>{{ labelOf(item) }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitleOf(item) }}</span>\n </div>\n </div>\n </div>\n </a>\n }\n }\n }\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["rolatech-drawer{position:fixed;z-index:1;inset:-120px 0;visibility:hidden;transition-property:visibility;transition-duration:.2s;touch-action:pan-y}rolatech-drawer[persistent]{width:var(--rt-drawer-width, 256px)}rolatech-drawer[persistent][position=top]{width:100%}rolatech-drawer[opened]{visibility:visible}rolatech-drawer[position=top] #contentContainer{left:0;right:0;width:100%;height:var(--rt-topbar-height, 56px);transform:translate3d(0,-100%,0)}rolatech-drawer[position=top] #contentContainer #guide-inner-content{height:56px}rolatech-drawer[position=top] #contentContainer #guide-inner-content div{display:flex!important;flex-direction:row!important;overflow:hidden;flex:1;flex-basis:.000000001px;overflow-y:auto;scrollbar-color:transparent transparent;scrollbar-width:thin;height:56px;align-items:center}rolatech-drawer[position=bottom] #contentContainer{left:0;right:0;transform:translate3d(0,100%,0)}rolatech-drawer[position=left] #contentContainer{left:0;transform:translate3d(-100%,0,0)}rolatech-drawer[position=right] #contentContainer{right:0;transform:translate3d(100%,0,0)}rolatech-drawer[persistent][position=left]{right:auto}rolatech-drawer[persistent][position=right]{left:auto}rolatech-drawer[persistent][position=top] #contentContainer{transform:translate3d(0,-100%,0)}rolatech-drawer[persistent][position=left] #contentContainer{transform:translate3d(-100%,0,0)}rolatech-drawer[persistent][position=right] #contentContainer{transform:translate3d(100%,0,0)}rolatech-drawer[persistent][position=top] #contentContainer[opened]{transform:translateZ(0)}rolatech-drawer[persistent][position=left] #contentContainer[opened]{transform:translateZ(0)}rolatech-drawer[persistent][position=right] #contentContainer[opened]{transform:translateZ(0)}[hidden]{display:none!important}#guide-wrapper.rolatech-drawer{height:100%;display:flex;flex-direction:column}#contentContainer.rolatech-drawer{position:absolute;top:0;bottom:0;width:var(--rt-drawer-width, 256px);padding:var(--rt-drawer-content-padding, 120px 0);transition-property:transform;color:var(--rt-drawer-content-container-color, #000);background-color:var(--rt-drawer-content-container-background-color, #fff);transition-duration:.2s}#contentContainer.rolatech-drawer[opened]{transform:translateZ(0)}#guide-content.rolatech-drawer{background:var(--rt-base-background);flex:1;flex-basis:.000000001px;display:flex;flex-direction:column}#guide-inner-content.rolatech-drawer{overflow:hidden;flex:1;flex-basis:.000000001px;overflow-y:auto;scrollbar-color:transparent transparent;scrollbar-width:thin}#scrim.rolatech-drawer{position:absolute;inset:0;transition-property:opacity;transform:translateZ(0);transition-duration:.2s;opacity:0;background:var(--rt-drawer-scrim-background, rgba(0, 0, 0, .5))}#scrim.visible.rolatech-drawer{opacity:1}#guide-spacer{margin-top:var(--ytd-masthead-height, 56px)}rolatech-drawer:not([persistent]) #guide-spacer{display:none}rolatech-drawer:not([persistent]){z-index:2030}.drawer-active{background-color:var(--rt-drawer-active-background-color, rgba(0, 0, 0, .05));font-weight:500;border-radius:10px}.content{display:flex;flex-direction:column;overflow:visible}.rolatech-drawer-button{background-color:var(--rt-brand-color, #000);color:var(--rt-brand-color-inverse, #fff)}.rolatech-drawer-button:hover{box-shadow:0 1px 3px #3c40434d,0 4px 8px 3px #3c404326;background-color:var(--rt-brand-color, #c2e7ff)}#endpoint.rt-guide-entry:hover{background-color:var(--rt-drawer-active-background-color);border-radius:10px}.indicator-collapsed{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.indicator-expanded{transform:rotate(180deg)}.content-collapsed{max-height:0;visibility:hidden;transition:max-height 225ms cubic-bezier(.4,0,.2,1)}.content-expanded{max-height:1000px;visibility:visible}\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: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }, { kind: "component", type: MenuIconComponent, selector: "rolatech-menu-icon" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "ngmodule", type: MatDividerModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
781
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
782
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: DrawerComponent, isStandalone: true, selector: "rolatech-drawer", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "id": "rolatech-drawer", "style.transition-duration": "200ms", "ngSkipHydration": "" }, classAttribute: "rolatech-drawer" }, viewQueries: [{ propertyName: "guideEl", first: true, predicate: ["guide"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "scrimEl", first: true, predicate: ["scrim"], descendants: true, isSignal: true }, { propertyName: "headerEl", first: true, predicate: ["header"], descendants: true, isSignal: true }], ngImport: i0, template: "<div id=\"scrim\" #scrim class=\"rolatech-drawer\" (click)=\"close()\"></div>\n<div id=\"contentContainer\" #content class=\"rolatech-drawer\">\n <div id=\"guide-wrapper\" class=\"rolatech-drawer\">\n <div id=\"guide-spacer\"></div>\n <div id=\"guide-content\" class=\"rolatech-drawer\">\n <div id=\"header\" #header class=\"flex pl-4 h-14 items-center\">\n <rolatech-menu-icon #menuButton (click)=\"this.toggle()\" onclick=\"this.blur()\"></rolatech-menu-icon>\n <div class=\"text-(--rt-text-primary) text-lg md:text-xl font-bold cursor-pointer\" routerLink=\"/\">\n <span class=\"text-(--rt-brand-color)\" i18n>{{ appLayout.title }}</span>\n <span i18n>{{ appLayout.subtitle }}</span>\n </div>\n </div>\n <div id=\"guide-inner-content\" class=\"rolatech-drawer\">\n <div class=\"block p-3\">\n @for (item of links(); track $index; let i = $index) {\n @if (item.children) {\n <div\n class=\"children-group flex cursor-pointer overflow-hidden my-3 py-3 border-b border-(--rt-border-color)\"\n [class.border-t]=\"!isPreviousItemChildren(i)\"\n [class.mt-0]=\"isPreviousItemChildren(i)\"\n [class.mb-0]=\"isNextItemChildren(i)\"\n >\n <div class=\"w-full\">\n <div class=\"flex items-center h-10\">\n <span class=\"ml-3 text-md font-bold\" i18n>{{ labelOf(item) }}</span>\n </div>\n <div class=\"flex flex-col\">\n @for (child of item.children; track child) {\n <a\n id=\"endpoint\"\n class=\"flex hover:bg-(--rt-10-percent-layer) min-h-11 rt-guide-entry cursor-pointer\"\n [class.drawer-active]=\"isRouteActive(child, routerLink.isActive)\"\n [routerLink]=\"routerLinkOf(child)\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n routerLinkActive\n [routerLinkActiveOptions]=\"{ exact: child.exact === false ? false : true }\"\n #routerLink=\"routerLinkActive\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (child.icon) {\n <rolatech-icon class=\"ml-3 cursor-pointer\" [filled]=\"isRouteActive(child, routerLink.isActive)\">{{\n child.icon\n }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span i18n>{{ labelOf(child) }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitleOf(child) }}</span>\n </div>\n </div>\n </div>\n </a>\n }\n </div>\n </div>\n </div>\n } @else {\n @if (isExternal(item)) {\n <a\n class=\"flex hover:bg-(--rt-10-percent-layer) min-h-11\"\n [href]=\"hrefOf(item)\"\n target=\"_blank\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (item.icon) {\n <rolatech-icon class=\"ml-3\">{{ item.icon }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span>{{ labelOf(item) }}</span>\n <span class=\"text-sm opacity-75 text-(--rt-text-secondary)\" i18n>{{ subtitleOf(item) }}</span>\n </div>\n </div>\n <rolatech-icon class=\"scale-90 mr-3\">open_in_new</rolatech-icon>\n </div>\n </a>\n } @else {\n @if (item.button) {\n <a\n class=\"flex rolatech-drawer-button min-h-11 rounded-xl mb-2 cursor-pointer\"\n [routerLink]=\"routerLinkOf(item)\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (item.icon) {\n <rolatech-icon class=\"ml-3\">{{ item.icon }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span i18n>{{ labelOf(item) }}</span>\n <span class=\"text-sm\" i18n>{{ subtitleOf(item) }}</span>\n </div>\n </div>\n </div>\n </a>\n } @else {\n <a\n id=\"endpoint\"\n class=\"flex hover:bg-(--rt-10-percent-layer) min-h-11 rt-guide-entry cursor-pointer\"\n [class.drawer-active]=\"isRouteActive(item, routerLink.isActive)\"\n [routerLink]=\"routerLinkOf(item)\"\n (click)=\"this.isPersistent ? '' : this.close()\"\n routerLinkActive\n [routerLinkActiveOptions]=\"{ exact: item.exact === false ? false : true }\"\n #routerLink=\"routerLinkActive\"\n >\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-start items-center\">\n @if (item.icon) {\n <rolatech-icon class=\"ml-3 cursor-pointer\" [filled]=\"isRouteActive(item, routerLink.isActive)\">{{\n item.icon\n }}</rolatech-icon>\n }\n <div class=\"flex flex-col ml-3\">\n <span i18n>{{ labelOf(item) }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitleOf(item) }}</span>\n </div>\n </div>\n </div>\n </a>\n }\n }\n }\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["rolatech-drawer{position:fixed;z-index:1;inset:-120px 0;visibility:hidden;transition-property:visibility;transition-duration:.2s;touch-action:pan-y}rolatech-drawer[persistent]{width:var(--rt-drawer-width, 256px)}rolatech-drawer[persistent][position=top]{width:100%}rolatech-drawer[opened]{visibility:visible}rolatech-drawer[position=top] #contentContainer{left:0;right:0;width:100%;height:var(--rt-topbar-height, 56px);transform:translate3d(0,-100%,0)}rolatech-drawer[position=top] #contentContainer #guide-inner-content{height:56px}rolatech-drawer[position=top] #contentContainer #guide-inner-content div{display:flex!important;flex-direction:row!important;overflow:hidden;flex:1;flex-basis:.000000001px;overflow-y:auto;scrollbar-color:transparent transparent;scrollbar-width:thin;height:56px;align-items:center}rolatech-drawer[position=bottom] #contentContainer{left:0;right:0;transform:translate3d(0,100%,0)}rolatech-drawer[position=left] #contentContainer{left:0;transform:translate3d(-100%,0,0)}rolatech-drawer[position=right] #contentContainer{right:0;transform:translate3d(100%,0,0)}rolatech-drawer[persistent][position=left]{right:auto}rolatech-drawer[persistent][position=right]{left:auto}rolatech-drawer[persistent][position=top] #contentContainer{transform:translate3d(0,-100%,0)}rolatech-drawer[persistent][position=left] #contentContainer{transform:translate3d(-100%,0,0)}rolatech-drawer[persistent][position=right] #contentContainer{transform:translate3d(100%,0,0)}rolatech-drawer[persistent][position=top] #contentContainer[opened]{transform:translateZ(0)}rolatech-drawer[persistent][position=left] #contentContainer[opened]{transform:translateZ(0)}rolatech-drawer[persistent][position=right] #contentContainer[opened]{transform:translateZ(0)}[hidden]{display:none!important}#guide-wrapper.rolatech-drawer{height:100%;display:flex;flex-direction:column}#contentContainer.rolatech-drawer{position:absolute;top:0;bottom:0;width:var(--rt-drawer-width, 256px);padding:var(--rt-drawer-content-padding, 120px 0);transition-property:transform;color:var(--rt-drawer-content-container-color, #000);background-color:var(--rt-drawer-content-container-background-color, #fff);transition-duration:.2s}#contentContainer.rolatech-drawer[opened]{transform:translateZ(0)}#guide-content.rolatech-drawer{background:var(--rt-base-background);flex:1;flex-basis:.000000001px;display:flex;flex-direction:column}#guide-inner-content.rolatech-drawer{overflow:hidden;flex:1;flex-basis:.000000001px;overflow-y:auto;scrollbar-color:transparent transparent;scrollbar-width:thin}#scrim.rolatech-drawer{position:absolute;inset:0;transition-property:opacity;transform:translateZ(0);transition-duration:.2s;opacity:0;background:var(--rt-drawer-scrim-background, rgba(0, 0, 0, .5))}#scrim.visible.rolatech-drawer{opacity:1}#guide-spacer{margin-top:var(--ytd-masthead-height, 56px)}rolatech-drawer:not([persistent]) #guide-spacer{display:none}rolatech-drawer:not([persistent]){z-index:2030}.drawer-active{background-color:var(--rt-drawer-active-background-color, rgba(0, 0, 0, .05));font-weight:500;border-radius:10px}.content{display:flex;flex-direction:column;overflow:visible}.rolatech-drawer-button{background-color:var(--rt-brand-color, #000);color:var(--rt-brand-color-inverse, #fff)}.rolatech-drawer-button:hover{box-shadow:0 1px 3px #3c40434d,0 4px 8px 3px #3c404326;background-color:var(--rt-brand-color, #c2e7ff)}#endpoint.rt-guide-entry:hover{background-color:var(--rt-drawer-active-background-color);border-radius:10px}.indicator-collapsed{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.indicator-expanded{transform:rotate(180deg)}.content-collapsed{max-height:0;visibility:hidden;transition:max-height 225ms cubic-bezier(.4,0,.2,1)}.content-expanded{max-height:1000px;visibility:visible}\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: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }, { kind: "component", type: MenuIconComponent, selector: "rolatech-menu-icon" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "ngmodule", type: MatDividerModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
783
783
  }
784
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DrawerComponent, decorators: [{
784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DrawerComponent, decorators: [{
785
785
  type: Component,
786
786
  args: [{ selector: 'rolatech-drawer', imports: [
787
787
  CommonModule,
@@ -805,8 +805,8 @@ class MiniGuideComponent {
805
805
  renderer = inject(Renderer2);
806
806
  platformId = inject(PLATFORM_ID);
807
807
  breakpointObserver = inject(BreakpointObserver);
808
- items = input(...(ngDevMode ? [undefined, { debugName: "items" }] : []));
809
- title = input(true, ...(ngDevMode ? [{ debugName: "title" }] : []));
808
+ items = input(...(ngDevMode ? [undefined, { debugName: "items" }] : /* istanbul ignore next */ []));
809
+ title = input(true, ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
810
810
  opened = false;
811
811
  disableToggle = false;
812
812
  breakpoint$ = this.breakpointObserver.observe([Breakpoints.Large, Breakpoints.Medium, '(max-width: 768px)']);
@@ -859,10 +859,10 @@ class MiniGuideComponent {
859
859
  this.open();
860
860
  }
861
861
  }
862
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MiniGuideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
863
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MiniGuideComponent, isStandalone: true, selector: "rolatech-mini-guide", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "id": "rolatech-mini-guide" }, classAttribute: "rolatech-mini-guide" }, ngImport: i0, template: "<div id=\"items\" class=\"w-16 mt-[6px]\" style=\"transition-duration: 200ms\">\n @for (item of items(); track $index) {\n <div>\n <a\n id=\"min-guide-endpoint\"\n [routerLink]=\"item.link\"\n routerLinkActive=\"min-guide-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n #routerLink=\"routerLinkActive\"\n class=\"flex flex-col justify-center items-center py-3 rt-guide-entry cursor-pointer\"\n >\n <rolatech-icon class=\"cursor-pointer\" [filled]=\"routerLink.isActive\">{{ item.icon }}</rolatech-icon>\n @if (title()) {\n <span class=\"text-xs mt-1 max-w-full truncate\">{{ item.title }}</span>\n }\n </a>\n </div>\n }\n</div>\n", styles: ["rolatech-mini-guide{position:fixed;left:0;top:var(--rt-toolbar-height, 56px);bottom:0;width:var(--rt-mini-guide-width, 72px);box-sizing:border-box;display:inline-block;background-color:var(--rt-base-background, #fff);color:var(--rt-text-primary, #000);z-index:2028;padding:0 4px;scrollbar-width:none;overflow:scroll}.min-guide-active{background-color:#0000000d;border-radius:8px;font-weight:500}#min-guide-endpoint.rt-guide-entry:hover{background-color:var(--rt-drawer-active-background-color);border-radius:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
862
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MiniGuideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
863
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MiniGuideComponent, isStandalone: true, selector: "rolatech-mini-guide", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "id": "rolatech-mini-guide" }, classAttribute: "rolatech-mini-guide" }, ngImport: i0, template: "<div id=\"items\" class=\"w-16 mt-[6px]\" style=\"transition-duration: 200ms\">\n @for (item of items(); track $index) {\n <div>\n <a\n id=\"min-guide-endpoint\"\n [routerLink]=\"item.link\"\n routerLinkActive=\"min-guide-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n #routerLink=\"routerLinkActive\"\n class=\"flex flex-col justify-center items-center py-3 rt-guide-entry cursor-pointer\"\n >\n <rolatech-icon class=\"cursor-pointer\" [filled]=\"routerLink.isActive\">{{ item.icon }}</rolatech-icon>\n @if (title()) {\n <span class=\"text-xs mt-1 max-w-full truncate\">{{ item.title }}</span>\n }\n </a>\n </div>\n }\n</div>\n", styles: ["rolatech-mini-guide{position:fixed;left:0;top:var(--rt-toolbar-height, 56px);bottom:0;width:var(--rt-mini-guide-width, 72px);box-sizing:border-box;display:inline-block;background-color:var(--rt-base-background, #fff);color:var(--rt-text-primary, #000);z-index:2028;padding:0 4px;scrollbar-width:none;overflow:scroll}.min-guide-active{background-color:#0000000d;border-radius:8px;font-weight:500}#min-guide-endpoint.rt-guide-entry:hover{background-color:var(--rt-drawer-active-background-color);border-radius:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
864
864
  }
865
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MiniGuideComponent, decorators: [{
865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MiniGuideComponent, decorators: [{
866
866
  type: Component,
867
867
  args: [{ selector: 'rolatech-mini-guide', imports: [CommonModule, IconComponent, RouterLink, RouterLinkActive], encapsulation: ViewEncapsulation.None, host: {
868
868
  id: 'rolatech-mini-guide',
@@ -875,10 +875,10 @@ class AppPageComponent {
875
875
  constructor() { }
876
876
  ngOnInit() { }
877
877
  ngAfterContentInit() { }
878
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AppPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
879
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: AppPageComponent, isStandalone: true, selector: "rolatech-page", host: { attributes: { "id": "rolatech-page", "ngSkipHydration": "" }, classAttribute: "rolatech-page rt-page" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["rolatech-page[transparent]{opacity:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
878
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AppPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
879
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: AppPageComponent, isStandalone: true, selector: "rolatech-page", host: { attributes: { "id": "rolatech-page", "ngSkipHydration": "" }, classAttribute: "rolatech-page rt-page" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["rolatech-page[transparent]{opacity:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
880
880
  }
881
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AppPageComponent, decorators: [{
881
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AppPageComponent, decorators: [{
882
882
  type: Component,
883
883
  args: [{ selector: 'rolatech-page', imports: [CommonModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
884
884
  id: 'rolatech-page',
@@ -949,10 +949,10 @@ class LayoutComponent {
949
949
  this.renderer.removeAttribute(this.el.nativeElement, 'mini-guide-visible');
950
950
  }
951
951
  }
952
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
953
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: LayoutComponent, isStandalone: true, selector: "rolatech-layout", host: { attributes: { "id": "rolatech-layout", "ngSkipHydration": "" }, classAttribute: "rolatech-layout" }, queries: [{ propertyName: "topbar", first: true, predicate: TopbarComponent, descendants: true, isSignal: true }, { propertyName: "drawer", first: true, predicate: DrawerComponent, descendants: true, isSignal: true }, { propertyName: "page", first: true, predicate: AppPageComponent, descendants: true, isSignal: true }, { propertyName: "guide", first: true, predicate: MiniGuideComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"rolatech-topbar\"></ng-content>\n<ng-content select=\"rolatech-drawer\"></ng-content>\n<ng-content select=\"rolatech-mini-guide\"></ng-content>\n<ng-content select=\"rolatech-page\"></ng-content>\n<ng-content select=\"rolatech-footer\"></ng-content>\n", styles: ["rolatech-layout{--rt-persistent-guide-width: 256px;--rt-mini-guide-width: 72px;display:flex;flex-direction:column;width:100%;height:100dvh;position:relative;background-color:var(--rt-layout-background-color, #fff);color:var(--rt-layout-color, #000)}rolatech-layout rolatech-drawer[persistent][opened][position=top]~rolatech-page{margin-top:56px}rolatech-layout rolatech-drawer[persistent][opened][position=left]~rolatech-page{margin-left:var(--rt-persistent-guide-width)}rolatech-layout rolatech-drawer[persistent][opened][position=right]~rolatech-page{margin-right:var(--rt-persistent-guide-width)}rolatech-layout rolatech-mini-guide[mini-guide-visible]~rolatech-page{margin-left:var(--rt-mini-guide-width)}rolatech-page{display:block;margin-top:56px;flex:1 1 auto}rolatech-page[mini-guide-visible] .content{margin-left:72px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatSidenavModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
952
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
953
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: LayoutComponent, isStandalone: true, selector: "rolatech-layout", host: { attributes: { "id": "rolatech-layout", "ngSkipHydration": "" }, classAttribute: "rolatech-layout" }, queries: [{ propertyName: "topbar", first: true, predicate: TopbarComponent, descendants: true, isSignal: true }, { propertyName: "drawer", first: true, predicate: DrawerComponent, descendants: true, isSignal: true }, { propertyName: "page", first: true, predicate: AppPageComponent, descendants: true, isSignal: true }, { propertyName: "guide", first: true, predicate: MiniGuideComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"rolatech-topbar\"></ng-content>\n<ng-content select=\"rolatech-drawer\"></ng-content>\n<ng-content select=\"rolatech-mini-guide\"></ng-content>\n<ng-content select=\"rolatech-page\"></ng-content>\n<ng-content select=\"rolatech-footer\"></ng-content>\n", styles: ["rolatech-layout{--rt-persistent-guide-width: 256px;--rt-mini-guide-width: 72px;display:flex;flex-direction:column;width:100%;height:100dvh;position:relative;background-color:var(--rt-layout-background-color, #fff);color:var(--rt-layout-color, #000)}rolatech-layout rolatech-drawer[persistent][opened][position=top]~rolatech-page{margin-top:56px}rolatech-layout rolatech-drawer[persistent][opened][position=left]~rolatech-page{margin-left:var(--rt-persistent-guide-width)}rolatech-layout rolatech-drawer[persistent][opened][position=right]~rolatech-page{margin-right:var(--rt-persistent-guide-width)}rolatech-layout rolatech-mini-guide[mini-guide-visible]~rolatech-page{margin-left:var(--rt-mini-guide-width)}rolatech-page{display:block;margin-top:56px;flex:1 1 auto}rolatech-page[mini-guide-visible] .content{margin-left:72px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatSidenavModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
954
954
  }
955
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: LayoutComponent, decorators: [{
955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: LayoutComponent, decorators: [{
956
956
  type: Component,
957
957
  args: [{ selector: 'rolatech-layout', imports: [CommonModule, MatListModule, MatButtonModule, MatIconModule, MatSidenavModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
958
958
  id: 'rolatech-layout',
@@ -962,9 +962,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
962
962
  }], ctorParameters: () => [], propDecorators: { topbar: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TopbarComponent), { isSignal: true }] }], drawer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DrawerComponent), { isSignal: true }] }], page: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AppPageComponent), { isSignal: true }] }], guide: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MiniGuideComponent), { isSignal: true }] }] } });
963
963
 
964
964
  class AppShellComponent {
965
- links = input([], ...(ngDevMode ? [{ debugName: "links" }] : []));
966
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AppShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
967
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: AppShellComponent, isStandalone: true, selector: "rolatech-app-shell", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
965
+ links = input([], ...(ngDevMode ? [{ debugName: "links" }] : /* istanbul ignore next */ []));
966
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AppShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
967
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: AppShellComponent, isStandalone: true, selector: "rolatech-app-shell", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
968
968
  <rolatech-layout>
969
969
  <rolatech-topbar>
970
970
  <ng-content select="[shell-topbar]"></ng-content>
@@ -980,7 +980,7 @@ class AppShellComponent {
980
980
  </rolatech-layout>
981
981
  `, isInline: true, dependencies: [{ kind: "component", type: LayoutComponent, selector: "rolatech-layout" }, { kind: "component", type: TopbarComponent, selector: "rolatech-topbar", inputs: ["link"] }, { kind: "component", type: DrawerComponent, selector: "rolatech-drawer", inputs: ["links", "position", "opened"] }, { kind: "component", type: AppPageComponent, selector: "rolatech-page" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
982
982
  }
983
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AppShellComponent, decorators: [{
983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AppShellComponent, decorators: [{
984
984
  type: Component,
985
985
  args: [{
986
986
  selector: 'rolatech-app-shell',
@@ -1008,14 +1008,14 @@ class FooterComponent {
1008
1008
  hostId = 'rolatech-footer';
1009
1009
  hasClass = true;
1010
1010
  config = inject(APP_CONFIG);
1011
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
1012
- copyright = input('', ...(ngDevMode ? [{ debugName: "copyright" }] : []));
1013
- fTitle = computed(() => this.title() || this.config.name, ...(ngDevMode ? [{ debugName: "fTitle" }] : []));
1014
- fCopyright = computed(() => this.copyright() || this.config.name, ...(ngDevMode ? [{ debugName: "fCopyright" }] : []));
1015
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1016
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: FooterComponent, isStandalone: true, selector: "rolatech-footer", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, copyright: { classPropertyName: "copyright", publicName: "copyright", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hostId", "class.rolatech-footer": "this.hasClass" } }, ngImport: i0, template: "<div class=\"bg-(--rt-base-background) flex flex-col justify-between px-5 md:px-16 py-6 gap-4\">\n <div class=\"order-2 flex flex-col gap-3 md:flex-row md:items-end md:justify-between\">\n <div class=\"flex flex-col gap-3 md:flex-row md:items-end md:gap-4\">\n <div class=\"cursor-pointer\">\n <a href=\"/\" target=\"_blank\" class=\"text-lg font-bold\">{{ fTitle() }}</a>\n </div>\n <ng-content select=\"[footer-left]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col gap-3 md:flex-row md:items-center md:justify-end md:gap-4\">\n <ng-content select=\"[footer-right]\"></ng-content>\n <span class=\"text-sm\">\u00A9{{ fCopyright() }}</span>\n </div>\n </div>\n\n <div class=\"order-1 flex flex-col gap-3 py-3 md:flex-row md:gap-10\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-footer{width:100%;display:var(--rt-footer-display, block)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
1011
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
1012
+ copyright = input('', ...(ngDevMode ? [{ debugName: "copyright" }] : /* istanbul ignore next */ []));
1013
+ fTitle = computed(() => this.title() || this.config.name, ...(ngDevMode ? [{ debugName: "fTitle" }] : /* istanbul ignore next */ []));
1014
+ fCopyright = computed(() => this.copyright() || this.config.name, ...(ngDevMode ? [{ debugName: "fCopyright" }] : /* istanbul ignore next */ []));
1015
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1016
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: FooterComponent, isStandalone: true, selector: "rolatech-footer", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, copyright: { classPropertyName: "copyright", publicName: "copyright", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hostId", "class.rolatech-footer": "this.hasClass" } }, ngImport: i0, template: "<div class=\"bg-(--rt-base-background) flex flex-col justify-between px-5 md:px-16 py-6 gap-4\">\n <div class=\"order-2 flex flex-col gap-3 md:flex-row md:items-end md:justify-between\">\n <div class=\"flex flex-col gap-3 md:flex-row md:items-end md:gap-4\">\n <div class=\"cursor-pointer\">\n <a href=\"/\" target=\"_blank\" class=\"text-lg font-bold\">{{ fTitle() }}</a>\n </div>\n <ng-content select=\"[footer-left]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col gap-3 md:flex-row md:items-center md:justify-end md:gap-4\">\n <ng-content select=\"[footer-right]\"></ng-content>\n <span class=\"text-sm\">\u00A9{{ fCopyright() }}</span>\n </div>\n </div>\n\n <div class=\"order-1 flex flex-col gap-3 py-3 md:flex-row md:gap-10\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-footer{width:100%;display:var(--rt-footer-display, block)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
1017
1017
  }
1018
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FooterComponent, decorators: [{
1018
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FooterComponent, decorators: [{
1019
1019
  type: Component,
1020
1020
  args: [{ selector: 'rolatech-footer', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"bg-(--rt-base-background) flex flex-col justify-between px-5 md:px-16 py-6 gap-4\">\n <div class=\"order-2 flex flex-col gap-3 md:flex-row md:items-end md:justify-between\">\n <div class=\"flex flex-col gap-3 md:flex-row md:items-end md:gap-4\">\n <div class=\"cursor-pointer\">\n <a href=\"/\" target=\"_blank\" class=\"text-lg font-bold\">{{ fTitle() }}</a>\n </div>\n <ng-content select=\"[footer-left]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col gap-3 md:flex-row md:items-center md:justify-end md:gap-4\">\n <ng-content select=\"[footer-right]\"></ng-content>\n <span class=\"text-sm\">\u00A9{{ fCopyright() }}</span>\n </div>\n </div>\n\n <div class=\"order-1 flex flex-col gap-3 py-3 md:flex-row md:gap-10\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-footer{width:100%;display:var(--rt-footer-display, block)}\n"] }]
1021
1021
  }], propDecorators: { hostId: [{
@@ -1028,19 +1028,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1028
1028
 
1029
1029
  class FooterLanguageSwitcherComponent {
1030
1030
  language = inject(LanguageService);
1031
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FooterLanguageSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1032
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: FooterLanguageSwitcherComponent, isStandalone: true, selector: "rolatech-footer-language-switcher", ngImport: i0, template: "<button\n type=\"button\"\n class=\"rt-footer-language-trigger\"\n [matMenuTriggerFor]=\"languageMenu\"\n aria-haspopup=\"menu\"\n aria-label=\"Choose language\"\n>\n <span class=\"rt-footer-language-trigger__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path\n d=\"M12 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2Zm6.93 9h-3.03a15.6 15.6 0 0 0-1.22-5.05A8.04 8.04 0 0 1 18.93 11Zm-6.93 9c-.86 0-2.35-2.15-3.02-5h6.04c-.67 2.85-2.16 5-3.02 5Zm-3.38-7a13.44 13.44 0 0 1 0-2h6.76a13.44 13.44 0 0 1 0 2H8.62Zm-4.55-2h3.03c.14-1.79.56-3.5 1.22-5.05A8.04 8.04 0 0 0 4.07 11Zm3.03 2H4.07a8.04 8.04 0 0 0 4.25 5.05A15.6 15.6 0 0 1 7.1 13Zm7.58 5.05A15.6 15.6 0 0 0 15.9 13h3.03a8.04 8.04 0 0 1-4.25 5.05ZM12 4c.86 0 2.35 2.15 3.02 5H8.98C9.65 6.15 11.14 4 12 4Z\"\n ></path>\n </svg>\n </span>\n <span class=\"rt-footer-language-trigger__label\">{{ language.currentOption().label }}</span>\n <span class=\"rt-footer-language-trigger__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </span>\n</button>\n\n<mat-menu #languageMenu=\"matMenu\" yPosition=\"above\" xPosition=\"after\">\n @for (option of language.options; track option.code) {\n <a\n mat-menu-item\n class=\"rt-footer-language-menu__item\"\n [class.is-active]=\"language.isActive(option.code)\"\n [href]=\"language.hrefFor(option.code)\"\n [attr.aria-current]=\"language.isActive(option.code) ? 'page' : null\"\n (click)=\"language.set(option.code)\"\n >\n <span>{{ option.label }}</span>\n @if (language.isActive(option.code)) {\n <span class=\"rt-footer-language-menu__check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path d=\"M9 16.17 4.83 12 3.41 13.41 9 19l12-12-1.41-1.41z\"></path>\n </svg>\n </span>\n }\n </a>\n }\n</mat-menu>\n", styles: ["rolatech-footer-language-switcher{display:inline-flex}.rt-footer-language-trigger{display:inline-flex;align-items:center;gap:.65rem;padding:.6rem .95rem;border:1px solid var(--rt-border-color, rgba(0, 0, 0, .12));border-radius:999px;background:var(--rt-raised-background, #fff);color:var(--rt-text-color, inherit);cursor:pointer;font-size:.875rem;line-height:1;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.rt-footer-language-trigger:hover{background:var(--rt-10-percent-layer, rgba(0, 0, 0, .06));border-color:var(--rt-brand-color, rgba(0, 0, 0, .3))}.rt-footer-language-trigger__icon,.rt-footer-language-trigger__chevron,.rt-footer-language-menu__check{display:inline-flex;width:1rem;height:1rem;flex:0 0 auto}.rt-footer-language-trigger__icon svg,.rt-footer-language-trigger__chevron svg,.rt-footer-language-menu__check svg{width:100%;height:100%;fill:currentColor}.rt-footer-language-trigger__label{font-weight:500}.rt-footer-language-menu__item{min-width:10rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.rt-footer-language-menu__item.is-active{color:var(--rt-brand-color, #111827);font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], encapsulation: i0.ViewEncapsulation.None });
1031
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FooterLanguageSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1032
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: FooterLanguageSwitcherComponent, isStandalone: true, selector: "rolatech-footer-language-switcher", ngImport: i0, template: "<button\n type=\"button\"\n class=\"rt-footer-language-trigger\"\n [matMenuTriggerFor]=\"languageMenu\"\n aria-haspopup=\"menu\"\n aria-label=\"Choose language\"\n>\n <span class=\"rt-footer-language-trigger__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path\n d=\"M12 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2Zm6.93 9h-3.03a15.6 15.6 0 0 0-1.22-5.05A8.04 8.04 0 0 1 18.93 11Zm-6.93 9c-.86 0-2.35-2.15-3.02-5h6.04c-.67 2.85-2.16 5-3.02 5Zm-3.38-7a13.44 13.44 0 0 1 0-2h6.76a13.44 13.44 0 0 1 0 2H8.62Zm-4.55-2h3.03c.14-1.79.56-3.5 1.22-5.05A8.04 8.04 0 0 0 4.07 11Zm3.03 2H4.07a8.04 8.04 0 0 0 4.25 5.05A15.6 15.6 0 0 1 7.1 13Zm7.58 5.05A15.6 15.6 0 0 0 15.9 13h3.03a8.04 8.04 0 0 1-4.25 5.05ZM12 4c.86 0 2.35 2.15 3.02 5H8.98C9.65 6.15 11.14 4 12 4Z\"\n ></path>\n </svg>\n </span>\n <span class=\"rt-footer-language-trigger__label\">{{ language.currentOption().label }}</span>\n <span class=\"rt-footer-language-trigger__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </span>\n</button>\n\n<mat-menu #languageMenu=\"matMenu\" yPosition=\"above\" xPosition=\"after\">\n @for (option of language.options; track option.code) {\n <a\n mat-menu-item\n class=\"rt-footer-language-menu__item\"\n [class.is-active]=\"language.isActive(option.code)\"\n [href]=\"language.hrefFor(option.code)\"\n [attr.aria-current]=\"language.isActive(option.code) ? 'page' : null\"\n (click)=\"language.set(option.code)\"\n >\n <span>{{ option.label }}</span>\n @if (language.isActive(option.code)) {\n <span class=\"rt-footer-language-menu__check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path d=\"M9 16.17 4.83 12 3.41 13.41 9 19l12-12-1.41-1.41z\"></path>\n </svg>\n </span>\n }\n </a>\n }\n</mat-menu>\n", styles: ["rolatech-footer-language-switcher{display:inline-flex}.rt-footer-language-trigger{display:inline-flex;align-items:center;gap:.65rem;padding:.6rem .95rem;border:1px solid var(--rt-border-color, rgba(0, 0, 0, .12));border-radius:999px;background:var(--rt-raised-background, #fff);color:var(--rt-text-color, inherit);cursor:pointer;font-size:.875rem;line-height:1;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.rt-footer-language-trigger:hover{background:var(--rt-10-percent-layer, rgba(0, 0, 0, .06));border-color:var(--rt-brand-color, rgba(0, 0, 0, .3))}.rt-footer-language-trigger__icon,.rt-footer-language-trigger__chevron,.rt-footer-language-menu__check{display:inline-flex;width:1rem;height:1rem;flex:0 0 auto}.rt-footer-language-trigger__icon svg,.rt-footer-language-trigger__chevron svg,.rt-footer-language-menu__check svg{width:100%;height:100%;fill:currentColor}.rt-footer-language-trigger__label{font-weight:500}.rt-footer-language-menu__item{min-width:10rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.rt-footer-language-menu__item.is-active{color:var(--rt-brand-color, #111827);font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], encapsulation: i0.ViewEncapsulation.None });
1033
1033
  }
1034
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FooterLanguageSwitcherComponent, decorators: [{
1034
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FooterLanguageSwitcherComponent, decorators: [{
1035
1035
  type: Component,
1036
1036
  args: [{ selector: 'rolatech-footer-language-switcher', imports: [CommonModule, MatMenuModule], encapsulation: ViewEncapsulation.None, template: "<button\n type=\"button\"\n class=\"rt-footer-language-trigger\"\n [matMenuTriggerFor]=\"languageMenu\"\n aria-haspopup=\"menu\"\n aria-label=\"Choose language\"\n>\n <span class=\"rt-footer-language-trigger__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path\n d=\"M12 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2Zm6.93 9h-3.03a15.6 15.6 0 0 0-1.22-5.05A8.04 8.04 0 0 1 18.93 11Zm-6.93 9c-.86 0-2.35-2.15-3.02-5h6.04c-.67 2.85-2.16 5-3.02 5Zm-3.38-7a13.44 13.44 0 0 1 0-2h6.76a13.44 13.44 0 0 1 0 2H8.62Zm-4.55-2h3.03c.14-1.79.56-3.5 1.22-5.05A8.04 8.04 0 0 0 4.07 11Zm3.03 2H4.07a8.04 8.04 0 0 0 4.25 5.05A15.6 15.6 0 0 1 7.1 13Zm7.58 5.05A15.6 15.6 0 0 0 15.9 13h3.03a8.04 8.04 0 0 1-4.25 5.05ZM12 4c.86 0 2.35 2.15 3.02 5H8.98C9.65 6.15 11.14 4 12 4Z\"\n ></path>\n </svg>\n </span>\n <span class=\"rt-footer-language-trigger__label\">{{ language.currentOption().label }}</span>\n <span class=\"rt-footer-language-trigger__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </span>\n</button>\n\n<mat-menu #languageMenu=\"matMenu\" yPosition=\"above\" xPosition=\"after\">\n @for (option of language.options; track option.code) {\n <a\n mat-menu-item\n class=\"rt-footer-language-menu__item\"\n [class.is-active]=\"language.isActive(option.code)\"\n [href]=\"language.hrefFor(option.code)\"\n [attr.aria-current]=\"language.isActive(option.code) ? 'page' : null\"\n (click)=\"language.set(option.code)\"\n >\n <span>{{ option.label }}</span>\n @if (language.isActive(option.code)) {\n <span class=\"rt-footer-language-menu__check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\">\n <path d=\"M9 16.17 4.83 12 3.41 13.41 9 19l12-12-1.41-1.41z\"></path>\n </svg>\n </span>\n }\n </a>\n }\n</mat-menu>\n", styles: ["rolatech-footer-language-switcher{display:inline-flex}.rt-footer-language-trigger{display:inline-flex;align-items:center;gap:.65rem;padding:.6rem .95rem;border:1px solid var(--rt-border-color, rgba(0, 0, 0, .12));border-radius:999px;background:var(--rt-raised-background, #fff);color:var(--rt-text-color, inherit);cursor:pointer;font-size:.875rem;line-height:1;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.rt-footer-language-trigger:hover{background:var(--rt-10-percent-layer, rgba(0, 0, 0, .06));border-color:var(--rt-brand-color, rgba(0, 0, 0, .3))}.rt-footer-language-trigger__icon,.rt-footer-language-trigger__chevron,.rt-footer-language-menu__check{display:inline-flex;width:1rem;height:1rem;flex:0 0 auto}.rt-footer-language-trigger__icon svg,.rt-footer-language-trigger__chevron svg,.rt-footer-language-menu__check svg{width:100%;height:100%;fill:currentColor}.rt-footer-language-trigger__label{font-weight:500}.rt-footer-language-menu__item{min-width:10rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.rt-footer-language-menu__item.is-active{color:var(--rt-brand-color, #111827);font-weight:600}\n"] }]
1037
1037
  }] });
1038
1038
 
1039
1039
  class ConsoleLayoutComponent {
1040
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConsoleLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1041
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: ConsoleLayoutComponent, isStandalone: true, selector: "rolatech-console-layout", ngImport: i0, template: "<p>console-layout works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1040
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConsoleLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1041
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ConsoleLayoutComponent, isStandalone: true, selector: "rolatech-console-layout", ngImport: i0, template: "<p>console-layout works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1042
1042
  }
1043
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConsoleLayoutComponent, decorators: [{
1043
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConsoleLayoutComponent, decorators: [{
1044
1044
  type: Component,
1045
1045
  args: [{ selector: 'rolatech-console-layout', imports: [CommonModule], template: "<p>console-layout works!</p>\n" }]
1046
1046
  }] });
@@ -1048,24 +1048,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1048
1048
  class TopbarAvatarMenuComponent {
1049
1049
  environment = inject(APP_CONFIG);
1050
1050
  platformId = inject(PLATFORM_ID);
1051
- menu = input.required(...(ngDevMode ? [{ debugName: "menu" }] : []));
1052
- avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : []));
1051
+ menu = input.required(...(ngDevMode ? [{ debugName: "menu" }] : /* istanbul ignore next */ []));
1052
+ avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : /* istanbul ignore next */ []));
1053
1053
  openMenu() {
1054
1054
  this.menu().focusFirstItem('mouse');
1055
1055
  }
1056
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TopbarAvatarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1057
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: TopbarAvatarMenuComponent, isStandalone: true, selector: "rolatech-topbar-avatar-menu", inputs: { menu: { classPropertyName: "menu", publicName: "menu", isSignal: true, isRequired: true, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex\">\n <a\n class=\"flex justify-center items-center rounded-full overflow-hidden cursor-pointer hover:outline-(--rt-raised-background) outline outline-transparent outline-4\"\n [matMenuTriggerFor]=\"menu()\"\n (click)=\"openMenu()\"\n >\n <div class=\"bg-(--rt-brand-color) w-9 h-9\">\n @if (avatar()) {\n <img class=\"w-9 h-9 object-cover\" [src]=\"avatar()\" alt />\n }\n </div>\n </a>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: i1$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] });
1056
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TopbarAvatarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1057
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TopbarAvatarMenuComponent, isStandalone: true, selector: "rolatech-topbar-avatar-menu", inputs: { menu: { classPropertyName: "menu", publicName: "menu", isSignal: true, isRequired: true, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex\">\n <a\n class=\"flex justify-center items-center rounded-full overflow-hidden cursor-pointer hover:outline-(--rt-raised-background) outline outline-transparent outline-4\"\n [matMenuTriggerFor]=\"menu()\"\n (click)=\"openMenu()\"\n >\n <div class=\"bg-(--rt-brand-color) w-9 h-9\">\n @if (avatar()) {\n <img class=\"w-9 h-9 object-cover\" [src]=\"avatar()\" alt />\n }\n </div>\n </a>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: i1$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] });
1058
1058
  }
1059
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TopbarAvatarMenuComponent, decorators: [{
1059
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TopbarAvatarMenuComponent, decorators: [{
1060
1060
  type: Component,
1061
1061
  args: [{ selector: 'rolatech-topbar-avatar-menu', imports: [CommonModule, MatSidenavModule, MatListModule, MatIconModule, MatMenuModule], template: "<div class=\"flex\">\n <a\n class=\"flex justify-center items-center rounded-full overflow-hidden cursor-pointer hover:outline-(--rt-raised-background) outline outline-transparent outline-4\"\n [matMenuTriggerFor]=\"menu()\"\n (click)=\"openMenu()\"\n >\n <div class=\"bg-(--rt-brand-color) w-9 h-9\">\n @if (avatar()) {\n <img class=\"w-9 h-9 object-cover\" [src]=\"avatar()\" alt />\n }\n </div>\n </a>\n</div>\n" }]
1062
1062
  }], propDecorators: { menu: [{ type: i0.Input, args: [{ isSignal: true, alias: "menu", required: true }] }], avatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatar", required: false }] }] } });
1063
1063
 
1064
1064
  class FolderComponent {
1065
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FolderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1066
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: FolderComponent, isStandalone: true, selector: "rolatech-folder", ngImport: i0, template: "<div></div>\n", styles: [""] });
1065
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FolderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1066
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: FolderComponent, isStandalone: true, selector: "rolatech-folder", ngImport: i0, template: "<div></div>\n", styles: [""] });
1067
1067
  }
1068
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FolderComponent, decorators: [{
1068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FolderComponent, decorators: [{
1069
1069
  type: Component,
1070
1070
  args: [{ selector: 'rolatech-folder', template: "<div></div>\n" }]
1071
1071
  }] });
@@ -1096,16 +1096,16 @@ class MediaPreviewDialogComponent {
1096
1096
  this.prevDisabled = this.selected === 0;
1097
1097
  this.nextDisabled = this.selected === this.data.media.length - 1;
1098
1098
  }
1099
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaPreviewDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1100
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MediaPreviewDialogComponent, isStandalone: true, selector: "rolatech-media-preview-dialog", ngImport: i0, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i2$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
1099
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaPreviewDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1100
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MediaPreviewDialogComponent, isStandalone: true, selector: "rolatech-media-preview-dialog", ngImport: i0, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i2$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
1101
1101
  }
1102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaPreviewDialogComponent, decorators: [{
1102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaPreviewDialogComponent, decorators: [{
1103
1103
  type: Component,
1104
1104
  args: [{ selector: 'rolatech-media-preview-dialog', imports: [MatIconModule, MatDividerModule, MatButtonModule], template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n" }]
1105
1105
  }] });
1106
1106
 
1107
1107
  class SpinnerComponent {
1108
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
1108
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
1109
1109
  isLoading;
1110
1110
  loadingSubscription;
1111
1111
  loadingService = inject(LoadingService);
@@ -1123,19 +1123,19 @@ class SpinnerComponent {
1123
1123
  if (this.loadingSubscription)
1124
1124
  this.loadingSubscription.unsubscribe();
1125
1125
  }
1126
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1127
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: SpinnerComponent, isStandalone: true, selector: "rolatech-spinner", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex justify-center\">\n <div class=\"lds-spinner\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n</div>\n", styles: [".lds-spinner{color:official;display:inline-block;position:relative;width:40px;height:40px}.lds-spinner div{transform-origin:20px 20px;animation:lds-spinner 1.2s linear infinite}.lds-spinner div:after{content:\" \";display:block;position:absolute;top:4px;left:18px;width:4px;height:8px;border-radius:20%;background:#333}.lds-spinner div:nth-child(1){transform:rotate(0);animation-delay:-1.1s}.lds-spinner div:nth-child(2){transform:rotate(30deg);animation-delay:-1s}.lds-spinner div:nth-child(3){transform:rotate(60deg);animation-delay:-.9s}.lds-spinner div:nth-child(4){transform:rotate(90deg);animation-delay:-.8s}.lds-spinner div:nth-child(5){transform:rotate(120deg);animation-delay:-.7s}.lds-spinner div:nth-child(6){transform:rotate(150deg);animation-delay:-.6s}.lds-spinner div:nth-child(7){transform:rotate(180deg);animation-delay:-.5s}.lds-spinner div:nth-child(8){transform:rotate(210deg);animation-delay:-.4s}.lds-spinner div:nth-child(9){transform:rotate(240deg);animation-delay:-.3s}.lds-spinner div:nth-child(10){transform:rotate(270deg);animation-delay:-.2s}.lds-spinner div:nth-child(11){transform:rotate(300deg);animation-delay:-.1s}.lds-spinner div:nth-child(12){transform:rotate(330deg);animation-delay:0s}@keyframes lds-spinner{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1126
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1127
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: SpinnerComponent, isStandalone: true, selector: "rolatech-spinner", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex justify-center\">\n <div class=\"lds-spinner\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n</div>\n", styles: [".lds-spinner{color:official;display:inline-block;position:relative;width:40px;height:40px}.lds-spinner div{transform-origin:20px 20px;animation:lds-spinner 1.2s linear infinite}.lds-spinner div:after{content:\" \";display:block;position:absolute;top:4px;left:18px;width:4px;height:8px;border-radius:20%;background:#333}.lds-spinner div:nth-child(1){transform:rotate(0);animation-delay:-1.1s}.lds-spinner div:nth-child(2){transform:rotate(30deg);animation-delay:-1s}.lds-spinner div:nth-child(3){transform:rotate(60deg);animation-delay:-.9s}.lds-spinner div:nth-child(4){transform:rotate(90deg);animation-delay:-.8s}.lds-spinner div:nth-child(5){transform:rotate(120deg);animation-delay:-.7s}.lds-spinner div:nth-child(6){transform:rotate(150deg);animation-delay:-.6s}.lds-spinner div:nth-child(7){transform:rotate(180deg);animation-delay:-.5s}.lds-spinner div:nth-child(8){transform:rotate(210deg);animation-delay:-.4s}.lds-spinner div:nth-child(9){transform:rotate(240deg);animation-delay:-.3s}.lds-spinner div:nth-child(10){transform:rotate(270deg);animation-delay:-.2s}.lds-spinner div:nth-child(11){transform:rotate(300deg);animation-delay:-.1s}.lds-spinner div:nth-child(12){transform:rotate(330deg);animation-delay:0s}@keyframes lds-spinner{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1128
1128
  }
1129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SpinnerComponent, decorators: [{
1129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SpinnerComponent, decorators: [{
1130
1130
  type: Component,
1131
1131
  args: [{ selector: 'rolatech-spinner', imports: [CommonModule], template: "<div class=\"flex justify-center\">\n <div class=\"lds-spinner\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n</div>\n", styles: [".lds-spinner{color:official;display:inline-block;position:relative;width:40px;height:40px}.lds-spinner div{transform-origin:20px 20px;animation:lds-spinner 1.2s linear infinite}.lds-spinner div:after{content:\" \";display:block;position:absolute;top:4px;left:18px;width:4px;height:8px;border-radius:20%;background:#333}.lds-spinner div:nth-child(1){transform:rotate(0);animation-delay:-1.1s}.lds-spinner div:nth-child(2){transform:rotate(30deg);animation-delay:-1s}.lds-spinner div:nth-child(3){transform:rotate(60deg);animation-delay:-.9s}.lds-spinner div:nth-child(4){transform:rotate(90deg);animation-delay:-.8s}.lds-spinner div:nth-child(5){transform:rotate(120deg);animation-delay:-.7s}.lds-spinner div:nth-child(6){transform:rotate(150deg);animation-delay:-.6s}.lds-spinner div:nth-child(7){transform:rotate(180deg);animation-delay:-.5s}.lds-spinner div:nth-child(8){transform:rotate(210deg);animation-delay:-.4s}.lds-spinner div:nth-child(9){transform:rotate(240deg);animation-delay:-.3s}.lds-spinner div:nth-child(10){transform:rotate(270deg);animation-delay:-.2s}.lds-spinner div:nth-child(11){transform:rotate(300deg);animation-delay:-.1s}.lds-spinner div:nth-child(12){transform:rotate(330deg);animation-delay:0s}@keyframes lds-spinner{0%{opacity:1}to{opacity:0}}\n"] }]
1132
1132
  }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }] } });
1133
1133
 
1134
1134
  class MediaUploadComponent {
1135
- title = input('上传图片', ...(ngDevMode ? [{ debugName: "title" }] : []));
1136
- subtitle = input('文件大小', ...(ngDevMode ? [{ debugName: "subtitle" }] : []));
1137
- description = input('不能超过5MB', ...(ngDevMode ? [{ debugName: "description" }] : []));
1138
- isUploading = input(false, ...(ngDevMode ? [{ debugName: "isUploading" }] : []));
1135
+ title = input('上传图片', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
1136
+ subtitle = input('文件大小', ...(ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []));
1137
+ description = input('不能超过5MB', ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
1138
+ isUploading = input(false, ...(ngDevMode ? [{ debugName: "isUploading" }] : /* istanbul ignore next */ []));
1139
1139
  mediaItemClick = output();
1140
1140
  upload = output();
1141
1141
  media = [];
@@ -1173,31 +1173,31 @@ class MediaUploadComponent {
1173
1173
  };
1174
1174
  }
1175
1175
  }
1176
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MediaUploadComponent, isStandalone: true, selector: "rolatech-media-upload", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, isUploading: { classPropertyName: "isUploading", publicName: "isUploading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, ngImport: i0, template: "<div class=\"bg-(--rt-raised-background) rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading()) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title() }}</div>\n <div class=\"font-sm text-(--rt-text-secondary)\">{{ subtitle() }}</div>\n <div class=\"font-sm text-(--rt-text-secondary)\">{{ description() }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n </div>\n } @else {\n <rolatech-spinner title=\"Uploading\"></rolatech-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" alt />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }] });
1176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1177
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MediaUploadComponent, isStandalone: true, selector: "rolatech-media-upload", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, isUploading: { classPropertyName: "isUploading", publicName: "isUploading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, ngImport: i0, template: "<div class=\"bg-(--rt-raised-background) rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading()) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title() }}</div>\n <div class=\"font-sm text-(--rt-text-secondary)\">{{ subtitle() }}</div>\n <div class=\"font-sm text-(--rt-text-secondary)\">{{ description() }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n </div>\n } @else {\n <rolatech-spinner title=\"Uploading\"></rolatech-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" alt />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }] });
1178
1178
  }
1179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaUploadComponent, decorators: [{
1179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaUploadComponent, decorators: [{
1180
1180
  type: Component,
1181
1181
  args: [{ imports: [AngularCommonModule, AngularComponentsModule, SpinnerComponent], selector: 'rolatech-media-upload', template: "<div class=\"bg-(--rt-raised-background) rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading()) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title() }}</div>\n <div class=\"font-sm text-(--rt-text-secondary)\">{{ subtitle() }}</div>\n <div class=\"font-sm text-(--rt-text-secondary)\">{{ description() }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n </div>\n } @else {\n <rolatech-spinner title=\"Uploading\"></rolatech-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" alt />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"] }]
1182
1182
  }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], isUploading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isUploading", required: false }] }], mediaItemClick: [{ type: i0.Output, args: ["mediaItemClick"] }], upload: [{ type: i0.Output, args: ["upload"] }] } });
1183
1183
 
1184
1184
  class StorageBucketCreateComponent {
1185
- name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
1185
+ name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
1186
1186
  output = output();
1187
1187
  ngOnInit() { }
1188
1188
  ngDoCheck() {
1189
1189
  this.output.emit(this.name());
1190
1190
  }
1191
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StorageBucketCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1192
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: StorageBucketCreateComponent, isStandalone: true, selector: "rolatech-storage-bucket-create", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label i18n>Name</mat-label>\n <input matInput placeholder=\"Enter name\" [(ngModel)]=\"name\" i18n-placeholder />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StorageBucketCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1192
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: StorageBucketCreateComponent, isStandalone: true, selector: "rolatech-storage-bucket-create", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label i18n>Name</mat-label>\n <input matInput placeholder=\"Enter name\" [(ngModel)]=\"name\" i18n-placeholder />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1193
1193
  }
1194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StorageBucketCreateComponent, decorators: [{
1194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StorageBucketCreateComponent, decorators: [{
1195
1195
  type: Component,
1196
1196
  args: [{ selector: 'rolatech-storage-bucket-create', imports: [MatFormFieldModule, MatInputModule, FormsModule], template: "<div>\n <mat-form-field>\n <mat-label i18n>Name</mat-label>\n <input matInput placeholder=\"Enter name\" [(ngModel)]=\"name\" i18n-placeholder />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
1197
1197
  }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], output: [{ type: i0.Output, args: ["output"] }] } });
1198
1198
 
1199
1199
  class StorageFileUploadComponent {
1200
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
1200
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
1201
1201
  output = output();
1202
1202
  fileData;
1203
1203
  progressInfos = [];
@@ -1219,26 +1219,26 @@ class StorageFileUploadComponent {
1219
1219
  removeFile() {
1220
1220
  this.file = null;
1221
1221
  }
1222
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StorageFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1223
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: StorageFileUploadComponent, isStandalone: true, selector: "rolatech-storage-file-upload", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label>\u6807\u9898</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u6807\u9898\" [(ngModel)]=\"title\" />\n </mat-form-field>\n\n <div class=\"mt-2\">\n <input #fileInput class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-raised-button (click)=\"fileInput.click()\">\u9009\u62E9\u6587\u4EF6</button>\n </div>\n @if (file) {\n <div class=\"p-2 flex justify-between items-center\">\n <div>{{ file.name }}</div>\n <button matSuffix mat-icon-button (click)=\"removeFile()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
1222
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StorageFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1223
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: StorageFileUploadComponent, isStandalone: true, selector: "rolatech-storage-file-upload", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label>\u6807\u9898</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u6807\u9898\" [(ngModel)]=\"title\" />\n </mat-form-field>\n\n <div class=\"mt-2\">\n <input #fileInput class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-raised-button (click)=\"fileInput.click()\">\u9009\u62E9\u6587\u4EF6</button>\n </div>\n @if (file) {\n <div class=\"p-2 flex justify-between items-center\">\n <div>{{ file.name }}</div>\n <button matSuffix mat-icon-button (click)=\"removeFile()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
1224
1224
  }
1225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StorageFileUploadComponent, decorators: [{
1225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StorageFileUploadComponent, decorators: [{
1226
1226
  type: Component,
1227
1227
  args: [{ selector: 'rolatech-storage-file-upload', imports: [MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, MatIconModule], template: "<div>\n <mat-form-field>\n <mat-label>\u6807\u9898</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u6807\u9898\" [(ngModel)]=\"title\" />\n </mat-form-field>\n\n <div class=\"mt-2\">\n <input #fileInput class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-raised-button (click)=\"fileInput.click()\">\u9009\u62E9\u6587\u4EF6</button>\n </div>\n @if (file) {\n <div class=\"p-2 flex justify-between items-center\">\n <div>{{ file.name }}</div>\n <button matSuffix mat-icon-button (click)=\"removeFile()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
1228
1228
  }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], output: [{ type: i0.Output, args: ["output"] }] } });
1229
1229
 
1230
1230
  class StorageFolderCreateComponent {
1231
- name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
1232
- isPublic = input(true, ...(ngDevMode ? [{ debugName: "isPublic" }] : []));
1231
+ name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
1232
+ isPublic = input(true, ...(ngDevMode ? [{ debugName: "isPublic" }] : /* istanbul ignore next */ []));
1233
1233
  output = output();
1234
1234
  ngOnInit() { }
1235
1235
  ngDoCheck() {
1236
1236
  this.output.emit({ name: this.name(), isPublic: this.isPublic() });
1237
1237
  }
1238
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StorageFolderCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1239
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: StorageFolderCreateComponent, isStandalone: true, selector: "rolatech-storage-folder-create", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, isPublic: { classPropertyName: "isPublic", publicName: "isPublic", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label i18n>Name</mat-label>\n <input matInput placeholder=\"Name\" [(ngModel)]=\"name\" i18n />\n </mat-form-field>\n <div class=\"flex flex-col\">\n <mat-checkbox [(ngModel)]=\"isPublic\" i18n>Public resources</mat-checkbox>\n <span class=\"text-sm text-(--rt-text-secondary) ml-2 mt-1\" i18n>\u6587\u4EF6\u5939\u4E3A\u56FE\u7247\u5185\u5BB9\u65F6, \u8BF7\u53D6\u6D88\u52FE\u9009\u6B64\u9879</span>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] });
1238
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StorageFolderCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1239
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: StorageFolderCreateComponent, isStandalone: true, selector: "rolatech-storage-folder-create", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, isPublic: { classPropertyName: "isPublic", publicName: "isPublic", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label i18n>Name</mat-label>\n <input matInput placeholder=\"Name\" [(ngModel)]=\"name\" i18n />\n </mat-form-field>\n <div class=\"flex flex-col\">\n <mat-checkbox [(ngModel)]=\"isPublic\" i18n>Public resources</mat-checkbox>\n <span class=\"text-sm text-(--rt-text-secondary) ml-2 mt-1\" i18n>\u6587\u4EF6\u5939\u4E3A\u56FE\u7247\u5185\u5BB9\u65F6, \u8BF7\u53D6\u6D88\u52FE\u9009\u6B64\u9879</span>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] });
1240
1240
  }
1241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StorageFolderCreateComponent, decorators: [{
1241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StorageFolderCreateComponent, decorators: [{
1242
1242
  type: Component,
1243
1243
  args: [{ selector: 'rolatech-storage-folder-create', imports: [MatFormFieldModule, MatInputModule, FormsModule, MatCheckboxModule], template: "<div>\n <mat-form-field>\n <mat-label i18n>Name</mat-label>\n <input matInput placeholder=\"Name\" [(ngModel)]=\"name\" i18n />\n </mat-form-field>\n <div class=\"flex flex-col\">\n <mat-checkbox [(ngModel)]=\"isPublic\" i18n>Public resources</mat-checkbox>\n <span class=\"text-sm text-(--rt-text-secondary) ml-2 mt-1\" i18n>\u6587\u4EF6\u5939\u4E3A\u56FE\u7247\u5185\u5BB9\u65F6, \u8BF7\u53D6\u6D88\u52FE\u9009\u6B64\u9879</span>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
1244
1244
  }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], isPublic: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPublic", required: false }] }], output: [{ type: i0.Output, args: ["output"] }] } });
@@ -1246,21 +1246,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1246
1246
  class MenuUserComponent {
1247
1247
  environment = inject(APP_CONFIG);
1248
1248
  myaccountUrl = this.environment.myaccountUrl;
1249
- user = input(...(ngDevMode ? [undefined, { debugName: "user" }] : []));
1250
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
1251
- subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : []));
1249
+ user = input(...(ngDevMode ? [undefined, { debugName: "user" }] : /* istanbul ignore next */ []));
1250
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
1251
+ subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
1252
1252
  avatar = computed(() => {
1253
1253
  return this.user().avatar;
1254
- }, ...(ngDevMode ? [{ debugName: "avatar" }] : []));
1254
+ }, ...(ngDevMode ? [{ debugName: "avatar" }] : /* istanbul ignore next */ []));
1255
1255
  constructor() {
1256
1256
  // effect(() => {
1257
1257
  // this.data = this.user();
1258
1258
  // });
1259
1259
  }
1260
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MenuUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1261
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MenuUserComponent, isStandalone: true, selector: "rolatech-menu-user", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"min-w-[256px]\">\n @if (user()) {\n <div class=\"px-6 py-3\">\n <div class=\"flex flex-row items-center\">\n <div class=\"mr-3 w-14 h-14 rounded-full bg-(--rt-brand-color)\">\n @if (user().avatar) {\n <img [src]=\"user().avatar\" class=\"w-14 h-14 object-cover rounded-full\" alt />\n }\n </div>\n <div class=\"flex flex-col\">\n <div>\n <div class=\"text-lg font-bold\">{{ title() ? title() : user().name }}</div>\n <div class=\"formated-string\">\n @if (subtitle()) {\n <span>&#64;{{ subtitle() }}</span>\n } @else {\n <span>&#64;{{ user().username }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"flex justify-between items-center\">\n <a mat-menu-item [href]=\"myaccountUrl\" target=\"_blank\" class=\"px-6\">\n <span class=\"flex justify-between items-center\">\n <span class=\"pl-2\" i18n> Manage account </span>\n <span class=\"flex\"> <mat-icon>open_in_new</mat-icon></span>\n </span>\n </a>\n </div>\n</div>\n", styles: ["rolatech-menu-user{background-color:var(--rt-menu-background, #fff);color:var(--rt-text-primary, #000)}.formated-string{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1260
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MenuUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1261
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MenuUserComponent, isStandalone: true, selector: "rolatech-menu-user", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"min-w-[256px]\">\n @if (user()) {\n <div class=\"px-6 py-3\">\n <div class=\"flex flex-row items-center\">\n <div class=\"mr-3 w-14 h-14 rounded-full bg-(--rt-brand-color)\">\n @if (user().avatar) {\n <img [src]=\"user().avatar\" class=\"w-14 h-14 object-cover rounded-full\" alt />\n }\n </div>\n <div class=\"flex flex-col\">\n <div>\n <div class=\"text-lg font-bold\">{{ title() ? title() : user().name }}</div>\n <div class=\"formated-string\">\n @if (subtitle()) {\n <span>&#64;{{ subtitle() }}</span>\n } @else {\n <span>&#64;{{ user().username }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"flex justify-between items-center\">\n <a mat-menu-item [href]=\"myaccountUrl\" target=\"_blank\" class=\"px-6\">\n <span class=\"flex justify-between items-center\">\n <span class=\"pl-2\" i18n> Manage account </span>\n <span class=\"flex\"> <mat-icon>open_in_new</mat-icon></span>\n </span>\n </a>\n </div>\n</div>\n", styles: ["rolatech-menu-user{background-color:var(--rt-menu-background, #fff);color:var(--rt-text-primary, #000)}.formated-string{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1262
1262
  }
1263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MenuUserComponent, decorators: [{
1263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MenuUserComponent, decorators: [{
1264
1264
  type: Component,
1265
1265
  args: [{ imports: [MatMenuModule, MatIconModule], selector: 'rolatech-menu-user', encapsulation: ViewEncapsulation.None, template: "<div class=\"min-w-[256px]\">\n @if (user()) {\n <div class=\"px-6 py-3\">\n <div class=\"flex flex-row items-center\">\n <div class=\"mr-3 w-14 h-14 rounded-full bg-(--rt-brand-color)\">\n @if (user().avatar) {\n <img [src]=\"user().avatar\" class=\"w-14 h-14 object-cover rounded-full\" alt />\n }\n </div>\n <div class=\"flex flex-col\">\n <div>\n <div class=\"text-lg font-bold\">{{ title() ? title() : user().name }}</div>\n <div class=\"formated-string\">\n @if (subtitle()) {\n <span>&#64;{{ subtitle() }}</span>\n } @else {\n <span>&#64;{{ user().username }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"flex justify-between items-center\">\n <a mat-menu-item [href]=\"myaccountUrl\" target=\"_blank\" class=\"px-6\">\n <span class=\"flex justify-between items-center\">\n <span class=\"pl-2\" i18n> Manage account </span>\n <span class=\"flex\"> <mat-icon>open_in_new</mat-icon></span>\n </span>\n </a>\n </div>\n</div>\n", styles: ["rolatech-menu-user{background-color:var(--rt-menu-background, #fff);color:var(--rt-text-primary, #000)}.formated-string{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}\n"] }]
1266
1266
  }], ctorParameters: () => [], propDecorators: { user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }] } });
@@ -1268,9 +1268,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1268
1268
  class WechatConnectDialogComponent {
1269
1269
  dialogRef = inject(MatDialogRef);
1270
1270
  environment = inject(APP_CONFIG);
1271
- appId = model(...(ngDevMode ? [undefined, { debugName: "appId" }] : []));
1272
- redirectUri = model('', ...(ngDevMode ? [{ debugName: "redirectUri" }] : []));
1273
- state = model(...(ngDevMode ? [undefined, { debugName: "state" }] : []));
1271
+ appId = model(...(ngDevMode ? [undefined, { debugName: "appId" }] : /* istanbul ignore next */ []));
1272
+ redirectUri = model('', ...(ngDevMode ? [{ debugName: "redirectUri" }] : /* istanbul ignore next */ []));
1273
+ state = model(...(ngDevMode ? [undefined, { debugName: "state" }] : /* istanbul ignore next */ []));
1274
1274
  urlSafe;
1275
1275
  sanitizer = inject(DomSanitizer);
1276
1276
  baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';
@@ -1292,10 +1292,10 @@ class WechatConnectDialogComponent {
1292
1292
  this.dialogRef.close();
1293
1293
  }
1294
1294
  }
1295
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: WechatConnectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1296
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: WechatConnectDialogComponent, isStandalone: true, selector: "rolatech-wechat-connect-dialog", inputs: { appId: { classPropertyName: "appId", publicName: "appId", isSignal: true, isRequired: false, transformFunction: null }, redirectUri: { classPropertyName: "redirectUri", publicName: "redirectUri", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { appId: "appIdChange", redirectUri: "redirectUriChange", state: "stateChange" }, host: { listeners: { "window:message": "onLogin($event)" } }, ngImport: i0, template: "<div class=\"flex flex-col p-3 items-center\">\n <div class=\"w-[190px] h-[190px]\">\n @if (loaded) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\"></iframe>\n }\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] });
1295
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: WechatConnectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1296
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: WechatConnectDialogComponent, isStandalone: true, selector: "rolatech-wechat-connect-dialog", inputs: { appId: { classPropertyName: "appId", publicName: "appId", isSignal: true, isRequired: false, transformFunction: null }, redirectUri: { classPropertyName: "redirectUri", publicName: "redirectUri", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { appId: "appIdChange", redirectUri: "redirectUriChange", state: "stateChange" }, host: { listeners: { "window:message": "onLogin($event)" } }, ngImport: i0, template: "<div class=\"flex flex-col p-3 items-center\">\n <div class=\"w-[190px] h-[190px]\">\n @if (loaded) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\"></iframe>\n }\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] });
1297
1297
  }
1298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: WechatConnectDialogComponent, decorators: [{
1298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: WechatConnectDialogComponent, decorators: [{
1299
1299
  type: Component,
1300
1300
  args: [{ selector: 'rolatech-wechat-connect-dialog', template: "<div class=\"flex flex-col p-3 items-center\">\n <div class=\"w-[190px] h-[190px]\">\n @if (loaded) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\"></iframe>\n }\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] }]
1301
1301
  }], ctorParameters: () => [], propDecorators: { appId: [{ type: i0.Input, args: [{ isSignal: true, alias: "appId", required: false }] }, { type: i0.Output, args: ["appIdChange"] }], redirectUri: [{ type: i0.Input, args: [{ isSignal: true, alias: "redirectUri", required: false }] }, { type: i0.Output, args: ["redirectUriChange"] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], onLogin: [{
@@ -1367,18 +1367,18 @@ class MediaUploadDialogComponent {
1367
1367
  },
1368
1368
  });
1369
1369
  }
1370
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaUploadDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1371
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MediaUploadDialogComponent, isStandalone: true, selector: "rolatech-media-upload-dialog", ngImport: i0, template: "<mat-dialog-content>\n <div class=\"border-dashed border-2 border-(--rt-border-color) py-12 flex flex-col justify-center items-center\">\n <input #fileInput multiple class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-button (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n <div class=\"mt-4\">\n <h2 class=\"\" i18n>Preview</h2>\n <div>\n <ul id=\"gallery\" class=\"flex flex-1 flex-wrap -m-1\">\n @for (item of preMedia; track item.url; let i = $index) {\n <li class=\"block p-1 w-1/2 sm:w-1/3 md:w-1/4 lg:w-1/6 xl:w-1/8 h-24\">\n <article\n tabindex=\"0\"\n [ngClass]=\"item.isUploading ? 'isUploading' : ''\"\n class=\"group hasImage w-full h-full rounded-md focus:outline-none focus:shadow-outline bg-(--rt-raised-background) cursor-pointer relative text-transparent hover:text-white shadow-sm\"\n >\n <img [src]=\"item.url\" class=\"img-preview w-full h-full sticky object-cover rounded-md bg-fixed\" alt />\n <section class=\"flex flex-col rounded-md text-xs wrap-break-words w-full h-full z-20 absolute top-0 py-2 px-3\">\n @if (item.isUploading) {\n <div class=\"flex justify-center items-center w-full h-full\">\n <mat-spinner color=\"white\" diameter=\"28\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex\">\n <button\n (click)=\"removeImage(i)\"\n class=\"delete ml-auto focus:outline-none hover:bg-(--rt-base-background) p-1 rounded-md\"\n >\n <svg\n class=\"pointer-events-none fill-current w-4 h-4 ml-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n class=\"pointer-events-none\"\n d=\"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\"\n />\n </svg>\n </button>\n </div>\n }\n </section>\n </article>\n </li>\n }\n </ul>\n </div>\n @if (preMedia.length <= 0) {\n <div class=\"flex flex-1 flex-wrap\">\n <div class=\"h-full w-full text-center flex flex-col justify-center items-center py-6\">\n <span class=\"text-small text-(--rt-text-secondary)\">No files selected</span>\n </div>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n @if (preMedia.length <= 0) {\n <button mat-button i18n>Awaiting</button>\n }\n @if (!isFinished && preMedia.length > 0) {\n <button mat-button (click)=\"uploadFiles()\" i18n>Upload</button>\n }\n @if (isFinished) {\n <button mat-button [mat-dialog-close]=\"media\" i18n>Donw</button>\n }\n</mat-dialog-actions>\n", styles: [".hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}.isUploading section{background-color:#05050566}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
1370
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaUploadDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1371
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MediaUploadDialogComponent, isStandalone: true, selector: "rolatech-media-upload-dialog", ngImport: i0, template: "<mat-dialog-content>\n <div class=\"border-dashed border-2 border-(--rt-border-color) py-12 flex flex-col justify-center items-center\">\n <input #fileInput multiple class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-button (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n <div class=\"mt-4\">\n <h2 class=\"\" i18n>Preview</h2>\n <div>\n <ul id=\"gallery\" class=\"flex flex-1 flex-wrap -m-1\">\n @for (item of preMedia; track item.url; let i = $index) {\n <li class=\"block p-1 w-1/2 sm:w-1/3 md:w-1/4 lg:w-1/6 xl:w-1/8 h-24\">\n <article\n tabindex=\"0\"\n [ngClass]=\"item.isUploading ? 'isUploading' : ''\"\n class=\"group hasImage w-full h-full rounded-md focus:outline-none focus:shadow-outline bg-(--rt-raised-background) cursor-pointer relative text-transparent hover:text-white shadow-sm\"\n >\n <img [src]=\"item.url\" class=\"img-preview w-full h-full sticky object-cover rounded-md bg-fixed\" alt />\n <section class=\"flex flex-col rounded-md text-xs wrap-break-words w-full h-full z-20 absolute top-0 py-2 px-3\">\n @if (item.isUploading) {\n <div class=\"flex justify-center items-center w-full h-full\">\n <mat-spinner color=\"white\" diameter=\"28\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex\">\n <button\n (click)=\"removeImage(i)\"\n class=\"delete ml-auto focus:outline-none hover:bg-(--rt-base-background) p-1 rounded-md\"\n >\n <svg\n class=\"pointer-events-none fill-current w-4 h-4 ml-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n class=\"pointer-events-none\"\n d=\"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\"\n />\n </svg>\n </button>\n </div>\n }\n </section>\n </article>\n </li>\n }\n </ul>\n </div>\n @if (preMedia.length <= 0) {\n <div class=\"flex flex-1 flex-wrap\">\n <div class=\"h-full w-full text-center flex flex-col justify-center items-center py-6\">\n <span class=\"text-small text-(--rt-text-secondary)\">No files selected</span>\n </div>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n @if (preMedia.length <= 0) {\n <button mat-button i18n>Awaiting</button>\n }\n @if (!isFinished && preMedia.length > 0) {\n <button mat-button (click)=\"uploadFiles()\" i18n>Upload</button>\n }\n @if (isFinished) {\n <button mat-button [mat-dialog-close]=\"media\" i18n>Donw</button>\n }\n</mat-dialog-actions>\n", styles: [".hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}.isUploading section{background-color:#05050566}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
1372
1372
  }
1373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaUploadDialogComponent, decorators: [{
1373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaUploadDialogComponent, decorators: [{
1374
1374
  type: Component,
1375
1375
  args: [{ selector: 'rolatech-media-upload-dialog', imports: [MatDialogContent, MatButtonModule, NgClass, MatProgressSpinnerModule, MatDialogActions, MatDialogClose], template: "<mat-dialog-content>\n <div class=\"border-dashed border-2 border-(--rt-border-color) py-12 flex flex-col justify-center items-center\">\n <input #fileInput multiple class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-button (click)=\"fileInput.click()\" i18n>Upload</button>\n </div>\n <div class=\"mt-4\">\n <h2 class=\"\" i18n>Preview</h2>\n <div>\n <ul id=\"gallery\" class=\"flex flex-1 flex-wrap -m-1\">\n @for (item of preMedia; track item.url; let i = $index) {\n <li class=\"block p-1 w-1/2 sm:w-1/3 md:w-1/4 lg:w-1/6 xl:w-1/8 h-24\">\n <article\n tabindex=\"0\"\n [ngClass]=\"item.isUploading ? 'isUploading' : ''\"\n class=\"group hasImage w-full h-full rounded-md focus:outline-none focus:shadow-outline bg-(--rt-raised-background) cursor-pointer relative text-transparent hover:text-white shadow-sm\"\n >\n <img [src]=\"item.url\" class=\"img-preview w-full h-full sticky object-cover rounded-md bg-fixed\" alt />\n <section class=\"flex flex-col rounded-md text-xs wrap-break-words w-full h-full z-20 absolute top-0 py-2 px-3\">\n @if (item.isUploading) {\n <div class=\"flex justify-center items-center w-full h-full\">\n <mat-spinner color=\"white\" diameter=\"28\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex\">\n <button\n (click)=\"removeImage(i)\"\n class=\"delete ml-auto focus:outline-none hover:bg-(--rt-base-background) p-1 rounded-md\"\n >\n <svg\n class=\"pointer-events-none fill-current w-4 h-4 ml-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n class=\"pointer-events-none\"\n d=\"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\"\n />\n </svg>\n </button>\n </div>\n }\n </section>\n </article>\n </li>\n }\n </ul>\n </div>\n @if (preMedia.length <= 0) {\n <div class=\"flex flex-1 flex-wrap\">\n <div class=\"h-full w-full text-center flex flex-col justify-center items-center py-6\">\n <span class=\"text-small text-(--rt-text-secondary)\">No files selected</span>\n </div>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n @if (preMedia.length <= 0) {\n <button mat-button i18n>Awaiting</button>\n }\n @if (!isFinished && preMedia.length > 0) {\n <button mat-button (click)=\"uploadFiles()\" i18n>Upload</button>\n }\n @if (isFinished) {\n <button mat-button [mat-dialog-close]=\"media\" i18n>Donw</button>\n }\n</mat-dialog-actions>\n", styles: [".hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}.isUploading section{background-color:#05050566}\n"] }]
1376
1376
  }] });
1377
1377
 
1378
1378
  class MediaListComponent {
1379
- isUploading = input(...(ngDevMode ? [undefined, { debugName: "isUploading" }] : []));
1380
- media = input(...(ngDevMode ? [undefined, { debugName: "media" }] : []));
1381
- showAdd = input(true, ...(ngDevMode ? [{ debugName: "showAdd" }] : []));
1379
+ isUploading = input(...(ngDevMode ? [undefined, { debugName: "isUploading" }] : /* istanbul ignore next */ []));
1380
+ media = input(...(ngDevMode ? [undefined, { debugName: "media" }] : /* istanbul ignore next */ []));
1381
+ showAdd = input(true, ...(ngDevMode ? [{ debugName: "showAdd" }] : /* istanbul ignore next */ []));
1382
1382
  mediaItemClick = output();
1383
1383
  upload = output();
1384
1384
  onMediaItemClick(item) {
@@ -1387,10 +1387,10 @@ class MediaListComponent {
1387
1387
  onUpload(event) {
1388
1388
  this.upload.emit(event);
1389
1389
  }
1390
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1391
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MediaListComponent, isStandalone: true, selector: "rolatech-media-list", inputs: { isUploading: { classPropertyName: "isUploading", publicName: "isUploading", isSignal: true, isRequired: false, transformFunction: null }, media: { classPropertyName: "media", publicName: "media", isSignal: true, isRequired: false, transformFunction: null }, showAdd: { classPropertyName: "showAdd", publicName: "showAdd", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, host: { attributes: { "id": "rolatech-media-list" }, classAttribute: "rolatech-media-list" }, ngImport: i0, template: "<div class=\"flex flex-row flex-wrap box-border items-center\">\n <div class=\"flex flex-row flex-wrap box-border items-center w-full\">\n <ng-content></ng-content>\n @if (showAdd()) {\n <div class=\"upload-button\">\n @if (!isUploading()) {\n <div\n class=\"flex flex-col items-center justify-center border border-(--rt-border-color) border-dashed rounded-md aspect-video cursor-pointer\"\n (click)=\"fileInput.click()\"\n >\n <input\n style=\"display: none\"\n type=\"file\"\n accept=\"image/*, video/*\"\n (change)=\"onUpload($event)\"\n #fileInput\n multiple\n />\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n }\n <div class=\"w-full py-1\">\n @if (isUploading()) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["rolatech-media-list{--rt-media-items-per-row: 1;--rt-media-item-margin: 16px}rolatech-media-list-item:before{border-radius:12px}.upload-button{margin-left:calc(var(--rt-media-item-margin) / 2);margin-right:calc(var(--rt-media-item-margin) / 2);margin-bottom:var(--rt-media-item-margin);width:calc(100% / var(--rt-media-items-per-row) - var(--rt-media-item-margin))}rolatech-media-list:not([list]){--rt-media-items-per-row: 2}rolatech-media-list:not([list]) rolatech-media-list-item{margin-bottom:16px}@media(min-width:600px){rolatech-media-list:not([list]){--rt-media-items-per-row: 2}}@media(min-width:768px){rolatech-media-list:not([list]){--rt-media-items-per-row: 2}}@media(min-width:1280px){rolatech-media-list:not([list]){--rt-media-items-per-row: 3}}@media(min-width:1536px){rolatech-media-list:not([list]){--rt-media-items-per-row: 4}}@media(min-width:1920px){rolatech-media-list:not([list]){--rt-media-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], encapsulation: i0.ViewEncapsulation.None });
1390
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1391
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MediaListComponent, isStandalone: true, selector: "rolatech-media-list", inputs: { isUploading: { classPropertyName: "isUploading", publicName: "isUploading", isSignal: true, isRequired: false, transformFunction: null }, media: { classPropertyName: "media", publicName: "media", isSignal: true, isRequired: false, transformFunction: null }, showAdd: { classPropertyName: "showAdd", publicName: "showAdd", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, host: { attributes: { "id": "rolatech-media-list" }, classAttribute: "rolatech-media-list" }, ngImport: i0, template: "<div class=\"flex flex-row flex-wrap box-border items-center\">\n <div class=\"flex flex-row flex-wrap box-border items-center w-full\">\n <ng-content></ng-content>\n @if (showAdd()) {\n <div class=\"upload-button\">\n @if (!isUploading()) {\n <div\n class=\"flex flex-col items-center justify-center border border-(--rt-border-color) border-dashed rounded-md aspect-video cursor-pointer\"\n (click)=\"fileInput.click()\"\n >\n <input\n style=\"display: none\"\n type=\"file\"\n accept=\"image/*, video/*\"\n (change)=\"onUpload($event)\"\n #fileInput\n multiple\n />\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n }\n <div class=\"w-full py-1\">\n @if (isUploading()) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["rolatech-media-list{--rt-media-items-per-row: 1;--rt-media-item-margin: 16px}rolatech-media-list-item:before{border-radius:12px}.upload-button{margin-left:calc(var(--rt-media-item-margin) / 2);margin-right:calc(var(--rt-media-item-margin) / 2);margin-bottom:var(--rt-media-item-margin);width:calc(100% / var(--rt-media-items-per-row) - var(--rt-media-item-margin))}rolatech-media-list:not([list]){--rt-media-items-per-row: 2}rolatech-media-list:not([list]) rolatech-media-list-item{margin-bottom:16px}@media(min-width:600px){rolatech-media-list:not([list]){--rt-media-items-per-row: 2}}@media(min-width:768px){rolatech-media-list:not([list]){--rt-media-items-per-row: 2}}@media(min-width:1280px){rolatech-media-list:not([list]){--rt-media-items-per-row: 3}}@media(min-width:1536px){rolatech-media-list:not([list]){--rt-media-items-per-row: 4}}@media(min-width:1920px){rolatech-media-list:not([list]){--rt-media-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], encapsulation: i0.ViewEncapsulation.None });
1392
1392
  }
1393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaListComponent, decorators: [{
1393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaListComponent, decorators: [{
1394
1394
  type: Component,
1395
1395
  args: [{ selector: 'rolatech-media-list', imports: [MatProgressBarModule], encapsulation: ViewEncapsulation.None, host: {
1396
1396
  id: 'rolatech-media-list',
@@ -1399,9 +1399,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1399
1399
  }], propDecorators: { isUploading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isUploading", required: false }] }], media: [{ type: i0.Input, args: [{ isSignal: true, alias: "media", required: false }] }], showAdd: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAdd", required: false }] }], mediaItemClick: [{ type: i0.Output, args: ["mediaItemClick"] }], upload: [{ type: i0.Output, args: ["upload"] }] } });
1400
1400
 
1401
1401
  class MediaListItemComponent {
1402
- media = input.required(...(ngDevMode ? [{ debugName: "media" }] : []));
1403
- uploadProgress = input(0, ...(ngDevMode ? [{ debugName: "uploadProgress" }] : []));
1404
- uploading = input(false, ...(ngDevMode ? [{ debugName: "uploading" }] : []));
1402
+ media = input.required(...(ngDevMode ? [{ debugName: "media" }] : /* istanbul ignore next */ []));
1403
+ uploadProgress = input(0, ...(ngDevMode ? [{ debugName: "uploadProgress" }] : /* istanbul ignore next */ []));
1404
+ uploading = input(false, ...(ngDevMode ? [{ debugName: "uploading" }] : /* istanbul ignore next */ []));
1405
1405
  mediaItemClick = output();
1406
1406
  deleteMedia = output();
1407
1407
  onMediaItemClick(event) {
@@ -1410,10 +1410,10 @@ class MediaListItemComponent {
1410
1410
  onDeleteMedia(media) {
1411
1411
  this.deleteMedia.emit(media);
1412
1412
  }
1413
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1414
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: MediaListItemComponent, isStandalone: true, selector: "rolatech-media-list-item", inputs: { media: { classPropertyName: "media", publicName: "media", isSignal: true, isRequired: true, transformFunction: null }, uploadProgress: { classPropertyName: "uploadProgress", publicName: "uploadProgress", isSignal: true, isRequired: false, transformFunction: null }, uploading: { classPropertyName: "uploading", publicName: "uploading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", deleteMedia: "deleteMedia" }, host: { attributes: { "id": "rolatech-media-list-item" }, classAttribute: "rolatech-media-list-item" }, ngImport: i0, template: "<div\n class=\"group media-list-item rounded-md relative hasImage focus:outline-none focus:shadow-outline bg-(--rt-raised-background) cursor-pointer text-transparent hover:text-white shadow-sm\"\n>\n <div class=\"absolute z-30 right-0 p-1 group-hover:bg-white\">\n <div class=\"flex-1\"></div>\n <div class=\"w-full\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"beforeMenu\"\n class=\"ml-auto focus:outline-none hover:bg-(--rt-base-background) p-1 group-hover:bg-white\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"onDeleteMedia(media())\">\n <span i18n>Delete</span>\n </button>\n </mat-menu>\n </div>\n </div>\n <div id=\"thumbnail\" class=\"thumbnail\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media().url\" [alt]=\"media().alt\" />\n </div>\n <section\n (click)=\"onMediaItemClick(media())\"\n class=\"flex flex-col text-xs wrap-break-words w-full h-full z-20 absolute top-0\"\n ></section>\n</div>\n<div class=\"w-full py-1\">\n @if (uploading()) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n</div>\n", styles: ["rolatech-media-list-item{--rt-media-item-margin: 16px;margin-left:calc(var(--rt-media-item-margin) / 2);margin-right:calc(var(--rt-media-item-margin) / 2);width:calc(100% / var(--rt-media-items-per-row) - var(--rt-media-item-margin))}.media-list-item{cursor:pointer;width:100%;aspect-ratio:16/9}.tile-media{height:100%;width:100%;object-fit:cover;display:inline-block;background-color:transparent}#thumbnail.thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block;position:absolute;border-radius:8px;inset:0}.hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}rolatech-media-list-item{--rt-media-item-margin: 16px;display:flex;position:relative;cursor:pointer;flex-direction:column;margin-left:calc(var(--rt-media-item-margin) / 2);margin-right:calc(var(--rt-media-item-margin) / 2);width:calc(100% / var(--rt-media-items-per-row) - var(--rt-media-item-margin))}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], encapsulation: i0.ViewEncapsulation.None });
1413
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1414
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: MediaListItemComponent, isStandalone: true, selector: "rolatech-media-list-item", inputs: { media: { classPropertyName: "media", publicName: "media", isSignal: true, isRequired: true, transformFunction: null }, uploadProgress: { classPropertyName: "uploadProgress", publicName: "uploadProgress", isSignal: true, isRequired: false, transformFunction: null }, uploading: { classPropertyName: "uploading", publicName: "uploading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", deleteMedia: "deleteMedia" }, host: { attributes: { "id": "rolatech-media-list-item" }, classAttribute: "rolatech-media-list-item" }, ngImport: i0, template: "<div\n class=\"group media-list-item rounded-md relative hasImage focus:outline-none focus:shadow-outline bg-(--rt-raised-background) cursor-pointer text-transparent hover:text-white shadow-sm\"\n>\n <div class=\"absolute z-30 right-0 p-1 group-hover:bg-white\">\n <div class=\"flex-1\"></div>\n <div class=\"w-full\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"beforeMenu\"\n class=\"ml-auto focus:outline-none hover:bg-(--rt-base-background) p-1 group-hover:bg-white\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"onDeleteMedia(media())\">\n <span i18n>Delete</span>\n </button>\n </mat-menu>\n </div>\n </div>\n <div id=\"thumbnail\" class=\"thumbnail\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media().url\" [alt]=\"media().alt\" />\n </div>\n <section\n (click)=\"onMediaItemClick(media())\"\n class=\"flex flex-col text-xs wrap-break-words w-full h-full z-20 absolute top-0\"\n ></section>\n</div>\n<div class=\"w-full py-1\">\n @if (uploading()) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n</div>\n", styles: ["rolatech-media-list-item{--rt-media-item-margin: 16px;margin-left:calc(var(--rt-media-item-margin) / 2);margin-right:calc(var(--rt-media-item-margin) / 2);width:calc(100% / var(--rt-media-items-per-row) - var(--rt-media-item-margin))}.media-list-item{cursor:pointer;width:100%;aspect-ratio:16/9}.tile-media{height:100%;width:100%;object-fit:cover;display:inline-block;background-color:transparent}#thumbnail.thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block;position:absolute;border-radius:8px;inset:0}.hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}rolatech-media-list-item{--rt-media-item-margin: 16px;display:flex;position:relative;cursor:pointer;flex-direction:column;margin-left:calc(var(--rt-media-item-margin) / 2);margin-right:calc(var(--rt-media-item-margin) / 2);width:calc(100% / var(--rt-media-items-per-row) - var(--rt-media-item-margin))}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], encapsulation: i0.ViewEncapsulation.None });
1415
1415
  }
1416
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaListItemComponent, decorators: [{
1416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaListItemComponent, decorators: [{
1417
1417
  type: Component,
1418
1418
  args: [{ selector: 'rolatech-media-list-item', imports: [MatButtonModule, MatMenuModule, MatIconModule, MatProgressBar], encapsulation: ViewEncapsulation.None, host: {
1419
1419
  id: 'rolatech-media-list-item',
@@ -1442,10 +1442,10 @@ class NotFoundComponent {
1442
1442
  homeUrl() {
1443
1443
  return this.language.currentOption().routePrefix;
1444
1444
  }
1445
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1446
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: NotFoundComponent, isStandalone: true, selector: "rolatech-not-found", ngImport: i0, template: "<div class=\"not-found-content\">\n <p>\n <b>404.</b>\n <ins>That\u2019s an error.</ins>\n </p>\n <p>\n The requested URL <code>{{ url }}</code> not found on this server.\n </p>\n <a [href]=\"homeUrl()\">return home</a>\n</div>\n", styles: ["p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}.not-found-content{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}.not-found-content a{text-decoration:underline}\n"] });
1445
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: NotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1446
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: NotFoundComponent, isStandalone: true, selector: "rolatech-not-found", ngImport: i0, template: "<div class=\"not-found-content\">\n <p>\n <b>404.</b>\n <ins>That\u2019s an error.</ins>\n </p>\n <p>\n The requested URL <code>{{ url }}</code> not found on this server.\n </p>\n <a [href]=\"homeUrl()\">return home</a>\n</div>\n", styles: ["p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}.not-found-content{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}.not-found-content a{text-decoration:underline}\n"] });
1447
1447
  }
1448
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NotFoundComponent, decorators: [{
1448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: NotFoundComponent, decorators: [{
1449
1449
  type: Component,
1450
1450
  args: [{ selector: 'rolatech-not-found', template: "<div class=\"not-found-content\">\n <p>\n <b>404.</b>\n <ins>That\u2019s an error.</ins>\n </p>\n <p>\n The requested URL <code>{{ url }}</code> not found on this server.\n </p>\n <a [href]=\"homeUrl()\">return home</a>\n</div>\n", styles: ["p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}.not-found-content{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}.not-found-content a{text-decoration:underline}\n"] }]
1451
1451
  }], ctorParameters: () => [] });
@@ -1456,10 +1456,10 @@ class ConfirmationDialogComponent {
1456
1456
  onNoClick() {
1457
1457
  this.dialogRef.close();
1458
1458
  }
1459
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1460
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ConfirmationDialogComponent, isStandalone: true, selector: "rolatech-confirmation-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n {{ data.message }}\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial i18n>Ok</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
1459
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1460
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ConfirmationDialogComponent, isStandalone: true, selector: "rolatech-confirmation-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n {{ data.message }}\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial i18n>Ok</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
1461
1461
  }
1462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
1462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
1463
1463
  type: Component,
1464
1464
  args: [{ selector: 'rolatech-confirmation-dialog', imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButtonModule, MatDialogClose], template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n {{ data.message }}\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial i18n>Ok</button>\n</div>\n" }]
1465
1465
  }] });
@@ -1537,29 +1537,29 @@ class LocationSelectorComponent {
1537
1537
  });
1538
1538
  }
1539
1539
  selectionChange(event) { }
1540
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: LocationSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1541
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: LocationSelectorComponent, isStandalone: true, selector: "rolatech-location-selector", outputs: { output: "output" }, ngImport: i0, template: "<div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label>\u57CE\u5E02</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-(--rt-raised-background)\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:-1.25em}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }] });
1540
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: LocationSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1541
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: LocationSelectorComponent, isStandalone: true, selector: "rolatech-location-selector", outputs: { output: "output" }, ngImport: i0, template: "<div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label>\u57CE\u5E02</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-(--rt-raised-background)\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:-1.25em}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }] });
1542
1542
  }
1543
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: LocationSelectorComponent, decorators: [{
1543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: LocationSelectorComponent, decorators: [{
1544
1544
  type: Component,
1545
1545
  args: [{ selector: 'rolatech-location-selector', imports: [MatFormFieldModule, MatSelectModule, FormsModule, MatOptionModule, MatInputModule, MatIconModule, MatButtonModule], template: "<div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label>\u57CE\u5E02</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-(--rt-raised-background)\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:-1.25em}\n"] }]
1546
1546
  }], propDecorators: { output: [{ type: i0.Output, args: ["output"] }] } });
1547
1547
 
1548
1548
  class FilterComponent {
1549
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1550
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: FilterComponent, isStandalone: true, selector: "rolatech-filter", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1549
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1550
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: FilterComponent, isStandalone: true, selector: "rolatech-filter", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1551
1551
  }
1552
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FilterComponent, decorators: [{
1552
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FilterComponent, decorators: [{
1553
1553
  type: Component,
1554
1554
  args: [{ selector: 'rolatech-filter', imports: [CommonModule], template: "<ng-content></ng-content>\n" }]
1555
1555
  }] });
1556
1556
 
1557
1557
  class ConfirmationComponent {
1558
- message = model(...(ngDevMode ? [undefined, { debugName: "message" }] : []));
1559
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConfirmationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1560
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: ConfirmationComponent, isStandalone: true, selector: "rolatech-confirmation", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { message: "messageChange" }, ngImport: i0, template: "<div>\n {{ message() }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1558
+ message = model(...(ngDevMode ? [undefined, { debugName: "message" }] : /* istanbul ignore next */ []));
1559
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConfirmationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1560
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ConfirmationComponent, isStandalone: true, selector: "rolatech-confirmation", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { message: "messageChange" }, ngImport: i0, template: "<div>\n {{ message() }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1561
1561
  }
1562
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConfirmationComponent, decorators: [{
1562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConfirmationComponent, decorators: [{
1563
1563
  type: Component,
1564
1564
  args: [{ selector: 'rolatech-confirmation', imports: [CommonModule], template: "<div>\n {{ message() }}\n</div>\n" }]
1565
1565
  }], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }, { type: i0.Output, args: ["messageChange"] }] } });
@@ -1570,7 +1570,7 @@ class SearchIcon {
1570
1570
  placeholder = 'Search titles, people, genres';
1571
1571
  /** query param name to write, e.g. "q" */
1572
1572
  param = 'q';
1573
- open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
1573
+ open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
1574
1574
  model = {};
1575
1575
  qInput;
1576
1576
  toggle() {
@@ -1598,10 +1598,10 @@ class SearchIcon {
1598
1598
  if (this.open())
1599
1599
  this.close();
1600
1600
  }
1601
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SearchIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
1602
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SearchIcon, isStandalone: true, selector: "rolatech-search-icon", inputs: { placeholder: "placeholder", param: "param" }, host: { listeners: { "document:keydown.escape": "onDocEsc()" } }, viewQueries: [{ propertyName: "qInput", first: true, predicate: ["qInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"absolute right-0 top-1/2 -translate-y-1/2 z-50 flex items-center gap-2 h-9 px-2 rounded-md border border-transparent bg-transparent shadow-none transition-all duration-300 ease-out\"\n [ngClass]=\"{\n 'w-9': !open(),\n 'w-[min(92vw,520px)]': open(),\n 'bg-black/80': open(),\n 'border-white/50': open(),\n 'shadow-lg': open()\n }\"\n (keydown.escape)=\"close()\"\n>\n <!-- leading icon -->\n <!-- <svg class=\"w-5 h-5 text-white/90 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 21l-4.35-4.35m1.1-5.4a7.5 7.5 0 11-15 0 7.5 7.5 0 0115 0z\" />\n </svg> -->\n <mat-icon>search</mat-icon>\n\n <!-- input -->\n <input\n #qInput\n class=\"border-0 outline-none bg-transparent text-white text-sm transition-all duration-300 ease-out\"\n [ngClass]=\"{\n 'w-0 opacity-0': !open(),\n 'w-full opacity-100': open()\n }\"\n [placeholder]=\"placeholder\"\n [value]=\"model.q ?? ''\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"submit()\"\n />\n\n <!-- clear -->\n @if (open() && (model.q?.length ?? 0) > 0) {\n <button\n type=\"button\"\n class=\"min-w-0 w-8 h-8 grid place-items-center rounded-full hover:bg-white/10\"\n (click)=\"clear()\"\n aria-label=\"Clear\"\n >\n <!-- <svg class=\"w-4 h-4 text-white/80\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg> -->\n <mat-icon>search</mat-icon>\n </button>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1601
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SearchIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
1602
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SearchIcon, isStandalone: true, selector: "rolatech-search-icon", inputs: { placeholder: "placeholder", param: "param" }, host: { listeners: { "document:keydown.escape": "onDocEsc()" } }, viewQueries: [{ propertyName: "qInput", first: true, predicate: ["qInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"absolute right-0 top-1/2 -translate-y-1/2 z-50 flex items-center gap-2 h-9 px-2 rounded-md border border-transparent bg-transparent shadow-none transition-all duration-300 ease-out\"\n [ngClass]=\"{\n 'w-9': !open(),\n 'w-[min(92vw,520px)]': open(),\n 'bg-black/80': open(),\n 'border-white/50': open(),\n 'shadow-lg': open()\n }\"\n (keydown.escape)=\"close()\"\n>\n <!-- leading icon -->\n <!-- <svg class=\"w-5 h-5 text-white/90 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 21l-4.35-4.35m1.1-5.4a7.5 7.5 0 11-15 0 7.5 7.5 0 0115 0z\" />\n </svg> -->\n <mat-icon>search</mat-icon>\n\n <!-- input -->\n <input\n #qInput\n class=\"border-0 outline-none bg-transparent text-white text-sm transition-all duration-300 ease-out\"\n [ngClass]=\"{\n 'w-0 opacity-0': !open(),\n 'w-full opacity-100': open()\n }\"\n [placeholder]=\"placeholder\"\n [value]=\"model.q ?? ''\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"submit()\"\n />\n\n <!-- clear -->\n @if (open() && (model.q?.length ?? 0) > 0) {\n <button\n type=\"button\"\n class=\"min-w-0 w-8 h-8 grid place-items-center rounded-full hover:bg-white/10\"\n (click)=\"clear()\"\n aria-label=\"Clear\"\n >\n <!-- <svg class=\"w-4 h-4 text-white/80\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg> -->\n <mat-icon>search</mat-icon>\n </button>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1603
1603
  }
1604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SearchIcon, decorators: [{
1604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SearchIcon, decorators: [{
1605
1605
  type: Component,
1606
1606
  args: [{ selector: 'rolatech-search-icon', imports: [MatButtonModule, MatIcon, CommonModule], template: "<div\n class=\"absolute right-0 top-1/2 -translate-y-1/2 z-50 flex items-center gap-2 h-9 px-2 rounded-md border border-transparent bg-transparent shadow-none transition-all duration-300 ease-out\"\n [ngClass]=\"{\n 'w-9': !open(),\n 'w-[min(92vw,520px)]': open(),\n 'bg-black/80': open(),\n 'border-white/50': open(),\n 'shadow-lg': open()\n }\"\n (keydown.escape)=\"close()\"\n>\n <!-- leading icon -->\n <!-- <svg class=\"w-5 h-5 text-white/90 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 21l-4.35-4.35m1.1-5.4a7.5 7.5 0 11-15 0 7.5 7.5 0 0115 0z\" />\n </svg> -->\n <mat-icon>search</mat-icon>\n\n <!-- input -->\n <input\n #qInput\n class=\"border-0 outline-none bg-transparent text-white text-sm transition-all duration-300 ease-out\"\n [ngClass]=\"{\n 'w-0 opacity-0': !open(),\n 'w-full opacity-100': open()\n }\"\n [placeholder]=\"placeholder\"\n [value]=\"model.q ?? ''\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"submit()\"\n />\n\n <!-- clear -->\n @if (open() && (model.q?.length ?? 0) > 0) {\n <button\n type=\"button\"\n class=\"min-w-0 w-8 h-8 grid place-items-center rounded-full hover:bg-white/10\"\n (click)=\"clear()\"\n aria-label=\"Clear\"\n >\n <!-- <svg class=\"w-4 h-4 text-white/80\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg> -->\n <mat-icon>search</mat-icon>\n </button>\n }\n</div>\n" }]
1607
1607
  }], propDecorators: { placeholder: [{
@@ -1617,8 +1617,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1617
1617
  }] } });
1618
1618
 
1619
1619
  class SearchBar {
1620
- placeholder = input('Search...', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
1621
- show = model(false, ...(ngDevMode ? [{ debugName: "show" }] : []));
1620
+ placeholder = input('Search...', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
1621
+ show = model(false, ...(ngDevMode ? [{ debugName: "show" }] : /* istanbul ignore next */ []));
1622
1622
  search = output();
1623
1623
  close = output();
1624
1624
  isComposing = false;
@@ -1651,10 +1651,10 @@ class SearchBar {
1651
1651
  onCompositionEnd() {
1652
1652
  this.isComposing = false;
1653
1653
  }
1654
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SearchBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
1655
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SearchBar, isStandalone: true, selector: "rolatech-search-bar", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { show: "showChange", search: "search", close: "close" }, viewQueries: [{ propertyName: "qInput", first: true, predicate: ["qInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (show()) {\n<div class=\"p-2 flex flex-row items-center justify-between\" animate.enter=\"expanded\">\n <mat-form-field appearance=\"fill\" class=\"w-full\" subscriptSizing=\"dynamic\">\n <mat-icon matPrefix>search</mat-icon>\n <input\n #qInput\n matInput\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"text\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n />\n @if (qInput.value.length) {\n <button matSuffix mat-icon-button type=\"button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n</div>\n}\n", styles: [".collapsed{transition:.5s cubic-bezier(.4,0,.2,1);height:\"0px\";min-height:\"0\"}.expanded{transition:.5s cubic-bezier(.4,0,.2,1);height:fit-content}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1654
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SearchBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
1655
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SearchBar, isStandalone: true, selector: "rolatech-search-bar", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { show: "showChange", search: "search", close: "close" }, viewQueries: [{ propertyName: "qInput", first: true, predicate: ["qInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (show()) {\n<div class=\"p-2 flex flex-row items-center justify-between\" animate.enter=\"expanded\">\n <mat-form-field appearance=\"fill\" class=\"w-full\" subscriptSizing=\"dynamic\">\n <mat-icon matPrefix>search</mat-icon>\n <input\n #qInput\n matInput\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"text\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n />\n @if (qInput.value.length) {\n <button matSuffix mat-icon-button type=\"button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n</div>\n}\n", styles: [".collapsed{transition:.5s cubic-bezier(.4,0,.2,1);height:\"0px\";min-height:\"0\"}.expanded{transition:.5s cubic-bezier(.4,0,.2,1);height:fit-content}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1656
1656
  }
1657
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SearchBar, decorators: [{
1657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SearchBar, decorators: [{
1658
1658
  type: Component,
1659
1659
  args: [{ selector: 'rolatech-search-bar', imports: [MatButtonModule, MatIcon, MatFormFieldModule, MatInputModule, FormsModule], template: "@if (show()) {\n<div class=\"p-2 flex flex-row items-center justify-between\" animate.enter=\"expanded\">\n <mat-form-field appearance=\"fill\" class=\"w-full\" subscriptSizing=\"dynamic\">\n <mat-icon matPrefix>search</mat-icon>\n <input\n #qInput\n matInput\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"text\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n />\n @if (qInput.value.length) {\n <button matSuffix mat-icon-button type=\"button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n</div>\n}\n", styles: [".collapsed{transition:.5s cubic-bezier(.4,0,.2,1);height:\"0px\";min-height:\"0\"}.expanded{transition:.5s cubic-bezier(.4,0,.2,1);height:fit-content}\n"] }]
1660
1660
  }], ctorParameters: () => [], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], show: [{ type: i0.Input, args: [{ isSignal: true, alias: "show", required: false }] }, { type: i0.Output, args: ["showChange"] }], search: [{ type: i0.Output, args: ["search"] }], close: [{ type: i0.Output, args: ["close"] }], qInput: [{ type: i0.ViewChild, args: ['qInput', { isSignal: true }] }] } });
@@ -1674,32 +1674,42 @@ class BaseComponent {
1674
1674
  }
1675
1675
 
1676
1676
  class Loading extends BaseComponent {
1677
- loadingSignal = signal(false, ...(ngDevMode ? [{ debugName: "loadingSignal" }] : []));
1677
+ loadingSignal = signal(false, ...(ngDevMode ? [{ debugName: "loadingSignal" }] : /* istanbul ignore next */ []));
1678
1678
  set loading(value) {
1679
1679
  this.loadingSignal.set(!!value);
1680
1680
  }
1681
1681
  get loading() {
1682
1682
  return this.loadingSignal;
1683
1683
  }
1684
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: Loading, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1685
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: Loading, isStandalone: true, inputs: { loading: "loading" }, usesInheritance: true, ngImport: i0 });
1684
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Loading, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1685
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: Loading, isStandalone: true, inputs: { loading: "loading" }, usesInheritance: true, ngImport: i0 });
1686
1686
  }
1687
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: Loading, decorators: [{
1687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Loading, decorators: [{
1688
1688
  type: Directive
1689
1689
  }], propDecorators: { loading: [{
1690
1690
  type: Input
1691
1691
  }] } });
1692
1692
 
1693
+ class Breadcrumb {
1694
+ items = input.required(...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
1695
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Breadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Component });
1696
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: Breadcrumb, isStandalone: true, selector: "rolatech-breadcrumb", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n @for (item of items(); track item.label; let last = $last) { @if (item.link && !last) {\n <a class=\"breadcrumb__link\" [routerLink]=\"item.link\"> {{ item.label }} </a>\n } @else {\n <span class=\"breadcrumb__current\"> {{ item.label }} </span>\n } @if (!last) {\n <mat-icon class=\"breadcrumb__separator\">chevron_right</mat-icon>\n } }\n</nav>\n", styles: [":host{display:block}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;color:var(--rt-text-secondary);font-size:.85rem;line-height:1.4}.breadcrumb__link,.breadcrumb__current{border-radius:9999px;padding:.3rem .75rem}.breadcrumb__link{color:var(--rt-text-primary);background:color-mix(in srgb,var(--rt-10-percent-layer, rgba(15, 23, 42, .08)) 70%,transparent);text-decoration:none;transition:background .2s ease,color .2s ease}.breadcrumb__link:hover{background:color-mix(in srgb,var(--rt-brand-color) 14%,transparent);color:var(--rt-brand-color)}.breadcrumb__current{color:var(--rt-brand-color);background:color-mix(in srgb,var(--rt-brand-color) 16%,transparent);font-weight:600}.breadcrumb__separator{width:1rem;height:1rem;font-size:1rem;color:color-mix(in srgb,var(--rt-text-secondary) 58%,transparent)}\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: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
1697
+ }
1698
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Breadcrumb, decorators: [{
1699
+ type: Component,
1700
+ args: [{ selector: 'rolatech-breadcrumb', imports: [CommonModule, RouterLink, MatIconModule], template: "<nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n @for (item of items(); track item.label; let last = $last) { @if (item.link && !last) {\n <a class=\"breadcrumb__link\" [routerLink]=\"item.link\"> {{ item.label }} </a>\n } @else {\n <span class=\"breadcrumb__current\"> {{ item.label }} </span>\n } @if (!last) {\n <mat-icon class=\"breadcrumb__separator\">chevron_right</mat-icon>\n } }\n</nav>\n", styles: [":host{display:block}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;color:var(--rt-text-secondary);font-size:.85rem;line-height:1.4}.breadcrumb__link,.breadcrumb__current{border-radius:9999px;padding:.3rem .75rem}.breadcrumb__link{color:var(--rt-text-primary);background:color-mix(in srgb,var(--rt-10-percent-layer, rgba(15, 23, 42, .08)) 70%,transparent);text-decoration:none;transition:background .2s ease,color .2s ease}.breadcrumb__link:hover{background:color-mix(in srgb,var(--rt-brand-color) 14%,transparent);color:var(--rt-brand-color)}.breadcrumb__current{color:var(--rt-brand-color);background:color-mix(in srgb,var(--rt-brand-color) 16%,transparent);font-weight:600}.breadcrumb__separator{width:1rem;height:1rem;font-size:1rem;color:color-mix(in srgb,var(--rt-text-secondary) 58%,transparent)}\n"] }]
1701
+ }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }] } });
1702
+
1693
1703
  class TableComponent {
1694
- dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
1704
+ dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
1695
1705
  displayedColumns = [];
1696
1706
  ngOnInit() {
1697
1707
  this.displayedColumns = map$1(this.dataSource().columns, 'ref');
1698
1708
  }
1699
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1700
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: TableComponent, isStandalone: true, selector: "rolatech-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource().data\">\n @for (column of dataSource().columns; track $index) {\n <ng-container [matColumnDef]=\"column.ref\" sticky>\n <th mat-header-cell *matHeaderCellDef>{{ column.name }}</th>\n <td mat-cell *matCellDef=\"let item\">{{ item[column.ref] }}</td>\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1$5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: RouterModule }] });
1709
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1710
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TableComponent, isStandalone: true, selector: "rolatech-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource().data\">\n @for (column of dataSource().columns; track $index) {\n <ng-container [matColumnDef]=\"column.ref\" sticky>\n <th mat-header-cell *matHeaderCellDef>{{ column.name }}</th>\n <td mat-cell *matCellDef=\"let item\">{{ item[column.ref] }}</td>\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1$5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: RouterModule }] });
1701
1711
  }
1702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableComponent, decorators: [{
1712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TableComponent, decorators: [{
1703
1713
  type: Component,
1704
1714
  args: [{ selector: 'rolatech-table', imports: [CommonModule, MatTableModule, RouterModule], template: "<table mat-table [dataSource]=\"dataSource().data\">\n @for (column of dataSource().columns; track $index) {\n <ng-container [matColumnDef]=\"column.ref\" sticky>\n <th mat-header-cell *matHeaderCellDef>{{ column.name }}</th>\n <td mat-cell *matCellDef=\"let item\">{{ item[column.ref] }}</td>\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>\n" }]
1705
1715
  }], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }] } });
@@ -1707,19 +1717,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1707
1717
  class PaginatorComponent {
1708
1718
  prevClick() { }
1709
1719
  nextClick() { }
1710
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1711
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: PaginatorComponent, isStandalone: true, selector: "rolatech-paginator", ngImport: i0, template: "<div class=\"flex h-14 items-center\">\n <button mat-icon-button (click)=\"prevClick()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div></div>\n <button mat-icon-button (click)=\"nextClick()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1720
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1721
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: PaginatorComponent, isStandalone: true, selector: "rolatech-paginator", ngImport: i0, template: "<div class=\"flex h-14 items-center\">\n <button mat-icon-button (click)=\"prevClick()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div></div>\n <button mat-icon-button (click)=\"nextClick()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1712
1722
  }
1713
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PaginatorComponent, decorators: [{
1723
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PaginatorComponent, decorators: [{
1714
1724
  type: Component,
1715
1725
  args: [{ selector: 'rolatech-paginator', imports: [CommonModule, MatButtonModule, MatIconModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex h-14 items-center\">\n <button mat-icon-button (click)=\"prevClick()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div></div>\n <button mat-icon-button (click)=\"nextClick()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n</div>\n" }]
1716
1726
  }] });
1717
1727
 
1718
1728
  class MediaPreviewComponent {
1719
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1720
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: MediaPreviewComponent, isStandalone: true, selector: "rolatech-media-preview", ngImport: i0, template: "<p>media-preview works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1729
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1730
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: MediaPreviewComponent, isStandalone: true, selector: "rolatech-media-preview", ngImport: i0, template: "<p>media-preview works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
1721
1731
  }
1722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MediaPreviewComponent, decorators: [{
1732
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MediaPreviewComponent, decorators: [{
1723
1733
  type: Component,
1724
1734
  args: [{ selector: 'rolatech-media-preview', imports: [CommonModule], template: "<p>media-preview works!</p>\n" }]
1725
1735
  }] });
@@ -1727,16 +1737,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
1727
1737
  class ToolbarComponent {
1728
1738
  hasId = 'rolatech-toolbar';
1729
1739
  hasClass = true;
1730
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
1731
- subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : []));
1732
- back = input(false, { ...(ngDevMode ? { debugName: "back" } : {}), transform: booleanAttribute });
1733
- link = input('', ...(ngDevMode ? [{ debugName: "link" }] : []));
1734
- large = input(false, { ...(ngDevMode ? { debugName: "large" } : {}), transform: booleanAttribute });
1735
- divider = input(false, { ...(ngDevMode ? { debugName: "divider" } : {}), transform: booleanAttribute });
1736
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1737
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ToolbarComponent, isStandalone: true, selector: "rolatech-toolbar", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, back: { classPropertyName: "back", publicName: "back", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, large: { classPropertyName: "large", publicName: "large", isSignal: true, isRequired: false, transformFunction: null }, divider: { classPropertyName: "divider", publicName: "divider", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hasId", "class.rolatech-toolbar": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex justify-between items-center\" [ngClass]=\"subtitle() ? 'h-16' : 'h-14'\">\n <ng-container>\n @if (back()) {\n <rolatech-icon-button rolatechBackButton class=\"left-button\">arrow_back</rolatech-icon-button>\n }\n @if (link()) {\n <rolatech-icon-button [routerLink]=\"link()\" class=\"left-button cursor-pointer\">arrow_back</rolatech-icon-button>\n }\n </ng-container>\n @if (title()) {\n @if (large()) {\n <span class=\"text-2xl font-bold\" i18n>{{ title() }}</span>\n } @else {\n <span class=\"text-xl font-bold\" i18n>{{ title() }}</span>\n }\n }\n <div class=\"flex-1\"></div>\n <div class=\"flex justify-center items-center gap-3\">\n <ng-content></ng-content>\n </div>\n</div>\n@if (subtitle()) {\n <div class=\"-mt-4 mb-2 leading-none\" [ngClass]=\"back() || link() ? 'ml-[40px]' : ''\">\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitle() }}</span>\n </div>\n}\n@if (divider()) {\n <mat-divider></mat-divider>\n}\n", styles: ["rolatech-toolbar{display:block;padding-left:var(--rt-toolbar-padding-left, 16px);padding-right:var(--rt-toolbar-padding-right, 16px);background-color:var(--rt-base-background, #fff);border-radius:var(--rt-toolbar-border-radius, 0px);color:var(--rt-text-primary, #000)}rolatech-toolbar:has(.left-button){--rt-toolbar-padding-left: 8px;--rt-toolbar-padding-right: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IconButtonComponent, selector: "rolatech-icon-button" }, { kind: "directive", type: BackButtonDirective, selector: "[rolatechBackButton]" }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], encapsulation: i0.ViewEncapsulation.None });
1740
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
1741
+ subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
1742
+ back = input(false, { ...(ngDevMode ? { debugName: "back" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1743
+ link = input('', ...(ngDevMode ? [{ debugName: "link" }] : /* istanbul ignore next */ []));
1744
+ large = input(false, { ...(ngDevMode ? { debugName: "large" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1745
+ divider = input(false, { ...(ngDevMode ? { debugName: "divider" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1746
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1747
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ToolbarComponent, isStandalone: true, selector: "rolatech-toolbar", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, back: { classPropertyName: "back", publicName: "back", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, large: { classPropertyName: "large", publicName: "large", isSignal: true, isRequired: false, transformFunction: null }, divider: { classPropertyName: "divider", publicName: "divider", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hasId", "class.rolatech-toolbar": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex justify-between items-center\" [ngClass]=\"subtitle() ? 'h-16' : 'h-14'\">\n <ng-container>\n @if (back()) {\n <rolatech-icon-button rolatechBackButton class=\"left-button\">arrow_back</rolatech-icon-button>\n }\n @if (link()) {\n <rolatech-icon-button [routerLink]=\"link()\" class=\"left-button cursor-pointer\">arrow_back</rolatech-icon-button>\n }\n </ng-container>\n @if (title()) {\n @if (large()) {\n <span class=\"text-2xl font-bold\" i18n>{{ title() }}</span>\n } @else {\n <span class=\"text-xl font-bold\" i18n>{{ title() }}</span>\n }\n }\n <div class=\"flex-1\"></div>\n <div class=\"flex justify-center items-center gap-3\">\n <ng-content></ng-content>\n </div>\n</div>\n@if (subtitle()) {\n <div class=\"-mt-4 mb-2 leading-none\" [ngClass]=\"back() || link() ? 'ml-[40px]' : ''\">\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitle() }}</span>\n </div>\n}\n@if (divider()) {\n <mat-divider></mat-divider>\n}\n", styles: ["rolatech-toolbar{display:block;padding-left:var(--rt-toolbar-padding-left, 16px);padding-right:var(--rt-toolbar-padding-right, 16px);background-color:var(--rt-base-background, #fff);border-radius:var(--rt-toolbar-border-radius, 0px);color:var(--rt-text-primary, #000)}rolatech-toolbar:has(.left-button){--rt-toolbar-padding-left: 8px;--rt-toolbar-padding-right: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IconButtonComponent, selector: "rolatech-icon-button" }, { kind: "directive", type: BackButtonDirective, selector: "[rolatechBackButton]" }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], encapsulation: i0.ViewEncapsulation.None });
1738
1748
  }
1739
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ToolbarComponent, decorators: [{
1749
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ToolbarComponent, decorators: [{
1740
1750
  type: Component,
1741
1751
  args: [{ selector: 'rolatech-toolbar', imports: [CommonModule, RouterLink, IconButtonComponent, BackButtonDirective, MatDivider], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex justify-between items-center\" [ngClass]=\"subtitle() ? 'h-16' : 'h-14'\">\n <ng-container>\n @if (back()) {\n <rolatech-icon-button rolatechBackButton class=\"left-button\">arrow_back</rolatech-icon-button>\n }\n @if (link()) {\n <rolatech-icon-button [routerLink]=\"link()\" class=\"left-button cursor-pointer\">arrow_back</rolatech-icon-button>\n }\n </ng-container>\n @if (title()) {\n @if (large()) {\n <span class=\"text-2xl font-bold\" i18n>{{ title() }}</span>\n } @else {\n <span class=\"text-xl font-bold\" i18n>{{ title() }}</span>\n }\n }\n <div class=\"flex-1\"></div>\n <div class=\"flex justify-center items-center gap-3\">\n <ng-content></ng-content>\n </div>\n</div>\n@if (subtitle()) {\n <div class=\"-mt-4 mb-2 leading-none\" [ngClass]=\"back() || link() ? 'ml-[40px]' : ''\">\n <span class=\"text-sm text-(--rt-text-secondary)\" i18n>{{ subtitle() }}</span>\n </div>\n}\n@if (divider()) {\n <mat-divider></mat-divider>\n}\n", styles: ["rolatech-toolbar{display:block;padding-left:var(--rt-toolbar-padding-left, 16px);padding-right:var(--rt-toolbar-padding-right, 16px);background-color:var(--rt-base-background, #fff);border-radius:var(--rt-toolbar-border-radius, 0px);color:var(--rt-text-primary, #000)}rolatech-toolbar:has(.left-button){--rt-toolbar-padding-left: 8px;--rt-toolbar-padding-right: 8px}\n"] }]
1742
1752
  }], propDecorators: { hasId: [{
@@ -1751,13 +1761,13 @@ class ThumbnailComponent {
1751
1761
  hasClass = true;
1752
1762
  myColor = '56.25%';
1753
1763
  el = inject((ElementRef));
1754
- src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : []));
1755
- size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : []));
1756
- mode = input('clip', ...(ngDevMode ? [{ debugName: "mode" }] : [])); // full, clip
1757
- ratio = input('rectangle', ...(ngDevMode ? [{ debugName: "ratio" }] : [])); // rectangle, square
1764
+ src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : /* istanbul ignore next */ []));
1765
+ size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
1766
+ mode = input('clip', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ [])); // full, clip
1767
+ ratio = input('rectangle', ...(ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ [])); // rectangle, square
1758
1768
  img = viewChild.required('img');
1759
- width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : []));
1760
- height = input(...(ngDevMode ? [undefined, { debugName: "height" }] : []));
1769
+ width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
1770
+ height = input(...(ngDevMode ? [undefined, { debugName: "height" }] : /* istanbul ignore next */ []));
1761
1771
  renderer = inject(Renderer2);
1762
1772
  sizea = effect(() => {
1763
1773
  const size = this.size();
@@ -1767,7 +1777,7 @@ class ThumbnailComponent {
1767
1777
  else {
1768
1778
  this.renderer.removeAttribute(this.el.nativeElement, 'size');
1769
1779
  }
1770
- }, ...(ngDevMode ? [{ debugName: "sizea" }] : []));
1780
+ }, ...(ngDevMode ? [{ debugName: "sizea" }] : /* istanbul ignore next */ []));
1771
1781
  full = effect(() => {
1772
1782
  this.renderer.setAttribute(this.el.nativeElement, 'mode', this.mode());
1773
1783
  if (this.mode() === 'full') {
@@ -1785,14 +1795,14 @@ class ThumbnailComponent {
1785
1795
  }
1786
1796
  }
1787
1797
  }
1788
- }, ...(ngDevMode ? [{ debugName: "full" }] : []));
1798
+ }, ...(ngDevMode ? [{ debugName: "full" }] : /* istanbul ignore next */ []));
1789
1799
  ratioSet = effect(() => {
1790
1800
  this.renderer.setAttribute(this.el.nativeElement, 'ratio', this.ratio());
1791
- }, ...(ngDevMode ? [{ debugName: "ratioSet" }] : []));
1792
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1793
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ThumbnailComponent, isStandalone: true, selector: "rolatech-thumbnail", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rt-rich-grid-media": "this.hasClass", "style.--rt-thumbnail-padding-top": "this.myColor" } }, viewQueries: [{ propertyName: "img", first: true, predicate: ["img"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #edge class=\"absolute top-0 left-0\"></div>\n@defer (on viewport(edge)) {\n <a id=\"thumbnail\" class=\"rt-thumbnail\">\n <rolatech-image [src]=\"src()\"> </rolatech-image>\n </a>\n} @placeholder {\n <div class=\"bg-(--rt-raised-background) w-full h-full rounded-lg\"></div>\n}\n", styles: ["rolatech-thumbnail{display:block;width:100%;position:relative;--rt-thumbnail-padding-top: 56.25%}rolatech-thumbnail:before{display:block;content:\"\";width:100%;height:100%;background-color:var(--rt-10-percent-layer, rgba(0, 0, 0, .1))}rolatech-thumbnail[mode=full]:before{padding-top:0}rolatech-thumbnail[ratio=square]:before{--rt-thumbnail-padding-top: 100%}rolatech-thumbnail[mode=clip]:before{padding-top:var(--rt-thumbnail-padding-top)}rolatech-thumbnail #thumbnail.rt-thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block}rolatech-thumbnail #thumbnail.rt-thumbnail{position:absolute;inset:0}rolatech-thumbnail[mode=clip] #thumbnail.rt-thumbnail{position:absolute;inset:0}rolatech-thumbnail a.rt-thumbnail,rolatech-thumbnail:before{border-radius:0}rolatech-thumbnail[size][circular] a.rt-thumbnail,rolatech-thumbnail[size][circular]:before{border-radius:50%}rolatech-thumbnail[size=small] a.rt-thumbnail,rolatech-thumbnail[size=small]:before{border-radius:4px}rolatech-thumbnail[size=medium] a.rt-thumbnail,rolatech-thumbnail[size=medium]:before{border-radius:8px}rolatech-thumbnail[size=large] a.rt-thumbnail,rolatech-thumbnail[size=large]:before{border-radius:12px}rolatech-thumbnail[size][has-clip] a.rt-thumbnail,rolatech-thumbnail[size][has-clip]:before{border-radius:0}rolatech-thumbnail[mode=full] #thumbnail rolatech-image img{object-fit:contain;background-color:var(--rt-thumbnail-background-color)}rolatech-thumbnail #thumbnail rolatech-image img{background-color:var(--rt-thumbnail-background-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)]] });
1801
+ }, ...(ngDevMode ? [{ debugName: "ratioSet" }] : /* istanbul ignore next */ []));
1802
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1803
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ThumbnailComponent, isStandalone: true, selector: "rolatech-thumbnail", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rt-rich-grid-media": "this.hasClass", "style.--rt-thumbnail-padding-top": "this.myColor" } }, viewQueries: [{ propertyName: "img", first: true, predicate: ["img"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #edge class=\"absolute top-0 left-0\"></div>\n@defer (on viewport(edge)) {\n <a id=\"thumbnail\" class=\"rt-thumbnail\">\n <rolatech-image [src]=\"src()\"> </rolatech-image>\n </a>\n} @placeholder {\n <div class=\"bg-(--rt-raised-background) w-full h-full rounded-lg\"></div>\n}\n", styles: ["rolatech-thumbnail{display:block;width:100%;position:relative;--rt-thumbnail-padding-top: 56.25%}rolatech-thumbnail:before{display:block;content:\"\";width:100%;height:100%;background-color:var(--rt-10-percent-layer, rgba(0, 0, 0, .1))}rolatech-thumbnail[mode=full]:before{padding-top:0}rolatech-thumbnail[ratio=square]:before{--rt-thumbnail-padding-top: 100%}rolatech-thumbnail[mode=clip]:before{padding-top:var(--rt-thumbnail-padding-top)}rolatech-thumbnail #thumbnail.rt-thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block}rolatech-thumbnail #thumbnail.rt-thumbnail{position:absolute;inset:0}rolatech-thumbnail[mode=clip] #thumbnail.rt-thumbnail{position:absolute;inset:0}rolatech-thumbnail a.rt-thumbnail,rolatech-thumbnail:before{border-radius:0}rolatech-thumbnail[size][circular] a.rt-thumbnail,rolatech-thumbnail[size][circular]:before{border-radius:50%}rolatech-thumbnail[size=small] a.rt-thumbnail,rolatech-thumbnail[size=small]:before{border-radius:4px}rolatech-thumbnail[size=medium] a.rt-thumbnail,rolatech-thumbnail[size=medium]:before{border-radius:8px}rolatech-thumbnail[size=large] a.rt-thumbnail,rolatech-thumbnail[size=large]:before{border-radius:12px}rolatech-thumbnail[size][has-clip] a.rt-thumbnail,rolatech-thumbnail[size][has-clip]:before{border-radius:0}rolatech-thumbnail[mode=full] #thumbnail rolatech-image img{object-fit:contain;background-color:var(--rt-thumbnail-background-color)}rolatech-thumbnail #thumbnail rolatech-image img{background-color:var(--rt-thumbnail-background-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)]] });
1794
1804
  }
1795
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.1", ngImport: i0, type: ThumbnailComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)], resolveMetadata: ImageComponent => ({ decorators: [{
1805
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.5", ngImport: i0, type: ThumbnailComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)], resolveMetadata: ImageComponent => ({ decorators: [{
1796
1806
  type: Component,
1797
1807
  args: [{ selector: 'rolatech-thumbnail', imports: [CommonModule, ImageComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #edge class=\"absolute top-0 left-0\"></div>\n@defer (on viewport(edge)) {\n <a id=\"thumbnail\" class=\"rt-thumbnail\">\n <rolatech-image [src]=\"src()\"> </rolatech-image>\n </a>\n} @placeholder {\n <div class=\"bg-(--rt-raised-background) w-full h-full rounded-lg\"></div>\n}\n", styles: ["rolatech-thumbnail{display:block;width:100%;position:relative;--rt-thumbnail-padding-top: 56.25%}rolatech-thumbnail:before{display:block;content:\"\";width:100%;height:100%;background-color:var(--rt-10-percent-layer, rgba(0, 0, 0, .1))}rolatech-thumbnail[mode=full]:before{padding-top:0}rolatech-thumbnail[ratio=square]:before{--rt-thumbnail-padding-top: 100%}rolatech-thumbnail[mode=clip]:before{padding-top:var(--rt-thumbnail-padding-top)}rolatech-thumbnail #thumbnail.rt-thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block}rolatech-thumbnail #thumbnail.rt-thumbnail{position:absolute;inset:0}rolatech-thumbnail[mode=clip] #thumbnail.rt-thumbnail{position:absolute;inset:0}rolatech-thumbnail a.rt-thumbnail,rolatech-thumbnail:before{border-radius:0}rolatech-thumbnail[size][circular] a.rt-thumbnail,rolatech-thumbnail[size][circular]:before{border-radius:50%}rolatech-thumbnail[size=small] a.rt-thumbnail,rolatech-thumbnail[size=small]:before{border-radius:4px}rolatech-thumbnail[size=medium] a.rt-thumbnail,rolatech-thumbnail[size=medium]:before{border-radius:8px}rolatech-thumbnail[size=large] a.rt-thumbnail,rolatech-thumbnail[size=large]:before{border-radius:12px}rolatech-thumbnail[size][has-clip] a.rt-thumbnail,rolatech-thumbnail[size][has-clip]:before{border-radius:0}rolatech-thumbnail[mode=full] #thumbnail rolatech-image img{object-fit:contain;background-color:var(--rt-thumbnail-background-color)}rolatech-thumbnail #thumbnail rolatech-image img{background-color:var(--rt-thumbnail-background-color)}\n"] }]
1798
1808
  }], ctorParameters: null, propDecorators: { hasClass: [{
@@ -1811,7 +1821,7 @@ var thumbnail_component = /*#__PURE__*/Object.freeze({
1811
1821
  class ImageComponent {
1812
1822
  hasId = 'rolatech-image';
1813
1823
  hasClass = true;
1814
- src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : []));
1824
+ src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : /* istanbul ignore next */ []));
1815
1825
  img = viewChild.required('img');
1816
1826
  ngOnInit() {
1817
1827
  const image = this.img().nativeElement;
@@ -1819,10 +1829,10 @@ class ImageComponent {
1819
1829
  image.style.visibility = 'visible';
1820
1830
  };
1821
1831
  }
1822
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1823
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: ImageComponent, isStandalone: true, selector: "rolatech-image", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hasId", "class.rt-image": "this.hasClass" } }, viewQueries: [{ propertyName: "img", first: true, predicate: ["img"], descendants: true, isSignal: true }], ngImport: i0, template: "<img #img class=\"rolatech-image bg-(--rt-base-background)\" [src]=\"src()\" style=\"visibility: hidden\" loading=\"lazy\" alt />\n", styles: [".rolatech-image{display:inline-block;min-height:1px;min-width:1px;width:100%;height:100%;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1832
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1833
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: ImageComponent, isStandalone: true, selector: "rolatech-image", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hasId", "class.rt-image": "this.hasClass" } }, viewQueries: [{ propertyName: "img", first: true, predicate: ["img"], descendants: true, isSignal: true }], ngImport: i0, template: "<img #img class=\"rolatech-image bg-(--rt-base-background)\" [src]=\"src()\" style=\"visibility: hidden\" loading=\"lazy\" alt />\n", styles: [".rolatech-image{display:inline-block;min-height:1px;min-width:1px;width:100%;height:100%;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1824
1834
  }
1825
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ImageComponent, decorators: [{
1835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImageComponent, decorators: [{
1826
1836
  type: Component,
1827
1837
  args: [{ selector: 'rolatech-image', imports: [CommonModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<img #img class=\"rolatech-image bg-(--rt-base-background)\" [src]=\"src()\" style=\"visibility: hidden\" loading=\"lazy\" alt />\n", styles: [".rolatech-image{display:inline-block;min-height:1px;min-width:1px;width:100%;height:100%;object-fit:cover}\n"] }]
1828
1838
  }], propDecorators: { hasId: [{
@@ -1843,12 +1853,12 @@ class TabComponent {
1843
1853
  hasClass = true;
1844
1854
  role = 'tab';
1845
1855
  tabindex = 0;
1846
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
1856
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
1847
1857
  selectRequested = output();
1848
1858
  item = viewChild.required('content');
1849
- active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
1850
- mode = signal('selectionBar', ...(ngDevMode ? [{ debugName: "mode" }] : []));
1851
- index = signal(0, ...(ngDevMode ? [{ debugName: "index" }] : []));
1859
+ active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
1860
+ mode = signal('selectionBar', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
1861
+ index = signal(0, ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
1852
1862
  get dataActive() {
1853
1863
  return this.active() ? 'true' : 'false';
1854
1864
  }
@@ -1876,10 +1886,10 @@ class TabComponent {
1876
1886
  setIndex(index) {
1877
1887
  this.index.set(index);
1878
1888
  }
1879
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1880
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: TabComponent, isStandalone: true, selector: "rolatech-tab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectRequested: "selectRequested" }, host: { listeners: { "click": "requestSelection()", "keydown.enter": "onKeyboardSelection()", "keydown.space": "onKeyboardSelection()" }, properties: { "class.tab": "this.hasClass", "attr.role": "this.role", "attr.tabindex": "this.tabindex", "attr.data-active": "this.dataActive", "attr.data-mode": "this.dataMode", "attr.aria-selected": "this.ariaSelected" } }, viewQueries: [{ propertyName: "item", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tab__content\" #content>\n <span i18n>{{ label() }}</span>\n</div>\n", styles: ["rolatech-tab{display:inline-flex;align-items:center;justify-content:center;position:relative;flex:0 0 auto;min-height:var(--rt-tab-height, 40px);padding:0;cursor:pointer;border-radius:999px;color:var(--rt-tab-text-color, var(--rt-text-secondary, #64748b));transition:color .2s ease,background-color .2s ease,box-shadow .2s ease,transform .2s ease;outline:none}rolatech-tab .tab__content{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:inherit;padding:.7rem 1rem;border-radius:inherit;font-size:.95rem;font-weight:600;line-height:1;white-space:nowrap}rolatech-tab[data-mode=selectionBar]{border-radius:14px}rolatech-tab[data-mode=selectionBar][data-active=true]{color:var(--rt-tab-active-color, var(--rt-brand-color))}rolatech-tab[data-mode=selectionBar]:hover{color:var(--rt-tab-active-color, var(--rt-brand-color));background-color:var(--rt-tab-hover-background-color, rgba(148, 163, 184, .12))}rolatech-tab[data-mode=background][data-active=true]{color:var(--rt-tab-selected-color, #ffffff);background-color:var(--rt-tab-selected-background, var(--rt-brand-color));box-shadow:0 12px 28px #0f172a24,inset 0 0 0 1px #ffffff1f}rolatech-tab[data-mode=background]:hover{background-color:var(--rt-tab-hover-background-color, rgba(148, 163, 184, .16))}rolatech-tab:focus-visible{box-shadow:0 0 0 2px var(--rt-tab-focus-ring, rgba(59, 130, 246, .35))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
1889
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1890
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: TabComponent, isStandalone: true, selector: "rolatech-tab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectRequested: "selectRequested" }, host: { listeners: { "click": "requestSelection()", "keydown.enter": "onKeyboardSelection()", "keydown.space": "onKeyboardSelection()" }, properties: { "class.tab": "this.hasClass", "attr.role": "this.role", "attr.tabindex": "this.tabindex", "attr.data-active": "this.dataActive", "attr.data-mode": "this.dataMode", "attr.aria-selected": "this.ariaSelected" } }, viewQueries: [{ propertyName: "item", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tab__content\" #content>\n <span i18n>{{ label() }}</span>\n</div>\n", styles: ["rolatech-tab{display:inline-flex;align-items:center;justify-content:center;position:relative;flex:0 0 auto;min-height:var(--rt-tab-height, 40px);padding:0;cursor:pointer;border-radius:999px;color:var(--rt-tab-text-color, var(--rt-text-secondary, #64748b));transition:color .2s ease,background-color .2s ease,box-shadow .2s ease,transform .2s ease;outline:none}rolatech-tab .tab__content{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:inherit;padding:.7rem 1rem;border-radius:inherit;font-size:.95rem;font-weight:600;line-height:1;white-space:nowrap}rolatech-tab[data-mode=selectionBar]{border-radius:14px}rolatech-tab[data-mode=selectionBar][data-active=true]{color:var(--rt-tab-active-color, var(--rt-brand-color))}rolatech-tab[data-mode=selectionBar]:hover{color:var(--rt-tab-active-color, var(--rt-brand-color));background-color:var(--rt-tab-hover-background-color, rgba(148, 163, 184, .12))}rolatech-tab[data-mode=background][data-active=true]{color:var(--rt-tab-selected-color, #ffffff);background-color:var(--rt-tab-selected-background, var(--rt-brand-color));box-shadow:0 12px 28px #0f172a24,inset 0 0 0 1px #ffffff1f}rolatech-tab[data-mode=background]:hover{background-color:var(--rt-tab-hover-background-color, rgba(148, 163, 184, .16))}rolatech-tab:focus-visible{box-shadow:0 0 0 2px var(--rt-tab-focus-ring, rgba(59, 130, 246, .35))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
1881
1891
  }
1882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TabComponent, decorators: [{
1892
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TabComponent, decorators: [{
1883
1893
  type: Component,
1884
1894
  args: [{ selector: 'rolatech-tab', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"tab__content\" #content>\n <span i18n>{{ label() }}</span>\n</div>\n", styles: ["rolatech-tab{display:inline-flex;align-items:center;justify-content:center;position:relative;flex:0 0 auto;min-height:var(--rt-tab-height, 40px);padding:0;cursor:pointer;border-radius:999px;color:var(--rt-tab-text-color, var(--rt-text-secondary, #64748b));transition:color .2s ease,background-color .2s ease,box-shadow .2s ease,transform .2s ease;outline:none}rolatech-tab .tab__content{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:inherit;padding:.7rem 1rem;border-radius:inherit;font-size:.95rem;font-weight:600;line-height:1;white-space:nowrap}rolatech-tab[data-mode=selectionBar]{border-radius:14px}rolatech-tab[data-mode=selectionBar][data-active=true]{color:var(--rt-tab-active-color, var(--rt-brand-color))}rolatech-tab[data-mode=selectionBar]:hover{color:var(--rt-tab-active-color, var(--rt-brand-color));background-color:var(--rt-tab-hover-background-color, rgba(148, 163, 184, .12))}rolatech-tab[data-mode=background][data-active=true]{color:var(--rt-tab-selected-color, #ffffff);background-color:var(--rt-tab-selected-background, var(--rt-brand-color));box-shadow:0 12px 28px #0f172a24,inset 0 0 0 1px #ffffff1f}rolatech-tab[data-mode=background]:hover{background-color:var(--rt-tab-hover-background-color, rgba(148, 163, 184, .16))}rolatech-tab:focus-visible{box-shadow:0 0 0 2px var(--rt-tab-focus-ring, rgba(59, 130, 246, .35))}\n"] }]
1885
1895
  }], propDecorators: { hasClass: [{
@@ -1915,16 +1925,16 @@ class TabsComponent {
1915
1925
  renderer = inject(Renderer2);
1916
1926
  platform = inject(Platform);
1917
1927
  removeWindowResizeListener;
1918
- tabs = contentChildren(TabComponent, ...(ngDevMode ? [{ debugName: "tabs" }] : []));
1919
- selectionBar = viewChild('selectionBar', ...(ngDevMode ? [{ debugName: "selectionBar" }] : []));
1920
- select = model(0, ...(ngDevMode ? [{ debugName: "select" }] : []));
1921
- loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
1922
- block = input(false, { ...(ngDevMode ? { debugName: "block" } : {}), transform: booleanAttribute });
1923
- mode = input('selectionBar', ...(ngDevMode ? [{ debugName: "mode" }] : []));
1924
- indicatorLeft = signal('0px', ...(ngDevMode ? [{ debugName: "indicatorLeft" }] : []));
1925
- indicatorWidth = signal('0px', ...(ngDevMode ? [{ debugName: "indicatorWidth" }] : []));
1926
- currentMode = computed(() => (this.block() ? 'background' : this.mode()), ...(ngDevMode ? [{ debugName: "currentMode" }] : []));
1927
- showSelectionBar = computed(() => this.currentMode() === 'selectionBar' && this.tabs().length > 0, ...(ngDevMode ? [{ debugName: "showSelectionBar" }] : []));
1928
+ tabs = contentChildren(TabComponent, ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
1929
+ selectionBar = viewChild('selectionBar', ...(ngDevMode ? [{ debugName: "selectionBar" }] : /* istanbul ignore next */ []));
1930
+ select = model(0, ...(ngDevMode ? [{ debugName: "select" }] : /* istanbul ignore next */ []));
1931
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
1932
+ block = input(false, { ...(ngDevMode ? { debugName: "block" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1933
+ mode = input('selectionBar', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
1934
+ indicatorLeft = signal('0px', ...(ngDevMode ? [{ debugName: "indicatorLeft" }] : /* istanbul ignore next */ []));
1935
+ indicatorWidth = signal('0px', ...(ngDevMode ? [{ debugName: "indicatorWidth" }] : /* istanbul ignore next */ []));
1936
+ currentMode = computed(() => (this.block() ? 'background' : this.mode()), ...(ngDevMode ? [{ debugName: "currentMode" }] : /* istanbul ignore next */ []));
1937
+ showSelectionBar = computed(() => this.currentMode() === 'selectionBar' && this.tabs().length > 0, ...(ngDevMode ? [{ debugName: "showSelectionBar" }] : /* istanbul ignore next */ []));
1928
1938
  get dataMode() {
1929
1939
  return this.currentMode();
1930
1940
  }
@@ -1988,10 +1998,10 @@ class TabsComponent {
1988
1998
  this.indicatorLeft.set(`${Math.max(left, 0)}px`);
1989
1999
  this.indicatorWidth.set(`${Math.max(contentWidth, 24)}px`);
1990
2000
  }
1991
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1992
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: TabsComponent, isStandalone: true, selector: "rolatech-tabs", inputs: { select: { classPropertyName: "select", publicName: "select", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "selectChange" }, host: { attributes: { "ngSkipHydration": "" }, properties: { "attr.data-mode": "this.dataMode" }, classAttribute: "rolatech-tabs" }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }], viewQueries: [{ propertyName: "selectionBar", first: true, predicate: ["selectionBar"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #tabsContainer\n class=\"tabs__container scrollbar-hide\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n>\n <div class=\"tabs__rail\">\n @if (showSelectionBar()) {\n <div\n #selectionBar\n class=\"selection-bar\"\n [style.left]=\"indicatorLeft()\"\n [style.width]=\"indicatorWidth()\"\n ></div>\n }\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-tabs{display:block;position:relative;padding-left:var(--rt-tabs-padding-left, 0px);padding-right:var(--rt-tabs-padding-right, 0px)}rolatech-tabs .tabs__container{position:relative;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}rolatech-tabs .tabs__rail{position:relative;display:inline-flex;align-items:center;gap:var(--rt-tabs-gap, 8px);min-width:100%;padding:0 0 6px}rolatech-tabs[data-mode=background] .tabs__rail{min-width:auto;padding:.35rem;border-radius:20px;background-color:var(--rt-tabs-surface, rgba(226, 232, 240, .5));box-shadow:inset 0 0 0 1px #94a3b829}rolatech-tabs .selection-bar{position:absolute;left:0;bottom:0;height:3px;border-radius:999px;background-color:var(--rt-tabs-selection-bar-color, var(--rt-brand-color));box-shadow:0 8px 18px #0f172a29;transition:left .2s ease,width .2s ease}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2001
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2002
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TabsComponent, isStandalone: true, selector: "rolatech-tabs", inputs: { select: { classPropertyName: "select", publicName: "select", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "selectChange" }, host: { attributes: { "ngSkipHydration": "" }, properties: { "attr.data-mode": "this.dataMode" }, classAttribute: "rolatech-tabs" }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }], viewQueries: [{ propertyName: "selectionBar", first: true, predicate: ["selectionBar"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #tabsContainer\n class=\"tabs__container scrollbar-hide\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n>\n <div class=\"tabs__rail\">\n @if (showSelectionBar()) {\n <div\n #selectionBar\n class=\"selection-bar\"\n [style.left]=\"indicatorLeft()\"\n [style.width]=\"indicatorWidth()\"\n ></div>\n }\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["rolatech-tabs{display:block;position:relative;padding-left:var(--rt-tabs-padding-left, 0px);padding-right:var(--rt-tabs-padding-right, 0px)}rolatech-tabs .tabs__container{position:relative;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}rolatech-tabs .tabs__rail{position:relative;display:inline-flex;align-items:center;gap:var(--rt-tabs-gap, 8px);min-width:100%;padding:0 0 6px}rolatech-tabs[data-mode=background] .tabs__rail{min-width:auto;padding:.35rem;border-radius:20px;background-color:var(--rt-tabs-surface, rgba(226, 232, 240, .5));box-shadow:inset 0 0 0 1px #94a3b829}rolatech-tabs .selection-bar{position:absolute;left:0;bottom:0;height:3px;border-radius:999px;background-color:var(--rt-tabs-selection-bar-color, var(--rt-brand-color));box-shadow:0 8px 18px #0f172a29;transition:left .2s ease,width .2s ease}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
1993
2003
  }
1994
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TabsComponent, decorators: [{
2004
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TabsComponent, decorators: [{
1995
2005
  type: Component,
1996
2006
  args: [{ selector: 'rolatech-tabs', imports: [CommonModule], encapsulation: ViewEncapsulation.None, host: {
1997
2007
  ngSkipHydration: '',
@@ -2005,10 +2015,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
2005
2015
  class ListComponent {
2006
2016
  id = 'rolatech-list';
2007
2017
  hasClass = true;
2008
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2009
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: ListComponent, isStandalone: true, selector: "rolatech-list", host: { properties: { "id": "this.id", "class.rolatech-list": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex flex-col divide-y divide-(--rt-10-percent-layer)\">\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-list{padding-left:var(--rt-list-padding-left, 0px);padding-right:var(--rt-list-padding-right, 0px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2018
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2019
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ListComponent, isStandalone: true, selector: "rolatech-list", host: { properties: { "id": "this.id", "class.rolatech-list": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex flex-col divide-y divide-(--rt-10-percent-layer)\">\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-list{padding-left:var(--rt-list-padding-left, 0px);padding-right:var(--rt-list-padding-right, 0px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2010
2020
  }
2011
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ListComponent, decorators: [{
2021
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ListComponent, decorators: [{
2012
2022
  type: Component,
2013
2023
  args: [{ selector: 'rolatech-list', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col divide-y divide-(--rt-10-percent-layer)\">\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-list{padding-left:var(--rt-list-padding-left, 0px);padding-right:var(--rt-list-padding-right, 0px)}\n"] }]
2014
2024
  }], propDecorators: { id: [{
@@ -2020,10 +2030,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
2020
2030
  }] } });
2021
2031
 
2022
2032
  class ContentComponent {
2023
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2024
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: ContentComponent, isStandalone: true, selector: "rolatech-content", ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["rolatech-content{padding-left:var(--rt-content-padding-left, 0px);padding-right:var(--rt-content-padding-right, 0px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2033
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2034
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ContentComponent, isStandalone: true, selector: "rolatech-content", ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["rolatech-content{padding-left:var(--rt-content-padding-left, 0px);padding-right:var(--rt-content-padding-right, 0px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2025
2035
  }
2026
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ContentComponent, decorators: [{
2036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ContentComponent, decorators: [{
2027
2037
  type: Component,
2028
2038
  args: [{ selector: 'rolatech-content', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n", styles: ["rolatech-content{padding-left:var(--rt-content-padding-left, 0px);padding-right:var(--rt-content-padding-right, 0px)}\n"] }]
2029
2039
  }] });
@@ -2058,12 +2068,12 @@ class ChipBarComponent {
2058
2068
  el = inject(ElementRef);
2059
2069
  renderer = inject(Renderer2);
2060
2070
  resizeObserver;
2061
- chips = viewChild('chips', { ...(ngDevMode ? { debugName: "chips" } : {}), read: ElementRef });
2071
+ chips = viewChild('chips', { ...(ngDevMode ? { debugName: "chips" } : /* istanbul ignore next */ {}), read: ElementRef });
2062
2072
  scroller = viewChild.required('scroller', { read: ElementRef });
2063
- router = input('../courses/categories/', ...(ngDevMode ? [{ debugName: "router" }] : []));
2064
- items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
2065
- fluid = input(false, { ...(ngDevMode ? { debugName: "fluid" } : {}), transform: booleanAttribute });
2066
- fixed = input(false, { ...(ngDevMode ? { debugName: "fixed" } : {}), transform: booleanAttribute });
2073
+ router = input('../courses/categories/', ...(ngDevMode ? [{ debugName: "router" }] : /* istanbul ignore next */ []));
2074
+ items = input([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
2075
+ fluid = input(false, { ...(ngDevMode ? { debugName: "fluid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2076
+ fixed = input(false, { ...(ngDevMode ? { debugName: "fixed" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2067
2077
  iconRegistry = inject(MatIconRegistry);
2068
2078
  sanitizer = inject(DomSanitizer);
2069
2079
  platformId = inject(PLATFORM_ID);
@@ -2126,10 +2136,10 @@ class ChipBarComponent {
2126
2136
  rightArrowClick() {
2127
2137
  this.scroller().nativeElement.scrollLeft += 320;
2128
2138
  }
2129
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ChipBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ChipBarComponent, isStandalone: true, selector: "rolatech-chip-bar", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, fixed: { classPropertyName: "fixed", publicName: "fixed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hasId", "class.rolatech-chip-bar": "this.hasClass" } }, viewQueries: [{ propertyName: "chips", first: true, predicate: ["chips"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div id=\"chips-wrapper\" class=\"rolatech-chip-bar\">\n <div id=\"chips-content\" class=\"rolatech-chip-bar\">\n <div id=\"left-arrow\" class=\"rolatech-chip-bar\">\n <div id=\"left-arrow-button\" class=\"rolatech-chip-bar\">\n <button mat-icon-button (click)=\"leftArrowClick()\">\n <mat-icon>chevron_left</mat-icon>\n <!-- <mat-icon svgIcon=\"chevron_left\"></mat-icon> -->\n\n <!-- <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M14.96 18.96 8 12l6.96-6.96.71.71L9.41 12l6.25 6.25-.7.71z\"></path>\n </svg> -->\n </button>\n </div>\n </div>\n <div\n id=\"scroll-container\"\n #scroller\n class=\"rolatech-chip-bar overflow-x-scroll overflow-y-hidden scrollbar-hide\"\n (scroll)=\"onScroll($event)\"\n >\n <div id=\"chips\" #chips class=\"rolatech-chip-bar inline-block\">\n @for (link of items(); track link; let index = $index) {\n <a\n id=\"chip-item\"\n class=\"rolatech-chip-bar h-8 cursor-pointer bg-(--rt-10-percent-layer) rounded-md inline-flex items-center px-3 m-3 ml-0\"\n routerLinkActive=\"chip-bar-active\"\n [routerLink]=\"[router(), link.link]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md\">{{ link.name }}</span>\n </a>\n }\n </div>\n </div>\n <div id=\"right-arrow\" class=\"rolatech-chip-bar\">\n <div id=\"right-arrow-button\" class=\"rolatech-chip-bar\">\n <button mat-icon-button (click)=\"rightArrowClick()\">\n <mat-icon>chevron_right</mat-icon>\n <!-- <mat-icon svgIcon=\"chevron_right\"></mat-icon> -->\n\n <!-- <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"m9.4 18.4-.7-.7 5.6-5.6-5.7-5.7.7-.7 6.4 6.4-6.3 6.3z\"></path>\n </svg> -->\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}rolatech-chip-bar{--rt-chips-bar-base-height: 56px;display:flex;width:100%;padding-left:var(--rt-chip-bar-padding, 0px);padding-right:var(--rt-chip-bar-padding, 0px);background-color:var(--rt-chip-bar-barckground-color, #fff);color:var(--rt-chip-bar-color, #000);height:var(--rt-chips-bar-base-height)}.chip-bar-active{border-radius:var(--rt-chip-bar-border-radius, 8px);color:var(--rt-chip-bar-active-color, orangered)}@media(max-width:768px){.chip-bar-active{border-radius:var(--rt-chip-bar-border-radius, 8px);background-color:#000;color:#fff}}#scroll-container.rolatech-chip-bar{scroll-behavior:smooth;position:relative;white-space:nowrap}rolatech-chip-bar[fixed] #chips-wrapper.rolatech-chip-bar{position:fixed;top:var(--rt-rich-grid-chips-bar-top, 56px)}#chips-wrapper.rolatech-chip-bar{position:relative;width:var(--rt-rich-grid-chips-bar-width);background-color:var(--rt-base-background);z-index:2000;display:flex;justify-content:center}rolatech-chip-bar[fluid-width] #chips-content.rolatech-chip-bar{max-width:calc(var(--rt-rich-grid-content-max-width) + 2 * var(--rt-chip-bar-padding));padding-left:var(--rt-chip-bar-padding, 0px);padding-right:var(--rt-chip-bar-padding, 0px)}#chips-content.rolatech-chip-bar{box-sizing:border-box;width:100%;display:flex}#chips.rolatech-chip-bar{transition-duration:.15s;transition-timing-function:cubic-bezier(.05,0,0,1);will-change:transform;white-space:nowrap}#left-arrow.rolatech-chip-bar,#right-arrow.rolatech-chip-bar{position:absolute;height:100%;z-index:2020;display:flex;flex-direction:row;justify-content:center}#left-arrow.rolatech-chip-bar{top:0;left:0}#right-arrow.rolatech-chip-bar{top:0;right:0}#left-arrow-button.rolatech-chip-bar,#right-arrow-button.rolatech-chip-bar{background-color:var(--rt-base-background);display:flex;flex-direction:column;justify-content:center}#right-arrow.rolatech-chip-bar:before{height:100%;width:50px;content:\"\";pointer-events:none}rolatech-chip-bar[at-start] #left-arrow.rolatech-chip-bar{display:none}rolatech-chip-bar[at-end] #right-arrow.rolatech-chip-bar{display:none}#left-arrow.rolatech-chip-bar:after,#right-arrow.rolatech-chip-bar:before{height:100%;width:50px;content:\"\";pointer-events:none}#left-arrow.rolatech-chip-bar:after{background:linear-gradient(to right,var(--rt-base-background) 20%,rgba(255,255,255,0) 80%)}#right-arrow.rolatech-chip-bar:before{background:linear-gradient(to left,var(--rt-base-background) 20%,rgba(255,255,255,0) 80%)}#chip-item.rolatech-chip-bar{margin:12px 12px 12px 0}#chip-item.rolatech-chip-bar:last-of-type{margin-right:0}#chip-item:not([selected]):hover,#chip-item:not([selected]):focus{background-color:var(--rt-20-percent-layer)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
2139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ChipBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2140
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ChipBarComponent, isStandalone: true, selector: "rolatech-chip-bar", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, fixed: { classPropertyName: "fixed", publicName: "fixed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "this.hasId", "class.rolatech-chip-bar": "this.hasClass" } }, viewQueries: [{ propertyName: "chips", first: true, predicate: ["chips"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div id=\"chips-wrapper\" class=\"rolatech-chip-bar\">\n <div id=\"chips-content\" class=\"rolatech-chip-bar\">\n <div id=\"left-arrow\" class=\"rolatech-chip-bar\">\n <div id=\"left-arrow-button\" class=\"rolatech-chip-bar\">\n <button mat-icon-button (click)=\"leftArrowClick()\">\n <mat-icon>chevron_left</mat-icon>\n <!-- <mat-icon svgIcon=\"chevron_left\"></mat-icon> -->\n\n <!-- <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M14.96 18.96 8 12l6.96-6.96.71.71L9.41 12l6.25 6.25-.7.71z\"></path>\n </svg> -->\n </button>\n </div>\n </div>\n <div\n id=\"scroll-container\"\n #scroller\n class=\"rolatech-chip-bar overflow-x-scroll overflow-y-hidden scrollbar-hide\"\n (scroll)=\"onScroll($event)\"\n >\n <div id=\"chips\" #chips class=\"rolatech-chip-bar inline-block\">\n @for (link of items(); track link; let index = $index) {\n <a\n id=\"chip-item\"\n class=\"rolatech-chip-bar h-8 cursor-pointer bg-(--rt-10-percent-layer) rounded-md inline-flex items-center px-3 m-3 ml-0\"\n routerLinkActive=\"chip-bar-active\"\n [routerLink]=\"[router(), link.link]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md\">{{ link.name }}</span>\n </a>\n }\n </div>\n </div>\n <div id=\"right-arrow\" class=\"rolatech-chip-bar\">\n <div id=\"right-arrow-button\" class=\"rolatech-chip-bar\">\n <button mat-icon-button (click)=\"rightArrowClick()\">\n <mat-icon>chevron_right</mat-icon>\n <!-- <mat-icon svgIcon=\"chevron_right\"></mat-icon> -->\n\n <!-- <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"m9.4 18.4-.7-.7 5.6-5.6-5.7-5.7.7-.7 6.4 6.4-6.3 6.3z\"></path>\n </svg> -->\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}rolatech-chip-bar{--rt-chips-bar-base-height: 56px;display:flex;width:100%;padding-left:var(--rt-chip-bar-padding, 0px);padding-right:var(--rt-chip-bar-padding, 0px);background-color:var(--rt-chip-bar-barckground-color, #fff);color:var(--rt-chip-bar-color, #000);height:var(--rt-chips-bar-base-height)}.chip-bar-active{border-radius:var(--rt-chip-bar-border-radius, 8px);color:var(--rt-chip-bar-active-color, orangered)}@media(max-width:768px){.chip-bar-active{border-radius:var(--rt-chip-bar-border-radius, 8px);background-color:#000;color:#fff}}#scroll-container.rolatech-chip-bar{scroll-behavior:smooth;position:relative;white-space:nowrap}rolatech-chip-bar[fixed] #chips-wrapper.rolatech-chip-bar{position:fixed;top:var(--rt-rich-grid-chips-bar-top, 56px)}#chips-wrapper.rolatech-chip-bar{position:relative;width:var(--rt-rich-grid-chips-bar-width);background-color:var(--rt-base-background);z-index:2000;display:flex;justify-content:center}rolatech-chip-bar[fluid-width] #chips-content.rolatech-chip-bar{max-width:calc(var(--rt-rich-grid-content-max-width) + 2 * var(--rt-chip-bar-padding));padding-left:var(--rt-chip-bar-padding, 0px);padding-right:var(--rt-chip-bar-padding, 0px)}#chips-content.rolatech-chip-bar{box-sizing:border-box;width:100%;display:flex}#chips.rolatech-chip-bar{transition-duration:.15s;transition-timing-function:cubic-bezier(.05,0,0,1);will-change:transform;white-space:nowrap}#left-arrow.rolatech-chip-bar,#right-arrow.rolatech-chip-bar{position:absolute;height:100%;z-index:2020;display:flex;flex-direction:row;justify-content:center}#left-arrow.rolatech-chip-bar{top:0;left:0}#right-arrow.rolatech-chip-bar{top:0;right:0}#left-arrow-button.rolatech-chip-bar,#right-arrow-button.rolatech-chip-bar{background-color:var(--rt-base-background);display:flex;flex-direction:column;justify-content:center}#right-arrow.rolatech-chip-bar:before{height:100%;width:50px;content:\"\";pointer-events:none}rolatech-chip-bar[at-start] #left-arrow.rolatech-chip-bar{display:none}rolatech-chip-bar[at-end] #right-arrow.rolatech-chip-bar{display:none}#left-arrow.rolatech-chip-bar:after,#right-arrow.rolatech-chip-bar:before{height:100%;width:50px;content:\"\";pointer-events:none}#left-arrow.rolatech-chip-bar:after{background:linear-gradient(to right,var(--rt-base-background) 20%,rgba(255,255,255,0) 80%)}#right-arrow.rolatech-chip-bar:before{background:linear-gradient(to left,var(--rt-base-background) 20%,rgba(255,255,255,0) 80%)}#chip-item.rolatech-chip-bar{margin:12px 12px 12px 0}#chip-item.rolatech-chip-bar:last-of-type{margin-right:0}#chip-item:not([selected]):hover,#chip-item:not([selected]):focus{background-color:var(--rt-20-percent-layer)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
2131
2141
  }
2132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ChipBarComponent, decorators: [{
2142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ChipBarComponent, decorators: [{
2133
2143
  type: Component,
2134
2144
  args: [{ selector: 'rolatech-chip-bar', imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule], encapsulation: ViewEncapsulation.None, template: "<div id=\"chips-wrapper\" class=\"rolatech-chip-bar\">\n <div id=\"chips-content\" class=\"rolatech-chip-bar\">\n <div id=\"left-arrow\" class=\"rolatech-chip-bar\">\n <div id=\"left-arrow-button\" class=\"rolatech-chip-bar\">\n <button mat-icon-button (click)=\"leftArrowClick()\">\n <mat-icon>chevron_left</mat-icon>\n <!-- <mat-icon svgIcon=\"chevron_left\"></mat-icon> -->\n\n <!-- <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M14.96 18.96 8 12l6.96-6.96.71.71L9.41 12l6.25 6.25-.7.71z\"></path>\n </svg> -->\n </button>\n </div>\n </div>\n <div\n id=\"scroll-container\"\n #scroller\n class=\"rolatech-chip-bar overflow-x-scroll overflow-y-hidden scrollbar-hide\"\n (scroll)=\"onScroll($event)\"\n >\n <div id=\"chips\" #chips class=\"rolatech-chip-bar inline-block\">\n @for (link of items(); track link; let index = $index) {\n <a\n id=\"chip-item\"\n class=\"rolatech-chip-bar h-8 cursor-pointer bg-(--rt-10-percent-layer) rounded-md inline-flex items-center px-3 m-3 ml-0\"\n routerLinkActive=\"chip-bar-active\"\n [routerLink]=\"[router(), link.link]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md\">{{ link.name }}</span>\n </a>\n }\n </div>\n </div>\n <div id=\"right-arrow\" class=\"rolatech-chip-bar\">\n <div id=\"right-arrow-button\" class=\"rolatech-chip-bar\">\n <button mat-icon-button (click)=\"rightArrowClick()\">\n <mat-icon>chevron_right</mat-icon>\n <!-- <mat-icon svgIcon=\"chevron_right\"></mat-icon> -->\n\n <!-- <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"m9.4 18.4-.7-.7 5.6-5.6-5.7-5.7.7-.7 6.4 6.4-6.3 6.3z\"></path>\n </svg> -->\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}rolatech-chip-bar{--rt-chips-bar-base-height: 56px;display:flex;width:100%;padding-left:var(--rt-chip-bar-padding, 0px);padding-right:var(--rt-chip-bar-padding, 0px);background-color:var(--rt-chip-bar-barckground-color, #fff);color:var(--rt-chip-bar-color, #000);height:var(--rt-chips-bar-base-height)}.chip-bar-active{border-radius:var(--rt-chip-bar-border-radius, 8px);color:var(--rt-chip-bar-active-color, orangered)}@media(max-width:768px){.chip-bar-active{border-radius:var(--rt-chip-bar-border-radius, 8px);background-color:#000;color:#fff}}#scroll-container.rolatech-chip-bar{scroll-behavior:smooth;position:relative;white-space:nowrap}rolatech-chip-bar[fixed] #chips-wrapper.rolatech-chip-bar{position:fixed;top:var(--rt-rich-grid-chips-bar-top, 56px)}#chips-wrapper.rolatech-chip-bar{position:relative;width:var(--rt-rich-grid-chips-bar-width);background-color:var(--rt-base-background);z-index:2000;display:flex;justify-content:center}rolatech-chip-bar[fluid-width] #chips-content.rolatech-chip-bar{max-width:calc(var(--rt-rich-grid-content-max-width) + 2 * var(--rt-chip-bar-padding));padding-left:var(--rt-chip-bar-padding, 0px);padding-right:var(--rt-chip-bar-padding, 0px)}#chips-content.rolatech-chip-bar{box-sizing:border-box;width:100%;display:flex}#chips.rolatech-chip-bar{transition-duration:.15s;transition-timing-function:cubic-bezier(.05,0,0,1);will-change:transform;white-space:nowrap}#left-arrow.rolatech-chip-bar,#right-arrow.rolatech-chip-bar{position:absolute;height:100%;z-index:2020;display:flex;flex-direction:row;justify-content:center}#left-arrow.rolatech-chip-bar{top:0;left:0}#right-arrow.rolatech-chip-bar{top:0;right:0}#left-arrow-button.rolatech-chip-bar,#right-arrow-button.rolatech-chip-bar{background-color:var(--rt-base-background);display:flex;flex-direction:column;justify-content:center}#right-arrow.rolatech-chip-bar:before{height:100%;width:50px;content:\"\";pointer-events:none}rolatech-chip-bar[at-start] #left-arrow.rolatech-chip-bar{display:none}rolatech-chip-bar[at-end] #right-arrow.rolatech-chip-bar{display:none}#left-arrow.rolatech-chip-bar:after,#right-arrow.rolatech-chip-bar:before{height:100%;width:50px;content:\"\";pointer-events:none}#left-arrow.rolatech-chip-bar:after{background:linear-gradient(to right,var(--rt-base-background) 20%,rgba(255,255,255,0) 80%)}#right-arrow.rolatech-chip-bar:before{background:linear-gradient(to left,var(--rt-base-background) 20%,rgba(255,255,255,0) 80%)}#chip-item.rolatech-chip-bar{margin:12px 12px 12px 0}#chip-item.rolatech-chip-bar:last-of-type{margin-right:0}#chip-item:not([selected]):hover,#chip-item:not([selected]):focus{background-color:var(--rt-20-percent-layer)}\n"] }]
2135
2145
  }], ctorParameters: () => [], propDecorators: { hasId: [{
@@ -2142,17 +2152,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
2142
2152
 
2143
2153
  class AvatarComponent {
2144
2154
  hasClass = true;
2145
- src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : []));
2146
- size = input.required(...(ngDevMode ? [{ debugName: "size" }] : []));
2155
+ src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : /* istanbul ignore next */ []));
2156
+ size = input.required(...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
2147
2157
  el = inject(ElementRef);
2148
2158
  renderer = inject(Renderer2);
2149
2159
  sizea = effect(() => {
2150
2160
  this.renderer.setAttribute(this.el.nativeElement, 'size', this.size());
2151
- }, ...(ngDevMode ? [{ debugName: "sizea" }] : []));
2152
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: AvatarComponent, isStandalone: true, selector: "rolatech-avatar", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.rt-rich-grid-media": "this.hasClass" } }, ngImport: i0, template: "@defer (on viewport()) {\n <a id=\"avatar\" class=\"rt-avatar\">\n <rolatech-image [src]=\"src()\"> </rolatech-image>\n </a>\n} @placeholder {\n <div class=\"bg-(--rt-10-percent-layer) w-full h-full rounded-lg\"></div>\n}\n", styles: ["rolatech-avatar{display:block;width:100%;position:relative}rolatech-avatar:before{display:block;content:\"\";width:100%;padding-top:100%;background-color:var(--rt-10-percent-layer, #f1f1f1)}rolatech-avatar #avatar.rt-avatar{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block}rolatech-avatar #avatar.rt-avatar{position:absolute;inset:0}rolatech-avatar a.rt-avatar,rolatech-avatar:before{border-radius:0}rolatech-avatar[size=small] a.rt-avatar,rolatech-avatar[size=small]:before{border-radius:4px}rolatech-avatar[size=medium] a.rt-avatar,rolatech-avatar[size=medium]:before{border-radius:8px}rolatech-avatar[size=large] a.rt-avatar,rolatech-avatar[size=large]:before{border-radius:12px}rolatech-avatar[size=full] a.rt-avatar,rolatech-avatar[size=full]:before{border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)]] });
2161
+ }, ...(ngDevMode ? [{ debugName: "sizea" }] : /* istanbul ignore next */ []));
2162
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2163
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AvatarComponent, isStandalone: true, selector: "rolatech-avatar", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.rt-rich-grid-media": "this.hasClass" } }, ngImport: i0, template: "@defer (on viewport()) {\n <a id=\"avatar\" class=\"rt-avatar\">\n <rolatech-image [src]=\"src()\"> </rolatech-image>\n </a>\n} @placeholder {\n <div class=\"bg-(--rt-10-percent-layer) w-full h-full rounded-lg\"></div>\n}\n", styles: ["rolatech-avatar{display:block;width:100%;position:relative}rolatech-avatar:before{display:block;content:\"\";width:100%;padding-top:100%;background-color:var(--rt-10-percent-layer, #f1f1f1)}rolatech-avatar #avatar.rt-avatar{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block}rolatech-avatar #avatar.rt-avatar{position:absolute;inset:0}rolatech-avatar a.rt-avatar,rolatech-avatar:before{border-radius:0}rolatech-avatar[size=small] a.rt-avatar,rolatech-avatar[size=small]:before{border-radius:4px}rolatech-avatar[size=medium] a.rt-avatar,rolatech-avatar[size=medium]:before{border-radius:8px}rolatech-avatar[size=large] a.rt-avatar,rolatech-avatar[size=large]:before{border-radius:12px}rolatech-avatar[size=full] a.rt-avatar,rolatech-avatar[size=full]:before{border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)]] });
2154
2164
  }
2155
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.1", ngImport: i0, type: AvatarComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)], resolveMetadata: ImageComponent => ({ decorators: [{
2165
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.5", ngImport: i0, type: AvatarComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)], resolveMetadata: ImageComponent => ({ decorators: [{
2156
2166
  type: Component,
2157
2167
  args: [{ selector: 'rolatech-avatar', imports: [CommonModule, ImageComponent], encapsulation: ViewEncapsulation.None, template: "@defer (on viewport()) {\n <a id=\"avatar\" class=\"rt-avatar\">\n <rolatech-image [src]=\"src()\"> </rolatech-image>\n </a>\n} @placeholder {\n <div class=\"bg-(--rt-10-percent-layer) w-full h-full rounded-lg\"></div>\n}\n", styles: ["rolatech-avatar{display:block;width:100%;position:relative}rolatech-avatar:before{display:block;content:\"\";width:100%;padding-top:100%;background-color:var(--rt-10-percent-layer, #f1f1f1)}rolatech-avatar #avatar.rt-avatar{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block}rolatech-avatar #avatar.rt-avatar{position:absolute;inset:0}rolatech-avatar a.rt-avatar,rolatech-avatar:before{border-radius:0}rolatech-avatar[size=small] a.rt-avatar,rolatech-avatar[size=small]:before{border-radius:4px}rolatech-avatar[size=medium] a.rt-avatar,rolatech-avatar[size=medium]:before{border-radius:8px}rolatech-avatar[size=large] a.rt-avatar,rolatech-avatar[size=large]:before{border-radius:12px}rolatech-avatar[size=full] a.rt-avatar,rolatech-avatar[size=full]:before{border-radius:50%}\n"] }]
2158
2168
  }], ctorParameters: null, propDecorators: { hasClass: [{
@@ -2163,17 +2173,17 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.1", ng
2163
2173
  class ImagePlaceholderComponent {
2164
2174
  renderer = inject(Renderer2);
2165
2175
  el = inject((ElementRef));
2166
- ratio = input('rectangle', ...(ngDevMode ? [{ debugName: "ratio" }] : [])); // rectangle, square
2176
+ ratio = input('rectangle', ...(ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ [])); // rectangle, square
2167
2177
  constructor() {
2168
2178
  effect(() => {
2169
2179
  this.renderer.setAttribute(this.el.nativeElement, 'ratio', this.ratio());
2170
2180
  });
2171
2181
  }
2172
2182
  ngOnInit() { }
2173
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ImagePlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2174
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: ImagePlaceholderComponent, isStandalone: true, selector: "rolatech-image-placeholder", inputs: { ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"w-full h-full flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"\n />\n </svg>\n</div>\n", styles: ["rolatech-image-placeholder{display:block;aspect-ratio:16/9;background-color:var(--rt-10-percent-layer);border-radius:var(--rt-rounded-base, 8px)}rolatech-image-placeholder[ratio=square]{aspect-ratio:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImagePlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ImagePlaceholderComponent, isStandalone: true, selector: "rolatech-image-placeholder", inputs: { ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"w-full h-full flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"\n />\n </svg>\n</div>\n", styles: ["rolatech-image-placeholder{display:block;aspect-ratio:16/9;background-color:var(--rt-10-percent-layer);border-radius:var(--rt-rounded-base, 8px)}rolatech-image-placeholder[ratio=square]{aspect-ratio:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2175
2185
  }
2176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ImagePlaceholderComponent, decorators: [{
2186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImagePlaceholderComponent, decorators: [{
2177
2187
  type: Component,
2178
2188
  args: [{ selector: 'rolatech-image-placeholder', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"w-full h-full flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"\n />\n </svg>\n</div>\n", styles: ["rolatech-image-placeholder{display:block;aspect-ratio:16/9;background-color:var(--rt-10-percent-layer);border-radius:var(--rt-rounded-base, 8px)}rolatech-image-placeholder[ratio=square]{aspect-ratio:1}\n"] }]
2179
2189
  }], ctorParameters: () => [], propDecorators: { ratio: [{ type: i0.Input, args: [{ isSignal: true, alias: "ratio", required: false }] }] } });
@@ -2204,48 +2214,48 @@ class ImagePreviewDialogComponent {
2204
2214
  this.prevDisabled = this.selected === 0;
2205
2215
  this.nextDisabled = this.selected === this.data.media.length - 1;
2206
2216
  }
2207
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ImagePreviewDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2208
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ImagePreviewDialogComponent, isStandalone: true, selector: "rolatech-image-preview-dialog", ngImport: i0, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center p-5\">\n @if (data.title) {\n <div class=\"text-lg font-bold\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex justify-center items-center overflow-hidden\">\n <div class=\"p-3 flex items-center justify-center h-full\">\n <img class=\"object-contain p-3 h-full\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <div class=\"flex-1\"></div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center p-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i2$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], encapsulation: i0.ViewEncapsulation.None });
2217
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImagePreviewDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2218
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ImagePreviewDialogComponent, isStandalone: true, selector: "rolatech-image-preview-dialog", ngImport: i0, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center p-5\">\n @if (data.title) {\n <div class=\"text-lg font-bold\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex justify-center items-center overflow-hidden\">\n <div class=\"p-3 flex items-center justify-center h-full\">\n <img class=\"object-contain p-3 h-full\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <div class=\"flex-1\"></div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center p-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i2$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], encapsulation: i0.ViewEncapsulation.None });
2209
2219
  }
2210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ImagePreviewDialogComponent, decorators: [{
2220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImagePreviewDialogComponent, decorators: [{
2211
2221
  type: Component,
2212
2222
  args: [{ selector: 'rolatech-image-preview-dialog', imports: [MatIconModule, MatDividerModule, MatButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center p-5\">\n @if (data.title) {\n <div class=\"text-lg font-bold\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex justify-center items-center overflow-hidden\">\n <div class=\"p-3 flex items-center justify-center h-full\">\n <img class=\"object-contain p-3 h-full\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <div class=\"flex-1\"></div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center p-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n" }]
2213
2223
  }] });
2214
2224
 
2215
2225
  class EmptyComponent {
2216
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: EmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2217
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: EmptyComponent, isStandalone: true, selector: "rolatech-empty", ngImport: i0, template: "<div class=\"px-4 py-2 flex items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"M460-300h40v-220h-40v220Zm20-276.92q10.46 0 17.54-7.08 7.08-7.08 7.08-17.54 0-10.46-7.08-17.54-7.08-7.07-17.54-7.07-10.46 0-17.54 7.07-7.08 7.08-7.08 17.54 0 10.46 7.08 17.54 7.08 7.08 17.54 7.08Zm.13 456.92q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n />\n </svg>\n <span class=\"ml-2\">No Data</span>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
2226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: EmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2227
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: EmptyComponent, isStandalone: true, selector: "rolatech-empty", ngImport: i0, template: "<div class=\"px-4 py-2 flex items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"M460-300h40v-220h-40v220Zm20-276.92q10.46 0 17.54-7.08 7.08-7.08 7.08-17.54 0-10.46-7.08-17.54-7.08-7.07-17.54-7.07-10.46 0-17.54 7.07-7.08 7.08-7.08 17.54 0 10.46 7.08 17.54 7.08 7.08 17.54 7.08Zm.13 456.92q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n />\n </svg>\n <span class=\"ml-2\">No Data</span>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
2218
2228
  }
2219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: EmptyComponent, decorators: [{
2229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: EmptyComponent, decorators: [{
2220
2230
  type: Component,
2221
2231
  args: [{ selector: 'rolatech-empty', imports: [CommonModule], template: "<div class=\"px-4 py-2 flex items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"M460-300h40v-220h-40v220Zm20-276.92q10.46 0 17.54-7.08 7.08-7.08 7.08-17.54 0-10.46-7.08-17.54-7.08-7.07-17.54-7.07-10.46 0-17.54 7.07-7.08 7.08-7.08 17.54 0 10.46 7.08 17.54 7.08 7.08 17.54 7.08Zm.13 456.92q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n />\n </svg>\n <span class=\"ml-2\">No Data</span>\n</div>\n" }]
2222
2232
  }] });
2223
2233
 
2224
2234
  class InputComponent {
2225
- title = model(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
2226
- placeholder = input('Title', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
2227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2228
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: InputComponent, isStandalone: true, selector: "rolatech-input", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange" }, ngImport: i0, template: "<div class=\"rt-input-wrapper\">\n <input class=\"rt__input\" [placeholder]=\"placeholder()\" [(ngModel)]=\"title\" />\n</div>\n", styles: ["rolatech-input{width:100%;padding:8px}.rt-input-wrapper{width:100%;z-index:0;padding:12px;background-color:var(--rt-additive-background, #fff);border-radius:var(--rt-input-rounded, 8px);border:1px solid var(--rt-brand-color)}.rt__input{box-shadow:none;background:none;border-radius:0;width:100%;min-width:0;border:none;display:block}.rt__input:focus-visible{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
2235
+ title = model(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
2236
+ placeholder = input('Title', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
2237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: InputComponent, isStandalone: true, selector: "rolatech-input", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange" }, ngImport: i0, template: "<div class=\"rt-input-wrapper\">\n <input class=\"rt__input\" [placeholder]=\"placeholder()\" [(ngModel)]=\"title\" />\n</div>\n", styles: ["rolatech-input{width:100%;padding:8px}.rt-input-wrapper{width:100%;z-index:0;padding:12px;background-color:var(--rt-additive-background, #fff);border-radius:var(--rt-input-rounded, 8px);border:1px solid var(--rt-brand-color)}.rt__input{box-shadow:none;background:none;border-radius:0;width:100%;min-width:0;border:none;display:block}.rt__input:focus-visible{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
2229
2239
  }
2230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InputComponent, decorators: [{
2240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: InputComponent, decorators: [{
2231
2241
  type: Component,
2232
2242
  args: [{ selector: 'rolatech-input', imports: [CommonModule, FormsModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"rt-input-wrapper\">\n <input class=\"rt__input\" [placeholder]=\"placeholder()\" [(ngModel)]=\"title\" />\n</div>\n", styles: ["rolatech-input{width:100%;padding:8px}.rt-input-wrapper{width:100%;z-index:0;padding:12px;background-color:var(--rt-additive-background, #fff);border-radius:var(--rt-input-rounded, 8px);border:1px solid var(--rt-brand-color)}.rt__input{box-shadow:none;background:none;border-radius:0;width:100%;min-width:0;border:none;display:block}.rt__input:focus-visible{outline:none}\n"] }]
2233
2243
  }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }, { type: i0.Output, args: ["titleChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
2234
2244
 
2235
2245
  class RichItemComponent {
2236
2246
  hasClass = true;
2237
- list = input(false, { ...(ngDevMode ? { debugName: "list" } : {}), transform: booleanAttribute });
2238
- thumbnail = input(...(ngDevMode ? [undefined, { debugName: "thumbnail" }] : []));
2239
- avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : []));
2240
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
2241
- subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : []));
2242
- price = input(0, ...(ngDevMode ? [{ debugName: "price" }] : []));
2243
- thumbnailRatio = input('rectangle', ...(ngDevMode ? [{ debugName: "thumbnailRatio" }] : []));
2244
- thumbnailMode = input('full', ...(ngDevMode ? [{ debugName: "thumbnailMode" }] : []));
2245
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2246
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: RichItemComponent, isStandalone: true, selector: "rolatech-rich-item", inputs: { list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: false, transformFunction: null }, thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, price: { classPropertyName: "price", publicName: "price", isSignal: true, isRequired: false, transformFunction: null }, thumbnailRatio: { classPropertyName: "thumbnailRatio", publicName: "thumbnailRatio", isSignal: true, isRequired: false, transformFunction: null }, thumbnailMode: { classPropertyName: "thumbnailMode", publicName: "thumbnailMode", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-rich-item": "this.hasClass" } }, ngImport: i0, template: "<div id=\"thumbnail\" class=\"rolatech-rich-item\">\n @defer (on viewport()) {\n <rolatech-thumbnail\n [src]=\"thumbnail()\"\n size=\"medium\"\n [ratio]=\"thumbnailRatio()\"\n [mode]=\"thumbnailMode()\"\n ></rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-10-percent-layer) h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n</div>\n<div id=\"details\" class=\"rolatech-rich-item\">\n <div>\n <div class=\"py-1\">\n <a class=\"md:text-xl font-bold wrap-break-words line-clamp-1 md:line-clamp-2 whitespace-normal\">\n {{ title() }}\n </a>\n </div>\n <div class=\"invisible h-0 md:h-auto md:visible wrap-break-words line-clamp-1 whitespace-normal\">\n {{ subtitle() }}\n </div>\n <ng-content></ng-content>\n </div>\n @if (price()) {\n <div class=\"md:text-lg font-bold py-1\">{{ price() | price }}</div>\n }\n</div>\n", styles: ["rolatech-rich-item{--rt-rich-view-item-margin: 16px;display:flex;position:relative;cursor:pointer;flex-direction:column;margin-left:calc(var(--rt-rich-view-item-margin) / 2);margin-right:calc(var(--rt-rich-view-item-margin) / 2);width:calc(100% / var(--rt-rich-view-items-per-row) - var(--rt-rich-view-item-margin))}#details.rolatech-rich-item{display:flex;flex-direction:column;justify-content:space-between}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: PricePipe, name: "price" }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)]] });
2247
- }
2248
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.1", ngImport: i0, type: RichItemComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
2247
+ list = input(false, { ...(ngDevMode ? { debugName: "list" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2248
+ thumbnail = input(...(ngDevMode ? [undefined, { debugName: "thumbnail" }] : /* istanbul ignore next */ []));
2249
+ avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : /* istanbul ignore next */ []));
2250
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
2251
+ subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
2252
+ price = input(0, ...(ngDevMode ? [{ debugName: "price" }] : /* istanbul ignore next */ []));
2253
+ thumbnailRatio = input('rectangle', ...(ngDevMode ? [{ debugName: "thumbnailRatio" }] : /* istanbul ignore next */ []));
2254
+ thumbnailMode = input('full', ...(ngDevMode ? [{ debugName: "thumbnailMode" }] : /* istanbul ignore next */ []));
2255
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: RichItemComponent, isStandalone: true, selector: "rolatech-rich-item", inputs: { list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: false, transformFunction: null }, thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, price: { classPropertyName: "price", publicName: "price", isSignal: true, isRequired: false, transformFunction: null }, thumbnailRatio: { classPropertyName: "thumbnailRatio", publicName: "thumbnailRatio", isSignal: true, isRequired: false, transformFunction: null }, thumbnailMode: { classPropertyName: "thumbnailMode", publicName: "thumbnailMode", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-rich-item": "this.hasClass" } }, ngImport: i0, template: "<div id=\"thumbnail\" class=\"rolatech-rich-item\">\n @defer (on viewport()) {\n <rolatech-thumbnail\n [src]=\"thumbnail()\"\n size=\"medium\"\n [ratio]=\"thumbnailRatio()\"\n [mode]=\"thumbnailMode()\"\n ></rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-10-percent-layer) h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n</div>\n<div id=\"details\" class=\"rolatech-rich-item\">\n <div>\n <div class=\"py-1\">\n <a class=\"md:text-xl font-bold wrap-break-words line-clamp-1 md:line-clamp-2 whitespace-normal\">\n {{ title() }}\n </a>\n </div>\n <div class=\"invisible h-0 md:h-auto md:visible wrap-break-words line-clamp-1 whitespace-normal\">\n {{ subtitle() }}\n </div>\n <ng-content></ng-content>\n </div>\n @if (price()) {\n <div class=\"md:text-lg font-bold py-1\">{{ price() | price }}</div>\n }\n</div>\n", styles: ["rolatech-rich-item{--rt-rich-view-item-margin: 16px;display:flex;position:relative;cursor:pointer;flex-direction:column;margin-left:calc(var(--rt-rich-view-item-margin) / 2);margin-right:calc(var(--rt-rich-view-item-margin) / 2);width:calc(100% / var(--rt-rich-view-items-per-row) - var(--rt-rich-view-item-margin))}#details.rolatech-rich-item{display:flex;flex-direction:column;justify-content:space-between}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: PricePipe, name: "price" }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)]] });
2257
+ }
2258
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.5", ngImport: i0, type: RichItemComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
2249
2259
  type: Component,
2250
2260
  args: [{ selector: 'rolatech-rich-item', imports: [CommonModule, ThumbnailComponent, PricePipe], encapsulation: ViewEncapsulation.None, template: "<div id=\"thumbnail\" class=\"rolatech-rich-item\">\n @defer (on viewport()) {\n <rolatech-thumbnail\n [src]=\"thumbnail()\"\n size=\"medium\"\n [ratio]=\"thumbnailRatio()\"\n [mode]=\"thumbnailMode()\"\n ></rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-10-percent-layer) h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n</div>\n<div id=\"details\" class=\"rolatech-rich-item\">\n <div>\n <div class=\"py-1\">\n <a class=\"md:text-xl font-bold wrap-break-words line-clamp-1 md:line-clamp-2 whitespace-normal\">\n {{ title() }}\n </a>\n </div>\n <div class=\"invisible h-0 md:h-auto md:visible wrap-break-words line-clamp-1 whitespace-normal\">\n {{ subtitle() }}\n </div>\n <ng-content></ng-content>\n </div>\n @if (price()) {\n <div class=\"md:text-lg font-bold py-1\">{{ price() | price }}</div>\n }\n</div>\n", styles: ["rolatech-rich-item{--rt-rich-view-item-margin: 16px;display:flex;position:relative;cursor:pointer;flex-direction:column;margin-left:calc(var(--rt-rich-view-item-margin) / 2);margin-right:calc(var(--rt-rich-view-item-margin) / 2);width:calc(100% / var(--rt-rich-view-items-per-row) - var(--rt-rich-view-item-margin))}#details.rolatech-rich-item{display:flex;flex-direction:column;justify-content:space-between}\n"] }]
2251
2261
  }], ctorParameters: null, propDecorators: { hasClass: [{
@@ -2258,9 +2268,9 @@ class RichViewComponent {
2258
2268
  disableScrollbar = true;
2259
2269
  platformId = inject(PLATFORM_ID);
2260
2270
  el = inject(ElementRef);
2261
- items = contentChildren(RichItemComponent, { ...(ngDevMode ? { debugName: "items" } : {}), read: ElementRef });
2262
- list = input(false, { ...(ngDevMode ? { debugName: "list" } : {}), transform: booleanAttribute });
2263
- wrap = input(false, { ...(ngDevMode ? { debugName: "wrap" } : {}), transform: booleanAttribute });
2271
+ items = contentChildren(RichItemComponent, { ...(ngDevMode ? { debugName: "items" } : /* istanbul ignore next */ {}), read: ElementRef });
2272
+ list = input(false, { ...(ngDevMode ? { debugName: "list" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2273
+ wrap = input(false, { ...(ngDevMode ? { debugName: "wrap" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2264
2274
  resizeObserver;
2265
2275
  constructor() {
2266
2276
  effect(() => {
@@ -2306,10 +2316,10 @@ class RichViewComponent {
2306
2316
  this.el.nativeElement.style.setProperty('--rt-rich-view-items-per-row', 5);
2307
2317
  }
2308
2318
  }
2309
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2310
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: RichViewComponent, isStandalone: true, selector: "rolatech-rich-view", inputs: { list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-rich-view": "this.hasClass", "class.scrollbar-hide": "this.disableScrollbar" } }, queries: [{ propertyName: "items", predicate: RichItemComponent, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n\n<!-- <div class=\"rich-view-content\">\n <ng-content></ng-content>\n</div> -->\n<!-- <div class=\"rich-view-button\">\n <button mat-stroked-button>\u52A0\u8F7D\u66F4\u591A</button>\n</div> -->\n", styles: ["rolatech-rich-view{--rt-rich-view-items-per-row: 1;--rt-rich-view-item-max-width: 500px;position:relative;display:flex;padding-bottom:16px;margin-bottom:56px}rolatech-rich-view[list]{flex-direction:column;flex-wrap:nowrap}rolatech-rich-view[wrap]{flex-wrap:wrap;--rt-rich-view-items-per-row: 1}rolatech-rich-view:not([wrap]){overflow-x:scroll}rolatech-rich-view:not([wrap]) rolatech-rich-item{--rt-rich-view-item-min-width: 40%;min-width:var(--rt-rich-view-item-min-width)}@media(min-width:768px){rolatech-rich-view:not([wrap]) rolatech-rich-item{--rt-rich-view-item-min-width: 28%}}rolatech-rich-view[list] rolatech-rich-item{flex-direction:row;padding:12px 0;cursor:pointer}rolatech-rich-view[list] rolatech-rich-item #thumbnail.rolatech-rich-item{width:33%;min-width:33%}rolatech-rich-view[list] rolatech-rich-item #details.rolatech-rich-item{margin-left:12px}rolatech-rich-view[list] rolatech-rich-item:hover{background-color:var(--rt-10-percent-layer)}rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 1}rolatech-rich-view:not([list]) rolatech-rich-item{margin-bottom:16px}@media(min-width:600px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 2}}@media(min-width:768px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 3}}@media(min-width:1280px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 3}}@media(min-width:1536px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 4}}@media(min-width:1920px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 5}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.rich-view-button{position:absolute;bottom:-44px;left:50%;transform:translate(-50%,-50%);background-color:var(--yt-spec-base-background);z-index:1;width:360px;max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }], encapsulation: i0.ViewEncapsulation.None });
2319
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2320
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: RichViewComponent, isStandalone: true, selector: "rolatech-rich-view", inputs: { list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rolatech-rich-view": "this.hasClass", "class.scrollbar-hide": "this.disableScrollbar" } }, queries: [{ propertyName: "items", predicate: RichItemComponent, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n\n<!-- <div class=\"rich-view-content\">\n <ng-content></ng-content>\n</div> -->\n<!-- <div class=\"rich-view-button\">\n <button mat-stroked-button>\u52A0\u8F7D\u66F4\u591A</button>\n</div> -->\n", styles: ["rolatech-rich-view{--rt-rich-view-items-per-row: 1;--rt-rich-view-item-max-width: 500px;position:relative;display:flex;padding-bottom:16px;margin-bottom:56px}rolatech-rich-view[list]{flex-direction:column;flex-wrap:nowrap}rolatech-rich-view[wrap]{flex-wrap:wrap;--rt-rich-view-items-per-row: 1}rolatech-rich-view:not([wrap]){overflow-x:scroll}rolatech-rich-view:not([wrap]) rolatech-rich-item{--rt-rich-view-item-min-width: 40%;min-width:var(--rt-rich-view-item-min-width)}@media(min-width:768px){rolatech-rich-view:not([wrap]) rolatech-rich-item{--rt-rich-view-item-min-width: 28%}}rolatech-rich-view[list] rolatech-rich-item{flex-direction:row;padding:12px 0;cursor:pointer}rolatech-rich-view[list] rolatech-rich-item #thumbnail.rolatech-rich-item{width:33%;min-width:33%}rolatech-rich-view[list] rolatech-rich-item #details.rolatech-rich-item{margin-left:12px}rolatech-rich-view[list] rolatech-rich-item:hover{background-color:var(--rt-10-percent-layer)}rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 1}rolatech-rich-view:not([list]) rolatech-rich-item{margin-bottom:16px}@media(min-width:600px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 2}}@media(min-width:768px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 3}}@media(min-width:1280px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 3}}@media(min-width:1536px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 4}}@media(min-width:1920px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 5}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.rich-view-button{position:absolute;bottom:-44px;left:50%;transform:translate(-50%,-50%);background-color:var(--yt-spec-base-background);z-index:1;width:360px;max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }], encapsulation: i0.ViewEncapsulation.None });
2311
2321
  }
2312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RichViewComponent, decorators: [{
2322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RichViewComponent, decorators: [{
2313
2323
  type: Component,
2314
2324
  args: [{ selector: 'rolatech-rich-view', imports: [CommonModule, MatButtonModule], encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n\n<!-- <div class=\"rich-view-content\">\n <ng-content></ng-content>\n</div> -->\n<!-- <div class=\"rich-view-button\">\n <button mat-stroked-button>\u52A0\u8F7D\u66F4\u591A</button>\n</div> -->\n", styles: ["rolatech-rich-view{--rt-rich-view-items-per-row: 1;--rt-rich-view-item-max-width: 500px;position:relative;display:flex;padding-bottom:16px;margin-bottom:56px}rolatech-rich-view[list]{flex-direction:column;flex-wrap:nowrap}rolatech-rich-view[wrap]{flex-wrap:wrap;--rt-rich-view-items-per-row: 1}rolatech-rich-view:not([wrap]){overflow-x:scroll}rolatech-rich-view:not([wrap]) rolatech-rich-item{--rt-rich-view-item-min-width: 40%;min-width:var(--rt-rich-view-item-min-width)}@media(min-width:768px){rolatech-rich-view:not([wrap]) rolatech-rich-item{--rt-rich-view-item-min-width: 28%}}rolatech-rich-view[list] rolatech-rich-item{flex-direction:row;padding:12px 0;cursor:pointer}rolatech-rich-view[list] rolatech-rich-item #thumbnail.rolatech-rich-item{width:33%;min-width:33%}rolatech-rich-view[list] rolatech-rich-item #details.rolatech-rich-item{margin-left:12px}rolatech-rich-view[list] rolatech-rich-item:hover{background-color:var(--rt-10-percent-layer)}rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 1}rolatech-rich-view:not([list]) rolatech-rich-item{margin-bottom:16px}@media(min-width:600px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 2}}@media(min-width:768px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 3}}@media(min-width:1280px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 3}}@media(min-width:1536px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 4}}@media(min-width:1920px){rolatech-rich-view:not([list]){--rt-rich-view-items-per-row: 5}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.rich-view-button{position:absolute;bottom:-44px;left:50%;transform:translate(-50%,-50%);background-color:var(--yt-spec-base-background);z-index:1;width:360px;max-width:100%}\n"] }]
2315
2325
  }], ctorParameters: () => [], propDecorators: { hasClass: [{
@@ -2370,20 +2380,20 @@ class EditorComponent {
2370
2380
  });
2371
2381
  }
2372
2382
  }
2373
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: EditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2374
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: EditorComponent, isStandalone: true, selector: "rolatech-editor", ngImport: i0, template: "<div id=\"editor\"></div>\n", styles: ["@import\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\";.ql-snow{position:relative}.ql-snow .ql-toolbar{position:sticky;top:5em}.ql-snow button{width:inherit!important;height:24px!important}.ql-snow .ql-editor{border:4px solid #efefef}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2383
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: EditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2384
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: EditorComponent, isStandalone: true, selector: "rolatech-editor", ngImport: i0, template: "<div id=\"editor\"></div>\n", styles: ["@import\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\";.ql-snow{position:relative}.ql-snow .ql-toolbar{position:sticky;top:5em}.ql-snow button{width:inherit!important;height:24px!important}.ql-snow .ql-editor{border:4px solid #efefef}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2375
2385
  }
2376
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: EditorComponent, decorators: [{
2386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: EditorComponent, decorators: [{
2377
2387
  type: Component,
2378
2388
  args: [{ selector: 'rolatech-editor', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div id=\"editor\"></div>\n", styles: ["@import\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\";.ql-snow{position:relative}.ql-snow .ql-toolbar{position:sticky;top:5em}.ql-snow button{width:inherit!important;height:24px!important}.ql-snow .ql-editor{border:4px solid #efefef}\n"] }]
2379
2389
  }], ctorParameters: () => [] });
2380
2390
 
2381
2391
  class AccordionComponent {
2382
2392
  hasClass = true;
2383
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2384
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: AccordionComponent, isStandalone: true, selector: "rolatech-accordion", host: { properties: { "class.rolatech-accordion": "this.hasClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2393
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2394
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: AccordionComponent, isStandalone: true, selector: "rolatech-accordion", host: { properties: { "class.rolatech-accordion": "this.hasClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2385
2395
  }
2386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AccordionComponent, decorators: [{
2396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AccordionComponent, decorators: [{
2387
2397
  type: Component,
2388
2398
  args: [{ selector: 'rolatech-accordion', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n" }]
2389
2399
  }], propDecorators: { hasClass: [{
@@ -2393,11 +2403,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
2393
2403
 
2394
2404
  class PanelComponent {
2395
2405
  hasClass = true;
2396
- border = input(false, { ...(ngDevMode ? { debugName: "border" } : {}), transform: booleanAttribute });
2397
- divider = input(false, { ...(ngDevMode ? { debugName: "divider" } : {}), transform: booleanAttribute });
2398
- expanded = model(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
2399
- title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
2400
- subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : []));
2406
+ border = input(false, { ...(ngDevMode ? { debugName: "border" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2407
+ divider = input(false, { ...(ngDevMode ? { debugName: "divider" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2408
+ expanded = model(false, ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
2409
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
2410
+ subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
2401
2411
  el = inject(ElementRef);
2402
2412
  constructor() {
2403
2413
  effect(() => {
@@ -2426,10 +2436,10 @@ class PanelComponent {
2426
2436
  toggle() {
2427
2437
  this.expanded.set(!this.expanded());
2428
2438
  }
2429
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2430
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: PanelComponent, isStandalone: true, selector: "rolatech-panel", inputs: { border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, divider: { classPropertyName: "divider", publicName: "divider", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.rolatech-panel": "this.hasClass" } }, ngImport: i0, template: "<div id=\"header\" class=\"header rolatech-panel w-full h-11\" (click)=\"toggle(); $event.stopPropagation()\">\n <ng-content select=\"rolatech-panel-header\"></ng-content>\n <div>{{ title() }}</div>\n <rolatech-icon class=\"indicator-collapsed\" [class.indicator-expanded]=\"expanded() === true\">expand_more</rolatech-icon>\n</div>\n<div class=\"content-container rolatech-panel content-collapsed\" [class.content-expanded]=\"expanded() === true\">\n <div class=\"content-inner rolatech-panel\">\n <ng-content>No content</ng-content>\n </div>\n</div>\n", styles: ["rolatech-panel{box-sizing:content-box;display:block;overflow:hidden;background:var(--rt-base-background);color:var(--rt-text-primary);--rt-panel-padding: 12px}rolatech-panel:not([border]){margin-bottom:var(--rt-panel-padding)}rolatech-panel .header{padding:var(--rt-panel-padding);display:flex;justify-content:space-between;align-items:center;height:44px;background-color:var(--rt-10-percent-layer);cursor:pointer}rolatech-panel .header:hover{background-color:var(--rt-20-percent-layer)}rolatech-panel .content-container{overflow:visible}rolatech-panel .content-container .content-inner{padding:var(--rt-panel-padding)}rolatech-panel[border]{border-top:1px solid #d1d7dc;border-left:1px solid #d1d7dc;border-right:1px solid #d1d7dc}rolatech-panel[border]:last-child{border-bottom:1px solid #d1d7dc}rolatech-panel[divider]{border-bottom:1px solid #d1d7dc}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }], encapsulation: i0.ViewEncapsulation.None });
2439
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2440
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: PanelComponent, isStandalone: true, selector: "rolatech-panel", inputs: { border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, divider: { classPropertyName: "divider", publicName: "divider", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.rolatech-panel": "this.hasClass" } }, ngImport: i0, template: "<div id=\"header\" class=\"header rolatech-panel w-full h-11\" (click)=\"toggle(); $event.stopPropagation()\">\n <ng-content select=\"rolatech-panel-header\"></ng-content>\n <div>{{ title() }}</div>\n <rolatech-icon class=\"indicator-collapsed\" [class.indicator-expanded]=\"expanded() === true\">expand_more</rolatech-icon>\n</div>\n<div class=\"content-container rolatech-panel content-collapsed\" [class.content-expanded]=\"expanded() === true\">\n <div class=\"content-inner rolatech-panel\">\n <ng-content>No content</ng-content>\n </div>\n</div>\n", styles: ["rolatech-panel{box-sizing:content-box;display:block;overflow:hidden;background:var(--rt-base-background);color:var(--rt-text-primary);--rt-panel-padding: 12px}rolatech-panel:not([border]){margin-bottom:var(--rt-panel-padding)}rolatech-panel .header{padding:var(--rt-panel-padding);display:flex;justify-content:space-between;align-items:center;height:44px;background-color:var(--rt-10-percent-layer);cursor:pointer}rolatech-panel .header:hover{background-color:var(--rt-20-percent-layer)}rolatech-panel .content-container{overflow:visible}rolatech-panel .content-container .content-inner{padding:var(--rt-panel-padding)}rolatech-panel[border]{border-top:1px solid #d1d7dc;border-left:1px solid #d1d7dc;border-right:1px solid #d1d7dc}rolatech-panel[border]:last-child{border-bottom:1px solid #d1d7dc}rolatech-panel[divider]{border-bottom:1px solid #d1d7dc}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }], encapsulation: i0.ViewEncapsulation.None });
2431
2441
  }
2432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PanelComponent, decorators: [{
2442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PanelComponent, decorators: [{
2433
2443
  type: Component,
2434
2444
  args: [{ selector: 'rolatech-panel', imports: [CommonModule, IconComponent], encapsulation: ViewEncapsulation.None, template: "<div id=\"header\" class=\"header rolatech-panel w-full h-11\" (click)=\"toggle(); $event.stopPropagation()\">\n <ng-content select=\"rolatech-panel-header\"></ng-content>\n <div>{{ title() }}</div>\n <rolatech-icon class=\"indicator-collapsed\" [class.indicator-expanded]=\"expanded() === true\">expand_more</rolatech-icon>\n</div>\n<div class=\"content-container rolatech-panel content-collapsed\" [class.content-expanded]=\"expanded() === true\">\n <div class=\"content-inner rolatech-panel\">\n <ng-content>No content</ng-content>\n </div>\n</div>\n", styles: ["rolatech-panel{box-sizing:content-box;display:block;overflow:hidden;background:var(--rt-base-background);color:var(--rt-text-primary);--rt-panel-padding: 12px}rolatech-panel:not([border]){margin-bottom:var(--rt-panel-padding)}rolatech-panel .header{padding:var(--rt-panel-padding);display:flex;justify-content:space-between;align-items:center;height:44px;background-color:var(--rt-10-percent-layer);cursor:pointer}rolatech-panel .header:hover{background-color:var(--rt-20-percent-layer)}rolatech-panel .content-container{overflow:visible}rolatech-panel .content-container .content-inner{padding:var(--rt-panel-padding)}rolatech-panel[border]{border-top:1px solid #d1d7dc;border-left:1px solid #d1d7dc;border-right:1px solid #d1d7dc}rolatech-panel[border]:last-child{border-bottom:1px solid #d1d7dc}rolatech-panel[divider]{border-bottom:1px solid #d1d7dc}\n"] }]
2435
2445
  }], ctorParameters: () => [], propDecorators: { hasClass: [{
@@ -2438,10 +2448,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
2438
2448
  }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], divider: [{ type: i0.Input, args: [{ isSignal: true, alias: "divider", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }] } });
2439
2449
 
2440
2450
  class PanelHeaderComponent {
2441
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PanelHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2442
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: PanelHeaderComponent, isStandalone: true, selector: "rolatech-panel-header", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".indicator-collapsed{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.indicator-expanded{transform:rotate(180deg)}.content-collapsed{max-height:0;visibility:hidden;transition:max-height 225ms cubic-bezier(.4,0,.2,1)}.content-expanded{max-height:fit-content;visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2451
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PanelHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2452
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: PanelHeaderComponent, isStandalone: true, selector: "rolatech-panel-header", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".indicator-collapsed{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.indicator-expanded{transform:rotate(180deg)}.content-collapsed{max-height:0;visibility:hidden;transition:max-height 225ms cubic-bezier(.4,0,.2,1)}.content-expanded{max-height:fit-content;visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
2443
2453
  }
2444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PanelHeaderComponent, decorators: [{
2454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PanelHeaderComponent, decorators: [{
2445
2455
  type: Component,
2446
2456
  args: [{ selector: 'rolatech-panel-header', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n", styles: [".indicator-collapsed{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.indicator-expanded{transform:rotate(180deg)}.content-collapsed{max-height:0;visibility:hidden;transition:max-height 225ms cubic-bezier(.4,0,.2,1)}.content-expanded{max-height:fit-content;visibility:visible}\n"] }]
2447
2457
  }] });
@@ -2465,10 +2475,10 @@ class MarkdownPipe {
2465
2475
  const html = marked.parse(value);
2466
2476
  return this.sanitizer.bypassSecurityTrustHtml(html);
2467
2477
  }
2468
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2469
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: MarkdownPipe, isStandalone: true, name: "markdown" });
2478
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2479
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: MarkdownPipe, isStandalone: true, name: "markdown" });
2470
2480
  }
2471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: MarkdownPipe, decorators: [{
2481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: MarkdownPipe, decorators: [{
2472
2482
  type: Pipe,
2473
2483
  args: [{
2474
2484
  name: 'markdown',
@@ -2476,28 +2486,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
2476
2486
  }], ctorParameters: () => [] });
2477
2487
 
2478
2488
  class ConversationMessage {
2479
- message = input.required(...(ngDevMode ? [{ debugName: "message" }] : []));
2489
+ message = input.required(...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
2480
2490
  call() { }
2481
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
2482
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ConversationMessage, isStandalone: true, selector: "rolatech-conversation-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (message().role === 'user') {\n<div class=\"flex justify-end\">\n <div class=\"flex flex-col items-end w-full py-3\">\n <div\n class=\"max-w-[80%] rounded-2xl px-4 py-2 shadow-sm bg-(--rt-brand-color) text-white whitespace-pre-wrap wrap-break-words\"\n >\n <div>{{ message().text }}</div>\n </div>\n\n <div class=\"text-xs text-gray-400 mt-1 pr-1\">{{ message().createdAt | date:'shortTime' }}</div>\n </div>\n</div>\n}@else {\n<div class=\"flex justify-start\">\n <div class=\"flex flex-col items-start w-full py-3\">\n @if (message().role === 'assistant') { @for (seg of message().segments ?? []; track $index) { @switch (seg.kind) { @case\n ('text') {\n <!-- <div class=\"whitespace-pre-wrap break-all\">{{ seg.text }}</div> -->\n <!-- <div class=\"markdown-body\" [innerHTML]=\"seg.text | markdown\"></div> -->\n <article class=\"prose dark:prose-invert max-w-none\" [innerHTML]=\"seg.text | markdown\"></article>\n\n } @case ('group') {\n <a\n class=\"w-full flex flex-col p-3 mb-3 shadow rounded-xl hover:bg-(--rt-raised-background) cursor-pointer\"\n [routerLink]=\"['/properties', seg.item.id]\"\n target=\"_blank\"\n >\n <div class=\"flex flex-row\">\n @if (seg.item.mediaUrl) {\n <div class=\"min-w-20 w-20 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"seg.item.mediaUrl\" ratio=\"square\" size=\"medium\" mode=\"clip\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-square rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-20 w-20 object-cover aspect-square rounded-lg mr-3\">\n <rolatech-image-placeholder ratio=\"square\"></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div class=\"flex flex-col gap-3 p-1\">\n <div class=\"font-bold\">{{ seg.item.title }}</div>\n <div class=\"mt-1\">{{ seg.item.price }}</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mx-2 my-3 bg-black opacity-10 h-[1px]\"></div>\n <div class=\"px-1\">\n <div><span class=\"opacity-70 text-sm\">Address: </span>{{seg.item.address}}</div>\n @if (seg.item.phone) {\n <div><span class=\"opacity-70 text-sm\">Phone: </span>{{seg.item.phone}}</div>\n <button mat-flat-button (click)=\"call()\">Call me</button>\n }\n </div>\n </a>\n } @case ('json') {\n <pre class=\"mt-2 text-xs overflow-auto\">{{ seg.data | json }}</pre>\n } @case ('tool') {\n <div class=\"w-full opacity-70 py-2 rounded-xl text-sm bg-(--rt-raised-background) mb-2 break-all\">\n <span class=\"font-bold\">Using Tool</span><span> | {{ seg.tool.tool }}: {{ seg.tool.args }} {{seg.tool.results}}</span>\n </div>\n } } } @if (message().done) {\n <div class=\"text-xs opacity-50 mt-2\">[done]</div>\n } }\n </div>\n</div>\n}\n", styles: [""], 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: ImagePlaceholderComponent, selector: "rolatech-image-placeholder", inputs: ["ratio"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: i1$1.JsonPipe, name: "json" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: MarkdownPipe, name: "markdown" }], deferBlockDependencies: [() => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)]] });
2491
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
2492
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ConversationMessage, isStandalone: true, selector: "rolatech-conversation-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (message().role === 'user') {\n<div class=\"flex justify-end\">\n <div class=\"flex flex-col items-end w-full py-3\">\n <div\n class=\"max-w-[80%] rounded-2xl px-4 py-2 shadow-sm bg-(--rt-brand-color) text-white whitespace-pre-wrap wrap-break-words\"\n >\n <div>{{ message().text }}</div>\n </div>\n\n <div class=\"text-xs text-gray-400 mt-1 pr-1\">{{ message().createdAt | date:'shortTime' }}</div>\n </div>\n</div>\n}@else {\n<div class=\"flex justify-start\">\n <div class=\"flex flex-col items-start w-full py-3\">\n @if (message().role === 'assistant') { @for (seg of message().segments ?? []; track $index) { @switch (seg.kind) { @case\n ('text') {\n <!-- <div class=\"whitespace-pre-wrap break-all\">{{ seg.text }}</div> -->\n <!-- <div class=\"markdown-body\" [innerHTML]=\"seg.text | markdown\"></div> -->\n <article class=\"prose dark:prose-invert max-w-none\" [innerHTML]=\"seg.text | markdown\"></article>\n\n } @case ('group') {\n <a\n class=\"w-full flex flex-col p-3 mb-3 shadow rounded-xl hover:bg-(--rt-raised-background) cursor-pointer\"\n [routerLink]=\"['/properties', seg.item.id]\"\n target=\"_blank\"\n >\n <div class=\"flex flex-row\">\n @if (seg.item.mediaUrl) {\n <div class=\"min-w-20 w-20 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"seg.item.mediaUrl\" ratio=\"square\" size=\"medium\" mode=\"clip\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-square rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-20 w-20 object-cover aspect-square rounded-lg mr-3\">\n <rolatech-image-placeholder ratio=\"square\"></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div class=\"flex flex-col gap-3 p-1\">\n <div class=\"font-bold\">{{ seg.item.title }}</div>\n <div class=\"mt-1\">{{ seg.item.price }}</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mx-2 my-3 bg-black opacity-10 h-[1px]\"></div>\n <div class=\"px-1\">\n <div><span class=\"opacity-70 text-sm\">Address: </span>{{seg.item.address}}</div>\n @if (seg.item.phone) {\n <div><span class=\"opacity-70 text-sm\">Phone: </span>{{seg.item.phone}}</div>\n <button mat-flat-button (click)=\"call()\">Call me</button>\n }\n </div>\n </a>\n } @case ('json') {\n <pre class=\"mt-2 text-xs overflow-auto\">{{ seg.data | json }}</pre>\n } @case ('tool') {\n <div class=\"w-full opacity-70 py-2 rounded-xl text-sm bg-(--rt-raised-background) mb-2 break-all\">\n <span class=\"font-bold\">Using Tool</span><span> | {{ seg.tool.tool }}: {{ seg.tool.args }} {{seg.tool.results}}</span>\n </div>\n } } } @if (message().done) {\n <div class=\"text-xs opacity-50 mt-2\">[done]</div>\n } }\n </div>\n</div>\n}\n", styles: [""], 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: ImagePlaceholderComponent, selector: "rolatech-image-placeholder", inputs: ["ratio"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: i1$1.JsonPipe, name: "json" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: MarkdownPipe, name: "markdown" }], deferBlockDependencies: [() => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)]] });
2483
2493
  }
2484
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.1", ngImport: i0, type: ConversationMessage, resolveDeferredDeps: () => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
2494
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.5", ngImport: i0, type: ConversationMessage, resolveDeferredDeps: () => [Promise.resolve().then(function () { return thumbnail_component; }).then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
2485
2495
  type: Component,
2486
2496
  args: [{ selector: 'rolatech-conversation-message', imports: [CommonModule, RouterLink, ThumbnailComponent, ImagePlaceholderComponent, MatButtonModule, MarkdownPipe], template: "@if (message().role === 'user') {\n<div class=\"flex justify-end\">\n <div class=\"flex flex-col items-end w-full py-3\">\n <div\n class=\"max-w-[80%] rounded-2xl px-4 py-2 shadow-sm bg-(--rt-brand-color) text-white whitespace-pre-wrap wrap-break-words\"\n >\n <div>{{ message().text }}</div>\n </div>\n\n <div class=\"text-xs text-gray-400 mt-1 pr-1\">{{ message().createdAt | date:'shortTime' }}</div>\n </div>\n</div>\n}@else {\n<div class=\"flex justify-start\">\n <div class=\"flex flex-col items-start w-full py-3\">\n @if (message().role === 'assistant') { @for (seg of message().segments ?? []; track $index) { @switch (seg.kind) { @case\n ('text') {\n <!-- <div class=\"whitespace-pre-wrap break-all\">{{ seg.text }}</div> -->\n <!-- <div class=\"markdown-body\" [innerHTML]=\"seg.text | markdown\"></div> -->\n <article class=\"prose dark:prose-invert max-w-none\" [innerHTML]=\"seg.text | markdown\"></article>\n\n } @case ('group') {\n <a\n class=\"w-full flex flex-col p-3 mb-3 shadow rounded-xl hover:bg-(--rt-raised-background) cursor-pointer\"\n [routerLink]=\"['/properties', seg.item.id]\"\n target=\"_blank\"\n >\n <div class=\"flex flex-row\">\n @if (seg.item.mediaUrl) {\n <div class=\"min-w-20 w-20 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"seg.item.mediaUrl\" ratio=\"square\" size=\"medium\" mode=\"clip\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-square rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-20 w-20 object-cover aspect-square rounded-lg mr-3\">\n <rolatech-image-placeholder ratio=\"square\"></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div class=\"flex flex-col gap-3 p-1\">\n <div class=\"font-bold\">{{ seg.item.title }}</div>\n <div class=\"mt-1\">{{ seg.item.price }}</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mx-2 my-3 bg-black opacity-10 h-[1px]\"></div>\n <div class=\"px-1\">\n <div><span class=\"opacity-70 text-sm\">Address: </span>{{seg.item.address}}</div>\n @if (seg.item.phone) {\n <div><span class=\"opacity-70 text-sm\">Phone: </span>{{seg.item.phone}}</div>\n <button mat-flat-button (click)=\"call()\">Call me</button>\n }\n </div>\n </a>\n } @case ('json') {\n <pre class=\"mt-2 text-xs overflow-auto\">{{ seg.data | json }}</pre>\n } @case ('tool') {\n <div class=\"w-full opacity-70 py-2 rounded-xl text-sm bg-(--rt-raised-background) mb-2 break-all\">\n <span class=\"font-bold\">Using Tool</span><span> | {{ seg.tool.tool }}: {{ seg.tool.args }} {{seg.tool.results}}</span>\n </div>\n } } } @if (message().done) {\n <div class=\"text-xs opacity-50 mt-2\">[done]</div>\n } }\n </div>\n</div>\n}\n" }]
2487
2497
  }], ctorParameters: null, propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }] } }) });
2488
2498
 
2489
2499
  const isSafari = () => /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
2490
2500
  class ConversationContent {
2491
- messages = input.required(...(ngDevMode ? [{ debugName: "messages" }] : []));
2501
+ messages = input.required(...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
2492
2502
  scrollArea = viewChild.required('scrollArea');
2493
2503
  // private messageItems = viewChild.required<QueryList<ElementRef<HTMLElement>>>('messageItem');
2494
2504
  // private messageItems = viewChildren<ElementRef<HTMLElement>>('messageItem');
2495
- messageItems = viewChildren('messageItem', { ...(ngDevMode ? { debugName: "messageItems" } : {}), read: (ElementRef) });
2505
+ messageItems = viewChildren('messageItem', { ...(ngDevMode ? { debugName: "messageItems" } : /* istanbul ignore next */ {}), read: (ElementRef) });
2496
2506
  rafId = null;
2497
2507
  firstPaint = true;
2498
- shouldStick = signal(true, ...(ngDevMode ? [{ debugName: "shouldStick" }] : []));
2499
- streaming = input.required(...(ngDevMode ? [{ debugName: "streaming" }] : []));
2500
- direction = input('bottom-to-top', ...(ngDevMode ? [{ debugName: "direction" }] : []));
2508
+ shouldStick = signal(true, ...(ngDevMode ? [{ debugName: "shouldStick" }] : /* istanbul ignore next */ []));
2509
+ streaming = input.required(...(ngDevMode ? [{ debugName: "streaming" }] : /* istanbul ignore next */ []));
2510
+ direction = input('bottom-to-top', ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
2501
2511
  shouldScroll = false;
2502
2512
  constructor() {
2503
2513
  // React whenever the list of message nodes changes
@@ -2586,27 +2596,27 @@ class ConversationContent {
2586
2596
  this.firstPaint = false;
2587
2597
  });
2588
2598
  }
2589
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2590
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ConversationContent, isStandalone: true, selector: "rolatech-conversation-content", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: true, transformFunction: null }, streaming: { classPropertyName: "streaming", publicName: "streaming", isSignal: true, isRequired: true, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block h-full min-h-0" }, viewQueries: [{ propertyName: "scrollArea", first: true, predicate: ["scrollArea"], descendants: true, isSignal: true }, { propertyName: "messageItems", predicate: ["messageItem"], descendants: true, read: ElementRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full min-h-0 overflow-y-auto px-4\">\n <div #scrollArea class=\"w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto [overflow-anchor:none]\">\n @for (m of messages(); track m.id) {\n <rolatech-conversation-message #messageItem [message]=\"m\" class=\"mb-3\" />\n } @if (streaming()) {\n <div class=\"flex items-center gap-2 text-sm opacity-80\">\n <span class=\"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\"></span>\n <span>Streaming\u2026</span>\n </div>\n }\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ConversationMessage, selector: "rolatech-conversation-message", inputs: ["message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2599
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2600
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ConversationContent, isStandalone: true, selector: "rolatech-conversation-content", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: true, transformFunction: null }, streaming: { classPropertyName: "streaming", publicName: "streaming", isSignal: true, isRequired: true, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block h-full min-h-0" }, viewQueries: [{ propertyName: "scrollArea", first: true, predicate: ["scrollArea"], descendants: true, isSignal: true }, { propertyName: "messageItems", predicate: ["messageItem"], descendants: true, read: ElementRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full min-h-0 overflow-y-auto px-4\">\n <div #scrollArea class=\"w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto [overflow-anchor:none]\">\n @for (m of messages(); track m.id) {\n <rolatech-conversation-message #messageItem [message]=\"m\" class=\"mb-3\" />\n } @if (streaming()) {\n <div class=\"flex items-center gap-2 text-sm opacity-80\">\n <span class=\"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\"></span>\n <span>Streaming\u2026</span>\n </div>\n }\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ConversationMessage, selector: "rolatech-conversation-message", inputs: ["message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2591
2601
  }
2592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationContent, decorators: [{
2602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationContent, decorators: [{
2593
2603
  type: Component,
2594
2604
  args: [{ selector: 'rolatech-conversation-content', imports: [CommonModule, ConversationMessage], host: { class: 'block h-full min-h-0' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full min-h-0 overflow-y-auto px-4\">\n <div #scrollArea class=\"w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto [overflow-anchor:none]\">\n @for (m of messages(); track m.id) {\n <rolatech-conversation-message #messageItem [message]=\"m\" class=\"mb-3\" />\n } @if (streaming()) {\n <div class=\"flex items-center gap-2 text-sm opacity-80\">\n <span class=\"inline-block w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\"></span>\n <span>Streaming\u2026</span>\n </div>\n }\n </div>\n</div>\n" }]
2595
2605
  }], ctorParameters: () => [], propDecorators: { messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: true }] }], scrollArea: [{ type: i0.ViewChild, args: ['scrollArea', { isSignal: true }] }], messageItems: [{ type: i0.ViewChildren, args: ['messageItem', { ...{ read: (ElementRef) }, isSignal: true }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: true }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }] } });
2596
2606
 
2597
2607
  class ConversationHeader {
2598
- status = input('u', ...(ngDevMode ? [{ debugName: "status" }] : []));
2599
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
2600
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: ConversationHeader, isStandalone: true, selector: "rolatech-conversation-header", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<header class=\"px-4 py-3 flex items-center gap-3\">\n <div class=\"size-9 rounded-full bg-gray-200\"></div>\n <div class=\"font-medium\">Property Assistant</div>\n <div class=\"ml-auto text-sm text-gray-500\">{{status()}}</div>\n</header>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
2608
+ status = input('u', ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
2609
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
2610
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ConversationHeader, isStandalone: true, selector: "rolatech-conversation-header", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<header class=\"px-4 py-3 flex items-center gap-3\">\n <div class=\"size-9 rounded-full bg-gray-200\"></div>\n <div class=\"font-medium\">Property Assistant</div>\n <div class=\"ml-auto text-sm text-gray-500\">{{status()}}</div>\n</header>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
2601
2611
  }
2602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationHeader, decorators: [{
2612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationHeader, decorators: [{
2603
2613
  type: Component,
2604
2614
  args: [{ selector: 'rolatech-conversation-header', imports: [CommonModule], template: "<header class=\"px-4 py-3 flex items-center gap-3\">\n <div class=\"size-9 rounded-full bg-gray-200\"></div>\n <div class=\"font-medium\">Property Assistant</div>\n <div class=\"ml-auto text-sm text-gray-500\">{{status()}}</div>\n</header>\n" }]
2605
2615
  }], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }] } });
2606
2616
 
2607
2617
  class ConversationInput {
2608
2618
  send = output();
2609
- ta = viewChild('ta', ...(ngDevMode ? [{ debugName: "ta" }] : []));
2619
+ ta = viewChild('ta', ...(ngDevMode ? [{ debugName: "ta" }] : /* istanbul ignore next */ []));
2610
2620
  isComposing = false;
2611
2621
  onKeydown(e) {
2612
2622
  if (e.key === 'Enter' && !e.shiftKey && !this.isComposing) {
@@ -2638,17 +2648,17 @@ class ConversationInput {
2638
2648
  el.style.height = 'auto';
2639
2649
  el.style.height = Math.min(el.scrollHeight, 220) + 'px';
2640
2650
  }
2641
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
2642
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: ConversationInput, isStandalone: true, selector: "rolatech-conversation-input", outputs: { send: "send" }, viewQueries: [{ propertyName: "ta", first: true, predicate: ["ta"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"px-3 py-3 md:px-0 w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto\">\n <div class=\"flex rounded-2xl p-1 dark:bg-(--rt-raised-background) border border-black border-opacity-20\">\n <textarea\n #ta\n rows=\"1\"\n class=\"w-full border border-transparent appearance-none rounded p-2 py-2.5 resize-none outline-none dark:bg-(--rt-raised-background)\"\n placeholder=\"Ask about properties...\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (input)=\"autoResize()\"\n ></textarea>\n <button\n matIconButton\n (click)=\"emitSend()\"\n [disabled]=\"!ta.value.trim()\"\n [ngClass]=\"!ta.value.trim() ? '' : '!bg-(--rt-brand-color) !text-(--rt-text-primary-inverse)'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n </div>\n <!-- <div\n class=\"text-token-text-secondary relative mt-auto flex min-h-8 w-full items-center justify-center p-2 text-center text-xs md:px-[60px]\"\n >\n Primecasa Assistant can make mistakes. Check important info.\n </div> -->\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
2651
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
2652
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: ConversationInput, isStandalone: true, selector: "rolatech-conversation-input", outputs: { send: "send" }, viewQueries: [{ propertyName: "ta", first: true, predicate: ["ta"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"px-3 py-3 md:px-0 w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto\">\n <div class=\"flex rounded-2xl p-1 dark:bg-(--rt-raised-background) border border-black border-opacity-20\">\n <textarea\n #ta\n rows=\"1\"\n class=\"w-full border border-transparent appearance-none rounded p-2 py-2.5 resize-none outline-none dark:bg-(--rt-raised-background)\"\n placeholder=\"Ask about properties...\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (input)=\"autoResize()\"\n ></textarea>\n <button\n matIconButton\n (click)=\"emitSend()\"\n [disabled]=\"!ta.value.trim()\"\n [ngClass]=\"!ta.value.trim() ? '' : 'bg-(--rt-brand-color)! text-(--rt-text-primary-inverse)!'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n </div>\n <!-- <div\n class=\"text-token-text-secondary relative mt-auto flex min-h-8 w-full items-center justify-center p-2 text-center text-xs md:px-[60px]\"\n >\n Primecasa Assistant can make mistakes. Check important info.\n </div> -->\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
2643
2653
  }
2644
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ConversationInput, decorators: [{
2654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ConversationInput, decorators: [{
2645
2655
  type: Component,
2646
- args: [{ selector: 'rolatech-conversation-input', imports: [CommonModule, MatButtonModule, MatIcon], template: "<div class=\"px-3 py-3 md:px-0 w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto\">\n <div class=\"flex rounded-2xl p-1 dark:bg-(--rt-raised-background) border border-black border-opacity-20\">\n <textarea\n #ta\n rows=\"1\"\n class=\"w-full border border-transparent appearance-none rounded p-2 py-2.5 resize-none outline-none dark:bg-(--rt-raised-background)\"\n placeholder=\"Ask about properties...\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (input)=\"autoResize()\"\n ></textarea>\n <button\n matIconButton\n (click)=\"emitSend()\"\n [disabled]=\"!ta.value.trim()\"\n [ngClass]=\"!ta.value.trim() ? '' : '!bg-(--rt-brand-color) !text-(--rt-text-primary-inverse)'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n </div>\n <!-- <div\n class=\"text-token-text-secondary relative mt-auto flex min-h-8 w-full items-center justify-center p-2 text-center text-xs md:px-[60px]\"\n >\n Primecasa Assistant can make mistakes. Check important info.\n </div> -->\n</div>\n" }]
2656
+ args: [{ selector: 'rolatech-conversation-input', imports: [CommonModule, MatButtonModule, MatIcon], template: "<div class=\"px-3 py-3 md:px-0 w-full md:max-w-[768px] xl:max-w-[1024px] 2xl:max-w-[1024px] mx-auto\">\n <div class=\"flex rounded-2xl p-1 dark:bg-(--rt-raised-background) border border-black border-opacity-20\">\n <textarea\n #ta\n rows=\"1\"\n class=\"w-full border border-transparent appearance-none rounded p-2 py-2.5 resize-none outline-none dark:bg-(--rt-raised-background)\"\n placeholder=\"Ask about properties...\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (input)=\"autoResize()\"\n ></textarea>\n <button\n matIconButton\n (click)=\"emitSend()\"\n [disabled]=\"!ta.value.trim()\"\n [ngClass]=\"!ta.value.trim() ? '' : 'bg-(--rt-brand-color)! text-(--rt-text-primary-inverse)!'\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n </div>\n <!-- <div\n class=\"text-token-text-secondary relative mt-auto flex min-h-8 w-full items-center justify-center p-2 text-center text-xs md:px-[60px]\"\n >\n Primecasa Assistant can make mistakes. Check important info.\n </div> -->\n</div>\n" }]
2647
2657
  }], propDecorators: { send: [{ type: i0.Output, args: ["send"] }], ta: [{ type: i0.ViewChild, args: ['ta', { isSignal: true }] }] } });
2648
2658
 
2649
2659
  /**
2650
2660
  * Generated bundle index. Do not edit.
2651
2661
  */
2652
2662
 
2653
- export { APP_LAYOUT, AcceptDialogComponent, AccordionComponent, AngularComponentsModule, AppPageComponent, AppShellComponent, AvatarComponent, BaseComponent, ChatBox, ChipBarComponent, ConfirmationComponent, ConfirmationDialogComponent, ConsoleLayoutComponent, ContainerComponent, ContentComponent, ConversationContent, ConversationHeader, ConversationInput, ConversationMessage, DrawerComponent, EditorComponent, EmptyComponent, EnumSelect, FilterComponent, FolderComponent, FooterComponent, FooterLanguageSwitcherComponent, IconButtonComponent, IconComponent, ImageComponent, ImagePlaceholderComponent, ImagePreviewDialogComponent, InputComponent, LayoutComponent, ListComponent, Loading, LocationSelectorComponent, MaterialModule, MediaListComponent, MediaListItemComponent, MediaPreviewComponent, MediaPreviewDialogComponent, MediaUploadComponent, MediaUploadDialogComponent, MenuIconComponent, MenuUserComponent, MiniGuideComponent, NotFoundComponent, PageCollectionShellComponent, PaginatorComponent, PanelComponent, PanelHeaderComponent, PdfViewerComponent, RejectDialogComponent, ResizableContainerComponent, RichGridMediaComponent, RichItemComponent, RichLabelComponent, RichViewComponent, SearchBar, SearchIcon, Skeleton, SpinnerComponent, StorageBucketCreateComponent, StorageFileUploadComponent, StorageFolderCreateComponent, TabComponent, TableComponent, TabsComponent, ThumbnailComponent, TitleComponent, ToolbarComponent, TopbarAvatarMenuComponent, TopbarComponent, VideoUpload, WechatConnectDialogComponent, provideAngularLayout };
2663
+ export { APP_LAYOUT, AcceptDialogComponent, AccordionComponent, AngularComponentsModule, AppPageComponent, AppShellComponent, AvatarComponent, BaseComponent, Breadcrumb, ChatBox, ChipBarComponent, ConfirmationComponent, ConfirmationDialogComponent, ConsoleLayoutComponent, ContainerComponent, ContentComponent, ConversationContent, ConversationHeader, ConversationInput, ConversationMessage, DrawerComponent, EditorComponent, EmptyComponent, EnumSelect, FilterComponent, FolderComponent, FooterComponent, FooterLanguageSwitcherComponent, IconButtonComponent, IconComponent, ImageComponent, ImagePlaceholderComponent, ImagePreviewDialogComponent, InputComponent, LayoutComponent, ListComponent, Loading, LocationSelectorComponent, MaterialModule, MediaListComponent, MediaListItemComponent, MediaPreviewComponent, MediaPreviewDialogComponent, MediaUploadComponent, MediaUploadDialogComponent, MenuIconComponent, MenuUserComponent, MiniGuideComponent, NotFoundComponent, PageCollectionShellComponent, PaginatorComponent, PanelComponent, PanelHeaderComponent, PdfViewerComponent, RejectDialogComponent, ResizableContainerComponent, RichGridMediaComponent, RichItemComponent, RichLabelComponent, RichViewComponent, SearchBar, SearchIcon, Skeleton, SpinnerComponent, StorageBucketCreateComponent, StorageFileUploadComponent, StorageFolderCreateComponent, TabComponent, TableComponent, TabsComponent, ThumbnailComponent, TitleComponent, ToolbarComponent, TopbarAvatarMenuComponent, TopbarComponent, VideoUpload, WechatConnectDialogComponent, provideAngularLayout };
2654
2664
  //# sourceMappingURL=rolatech-angular-components.mjs.map