@rtsee/ngx 0.0.96 → 0.0.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Input, Component, ViewChild, Directive, DOCUMENT, HostListener, Inject, EventEmitter, Output, output, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
2
+ import { Injectable, Input, Component, ViewChild, Directive, DOCUMENT, HostListener, Inject, EventEmitter, Output, forwardRef, output, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
3
3
  import * as i2$1 from '@angular/common';
4
4
  import { NgClass, NgIf, NgForOf, SlicePipe, NgStyle, DatePipe, NgOptimizedImage, CommonModule } from '@angular/common';
5
5
  import * as i1 from '@angular/forms';
@@ -42,10 +42,11 @@ import { Checkbox } from 'primeng/checkbox';
42
42
  import { InputNumber } from 'primeng/inputnumber';
43
43
  import * as i1$3 from 'primeng/autocomplete';
44
44
  import { AutoCompleteModule } from 'primeng/autocomplete';
45
+ import { Fieldset } from 'primeng/fieldset';
46
+ import { DatePicker } from 'primeng/datepicker';
45
47
  import { Tabs, TabList, Tab, TabPanels, TabPanel } from 'primeng/tabs';
46
48
  import { ColorPicker } from 'primeng/colorpicker';
47
49
  import { Slider } from 'primeng/slider';
48
- import { Fieldset } from 'primeng/fieldset';
49
50
  import { Tag } from 'primeng/tag';
50
51
  import { Listbox } from 'primeng/listbox';
51
52
  import { RTSeeRater } from '@rtsee/utilities-ui';
@@ -240,17 +241,29 @@ class RTSeeAuthService {
240
241
  }
241
242
  signIn(credentials) {
242
243
  return this.http
243
- .post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_IN), credentials)
244
+ .post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_IN), {
245
+ ...credentials,
246
+ rtseeAppId: this.authConfiguration.rtseeAppId
247
+ })
244
248
  .pipe(tap((res) => this.rtseeAuth.authenticate(res)));
245
249
  }
246
250
  signUp(credentials) {
247
- return this.http.post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_UP), credentials);
251
+ return this.http.post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_UP), {
252
+ ...credentials,
253
+ rtseeAppId: this.authConfiguration.rtseeAppId
254
+ });
248
255
  }
249
256
  forgotPassword(credentials) {
250
- return this.http.post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.FORGOT_PASSWORD), credentials);
257
+ return this.http.post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.FORGOT_PASSWORD), {
258
+ ...credentials,
259
+ rtseeAppId: this.authConfiguration.rtseeAppId
260
+ });
251
261
  }
252
262
  resetPassword(credentials) {
253
- return this.http.post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.RESET_PASSWORD), credentials);
263
+ return this.http.post(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.RESET_PASSWORD), {
264
+ ...credentials,
265
+ rtseeAppId: this.authConfiguration.rtseeAppId
266
+ });
254
267
  }
255
268
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: RTSeeAuthService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
256
269
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: RTSeeAuthService, providedIn: 'root' }); }
@@ -1250,9 +1263,11 @@ class PaymentsService {
1250
1263
  if (!this.paymentsConfig || !this.paymentsConfig.appId) {
1251
1264
  throw new Error('Payments Config not initialized!');
1252
1265
  }
1253
- return this.http.post(`${this.paymentsConfig?.unsubscribeEndpoint}`, {
1254
- subscriptionId,
1255
- });
1266
+ return this.http
1267
+ .post(`${this.paymentsConfig?.unsubscribeEndpoint}`, { subscriptionId })
1268
+ .pipe(tap((res) => {
1269
+ console.log('tap with plan here', res);
1270
+ }));
1256
1271
  }
1257
1272
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PaymentsService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
1258
1273
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PaymentsService, providedIn: 'root' }); }
@@ -1392,15 +1407,19 @@ class ManagePlanComponent {
1392
1407
  this.RTSeeTextLabelKeys = RTSeeTextLabelKeys;
1393
1408
  }
1394
1409
  onUnsubscribeClicked() {
1395
- console.log(this.plan);
1410
+ this.paymentsService.unsubscribe(this.plan.id)
1411
+ .subscribe();
1396
1412
  }
1397
1413
  ngOnInit() {
1398
1414
  if (!this.messenger.myPeer || !this.messenger.myPeer.plan) {
1399
1415
  throw new Error('No Plans found.');
1400
1416
  }
1417
+ if (!this.paymentsService.isInitialized && this.messenger.payments) {
1418
+ this.paymentsService.init(this.messenger.payments);
1419
+ }
1401
1420
  this.plan = this.messenger.myPeer.plan;
1402
- this.activeFromFormated = dayjs(this.messenger.myPeer.plan.activeFrom).format('YYYY-MM-DD');
1403
- this.activeToFormated = dayjs(this.messenger.myPeer.plan.activeTo).format('YYYY-MM-DD');
1421
+ this.activeFromFormated = dayjs(this.messenger.myPeer.plan.activeFrom).format('DD-MM-YYYY');
1422
+ this.activeToFormated = dayjs(this.messenger.myPeer.plan.activeTo).format('DD-MM-YYYY');
1404
1423
  }
1405
1424
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ManagePlanComponent, deps: [{ token: PaymentsService }], target: i0.ɵɵFactoryTarget.Component }); }
1406
1425
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: ManagePlanComponent, isStandalone: true, selector: "rtsee-manage-plan", inputs: { messenger: "messenger" }, ngImport: i0, template: "<div class=\"rtsee-manage-plan\">\n <h2>{{messenger.labels[RTSeeTextLabelKeys.MANAGE_PLAN]}}</h2>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.BACK_LABEL]\"\n severity=\"secondary\"\n (click)=\"messenger.closeManagePlanPage()\"\n ></p-button>\n @if (plan) {\n <p-card [header]=\"plan.productName\">\n <p>{{plan.productDescription}}</p>\n <p-divider></p-divider>\n <div class=\"rtsee-manage-plan-info\">\n <p>Active From: {{activeFromFormated}}</p>\n <p>Active To: {{activeToFormated}}</p>\n </div>\n <p-button [label]=\"'Unsubscribe'\"\n (click)=\"onUnsubscribeClicked()\"\n ></p-button>\n </p-card>\n }\n</div>\n", dependencies: [{ kind: "component", type: Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
@@ -1612,11 +1631,11 @@ class PresentationHeaderComponent {
1612
1631
  this.RTSeeTextLabelKeys = RTSeeTextLabelKeys;
1613
1632
  }
1614
1633
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PresentationHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1615
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: PresentationHeaderComponent, isStandalone: true, selector: "rtsee-presentation-header", inputs: { presentation: "presentation" }, ngImport: i0, template: "<header class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n @if (!presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentations-header-title\">\n <div class=\"rtsee-presentations-header-title-overlay\"></div>\n <div class=\"rtsee-presentations-header-title-content\">\n <h1>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_TITLE_LABEL]}}</h1>\n <p class=\"rtsee-presentations-header-title-subtitle\">\n <span>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_SUBTITLE_LABEL]}}</span>\n </p>\n </div>\n </div>\n }\n\n @if (presentation.activeRoom && !presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentation-room-block\">\n <rtsee-join-call [room]=\"presentation.activeRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n </div>\n }\n\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-header-active-story-info\">\n <div class=\"rtsee-presentation-header-active-story-info-close\"\n (click)=\"presentation.disableActiveStory()\"\n >\n <i class=\"pi pi-arrow-left rtsee-presentation-header-active-story-info-close-icon\"></i>\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-details\">\n <p-chip [label]=\"presentation.activeStory.name\"\n [image]=\"presentation.activeStory.imageUrl || undefined\"\n class=\"rtsee-presentation-header-active-story-name\"\n alt=\"Story image\" />\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-settings\"\n (click)=\"presentation.settings.expand()\"\n >\n <i class=\"pi pi-ellipsis-h rtsee-presentation-header-active-story-info-settings-icon\"></i>\n </div>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen && !presentation.openedStoryDetails) {\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.DASHBOARD_BUTTON]\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</header>\n", dependencies: [{ kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "disabled", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: JoinCallComponent, selector: "rtsee-join-call", inputs: ["presentation", "room"] }] }); }
1634
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: PresentationHeaderComponent, isStandalone: true, selector: "rtsee-presentation-header", inputs: { presentation: "presentation" }, ngImport: i0, template: "<header class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n @if (!presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentations-header-title\">\n <div class=\"rtsee-presentations-header-title-overlay\"></div>\n <div class=\"rtsee-presentations-header-title-content\">\n <h1>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_TITLE_LABEL]}}</h1>\n <p class=\"rtsee-presentations-header-title-subtitle\">\n <span>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_SUBTITLE_LABEL]}}</span>\n </p>\n </div>\n </div>\n }\n\n @if (presentation.activeRoom && !presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentation-room-block\">\n <rtsee-join-call [room]=\"presentation.activeRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n </div>\n }\n\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-header-active-story-info\">\n <div class=\"rtsee-presentation-header-active-story-info-close\"\n [routerLink]=\"[presentation.homePage]\"\n (click)=\"presentation.disableActiveStory()\"\n >\n <i class=\"pi pi-arrow-left rtsee-presentation-header-active-story-info-close-icon\"></i>\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-details\">\n <p-chip [label]=\"presentation.activeStory.name\"\n [image]=\"presentation.activeStory.imageUrl || undefined\"\n class=\"rtsee-presentation-header-active-story-name\"\n alt=\"Story image\" />\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-settings\"\n (click)=\"presentation.settings.expand()\"\n >\n <i class=\"pi pi-ellipsis-h rtsee-presentation-header-active-story-info-settings-icon\"></i>\n </div>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen && !presentation.openedStoryDetails) {\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.DASHBOARD_BUTTON]\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</header>\n", dependencies: [{ kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "disabled", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: JoinCallComponent, selector: "rtsee-join-call", inputs: ["presentation", "room"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
1616
1635
  }
1617
1636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PresentationHeaderComponent, decorators: [{
1618
1637
  type: Component,
1619
- args: [{ selector: 'rtsee-presentation-header', imports: [Button, NgClass, Chip, JoinCallComponent], standalone: true, template: "<header class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n @if (!presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentations-header-title\">\n <div class=\"rtsee-presentations-header-title-overlay\"></div>\n <div class=\"rtsee-presentations-header-title-content\">\n <h1>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_TITLE_LABEL]}}</h1>\n <p class=\"rtsee-presentations-header-title-subtitle\">\n <span>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_SUBTITLE_LABEL]}}</span>\n </p>\n </div>\n </div>\n }\n\n @if (presentation.activeRoom && !presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentation-room-block\">\n <rtsee-join-call [room]=\"presentation.activeRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n </div>\n }\n\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-header-active-story-info\">\n <div class=\"rtsee-presentation-header-active-story-info-close\"\n (click)=\"presentation.disableActiveStory()\"\n >\n <i class=\"pi pi-arrow-left rtsee-presentation-header-active-story-info-close-icon\"></i>\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-details\">\n <p-chip [label]=\"presentation.activeStory.name\"\n [image]=\"presentation.activeStory.imageUrl || undefined\"\n class=\"rtsee-presentation-header-active-story-name\"\n alt=\"Story image\" />\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-settings\"\n (click)=\"presentation.settings.expand()\"\n >\n <i class=\"pi pi-ellipsis-h rtsee-presentation-header-active-story-info-settings-icon\"></i>\n </div>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen && !presentation.openedStoryDetails) {\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.DASHBOARD_BUTTON]\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</header>\n" }]
1638
+ args: [{ selector: 'rtsee-presentation-header', imports: [Button, NgClass, Chip, JoinCallComponent, RouterLink], standalone: true, template: "<header class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n @if (!presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentations-header-title\">\n <div class=\"rtsee-presentations-header-title-overlay\"></div>\n <div class=\"rtsee-presentations-header-title-content\">\n <h1>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_TITLE_LABEL]}}</h1>\n <p class=\"rtsee-presentations-header-title-subtitle\">\n <span>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_SUBTITLE_LABEL]}}</span>\n </p>\n </div>\n </div>\n }\n\n @if (presentation.activeRoom && !presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentation-room-block\">\n <rtsee-join-call [room]=\"presentation.activeRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n </div>\n }\n\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-header-active-story-info\">\n <div class=\"rtsee-presentation-header-active-story-info-close\"\n [routerLink]=\"[presentation.homePage]\"\n (click)=\"presentation.disableActiveStory()\"\n >\n <i class=\"pi pi-arrow-left rtsee-presentation-header-active-story-info-close-icon\"></i>\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-details\">\n <p-chip [label]=\"presentation.activeStory.name\"\n [image]=\"presentation.activeStory.imageUrl || undefined\"\n class=\"rtsee-presentation-header-active-story-name\"\n alt=\"Story image\" />\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-settings\"\n (click)=\"presentation.settings.expand()\"\n >\n <i class=\"pi pi-ellipsis-h rtsee-presentation-header-active-story-info-settings-icon\"></i>\n </div>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen && !presentation.openedStoryDetails) {\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.DASHBOARD_BUTTON]\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</header>\n" }]
1620
1639
  }], propDecorators: { presentation: [{
1621
1640
  type: Input
1622
1641
  }] } });
@@ -1632,13 +1651,15 @@ class StoryThumbnailComponent {
1632
1651
  }
1633
1652
  }
1634
1653
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: StoryThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1635
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: StoryThumbnailComponent, isStandalone: true, selector: "rtsee-story-thumbnail", inputs: { story: "story" }, ngImport: i0, template: "<div class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\">\n <div class=\"rtsee-story-thumbnail-image\">\n <img [src]=\"story.imageUrl\"\n [alt]=\"story.name\"\n class=\"rtsee-story-thumbnail-image\"\n />\n </div>\n @if (story.preselectedSlideNumber) {\n <div class=\"rtsee-story-thumbnail-progress-bar-container\">\n <div class=\"rtsee-story-thumbnail-progress-bar\">\n <div class=\"rtsee-story-thumbnail-progress-bar-inner\"\n [style.width]=\"progressPercent + '%'\"\n ></div>\n </div>\n </div>\n }\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n <div class=\"rtsee-story-thumbnail-body-meta\">\n @if (story.rating) {\n <rtsee-rating [rate]=\"{maxValue: 5, value: story.rating}\"></rtsee-rating>\n }\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-thumbnail-time-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} \u0445\u0432</span>\n </span>\n }\n @if (story.recommendedAge) {\n <span class=\"rtsee-story-thumbnail-label-container\">{{story.recommendedAge}}</span>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: RatingComponent, selector: "rtsee-rating", inputs: ["config", "rate"] }] }); }
1654
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: StoryThumbnailComponent, isStandalone: true, selector: "rtsee-story-thumbnail", inputs: { story: "story", presentation: "presentation" }, ngImport: i0, template: "<a [routerLink]=\"[presentation.routePrefix, story.friendlyUrl]\" class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\">\n <div class=\"rtsee-story-thumbnail-image\">\n <img [src]=\"story.imageUrl\"\n [alt]=\"story.name\"\n class=\"rtsee-story-thumbnail-image\"\n />\n </div>\n @if (story.preselectedSlideNumber) {\n <div class=\"rtsee-story-thumbnail-progress-bar-container\">\n <div class=\"rtsee-story-thumbnail-progress-bar\">\n <div class=\"rtsee-story-thumbnail-progress-bar-inner\"\n [style.width]=\"progressPercent + '%'\"\n ></div>\n </div>\n </div>\n }\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n <div class=\"rtsee-story-thumbnail-body-meta\">\n @if (story.rating) {\n <rtsee-rating [rate]=\"{maxValue: 5, value: story.rating}\"></rtsee-rating>\n }\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-thumbnail-time-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} \u0445\u0432</span>\n </span>\n }\n @if (story.recommendedAge) {\n <span class=\"rtsee-story-thumbnail-label-container\">{{story.recommendedAge}}</span>\n }\n </div>\n </div>\n</a>\n", dependencies: [{ kind: "component", type: RatingComponent, selector: "rtsee-rating", inputs: ["config", "rate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
1636
1655
  }
1637
1656
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: StoryThumbnailComponent, decorators: [{
1638
1657
  type: Component,
1639
- args: [{ selector: 'rtsee-story-thumbnail', imports: [RatingComponent], standalone: true, template: "<div class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\">\n <div class=\"rtsee-story-thumbnail-image\">\n <img [src]=\"story.imageUrl\"\n [alt]=\"story.name\"\n class=\"rtsee-story-thumbnail-image\"\n />\n </div>\n @if (story.preselectedSlideNumber) {\n <div class=\"rtsee-story-thumbnail-progress-bar-container\">\n <div class=\"rtsee-story-thumbnail-progress-bar\">\n <div class=\"rtsee-story-thumbnail-progress-bar-inner\"\n [style.width]=\"progressPercent + '%'\"\n ></div>\n </div>\n </div>\n }\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n <div class=\"rtsee-story-thumbnail-body-meta\">\n @if (story.rating) {\n <rtsee-rating [rate]=\"{maxValue: 5, value: story.rating}\"></rtsee-rating>\n }\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-thumbnail-time-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} \u0445\u0432</span>\n </span>\n }\n @if (story.recommendedAge) {\n <span class=\"rtsee-story-thumbnail-label-container\">{{story.recommendedAge}}</span>\n }\n </div>\n </div>\n</div>\n" }]
1658
+ args: [{ selector: 'rtsee-story-thumbnail', imports: [RatingComponent, RouterLink], standalone: true, template: "<a [routerLink]=\"[presentation.routePrefix, story.friendlyUrl]\" class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\">\n <div class=\"rtsee-story-thumbnail-image\">\n <img [src]=\"story.imageUrl\"\n [alt]=\"story.name\"\n class=\"rtsee-story-thumbnail-image\"\n />\n </div>\n @if (story.preselectedSlideNumber) {\n <div class=\"rtsee-story-thumbnail-progress-bar-container\">\n <div class=\"rtsee-story-thumbnail-progress-bar\">\n <div class=\"rtsee-story-thumbnail-progress-bar-inner\"\n [style.width]=\"progressPercent + '%'\"\n ></div>\n </div>\n </div>\n }\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n <div class=\"rtsee-story-thumbnail-body-meta\">\n @if (story.rating) {\n <rtsee-rating [rate]=\"{maxValue: 5, value: story.rating}\"></rtsee-rating>\n }\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-thumbnail-time-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} \u0445\u0432</span>\n </span>\n }\n @if (story.recommendedAge) {\n <span class=\"rtsee-story-thumbnail-label-container\">{{story.recommendedAge}}</span>\n }\n </div>\n </div>\n</a>\n" }]
1640
1659
  }], propDecorators: { story: [{
1641
1660
  type: Input
1661
+ }], presentation: [{
1662
+ type: Input
1642
1663
  }] } });
1643
1664
 
1644
1665
  class SlideComponent {
@@ -2002,6 +2023,264 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
2002
2023
  type: Output
2003
2024
  }] } });
2004
2025
 
2026
+ class DynamicFieldsFieldComponent {
2027
+ constructor() {
2028
+ this.fieldChanged = new EventEmitter();
2029
+ }
2030
+ onModelChange() {
2031
+ this.field.digest();
2032
+ this.fieldChanged.emit();
2033
+ }
2034
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicFieldsFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2035
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: DynamicFieldsFieldComponent, isStandalone: true, selector: "rtsee-dynamic-fields-field", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-dynamic-fields-field\">\n <p-button label=\"Add a field\"\n (click)=\"field.add()\"\n ></p-button>\n\n <div class=\"rtsee-dynamic-fields-definitions\">\n @for (definition of field.fields; track definition.name) {\n <p-divider></p-divider>\n <p>dynamic field</p>\n <rtsee-form [form]=\"definition.form\"></rtsee-form>\n <p-button label=\"Add a field\"\n (click)=\"field.remove($index)\"\n ></p-button>\n <p-divider></p-divider>\n }\n </div>\n\n</div>\n", dependencies: [{ kind: "component", type: i0.forwardRef(() => Button), selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i0.forwardRef(() => FormComponent), selector: "rtsee-form", inputs: ["form"], outputs: ["formSubmit"] }, { kind: "component", type: i0.forwardRef(() => Divider), selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }] }); }
2036
+ }
2037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicFieldsFieldComponent, decorators: [{
2038
+ type: Component,
2039
+ args: [{ selector: "rtsee-dynamic-fields-field", standalone: true, imports: [
2040
+ Button,
2041
+ forwardRef(() => FormComponent),
2042
+ Divider
2043
+ ], template: "<div class=\"rtsee-dynamic-fields-field\">\n <p-button label=\"Add a field\"\n (click)=\"field.add()\"\n ></p-button>\n\n <div class=\"rtsee-dynamic-fields-definitions\">\n @for (definition of field.fields; track definition.name) {\n <p-divider></p-divider>\n <p>dynamic field</p>\n <rtsee-form [form]=\"definition.form\"></rtsee-form>\n <p-button label=\"Add a field\"\n (click)=\"field.remove($index)\"\n ></p-button>\n <p-divider></p-divider>\n }\n </div>\n\n</div>\n" }]
2044
+ }], propDecorators: { field: [{
2045
+ type: Input
2046
+ }], fieldChanged: [{
2047
+ type: Output
2048
+ }] } });
2049
+
2050
+ class FieldDefinitionFieldComponent {
2051
+ constructor() {
2052
+ this.fieldChanged = new EventEmitter();
2053
+ }
2054
+ onModelChange() {
2055
+ this.field.digest();
2056
+ this.fieldChanged.emit();
2057
+ }
2058
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FieldDefinitionFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2059
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FieldDefinitionFieldComponent, isStandalone: true, selector: "rtsee-field-definition-field", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-field-definition\">\n <div class=\"rtsee-form-field-container\">\n <p-divider></p-divider>\n <p>Custom Field</p>\n\n <rtsee-form [form]=\"field.form\"></rtsee-form>\n <p-divider></p-divider>\n </div>\n</div>\n\n<div class=\"rtsee-form-field-container\">\n <p-divider></p-divider>\n <p>Custom Field</p>\n\n <p-select [options]=\"field.typeOptions\"\n [optionLabel]=\"'friendlyName'\"\n ></p-select>\n\n\n\n <p-button label=\"remove\"\n severity=\"warn\"\n ></p-button>\n\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n <p-divider></p-divider>\n</div>\n", dependencies: [{ kind: "component", type: i0.forwardRef(() => Message), selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }, { kind: "component", type: i0.forwardRef(() => Button), selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i0.forwardRef(() => Divider), selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "component", type: i0.forwardRef(() => Select), selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i0.forwardRef(() => FormComponent), selector: "rtsee-form", inputs: ["form"], outputs: ["formSubmit"] }] }); }
2060
+ }
2061
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FieldDefinitionFieldComponent, decorators: [{
2062
+ type: Component,
2063
+ args: [{ selector: "rtsee-field-definition-field", standalone: true, imports: [
2064
+ Message,
2065
+ Button,
2066
+ Divider,
2067
+ Select,
2068
+ forwardRef(() => FormComponent)
2069
+ ], template: "<div class=\"rtsee-field-definition\">\n <div class=\"rtsee-form-field-container\">\n <p-divider></p-divider>\n <p>Custom Field</p>\n\n <rtsee-form [form]=\"field.form\"></rtsee-form>\n <p-divider></p-divider>\n </div>\n</div>\n\n<div class=\"rtsee-form-field-container\">\n <p-divider></p-divider>\n <p>Custom Field</p>\n\n <p-select [options]=\"field.typeOptions\"\n [optionLabel]=\"'friendlyName'\"\n ></p-select>\n\n\n\n <p-button label=\"remove\"\n severity=\"warn\"\n ></p-button>\n\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n <p-divider></p-divider>\n</div>\n" }]
2070
+ }], propDecorators: { field: [{
2071
+ type: Input
2072
+ }], fieldChanged: [{
2073
+ type: Output
2074
+ }] } });
2075
+
2076
+ class SelectFieldComponent {
2077
+ constructor() {
2078
+ this.fieldChanged = new EventEmitter();
2079
+ }
2080
+ onModelChange() {
2081
+ this.field.digest();
2082
+ this.fieldChanged.emit();
2083
+ }
2084
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: SelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2085
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: SelectFieldComponent, isStandalone: true, selector: "rtsee-field-select", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-select [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [options]=\"field.options\"\n [optionLabel]=\"field.labelKey\"\n [optionValue]=\"field.valueKey\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-select>\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"c\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "component", type: FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "component", type: Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] }); }
2086
+ }
2087
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: SelectFieldComponent, decorators: [{
2088
+ type: Component,
2089
+ args: [{ selector: "rtsee-field-select", standalone: true, imports: [FormsModule, InputGroup, FloatLabel, Message, Select], template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-select [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [options]=\"field.options\"\n [optionLabel]=\"field.labelKey\"\n [optionValue]=\"field.valueKey\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-select>\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"c\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n\n" }]
2090
+ }], propDecorators: { field: [{
2091
+ type: Input
2092
+ }], fieldChanged: [{
2093
+ type: Output
2094
+ }] } });
2095
+
2096
+ class LocationFieldComponent {
2097
+ constructor() {
2098
+ this.fieldChanged = new EventEmitter();
2099
+ }
2100
+ onModelChange() {
2101
+ this.field.digest();
2102
+ this.fieldChanged.emit();
2103
+ }
2104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LocationFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: LocationFieldComponent, isStandalone: true, selector: "rtsee-field-location", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container rtsee-field-location-container mb-3\">\n <p-fieldset [legend]=\"field.description || field.name || 'Location'\">\n @if (field.form) {\n <rtsee-form [form]=\"field.form\" (formSubmit)=\"onModelChange()\"></rtsee-form>\n }\n </p-fieldset>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: i0.forwardRef(() => Fieldset), selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i0.forwardRef(() => Message), selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }, { kind: "component", type: i0.forwardRef(() => FormComponent), selector: "rtsee-form", inputs: ["form"], outputs: ["formSubmit"] }] }); }
2106
+ }
2107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LocationFieldComponent, decorators: [{
2108
+ type: Component,
2109
+ args: [{ selector: "rtsee-field-location", standalone: true, imports: [
2110
+ Fieldset,
2111
+ Message,
2112
+ forwardRef(() => FormComponent)
2113
+ ], template: "<div class=\"rtsee-form-field-container rtsee-field-location-container mb-3\">\n <p-fieldset [legend]=\"field.description || field.name || 'Location'\">\n @if (field.form) {\n <rtsee-form [form]=\"field.form\" (formSubmit)=\"onModelChange()\"></rtsee-form>\n }\n </p-fieldset>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2114
+ }], propDecorators: { field: [{
2115
+ type: Input
2116
+ }], fieldChanged: [{
2117
+ type: Output
2118
+ }] } });
2119
+
2120
+ class TimeSlotFieldComponent {
2121
+ constructor() {
2122
+ this.fieldChanged = new EventEmitter();
2123
+ }
2124
+ onModelChange() {
2125
+ this.field.digest();
2126
+ this.fieldChanged.emit();
2127
+ }
2128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TimeSlotFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: TimeSlotFieldComponent, isStandalone: true, selector: "rtsee-field-time-slot", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container rtsee-field-time-slot-container mb-3\">\n <p-fieldset [legend]=\"field.description || field.name || 'Time Slot'\">\n @if (field.form) {\n <rtsee-form [form]=\"field.form\" (formSubmit)=\"onModelChange()\"></rtsee-form>\n }\n </p-fieldset>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: i0.forwardRef(() => Fieldset), selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i0.forwardRef(() => Message), selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }, { kind: "component", type: i0.forwardRef(() => FormComponent), selector: "rtsee-form", inputs: ["form"], outputs: ["formSubmit"] }] }); }
2130
+ }
2131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TimeSlotFieldComponent, decorators: [{
2132
+ type: Component,
2133
+ args: [{ selector: "rtsee-field-time-slot", standalone: true, imports: [
2134
+ Fieldset,
2135
+ Message,
2136
+ forwardRef(() => FormComponent)
2137
+ ], template: "<div class=\"rtsee-form-field-container rtsee-field-time-slot-container mb-3\">\n <p-fieldset [legend]=\"field.description || field.name || 'Time Slot'\">\n @if (field.form) {\n <rtsee-form [form]=\"field.form\" (formSubmit)=\"onModelChange()\"></rtsee-form>\n }\n </p-fieldset>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2138
+ }], propDecorators: { field: [{
2139
+ type: Input
2140
+ }], fieldChanged: [{
2141
+ type: Output
2142
+ }] } });
2143
+
2144
+ class TimeSlotsFieldComponent {
2145
+ constructor() {
2146
+ this.fieldChanged = new EventEmitter();
2147
+ }
2148
+ onModelChange() {
2149
+ this.field.digest();
2150
+ this.fieldChanged.emit();
2151
+ }
2152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TimeSlotsFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: TimeSlotsFieldComponent, isStandalone: true, selector: "rtsee-field-time-slots", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container rtsee-field-time-slots-container mb-3\">\n <p-fieldset [legend]=\"field.description || field.name || 'Time Slots'\">\n <div class=\"mb-3\">\n <p-button label=\"Add Time Slot\" (click)=\"field.add()\"></p-button>\n </div>\n @for (slotField of field.slotFields; track $index) {\n <div class=\"p-3 border rounded mb-2\">\n @if (slotField.form) {\n <rtsee-form [form]=\"slotField.form\" (formSubmit)=\"onModelChange()\"></rtsee-form>\n }\n <div class=\"mt-2 text-right\">\n <p-button label=\"Remove Slot\" severity=\"warn\" (click)=\"field.remove($index)\"></p-button>\n </div>\n </div>\n }\n </p-fieldset>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: i0.forwardRef(() => Button), selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i0.forwardRef(() => Message), selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }, { kind: "component", type: i0.forwardRef(() => Fieldset), selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i0.forwardRef(() => FormComponent), selector: "rtsee-form", inputs: ["form"], outputs: ["formSubmit"] }] }); }
2154
+ }
2155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TimeSlotsFieldComponent, decorators: [{
2156
+ type: Component,
2157
+ args: [{ selector: "rtsee-field-time-slots", standalone: true, imports: [
2158
+ Button,
2159
+ Divider,
2160
+ Message,
2161
+ Fieldset,
2162
+ forwardRef(() => FormComponent)
2163
+ ], template: "<div class=\"rtsee-form-field-container rtsee-field-time-slots-container mb-3\">\n <p-fieldset [legend]=\"field.description || field.name || 'Time Slots'\">\n <div class=\"mb-3\">\n <p-button label=\"Add Time Slot\" (click)=\"field.add()\"></p-button>\n </div>\n @for (slotField of field.slotFields; track $index) {\n <div class=\"p-3 border rounded mb-2\">\n @if (slotField.form) {\n <rtsee-form [form]=\"slotField.form\" (formSubmit)=\"onModelChange()\"></rtsee-form>\n }\n <div class=\"mt-2 text-right\">\n <p-button label=\"Remove Slot\" severity=\"warn\" (click)=\"field.remove($index)\"></p-button>\n </div>\n </div>\n }\n </p-fieldset>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2164
+ }], propDecorators: { field: [{
2165
+ type: Input
2166
+ }], fieldChanged: [{
2167
+ type: Output
2168
+ }] } });
2169
+
2170
+ class EntityFieldComponent {
2171
+ constructor() {
2172
+ this.fieldChanged = new EventEmitter();
2173
+ }
2174
+ ngOnInit() {
2175
+ if (this.field.autocompleteField?.autocomplete) {
2176
+ this.field.autocompleteField.autocomplete.on("select", () => {
2177
+ this.onModelChange();
2178
+ });
2179
+ }
2180
+ }
2181
+ onModelChange() {
2182
+ this.field.digest();
2183
+ this.fieldChanged.emit();
2184
+ }
2185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: EntityFieldComponent, isStandalone: true, selector: "rtsee-field-entity", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container\">\n @if (field.autocompleteField) {\n <rtsee-autocomplete [config]=\"field.autocompleteField.autocomplete\"></rtsee-autocomplete>\n }\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "rtsee-autocomplete", inputs: ["config"] }, { kind: "component", type: Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }] }); }
2187
+ }
2188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityFieldComponent, decorators: [{
2189
+ type: Component,
2190
+ args: [{ selector: "rtsee-field-entity", standalone: true, imports: [AutocompleteComponent, Message], template: "<div class=\"rtsee-form-field-container\">\n @if (field.autocompleteField) {\n <rtsee-autocomplete [config]=\"field.autocompleteField.autocomplete\"></rtsee-autocomplete>\n }\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2191
+ }], propDecorators: { field: [{
2192
+ type: Input
2193
+ }], fieldChanged: [{
2194
+ type: Output
2195
+ }] } });
2196
+
2197
+ class EntitiesListFieldComponent {
2198
+ constructor() {
2199
+ this.fieldChanged = new EventEmitter();
2200
+ }
2201
+ ngOnInit() {
2202
+ if (this.field.autocompleteField?.autocomplete) {
2203
+ this.field.autocompleteField.autocomplete.on("select", () => {
2204
+ this.onModelChange();
2205
+ });
2206
+ }
2207
+ }
2208
+ onModelChange() {
2209
+ this.field.digest();
2210
+ this.fieldChanged.emit();
2211
+ }
2212
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntitiesListFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2213
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: EntitiesListFieldComponent, isStandalone: true, selector: "rtsee-field-entities-list", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container\">\n @if (field.autocompleteField) {\n <rtsee-autocomplete [config]=\"field.autocompleteField.autocomplete\"></rtsee-autocomplete>\n }\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "rtsee-autocomplete", inputs: ["config"] }, { kind: "component", type: Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }] }); }
2214
+ }
2215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntitiesListFieldComponent, decorators: [{
2216
+ type: Component,
2217
+ args: [{ selector: "rtsee-field-entities-list", standalone: true, imports: [AutocompleteComponent, Message], template: "<div class=\"rtsee-form-field-container\">\n @if (field.autocompleteField) {\n <rtsee-autocomplete [config]=\"field.autocompleteField.autocomplete\"></rtsee-autocomplete>\n }\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2218
+ }], propDecorators: { field: [{
2219
+ type: Input
2220
+ }], fieldChanged: [{
2221
+ type: Output
2222
+ }] } });
2223
+
2224
+ class DateFieldComponent {
2225
+ constructor() {
2226
+ this.fieldChanged = new EventEmitter();
2227
+ }
2228
+ onModelChange() {
2229
+ this.field.digest();
2230
+ this.fieldChanged.emit();
2231
+ }
2232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DateFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: DateFieldComponent, isStandalone: true, selector: "rtsee-field-date", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-datePicker [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-datePicker>\n <label [for]=\"field.name\">{{ field.description || field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "styleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "readonlyInput", "shortYearCutoff", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "view", "defaultDate", "appendTo"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "component", type: FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "component", type: Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }] }); }
2234
+ }
2235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DateFieldComponent, decorators: [{
2236
+ type: Component,
2237
+ args: [{ selector: "rtsee-field-date", standalone: true, imports: [FormsModule, DatePicker, InputGroup, FloatLabel, Message], template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-datePicker [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-datePicker>\n <label [for]=\"field.name\">{{ field.description || field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2238
+ }], propDecorators: { field: [{
2239
+ type: Input
2240
+ }], fieldChanged: [{
2241
+ type: Output
2242
+ }] } });
2243
+
2244
+ class VarcharFieldComponent {
2245
+ constructor() {
2246
+ this.fieldChanged = new EventEmitter();
2247
+ }
2248
+ onModelChange() {
2249
+ this.field.digest();
2250
+ this.fieldChanged.emit();
2251
+ }
2252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: VarcharFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: VarcharFieldComponent, isStandalone: true, selector: "rtsee-field-varchar", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input pInputText\n [id]=\"field.name\"\n class=\"rtsee-form-field\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n />\n <label [for]=\"field.name\">{{ field.description || field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "component", type: InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "component", type: FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "component", type: Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }] }); }
2254
+ }
2255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: VarcharFieldComponent, decorators: [{
2256
+ type: Component,
2257
+ args: [{ selector: "rtsee-field-varchar", standalone: true, imports: [FormsModule, InputText, InputGroup, FloatLabel, Message], template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input pInputText\n [id]=\"field.name\"\n class=\"rtsee-form-field\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n />\n <label [for]=\"field.name\">{{ field.description || field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2258
+ }], propDecorators: { field: [{
2259
+ type: Input
2260
+ }], fieldChanged: [{
2261
+ type: Output
2262
+ }] } });
2263
+
2264
+ class FloatFieldComponent {
2265
+ constructor() {
2266
+ this.fieldChanged = new EventEmitter();
2267
+ }
2268
+ onModelChange() {
2269
+ this.field.digest();
2270
+ this.fieldChanged.emit();
2271
+ }
2272
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FloatFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2273
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FloatFieldComponent, isStandalone: true, selector: "rtsee-field-float", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [minFractionDigits]=\"1\"\n [maxFractionDigits]=\"6\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-inputNumber>\n <label [for]=\"field.name\">{{ field.description || field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputNumber, selector: "p-inputNumber, p-inputnumber, p-input-number", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "placeholder", "tabindex", "title", "ariaLabelledBy", "ariaDescribedBy", "ariaLabel", "ariaRequired", "autocomplete", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "component", type: FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "component", type: Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }] }); }
2274
+ }
2275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FloatFieldComponent, decorators: [{
2276
+ type: Component,
2277
+ args: [{ selector: "rtsee-field-float", standalone: true, imports: [FormsModule, InputNumber, InputGroup, FloatLabel, Message], template: "<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [minFractionDigits]=\"1\"\n [maxFractionDigits]=\"6\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-inputNumber>\n <label [for]=\"field.name\">{{ field.description || field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n" }]
2278
+ }], propDecorators: { field: [{
2279
+ type: Input
2280
+ }], fieldChanged: [{
2281
+ type: Output
2282
+ }] } });
2283
+
2005
2284
  class FormFieldComponent {
2006
2285
  constructor() {
2007
2286
  this.fieldChanged = new EventEmitter();
@@ -2010,7 +2289,7 @@ class FormFieldComponent {
2010
2289
  this.fieldChanged.emit();
2011
2290
  }
2012
2291
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2013
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FormFieldComponent, isStandalone: true, selector: "rtsee-form-field", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "@switch (field.type) {\n @case ('text') {\n <rtsee-field-text [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-text>\n }\n @case ('textarea') {\n <rtsee-field-textarea [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-textarea>\n }\n @case ('checkbox') {\n <rtsee-field-checkbox [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-checkbox>\n }\n @case ('radio') {\n <rtsee-field-radio [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-radio>\n }\n @case ('number') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('autocomplete') {\n <rtsee-field-autocomplete [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-autocomplete>\n }\n @case ('recursive-select') {\n <rtsee-field-recursive-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-recursive-select>\n }\n @case ('image-uploader') {\n <rtsee-field-image-uploader [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-image-uploader>\n }\n}\n", dependencies: [{ kind: "component", type: TextFieldComponent, selector: "rtsee-field-text", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: TextareaFieldComponent, selector: "rtsee-field-textarea", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: CheckboxFieldComponent, selector: "rtsee-field-checkbox", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: RadioFieldComponent, selector: "rtsee-field-radio", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: NumberFieldComponent, selector: "rtsee-field-number", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: AutocompleteFieldComponent, selector: "rtsee-field-autocomplete", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: RecursiveSelectFieldComponent, selector: "rtsee-field-recursive-select", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: ImageUploaderFieldComponent, selector: "rtsee-field-image-uploader", inputs: ["field"], outputs: ["fieldChanged"] }] }); }
2292
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FormFieldComponent, isStandalone: true, selector: "rtsee-form-field", inputs: { field: "field" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "@switch (field.type) {\n @case ('text') {\n <rtsee-field-text [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-text>\n }\n @case ('varchar') {\n <rtsee-field-varchar [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-varchar>\n }\n @case ('textarea') {\n <rtsee-field-textarea [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-textarea>\n }\n @case ('checkbox') {\n <rtsee-field-checkbox [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-checkbox>\n }\n @case ('radio') {\n <rtsee-field-radio [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-radio>\n }\n @case ('number') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('integer') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('float4') {\n <rtsee-field-float [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-float>\n }\n @case ('date') {\n <rtsee-field-date [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-date>\n }\n @case ('autocomplete') {\n <rtsee-field-autocomplete [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-autocomplete>\n }\n @case ('entity') {\n <rtsee-field-entity [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-entity>\n }\n @case ('entities-list') {\n <rtsee-field-entities-list [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-entities-list>\n }\n @case ('location') {\n <rtsee-field-location [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-location>\n }\n @case ('time_slot') {\n <rtsee-field-time-slot [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-time-slot>\n }\n @case ('time_slots') {\n <rtsee-field-time-slots [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-time-slots>\n }\n @case ('recursive-select') {\n <rtsee-field-recursive-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-recursive-select>\n }\n @case ('select') {\n <rtsee-field-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-select>\n }\n @case ('image-uploader') {\n <rtsee-field-image-uploader [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-image-uploader>\n }\n @case ('field-definition') {\n <rtsee-field-definition-field [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-definition-field>\n }\n @case ('dynamic-fields') {\n <rtsee-dynamic-fields-field [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-dynamic-fields-field>\n }\n}\n", dependencies: [{ kind: "component", type: i0.forwardRef(() => TextFieldComponent), selector: "rtsee-field-text", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => TextareaFieldComponent), selector: "rtsee-field-textarea", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => CheckboxFieldComponent), selector: "rtsee-field-checkbox", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => RadioFieldComponent), selector: "rtsee-field-radio", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => NumberFieldComponent), selector: "rtsee-field-number", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => AutocompleteFieldComponent), selector: "rtsee-field-autocomplete", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => RecursiveSelectFieldComponent), selector: "rtsee-field-recursive-select", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => ImageUploaderFieldComponent), selector: "rtsee-field-image-uploader", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => FieldDefinitionFieldComponent), selector: "rtsee-field-definition-field", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => DynamicFieldsFieldComponent), selector: "rtsee-dynamic-fields-field", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => SelectFieldComponent), selector: "rtsee-field-select", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => LocationFieldComponent), selector: "rtsee-field-location", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => TimeSlotFieldComponent), selector: "rtsee-field-time-slot", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => TimeSlotsFieldComponent), selector: "rtsee-field-time-slots", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => EntityFieldComponent), selector: "rtsee-field-entity", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => EntitiesListFieldComponent), selector: "rtsee-field-entities-list", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => DateFieldComponent), selector: "rtsee-field-date", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => VarcharFieldComponent), selector: "rtsee-field-varchar", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: i0.forwardRef(() => FloatFieldComponent), selector: "rtsee-field-float", inputs: ["field"], outputs: ["fieldChanged"] }] }); }
2014
2293
  }
2015
2294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormFieldComponent, decorators: [{
2016
2295
  type: Component,
@@ -2022,8 +2301,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
2022
2301
  NumberFieldComponent,
2023
2302
  AutocompleteFieldComponent,
2024
2303
  RecursiveSelectFieldComponent,
2025
- ImageUploaderFieldComponent
2026
- ], template: "@switch (field.type) {\n @case ('text') {\n <rtsee-field-text [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-text>\n }\n @case ('textarea') {\n <rtsee-field-textarea [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-textarea>\n }\n @case ('checkbox') {\n <rtsee-field-checkbox [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-checkbox>\n }\n @case ('radio') {\n <rtsee-field-radio [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-radio>\n }\n @case ('number') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('autocomplete') {\n <rtsee-field-autocomplete [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-autocomplete>\n }\n @case ('recursive-select') {\n <rtsee-field-recursive-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-recursive-select>\n }\n @case ('image-uploader') {\n <rtsee-field-image-uploader [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-image-uploader>\n }\n}\n" }]
2304
+ ImageUploaderFieldComponent,
2305
+ forwardRef(() => FieldDefinitionFieldComponent),
2306
+ forwardRef(() => DynamicFieldsFieldComponent),
2307
+ SelectFieldComponent,
2308
+ LocationFieldComponent,
2309
+ TimeSlotFieldComponent,
2310
+ TimeSlotsFieldComponent,
2311
+ EntityFieldComponent,
2312
+ EntitiesListFieldComponent,
2313
+ DateFieldComponent,
2314
+ VarcharFieldComponent,
2315
+ FloatFieldComponent
2316
+ ], template: "@switch (field.type) {\n @case ('text') {\n <rtsee-field-text [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-text>\n }\n @case ('varchar') {\n <rtsee-field-varchar [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-varchar>\n }\n @case ('textarea') {\n <rtsee-field-textarea [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-textarea>\n }\n @case ('checkbox') {\n <rtsee-field-checkbox [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-checkbox>\n }\n @case ('radio') {\n <rtsee-field-radio [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-radio>\n }\n @case ('number') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('integer') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('float4') {\n <rtsee-field-float [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-float>\n }\n @case ('date') {\n <rtsee-field-date [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-date>\n }\n @case ('autocomplete') {\n <rtsee-field-autocomplete [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-autocomplete>\n }\n @case ('entity') {\n <rtsee-field-entity [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-entity>\n }\n @case ('entities-list') {\n <rtsee-field-entities-list [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-entities-list>\n }\n @case ('location') {\n <rtsee-field-location [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-location>\n }\n @case ('time_slot') {\n <rtsee-field-time-slot [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-time-slot>\n }\n @case ('time_slots') {\n <rtsee-field-time-slots [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-time-slots>\n }\n @case ('recursive-select') {\n <rtsee-field-recursive-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-recursive-select>\n }\n @case ('select') {\n <rtsee-field-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-select>\n }\n @case ('image-uploader') {\n <rtsee-field-image-uploader [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-image-uploader>\n }\n @case ('field-definition') {\n <rtsee-field-definition-field [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-definition-field>\n }\n @case ('dynamic-fields') {\n <rtsee-dynamic-fields-field [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-dynamic-fields-field>\n }\n}\n" }]
2027
2317
  }], propDecorators: { field: [{
2028
2318
  type: Input
2029
2319
  }], fieldChanged: [{
@@ -2043,11 +2333,11 @@ class FormComponent {
2043
2333
  this.form.evaluateIsChanged();
2044
2334
  }
2045
2335
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2046
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FormComponent, isStandalone: true, selector: "rtsee-form", inputs: { form: "form" }, outputs: { formSubmit: "formSubmit" }, ngImport: i0, template: "<div class=\"rtsee-form-container\">\n @if (form.name) {\n <h3 class=\"rtsee-form-title font-bold text-lg mb-2\">{{ form.name }}</h3>\n }\n @if (form.description) {\n <p class=\"rtsee-form-description text-sm text-gray-500 mb-4\">{{ form.description }}</p>\n }\n <form class=\"rtsee-story-form rtsee-form\" (ngSubmit)=\"submit()\">\n @for (field of form.fields; track field.name) {\n <div class=\"rtsee-form-field-container\">\n <rtsee-form-field [field]=\"field\"\n (fieldChanged)=\"onFieldChanged()\"\n ></rtsee-form-field>\n </div>\n }\n\n <div class=\"rtsee-form-submit-container mt-4\">\n <ng-content>\n <p-button type=\"submit\" label=\"Submit\" [disabled]=\"!form.isValid\"></p-button>\n </ng-content>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "component", type: FormFieldComponent, selector: "rtsee-form-field", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
2336
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FormComponent, isStandalone: true, selector: "rtsee-form", inputs: { form: "form" }, outputs: { formSubmit: "formSubmit" }, ngImport: i0, template: "<div class=\"rtsee-form-container\">\n @if (form.name) {\n <h3 class=\"rtsee-form-title font-bold text-lg mb-2\">{{ form.name }}</h3>\n }\n @if (form.description) {\n <p class=\"rtsee-form-description text-sm text-gray-500 mb-4\">{{ form.description }}</p>\n }\n <form class=\"rtsee-story-form rtsee-form\" (ngSubmit)=\"submit()\">\n @for (field of form.fields; track field.name) {\n <div class=\"rtsee-form-field-container\">\n @if (field.active) {\n <rtsee-form-field [field]=\"field\"\n (fieldChanged)=\"onFieldChanged()\"\n ></rtsee-form-field>\n }\n </div>\n }\n <div class=\"rtsee-form-submit-container\">\n <ng-content>\n </ng-content>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "component", type: FormFieldComponent, selector: "rtsee-form-field", inputs: ["field"], outputs: ["fieldChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
2047
2337
  }
2048
2338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormComponent, decorators: [{
2049
2339
  type: Component,
2050
- args: [{ selector: "rtsee-form", standalone: true, imports: [FormFieldComponent, Button, FormsModule], template: "<div class=\"rtsee-form-container\">\n @if (form.name) {\n <h3 class=\"rtsee-form-title font-bold text-lg mb-2\">{{ form.name }}</h3>\n }\n @if (form.description) {\n <p class=\"rtsee-form-description text-sm text-gray-500 mb-4\">{{ form.description }}</p>\n }\n <form class=\"rtsee-story-form rtsee-form\" (ngSubmit)=\"submit()\">\n @for (field of form.fields; track field.name) {\n <div class=\"rtsee-form-field-container\">\n <rtsee-form-field [field]=\"field\"\n (fieldChanged)=\"onFieldChanged()\"\n ></rtsee-form-field>\n </div>\n }\n\n <div class=\"rtsee-form-submit-container mt-4\">\n <ng-content>\n <p-button type=\"submit\" label=\"Submit\" [disabled]=\"!form.isValid\"></p-button>\n </ng-content>\n </div>\n </form>\n</div>\n" }]
2340
+ args: [{ selector: "rtsee-form", standalone: true, imports: [FormFieldComponent, Button, FormsModule], template: "<div class=\"rtsee-form-container\">\n @if (form.name) {\n <h3 class=\"rtsee-form-title font-bold text-lg mb-2\">{{ form.name }}</h3>\n }\n @if (form.description) {\n <p class=\"rtsee-form-description text-sm text-gray-500 mb-4\">{{ form.description }}</p>\n }\n <form class=\"rtsee-story-form rtsee-form\" (ngSubmit)=\"submit()\">\n @for (field of form.fields; track field.name) {\n <div class=\"rtsee-form-field-container\">\n @if (field.active) {\n <rtsee-form-field [field]=\"field\"\n (fieldChanged)=\"onFieldChanged()\"\n ></rtsee-form-field>\n }\n </div>\n }\n <div class=\"rtsee-form-submit-container\">\n <ng-content>\n </ng-content>\n </div>\n </form>\n</div>\n" }]
2051
2341
  }], propDecorators: { form: [{
2052
2342
  type: Input
2053
2343
  }], formSubmit: [{
@@ -2668,11 +2958,11 @@ class StoryDetailsComponent {
2668
2958
  return stars;
2669
2959
  }
2670
2960
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: StoryDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2671
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: StoryDetailsComponent, isStandalone: true, selector: "rtsee-story-details", inputs: { story: "story", presentation: "presentation", messenger: "messenger" }, ngImport: i0, template: "<div class=\"rtsee-story-details\">\n <section\n class=\"rtsee-story-details-cover\"\n [style.background-image]=\"'url(' + story.imageUrl + ')'\"\n >\n <button\n class=\"rtsee-story-details-btn-close\"\n (click)=\"presentation.closeStoryDetails()\"\n aria-label=\"Close\"\n >\n <span class=\"pi pi-times\"></span>\n </button>\n <div class=\"rtsee-story-details-cover-overlay\"></div>\n <div class=\"rtsee-story-details-cover-content\">\n <div class=\"rtsee-story-details-cover-badges\">\n @if (story.categories?.length) {\n @for (category of story.categories; track category.id) {\n <span class=\"rtsee-story-details-tag-pill\">\n {{ category.name }}\n </span>\n }\n }\n @if (story.tags?.length) {\n @for (tag of story.tags; track tag.id) {\n <span\n class=\"rtsee-story-details-tag-pill rtsee-story-details-tag-pill-label\"\n >\n @if (tag.symbol) {\n <span class=\"symbol\">{{ tag.symbol }}</span>\n }\n {{ tag.name }}\n </span>\n }\n }\n </div>\n\n <h1 class=\"rtsee-story-details-cover-title\">{{ story.name }}</h1>\n\n <div class=\"rtsee-story-details-cover-meta\">\n @if (story.rating !== null) {\n <div class=\"rtsee-story-details-cover-rating\">\n <span class=\"rtsee-story-details-stars\">\n @for (star of getStarArray(story.rating); track $index) {\n <span\n class=\"rtsee-story-details-star\"\n [class.rtsee-story-details-star-full]=\"star === 'full'\"\n [class.rtsee-story-details-star-half]=\"star === 'half'\"\n [class.rtsee-story-details-star-empty]=\"star === 'empty'\"\n >\n @if (star === \"full\") {\n \u2605\n } @else if (star === \"half\") {\n \u2605\n } @else {\n \u2606\n }\n </span>\n }\n </span>\n <span class=\"rtsee-story-details-rating-number\">{{\n story.rating\n }}</span>\n @if (story.ratesCount !== null) {\n <span class=\"rtsee-story-details-rating-count\"\n >({{ story.ratesCount }} ratings)</span\n >\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-cover-info-chips\">\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n {{ story.averageReadTime }} min\n </span>\n }\n @if (story.totalSlides) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n {{ story.totalSlides }} slides\n </span>\n }\n </div>\n </div>\n </div>\n </section>\n\n <!-- CONTENT AREA -->\n <div class=\"rtsee-story-details-content-wrapper\">\n <div class=\"rtsee-story-details-cover-actions\">\n <p-button\n (click)=\"presentation.setActiveStory(story)\"\n [severity]=\"'primary'\"\n [label]=\"story.preselectedSlideNumber ? 'Continue Reading' : 'Start Reading'\"\n class=\"rtsee-story-details-start-reading rts-action-button\"\n >\n </p-button>\n </div>\n <div class=\"rtsee-story-details-content-grid\">\n <!-- Description Card -->\n <article class=\"rtsee-story-details-glass-card\">\n <div class=\"rtsee-story-details-glass-card-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n <h2>About This Story</h2>\n </div>\n <p class=\"rtsee-story-details-glass-card-text\">\n {{ story.description }}\n </p>\n </article>\n </div>\n\n @if (messenger) {\n <rtsee-entity-preview\n [entity]=\"story\"\n [messenger]=\"messenger\"\n ></rtsee-entity-preview>\n }\n\n @if (story.categories?.length && false) {\n <div class=\"rtsee-story-details-categories\">\n @for (category of story.categories; track category.id) {\n <p-tag [value]=\"category.name\"></p-tag>\n }\n </div>\n }\n\n @if (story.tags?.length && false) {\n <div class=\"rtsee-story-details-labels\">\n @for (tag of story.tags; track tag.id) {\n <p-chip class=\"rtsee-story-details-label\">\n @if (tag.symbol) {\n <span class=\"rtsee-story-details-label-left\">{{\n tag.symbol\n }}</span>\n }\n <span class=\"rtsee-story-details-label-right\">{{\n tag.name\n }}</span>\n </p-chip>\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-description-history\"></div>\n @if (story.isPublished && false) {\n <div class=\"rtsee-story-details-feedback\">\n <p>feedback here</p>\n </div>\n } @else if (messenger && story.discussion && false) {\n <div class=\"rtsee-story-details-votes\">\n <p class=\"rtsee-story-details-comments-label\">Comments</p>\n <rtsee-chat\n [messenger]=\"messenger\"\n [chatData]=\"story.discussion\"\n ></rtsee-chat>\n </div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "disabled", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ChatComponent, selector: "rtsee-chat", inputs: ["chat", "chatData", "entity", "messenger"] }, { kind: "component", type: RtseeEntityPreviewComponent, selector: "rtsee-entity-preview", inputs: ["entity", "messenger"] }] }); }
2961
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: StoryDetailsComponent, isStandalone: true, selector: "rtsee-story-details", inputs: { story: "story", presentation: "presentation", messenger: "messenger" }, ngImport: i0, template: "<div class=\"rtsee-story-details\">\n <section\n class=\"rtsee-story-details-cover\"\n [style.background-image]=\"'url(' + story.imageUrl + ')'\"\n >\n <button\n class=\"rtsee-story-details-btn-close\"\n [routerLink]=\"[presentation.homePage]\"\n (click)=\"presentation.closeStoryDetails()\"\n aria-label=\"Close\"\n >\n <span class=\"pi pi-times\"></span>\n </button>\n <div class=\"rtsee-story-details-cover-overlay\"></div>\n <div class=\"rtsee-story-details-cover-content\">\n <div class=\"rtsee-story-details-cover-badges\">\n @if (story.categories?.length) {\n @for (category of story.categories; track category.id) {\n <span class=\"rtsee-story-details-tag-pill\">\n {{ category.name }}\n </span>\n }\n }\n @if (story.tags?.length) {\n @for (tag of story.tags; track tag.id) {\n <span\n class=\"rtsee-story-details-tag-pill rtsee-story-details-tag-pill-label\"\n >\n @if (tag.symbol) {\n <span class=\"symbol\">{{ tag.symbol }}</span>\n }\n {{ tag.name }}\n </span>\n }\n }\n </div>\n\n <h1 class=\"rtsee-story-details-cover-title\">{{ story.name }}</h1>\n\n <div class=\"rtsee-story-details-cover-meta\">\n @if (story.rating !== null) {\n <div class=\"rtsee-story-details-cover-rating\">\n <span class=\"rtsee-story-details-stars\">\n @for (star of getStarArray(story.rating); track $index) {\n <span\n class=\"rtsee-story-details-star\"\n [class.rtsee-story-details-star-full]=\"star === 'full'\"\n [class.rtsee-story-details-star-half]=\"star === 'half'\"\n [class.rtsee-story-details-star-empty]=\"star === 'empty'\"\n >\n @if (star === \"full\") {\n \u2605\n } @else if (star === \"half\") {\n \u2605\n } @else {\n \u2606\n }\n </span>\n }\n </span>\n <span class=\"rtsee-story-details-rating-number\">{{\n story.rating\n }}</span>\n @if (story.ratesCount !== null) {\n <span class=\"rtsee-story-details-rating-count\"\n >({{ story.ratesCount }} ratings)</span\n >\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-cover-info-chips\">\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n {{ story.averageReadTime }} min\n </span>\n }\n @if (story.totalSlides) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n {{ story.totalSlides }} slides\n </span>\n }\n </div>\n </div>\n </div>\n </section>\n\n <!-- CONTENT AREA -->\n <div class=\"rtsee-story-details-content-wrapper\">\n <div class=\"rtsee-story-details-cover-actions\">\n <p-button\n (click)=\"presentation.setActiveStory(story)\"\n [severity]=\"'primary'\"\n [label]=\"story.preselectedSlideNumber ? 'Continue Reading' : 'Start Reading'\"\n class=\"rtsee-story-details-start-reading rts-action-button\"\n >\n </p-button>\n </div>\n <div class=\"rtsee-story-details-content-grid\">\n <!-- Description Card -->\n <article class=\"rtsee-story-details-glass-card\">\n <div class=\"rtsee-story-details-glass-card-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n <h2>About This Story</h2>\n </div>\n <p class=\"rtsee-story-details-glass-card-text\">\n {{ story.description }}\n </p>\n </article>\n </div>\n\n @if (messenger) {\n <rtsee-entity-preview\n [entity]=\"story\"\n [messenger]=\"messenger\"\n ></rtsee-entity-preview>\n }\n\n @if (story.categories?.length && false) {\n <div class=\"rtsee-story-details-categories\">\n @for (category of story.categories; track category.id) {\n <p-tag [value]=\"category.name\"></p-tag>\n }\n </div>\n }\n\n @if (story.tags?.length && false) {\n <div class=\"rtsee-story-details-labels\">\n @for (tag of story.tags; track tag.id) {\n <p-chip class=\"rtsee-story-details-label\">\n @if (tag.symbol) {\n <span class=\"rtsee-story-details-label-left\">{{\n tag.symbol\n }}</span>\n }\n <span class=\"rtsee-story-details-label-right\">{{\n tag.name\n }}</span>\n </p-chip>\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-description-history\"></div>\n @if (story.isPublished && false) {\n <div class=\"rtsee-story-details-feedback\">\n <p>feedback here</p>\n </div>\n } @else if (messenger && story.discussion && false) {\n <div class=\"rtsee-story-details-votes\">\n <p class=\"rtsee-story-details-comments-label\">Comments</p>\n <rtsee-chat\n [messenger]=\"messenger\"\n [chatData]=\"story.discussion\"\n ></rtsee-chat>\n </div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "disabled", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ChatComponent, selector: "rtsee-chat", inputs: ["chat", "chatData", "entity", "messenger"] }, { kind: "component", type: RtseeEntityPreviewComponent, selector: "rtsee-entity-preview", inputs: ["entity", "messenger"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
2672
2962
  }
2673
2963
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: StoryDetailsComponent, decorators: [{
2674
2964
  type: Component,
2675
- args: [{ selector: 'rtsee-story-details', imports: [Chip, Tag, Button, ChatComponent, RtseeEntityPreviewComponent], template: "<div class=\"rtsee-story-details\">\n <section\n class=\"rtsee-story-details-cover\"\n [style.background-image]=\"'url(' + story.imageUrl + ')'\"\n >\n <button\n class=\"rtsee-story-details-btn-close\"\n (click)=\"presentation.closeStoryDetails()\"\n aria-label=\"Close\"\n >\n <span class=\"pi pi-times\"></span>\n </button>\n <div class=\"rtsee-story-details-cover-overlay\"></div>\n <div class=\"rtsee-story-details-cover-content\">\n <div class=\"rtsee-story-details-cover-badges\">\n @if (story.categories?.length) {\n @for (category of story.categories; track category.id) {\n <span class=\"rtsee-story-details-tag-pill\">\n {{ category.name }}\n </span>\n }\n }\n @if (story.tags?.length) {\n @for (tag of story.tags; track tag.id) {\n <span\n class=\"rtsee-story-details-tag-pill rtsee-story-details-tag-pill-label\"\n >\n @if (tag.symbol) {\n <span class=\"symbol\">{{ tag.symbol }}</span>\n }\n {{ tag.name }}\n </span>\n }\n }\n </div>\n\n <h1 class=\"rtsee-story-details-cover-title\">{{ story.name }}</h1>\n\n <div class=\"rtsee-story-details-cover-meta\">\n @if (story.rating !== null) {\n <div class=\"rtsee-story-details-cover-rating\">\n <span class=\"rtsee-story-details-stars\">\n @for (star of getStarArray(story.rating); track $index) {\n <span\n class=\"rtsee-story-details-star\"\n [class.rtsee-story-details-star-full]=\"star === 'full'\"\n [class.rtsee-story-details-star-half]=\"star === 'half'\"\n [class.rtsee-story-details-star-empty]=\"star === 'empty'\"\n >\n @if (star === \"full\") {\n \u2605\n } @else if (star === \"half\") {\n \u2605\n } @else {\n \u2606\n }\n </span>\n }\n </span>\n <span class=\"rtsee-story-details-rating-number\">{{\n story.rating\n }}</span>\n @if (story.ratesCount !== null) {\n <span class=\"rtsee-story-details-rating-count\"\n >({{ story.ratesCount }} ratings)</span\n >\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-cover-info-chips\">\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n {{ story.averageReadTime }} min\n </span>\n }\n @if (story.totalSlides) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n {{ story.totalSlides }} slides\n </span>\n }\n </div>\n </div>\n </div>\n </section>\n\n <!-- CONTENT AREA -->\n <div class=\"rtsee-story-details-content-wrapper\">\n <div class=\"rtsee-story-details-cover-actions\">\n <p-button\n (click)=\"presentation.setActiveStory(story)\"\n [severity]=\"'primary'\"\n [label]=\"story.preselectedSlideNumber ? 'Continue Reading' : 'Start Reading'\"\n class=\"rtsee-story-details-start-reading rts-action-button\"\n >\n </p-button>\n </div>\n <div class=\"rtsee-story-details-content-grid\">\n <!-- Description Card -->\n <article class=\"rtsee-story-details-glass-card\">\n <div class=\"rtsee-story-details-glass-card-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n <h2>About This Story</h2>\n </div>\n <p class=\"rtsee-story-details-glass-card-text\">\n {{ story.description }}\n </p>\n </article>\n </div>\n\n @if (messenger) {\n <rtsee-entity-preview\n [entity]=\"story\"\n [messenger]=\"messenger\"\n ></rtsee-entity-preview>\n }\n\n @if (story.categories?.length && false) {\n <div class=\"rtsee-story-details-categories\">\n @for (category of story.categories; track category.id) {\n <p-tag [value]=\"category.name\"></p-tag>\n }\n </div>\n }\n\n @if (story.tags?.length && false) {\n <div class=\"rtsee-story-details-labels\">\n @for (tag of story.tags; track tag.id) {\n <p-chip class=\"rtsee-story-details-label\">\n @if (tag.symbol) {\n <span class=\"rtsee-story-details-label-left\">{{\n tag.symbol\n }}</span>\n }\n <span class=\"rtsee-story-details-label-right\">{{\n tag.name\n }}</span>\n </p-chip>\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-description-history\"></div>\n @if (story.isPublished && false) {\n <div class=\"rtsee-story-details-feedback\">\n <p>feedback here</p>\n </div>\n } @else if (messenger && story.discussion && false) {\n <div class=\"rtsee-story-details-votes\">\n <p class=\"rtsee-story-details-comments-label\">Comments</p>\n <rtsee-chat\n [messenger]=\"messenger\"\n [chatData]=\"story.discussion\"\n ></rtsee-chat>\n </div>\n }\n </div>\n</div>\n" }]
2965
+ args: [{ selector: 'rtsee-story-details', imports: [Chip, Tag, Button, ChatComponent, RtseeEntityPreviewComponent, RouterLink], template: "<div class=\"rtsee-story-details\">\n <section\n class=\"rtsee-story-details-cover\"\n [style.background-image]=\"'url(' + story.imageUrl + ')'\"\n >\n <button\n class=\"rtsee-story-details-btn-close\"\n [routerLink]=\"[presentation.homePage]\"\n (click)=\"presentation.closeStoryDetails()\"\n aria-label=\"Close\"\n >\n <span class=\"pi pi-times\"></span>\n </button>\n <div class=\"rtsee-story-details-cover-overlay\"></div>\n <div class=\"rtsee-story-details-cover-content\">\n <div class=\"rtsee-story-details-cover-badges\">\n @if (story.categories?.length) {\n @for (category of story.categories; track category.id) {\n <span class=\"rtsee-story-details-tag-pill\">\n {{ category.name }}\n </span>\n }\n }\n @if (story.tags?.length) {\n @for (tag of story.tags; track tag.id) {\n <span\n class=\"rtsee-story-details-tag-pill rtsee-story-details-tag-pill-label\"\n >\n @if (tag.symbol) {\n <span class=\"symbol\">{{ tag.symbol }}</span>\n }\n {{ tag.name }}\n </span>\n }\n }\n </div>\n\n <h1 class=\"rtsee-story-details-cover-title\">{{ story.name }}</h1>\n\n <div class=\"rtsee-story-details-cover-meta\">\n @if (story.rating !== null) {\n <div class=\"rtsee-story-details-cover-rating\">\n <span class=\"rtsee-story-details-stars\">\n @for (star of getStarArray(story.rating); track $index) {\n <span\n class=\"rtsee-story-details-star\"\n [class.rtsee-story-details-star-full]=\"star === 'full'\"\n [class.rtsee-story-details-star-half]=\"star === 'half'\"\n [class.rtsee-story-details-star-empty]=\"star === 'empty'\"\n >\n @if (star === \"full\") {\n \u2605\n } @else if (star === \"half\") {\n \u2605\n } @else {\n \u2606\n }\n </span>\n }\n </span>\n <span class=\"rtsee-story-details-rating-number\">{{\n story.rating\n }}</span>\n @if (story.ratesCount !== null) {\n <span class=\"rtsee-story-details-rating-count\"\n >({{ story.ratesCount }} ratings)</span\n >\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-cover-info-chips\">\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n {{ story.averageReadTime }} min\n </span>\n }\n @if (story.totalSlides) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n {{ story.totalSlides }} slides\n </span>\n }\n </div>\n </div>\n </div>\n </section>\n\n <!-- CONTENT AREA -->\n <div class=\"rtsee-story-details-content-wrapper\">\n <div class=\"rtsee-story-details-cover-actions\">\n <p-button\n (click)=\"presentation.setActiveStory(story)\"\n [severity]=\"'primary'\"\n [label]=\"story.preselectedSlideNumber ? 'Continue Reading' : 'Start Reading'\"\n class=\"rtsee-story-details-start-reading rts-action-button\"\n >\n </p-button>\n </div>\n <div class=\"rtsee-story-details-content-grid\">\n <!-- Description Card -->\n <article class=\"rtsee-story-details-glass-card\">\n <div class=\"rtsee-story-details-glass-card-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n <h2>About This Story</h2>\n </div>\n <p class=\"rtsee-story-details-glass-card-text\">\n {{ story.description }}\n </p>\n </article>\n </div>\n\n @if (messenger) {\n <rtsee-entity-preview\n [entity]=\"story\"\n [messenger]=\"messenger\"\n ></rtsee-entity-preview>\n }\n\n @if (story.categories?.length && false) {\n <div class=\"rtsee-story-details-categories\">\n @for (category of story.categories; track category.id) {\n <p-tag [value]=\"category.name\"></p-tag>\n }\n </div>\n }\n\n @if (story.tags?.length && false) {\n <div class=\"rtsee-story-details-labels\">\n @for (tag of story.tags; track tag.id) {\n <p-chip class=\"rtsee-story-details-label\">\n @if (tag.symbol) {\n <span class=\"rtsee-story-details-label-left\">{{\n tag.symbol\n }}</span>\n }\n <span class=\"rtsee-story-details-label-right\">{{\n tag.name\n }}</span>\n </p-chip>\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-description-history\"></div>\n @if (story.isPublished && false) {\n <div class=\"rtsee-story-details-feedback\">\n <p>feedback here</p>\n </div>\n } @else if (messenger && story.discussion && false) {\n <div class=\"rtsee-story-details-votes\">\n <p class=\"rtsee-story-details-comments-label\">Comments</p>\n <rtsee-chat\n [messenger]=\"messenger\"\n [chatData]=\"story.discussion\"\n ></rtsee-chat>\n </div>\n }\n </div>\n</div>\n" }]
2676
2966
  }], propDecorators: { story: [{
2677
2967
  type: Input
2678
2968
  }], presentation: [{
@@ -2685,8 +2975,13 @@ class PresentationComponent {
2685
2975
  constructor() {
2686
2976
  this.RTSeeTextLabelKeys = RTSeeTextLabelKeys;
2687
2977
  }
2978
+ onStoryThumbnailClicked(story) {
2979
+ if (!story.friendlyUrl) {
2980
+ void this.presentation.openStoryDetails(story.id, story.preselectedSlideNumber || undefined);
2981
+ }
2982
+ }
2688
2983
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PresentationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2689
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: PresentationComponent, isStandalone: true, selector: "rtsee-presentation", inputs: { presentation: "presentation", messenger: "messenger" }, ngImport: i0, template: "<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n @if (presentation.storyLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n @if (presentation.settings.isExpanded) {\n <rtsee-presentation-settings [settings]=\"presentation.settings\"\n [presentation]=\"presentation\"\n ></rtsee-presentation-settings>\n }\n\n @if (presentation.isCategoriesListVisible && !presentation.storyLoadInProgress) {\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if (presentation.activeSessionsStories.length) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{presentation.labels[RTSeeTextLabelKeys.CONTINUE_SESSIONS_LABEL]}}</h2>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.activeSessionsStories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id, story.preselectedSlideNumber || undefined)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n\n @for (category of presentation.categories; track category.id) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{ category.name }}</h2>\n <span class=\"rtsee-presentation-category-description\">{{ category.description }}</span>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (presentation.activeStory && !presentation.isDashboardOpen) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n [settings]=\"presentation.settings\"\n ></rtsee-story-player>\n </div>\n } @else if (presentation.openedStoryDetails && !presentation.isDashboardOpen) {\n <rtsee-story-details [story]=\"presentation.openedStoryDetails\"\n [presentation]=\"presentation\"\n [messenger]=\"messenger\"\n ></rtsee-story-details>\n }\n</div>\n", dependencies: [{ kind: "component", type: PresentationHeaderComponent, selector: "rtsee-presentation-header", inputs: ["presentation"] }, { kind: "component", type: StoryThumbnailComponent, selector: "rtsee-story-thumbnail", inputs: ["story"] }, { kind: "component", type: StoryPlayerComponent, selector: "rtsee-story-player", inputs: ["story", "settings"] }, { kind: "component", type: PreloaderComponent, selector: "rtsee-preloader", inputs: ["diameter", "color"] }, { kind: "component", type: PresentationsDashboardComponent, selector: "rtsee-presentations-dashboard", inputs: ["dashboard"] }, { kind: "component", type: PresentationSettingsComponent, selector: "rtsee-presentation-settings", inputs: ["settings", "presentation"] }, { kind: "component", type: StoryDetailsComponent, selector: "rtsee-story-details", inputs: ["story", "presentation", "messenger"] }] }); }
2984
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: PresentationComponent, isStandalone: true, selector: "rtsee-presentation", inputs: { presentation: "presentation", messenger: "messenger" }, ngImport: i0, template: "<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n @if (presentation.storyLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n @if (presentation.settings.isExpanded) {\n <rtsee-presentation-settings [settings]=\"presentation.settings\"\n [presentation]=\"presentation\"\n ></rtsee-presentation-settings>\n }\n\n @if (presentation.isCategoriesListVisible && !presentation.storyLoadInProgress) {\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if (presentation.activeSessionsStories.length) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{presentation.labels[RTSeeTextLabelKeys.CONTINUE_SESSIONS_LABEL]}}</h2>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.activeSessionsStories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"onStoryThumbnailClicked(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n [presentation]=\"presentation\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n\n @for (category of presentation.categories; track category.id) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{ category.name }}</h2>\n <span class=\"rtsee-presentation-category-description\">{{ category.description }}</span>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"onStoryThumbnailClicked(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n [presentation]=\"presentation\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (presentation.activeStory && !presentation.isDashboardOpen) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n [settings]=\"presentation.settings\"\n ></rtsee-story-player>\n </div>\n } @else if (presentation.openedStoryDetails && !presentation.isDashboardOpen) {\n <rtsee-story-details [story]=\"presentation.openedStoryDetails\"\n [presentation]=\"presentation\"\n [messenger]=\"messenger\"\n ></rtsee-story-details>\n }\n</div>\n", dependencies: [{ kind: "component", type: PresentationHeaderComponent, selector: "rtsee-presentation-header", inputs: ["presentation"] }, { kind: "component", type: StoryThumbnailComponent, selector: "rtsee-story-thumbnail", inputs: ["story", "presentation"] }, { kind: "component", type: StoryPlayerComponent, selector: "rtsee-story-player", inputs: ["story", "settings"] }, { kind: "component", type: PreloaderComponent, selector: "rtsee-preloader", inputs: ["diameter", "color"] }, { kind: "component", type: PresentationsDashboardComponent, selector: "rtsee-presentations-dashboard", inputs: ["dashboard"] }, { kind: "component", type: PresentationSettingsComponent, selector: "rtsee-presentation-settings", inputs: ["settings", "presentation"] }, { kind: "component", type: StoryDetailsComponent, selector: "rtsee-story-details", inputs: ["story", "presentation", "messenger"] }] }); }
2690
2985
  }
2691
2986
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PresentationComponent, decorators: [{
2692
2987
  type: Component,
@@ -2699,7 +2994,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
2699
2994
  PresentationsDashboardComponent,
2700
2995
  PresentationSettingsComponent,
2701
2996
  StoryDetailsComponent,
2702
- ], standalone: true, template: "<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n @if (presentation.storyLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n @if (presentation.settings.isExpanded) {\n <rtsee-presentation-settings [settings]=\"presentation.settings\"\n [presentation]=\"presentation\"\n ></rtsee-presentation-settings>\n }\n\n @if (presentation.isCategoriesListVisible && !presentation.storyLoadInProgress) {\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if (presentation.activeSessionsStories.length) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{presentation.labels[RTSeeTextLabelKeys.CONTINUE_SESSIONS_LABEL]}}</h2>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.activeSessionsStories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id, story.preselectedSlideNumber || undefined)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n\n @for (category of presentation.categories; track category.id) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{ category.name }}</h2>\n <span class=\"rtsee-presentation-category-description\">{{ category.description }}</span>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (presentation.activeStory && !presentation.isDashboardOpen) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n [settings]=\"presentation.settings\"\n ></rtsee-story-player>\n </div>\n } @else if (presentation.openedStoryDetails && !presentation.isDashboardOpen) {\n <rtsee-story-details [story]=\"presentation.openedStoryDetails\"\n [presentation]=\"presentation\"\n [messenger]=\"messenger\"\n ></rtsee-story-details>\n }\n</div>\n" }]
2997
+ ], standalone: true, template: "<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n @if (presentation.storyLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n @if (presentation.settings.isExpanded) {\n <rtsee-presentation-settings [settings]=\"presentation.settings\"\n [presentation]=\"presentation\"\n ></rtsee-presentation-settings>\n }\n\n @if (presentation.isCategoriesListVisible && !presentation.storyLoadInProgress) {\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if (presentation.activeSessionsStories.length) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{presentation.labels[RTSeeTextLabelKeys.CONTINUE_SESSIONS_LABEL]}}</h2>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.activeSessionsStories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"onStoryThumbnailClicked(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n [presentation]=\"presentation\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n\n @for (category of presentation.categories; track category.id) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{ category.name }}</h2>\n <span class=\"rtsee-presentation-category-description\">{{ category.description }}</span>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"onStoryThumbnailClicked(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n [presentation]=\"presentation\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (presentation.activeStory && !presentation.isDashboardOpen) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n [settings]=\"presentation.settings\"\n ></rtsee-story-player>\n </div>\n } @else if (presentation.openedStoryDetails && !presentation.isDashboardOpen) {\n <rtsee-story-details [story]=\"presentation.openedStoryDetails\"\n [presentation]=\"presentation\"\n [messenger]=\"messenger\"\n ></rtsee-story-details>\n }\n</div>\n" }]
2703
2998
  }], ctorParameters: () => [], propDecorators: { presentation: [{
2704
2999
  type: Input
2705
3000
  }], messenger: [{
@@ -2788,7 +3083,7 @@ class RTSeeContainerComponent {
2788
3083
  this.isSidenavExpanded = !this.isSidenavExpanded;
2789
3084
  }
2790
3085
  defineSideNavState(url) {
2791
- const isBase = url === '/' || url.startsWith('/?');
3086
+ const isBase = url === '/' || url.startsWith('/?') || url.startsWith('/story');
2792
3087
  const routeUrlSplit = url.split('/');
2793
3088
  const rootRoutePath = isBase ? '' : routeUrlSplit[1] || null;
2794
3089
  if (!rootRoutePath && !isBase) {
@@ -3561,7 +3856,9 @@ class ForgotPasswordComponent {
3561
3856
  this.successMessage = '';
3562
3857
  const email = this.emailForm.getRawValue().email;
3563
3858
  this.authService
3564
- .forgotPassword({ email })
3859
+ .forgotPassword({
3860
+ email
3861
+ })
3565
3862
  .subscribe({
3566
3863
  next: (response) => {
3567
3864
  this.isLoading = false;