@foblex/m-render 2.5.2 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/esm2022/lib/common-components/index.mjs +1 -5
  2. package/esm2022/lib/common-services/f-popover.service.mjs +6 -4
  3. package/esm2022/lib/domain/i-environment-service.mjs +1 -1
  4. package/esm2022/lib/f-documentation/f-documentation.component.mjs +14 -22
  5. package/esm2022/lib/{common-components → f-documentation}/f-hamburger-button/f-hamburger-button.component.mjs +2 -2
  6. package/esm2022/lib/f-documentation/f-header/f-header.component.mjs +6 -4
  7. package/esm2022/lib/f-documentation/f-header-menu/f-header-menu.component.mjs +26 -0
  8. package/esm2022/lib/f-documentation/f-social-links/f-social-links.component.mjs +13 -0
  9. package/esm2022/lib/f-documentation/f-version/f-version.component.mjs +16 -0
  10. package/esm2022/lib/f-documentation/index.mjs +5 -1
  11. package/esm2022/lib/f-documentation/router.mjs +2 -2
  12. package/esm2022/lib/f-home-page/domain/i-home-page-environment.mjs +1 -1
  13. package/esm2022/lib/f-home-page/f-home-page-environment.service.mjs +1 -11
  14. package/esm2022/lib/f-home-page/f-home-page.component.mjs +12 -15
  15. package/fesm2022/foblex-m-render.mjs +182 -195
  16. package/fesm2022/foblex-m-render.mjs.map +1 -1
  17. package/lib/common-components/index.d.ts +0 -4
  18. package/lib/common-services/f-popover.service.d.ts +2 -1
  19. package/lib/domain/i-environment-service.d.ts +0 -6
  20. package/lib/f-documentation/f-documentation.component.d.ts +6 -9
  21. package/lib/{common-components → f-documentation}/f-hamburger-button/f-hamburger-button.component.d.ts +1 -1
  22. package/lib/{common-components → f-documentation}/f-social-links/f-social-links.component.d.ts +1 -1
  23. package/lib/f-documentation/index.d.ts +4 -0
  24. package/lib/f-documentation/router.d.ts +1 -1
  25. package/lib/f-home-page/domain/i-home-page-environment.d.ts +1 -2
  26. package/lib/f-home-page/f-home-page-environment.service.d.ts +1 -5
  27. package/lib/f-home-page/f-home-page.component.d.ts +2 -2
  28. package/package.json +1 -1
  29. package/esm2022/lib/common-components/f-header-menu/f-header-menu.component.mjs +0 -26
  30. package/esm2022/lib/common-components/f-social-links/f-social-links.component.mjs +0 -13
  31. package/esm2022/lib/common-components/f-version/f-version.component.mjs +0 -16
  32. /package/lib/{common-components → f-documentation}/f-header-menu/f-header-menu.component.d.ts +0 -0
  33. /package/lib/{common-components → f-documentation}/f-version/f-version.component.d.ts +0 -0
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, booleanAttribute, Component, ChangeDetectionStrategy, Input, Output, ViewChild, HostListener, inject, Injectable, Inject, signal, InjectionToken, Optional, ViewChildren, ViewContainerRef, ElementRef, Injector } from '@angular/core';
2
+ import { EventEmitter, booleanAttribute, Component, ChangeDetectionStrategy, Input, Output, ViewChild, HostListener, inject, Injectable, Inject, signal, InjectionToken, Optional, ViewChildren, ViewContainerRef, ElementRef, DestroyRef, ChangeDetectorRef } from '@angular/core';
3
3
  import * as i2 from '@foblex/platform';
4
4
  import { F_LOCAL_STORAGE } from '@foblex/platform';
5
- import { DOCUMENT, ɵgetDOM as _getDOM, NgOptimizedImage, AsyncPipe, JsonPipe } from '@angular/common';
5
+ import { DOCUMENT, ɵgetDOM as _getDOM, AsyncPipe, JsonPipe } from '@angular/common';
6
6
  import * as i1 from '@angular/router';
7
- import { NavigationEnd, RouterLink, Router, ActivatedRoute, RouterOutlet } from '@angular/router';
8
- import { startWith, filter, BehaviorSubject, of, map, Subscription, from, switchMap, Observable, fromEvent, Subject, debounceTime } from 'rxjs';
7
+ import { NavigationEnd, Router, RouterLink, ActivatedRoute, RouterOutlet } from '@angular/router';
8
+ import { startWith, filter, BehaviorSubject, Subject, of, map, Subscription, from, switchMap, Observable, fromEvent, debounceTime } from 'rxjs';
9
9
  import { catchError, filter as filter$1, take, tap } from 'rxjs/operators';
10
10
  import * as i1$1 from '@angular/common/http';
11
11
  import { HttpClient } from '@angular/common/http';
@@ -13,6 +13,7 @@ import { deepClone } from '@foblex/utils';
13
13
  import container from 'markdown-it-container';
14
14
  import MarkdownIt from 'markdown-it';
15
15
  import * as i2$1 from '@angular/platform-browser';
16
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
17
 
17
18
  let uniqueId = 0;
18
19
  class FCheckboxComponent {
@@ -346,9 +347,11 @@ class FPopoverService {
346
347
  this.popover.next(message);
347
348
  setTimeout(() => this.popover.next(null), 2000);
348
349
  }
349
- dispose() {
350
- this.popover.next(null);
351
- this.popover.complete();
350
+ dispose(destroyRef) {
351
+ destroyRef.onDestroy(() => {
352
+ this.popover.next(null);
353
+ this.popover.complete();
354
+ });
352
355
  }
353
356
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
354
357
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FPopoverService });
@@ -385,22 +388,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
385
388
  args: [{ selector: 'f-cookie-popup', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!hasAccepted()) {\n <div class=\"docs-cookies-popup docs-invert-mode\">\n <p>This site uses cookies from Google to deliver its services and to analyze traffic.</p>\n\n <div>\n <a href=\"https://policies.google.com/technologies/cookies\" target=\"_blank\" rel=\"noopener\">\n <button class=\"f-button\" [attr.text]=\"'Learn more'\" aria-label=\"Learn More\">\n Learn more\n </button>\n </a>\n <button\n (click)=\"accept()\"\n class=\"f-button\"\n [attr.text]=\"'Ok, Got it'\"\n aria-label=\"Ok, Got it\">\n Ok, Got it\n </button>\n </div>\n </div>\n}\n", styles: [":host{position:fixed;bottom:16px;right:16px;z-index:99999;opacity:0;visibility:hidden;animation:1s linear forwards .5s fadeIn}.docs-cookies-popup{padding:1rem;background-color:var(--background-color);border:1px solid var(--divider-color);color:var(--primary-text);border-radius:var(--border-radius);font-size:14px;max-width:310px;transition:background-color .3s ease,border-color .3s ease,color .3s ease;box-shadow:var(--shadow-3)}.docs-cookies-popup>div{display:flex;gap:8px;align-items:center;width:100%;margin-block-start:1rem}.f-button{outline:none;border:none;height:unset;line-height:26px;font-size:14px;font-weight:500;border-radius:var(--border-radius)}@keyframes fadeIn{to{opacity:100%;visibility:visible}}\n"] }]
386
389
  }], ctorParameters: () => [] });
387
390
 
388
- class FBadgeComponent {
389
- text = '';
390
- type = 'tip';
391
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
392
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FBadgeComponent, isStandalone: true, selector: "span[f-badge]", inputs: { text: "text", type: "type" }, host: { properties: { "class": "type" }, classAttribute: "f-badge" }, ngImport: i0, template: "{{ text }}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
391
+ class FStateService {
392
+ fBrowser;
393
+ theme = new Subject();
394
+ constructor(fBrowser) {
395
+ this.fBrowser = fBrowser;
396
+ }
397
+ get theme$() {
398
+ return this.theme.asObservable();
399
+ }
400
+ updateTheme() {
401
+ this.theme.next();
402
+ }
403
+ getPreferredTheme() {
404
+ return this.fBrowser.localStorage.getItem('preferred-theme')
405
+ || (this.fBrowser.window.isMediaQuery('(prefers-color-scheme: dark)') ? 'dark' : 'light');
406
+ }
407
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FStateService, deps: [{ token: i2.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
408
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FStateService, providedIn: 'root' });
393
409
  }
394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FBadgeComponent, decorators: [{
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FStateService, decorators: [{
411
+ type: Injectable,
412
+ args: [{ providedIn: 'root' }]
413
+ }], ctorParameters: () => [{ type: i2.BrowserService }] });
414
+
415
+ class FThemeButtonComponent {
416
+ renderer;
417
+ fState;
418
+ fBrowser;
419
+ constructor(renderer, fState, fBrowser) {
420
+ this.renderer = renderer;
421
+ this.fState = fState;
422
+ this.fBrowser = fBrowser;
423
+ }
424
+ ngOnInit() {
425
+ if (this.fState.getPreferredTheme() === 'dark' && !this.isDocumentContainsDarkTheme()) {
426
+ this.renderer.addClass(this.fBrowser.document.documentElement, 'dark');
427
+ this.fBrowser.localStorage.setItem('preferred-theme', 'dark');
428
+ }
429
+ }
430
+ isDocumentContainsDarkTheme() {
431
+ return this.fBrowser.document.documentElement.classList.contains('dark');
432
+ }
433
+ onClick() {
434
+ if (this.fState.getPreferredTheme() === 'light' && !this.isDocumentContainsDarkTheme()) {
435
+ this.renderer.addClass(this.fBrowser.document.documentElement, 'dark');
436
+ this.fBrowser.localStorage.setItem('preferred-theme', 'dark');
437
+ }
438
+ else {
439
+ this.renderer.removeClass(this.fBrowser.document.documentElement, 'dark');
440
+ this.fBrowser.localStorage.setItem('preferred-theme', 'light');
441
+ }
442
+ this.fState.updateTheme();
443
+ }
444
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FThemeButtonComponent, deps: [{ token: i0.Renderer2 }, { token: FStateService }, { token: i2.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
445
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FThemeButtonComponent, isStandalone: true, selector: "button[f-theme-button]", host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<div class=\"f-icon-container\">\n <div class=\"f-icon moon\"></div>\n <div class=\"f-icon sun\"></div>\n</div>\n", styles: [":host{margin:0 8px;position:relative;border-radius:11px;display:block;width:44px;min-width:44px;height:22px;border:1px solid var(--theme-button-border-color);background-color:var(--theme-button-background);cursor:pointer}:host:hover{border-color:var(--theme-button-hovered-border-color)}.f-icon-container{position:absolute;top:1px;left:1px;width:18px;height:18px;padding:3px;border-radius:50%;background-color:var(--theme-button-icon-background);transition:transform .4s}.f-icon-container .f-icon{position:absolute;top:3px;left:3px;width:12px;height:12px}.f-icon-container .sun{display:block}.f-icon-container .moon{display:none}.dark :host .f-icon-container{transform:translate(22px)}.dark :host .f-icon-container .sun{display:none}.dark :host .f-icon-container .moon{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
446
+ }
447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FThemeButtonComponent, decorators: [{
395
448
  type: Component,
396
- args: [{ selector: 'span[f-badge]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
397
- 'class': 'f-badge',
398
- '[class]': 'type',
399
- }, template: "{{ text }}\n" }]
400
- }], propDecorators: { text: [{
401
- type: Input
402
- }], type: [{
403
- type: Input
449
+ args: [{ selector: 'button[f-theme-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"f-icon-container\">\n <div class=\"f-icon moon\"></div>\n <div class=\"f-icon sun\"></div>\n</div>\n", styles: [":host{margin:0 8px;position:relative;border-radius:11px;display:block;width:44px;min-width:44px;height:22px;border:1px solid var(--theme-button-border-color);background-color:var(--theme-button-background);cursor:pointer}:host:hover{border-color:var(--theme-button-hovered-border-color)}.f-icon-container{position:absolute;top:1px;left:1px;width:18px;height:18px;padding:3px;border-radius:50%;background-color:var(--theme-button-icon-background);transition:transform .4s}.f-icon-container .f-icon{position:absolute;top:3px;left:3px;width:12px;height:12px}.f-icon-container .sun{display:block}.f-icon-container .moon{display:none}.dark :host .f-icon-container{transform:translate(22px)}.dark :host .f-icon-container .sun{display:none}.dark :host .f-icon-container .moon{display:block}\n"] }]
450
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: FStateService }, { type: i2.BrowserService }], propDecorators: { onClick: [{
451
+ type: HostListener,
452
+ args: ['click']
404
453
  }] } });
405
454
 
406
455
  class GetVersionRequest {
@@ -494,6 +543,46 @@ class HandleNavigationLinksRequest {
494
543
 
495
544
  const INTERNAL_ENVIRONMENT_SERVICE = new InjectionToken('INTERNAL_ENVIRONMENT_SERVICE');
496
545
 
546
+ class FBadgeComponent {
547
+ text = '';
548
+ type = 'tip';
549
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
550
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FBadgeComponent, isStandalone: true, selector: "span[f-badge]", inputs: { text: "text", type: "type" }, host: { properties: { "class": "type" }, classAttribute: "f-badge" }, ngImport: i0, template: "{{ text }}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
551
+ }
552
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FBadgeComponent, decorators: [{
553
+ type: Component,
554
+ args: [{ selector: 'span[f-badge]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
555
+ 'class': 'f-badge',
556
+ '[class]': 'type',
557
+ }, template: "{{ text }}\n" }]
558
+ }], propDecorators: { text: [{
559
+ type: Input
560
+ }], type: [{
561
+ type: Input
562
+ }] } });
563
+
564
+ class FHamburgerButtonComponent {
565
+ fDocumentation;
566
+ constructor(fDocumentation) {
567
+ this.fDocumentation = fDocumentation;
568
+ }
569
+ onShowNavigation() {
570
+ this.fDocumentation.onToggleNavigation(true);
571
+ }
572
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHamburgerButtonComponent, deps: [{ token: F_DOCUMENTATION_COMPONENT }], target: i0.ɵɵFactoryTarget.Component });
573
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FHamburgerButtonComponent, isStandalone: true, selector: "button[f-hamburger-button]", host: { listeners: { "click": "onShowNavigation()" } }, ngImport: i0, template: "<span class=\"f-icon hamburger\"></span>\n\n", styles: [":host{background-color:transparent;border:0;display:flex;padding:0;margin-right:16px;color:var(--secondary-text);cursor:pointer}@media (min-width: 960px){:host{display:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
574
+ }
575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHamburgerButtonComponent, decorators: [{
576
+ type: Component,
577
+ args: [{ selector: 'button[f-hamburger-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"f-icon hamburger\"></span>\n\n", styles: [":host{background-color:transparent;border:0;display:flex;padding:0;margin-right:16px;color:var(--secondary-text);cursor:pointer}@media (min-width: 960px){:host{display:none}}\n"] }]
578
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
579
+ type: Inject,
580
+ args: [F_DOCUMENTATION_COMPONENT]
581
+ }] }], propDecorators: { onShowNavigation: [{
582
+ type: HostListener,
583
+ args: ['click']
584
+ }] } });
585
+
497
586
  class FDocumentationEnvironmentService {
498
587
  environment;
499
588
  http;
@@ -558,6 +647,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
558
647
  args: [F_DOCS_ENVIRONMENT]
559
648
  }] }, { type: i1$1.HttpClient }] });
560
649
 
650
+ class FSocialLinksComponent {
651
+ links = inject(FDocumentationEnvironmentService).getSocialLinks();
652
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSocialLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
653
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSocialLinksComponent, isStandalone: true, selector: "f-social-links", ngImport: i0, template: "@for (link of links; track link.link) {\n <a href=\"{{ link.link }}\" class=\"header-link\">\n <div class=\"f-icon {{ link.icon }}\"></div>\n </a>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{width:36px;height:36px;padding:7.5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
654
+ }
655
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSocialLinksComponent, decorators: [{
656
+ type: Component,
657
+ args: [{ selector: 'f-social-links', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (link of links; track link.link) {\n <a href=\"{{ link.link }}\" class=\"header-link\">\n <div class=\"f-icon {{ link.icon }}\"></div>\n </a>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{width:36px;height:36px;padding:7.5px}\n"] }]
658
+ }] });
659
+
660
+ class FHeaderMenuComponent {
661
+ navigation = [];
662
+ _router = inject(Router);
663
+ _fEnvironmentService = inject(FDocumentationEnvironmentService);
664
+ ngOnInit() {
665
+ this.navigation = this._fEnvironmentService.getHeaderNavigation().map((x) => {
666
+ return {
667
+ ...x,
668
+ isActive: this._router.url.startsWith(x.link)
669
+ };
670
+ });
671
+ }
672
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHeaderMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
673
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FHeaderMenuComponent, isStandalone: true, selector: "f-header-menu", ngImport: i0, template: "@for (item of navigation; track item.link) {\n <a class=\"header-link\" [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n}\n\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{display:flex;align-items:center;padding:0 12px;line-height:var(--header-height);font-size:14px;font-weight:500;color:var(--primary-text);cursor:pointer}.header-link:hover,.header-link.active{color:var(--primary-1)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
674
+ }
675
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHeaderMenuComponent, decorators: [{
676
+ type: Component,
677
+ args: [{ selector: 'f-header-menu', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
678
+ RouterLink
679
+ ], template: "@for (item of navigation; track item.link) {\n <a class=\"header-link\" [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n}\n\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{display:flex;align-items:center;padding:0 12px;line-height:var(--header-height);font-size:14px;font-weight:500;color:var(--primary-text);cursor:pointer}.header-link:hover,.header-link.active{color:var(--primary-1)}\n"] }]
680
+ }] });
681
+
682
+ class FVersionComponent {
683
+ version$ = inject(FDocumentationEnvironmentService).getVersion();
684
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FVersionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
685
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FVersionComponent, isStandalone: true, selector: "f-version", ngImport: i0, template: "@if (version$ | async;as version) {\n <span class=\"version\">v{{ version }}</span>\n}\n", styles: [".version{margin-left:8px;margin-right:8px;display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--primary-text)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
686
+ }
687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FVersionComponent, decorators: [{
688
+ type: Component,
689
+ args: [{ selector: 'f-version', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
690
+ AsyncPipe
691
+ ], template: "@if (version$ | async;as version) {\n <span class=\"version\">v{{ version }}</span>\n}\n", styles: [".version{margin-left:8px;margin-right:8px;display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--primary-text)}\n"] }]
692
+ }] });
693
+
561
694
  class FHeaderComponent {
562
695
  title = inject(FDocumentationEnvironmentService).getTitle();
563
696
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -566,7 +699,6 @@ class FHeaderComponent {
566
699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHeaderComponent, decorators: [{
567
700
  type: Component,
568
701
  args: [{ selector: 'f-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
569
- NgOptimizedImage,
570
702
  FHamburgerButtonComponent,
571
703
  FVersionComponent,
572
704
  FSocialLinksComponent,
@@ -2206,30 +2338,6 @@ var index$2 = /*#__PURE__*/Object.freeze({
2206
2338
  getContent: getContent
2207
2339
  });
2208
2340
 
2209
- class FStateService {
2210
- fBrowser;
2211
- theme = new Subject();
2212
- constructor(fBrowser) {
2213
- this.fBrowser = fBrowser;
2214
- }
2215
- get theme$() {
2216
- return this.theme.asObservable();
2217
- }
2218
- updateTheme() {
2219
- this.theme.next();
2220
- }
2221
- getPreferredTheme() {
2222
- return this.fBrowser.localStorage.getItem('preferred-theme')
2223
- || (this.fBrowser.window.isMediaQuery('(prefers-color-scheme: dark)') ? 'dark' : 'light');
2224
- }
2225
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FStateService, deps: [{ token: i2.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
2226
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FStateService, providedIn: 'root' });
2227
- }
2228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FStateService, decorators: [{
2229
- type: Injectable,
2230
- args: [{ providedIn: 'root' }]
2231
- }], ctorParameters: () => [{ type: i2.BrowserService }] });
2232
-
2233
2341
  class FPreviewComponent {
2234
2342
  fEnvironment;
2235
2343
  fState;
@@ -2294,33 +2402,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2294
2402
  const F_DOCUMENTATION_COMPONENT = new InjectionToken('F_DOCUMENTATION_COMPONENT');
2295
2403
 
2296
2404
  class FDocumentationComponent {
2297
- fPopoverService;
2298
- changeDetectorRef;
2299
- subscriptions$ = new Subscription();
2300
2405
  isNavigationVisible = false;
2301
2406
  popoverMessage = null;
2302
- constructor(fPopoverService, changeDetectorRef) {
2303
- this.fPopoverService = fPopoverService;
2304
- this.changeDetectorRef = changeDetectorRef;
2305
- }
2407
+ _fPopover = inject(FPopoverService);
2408
+ _destroyRef = inject(DestroyRef);
2409
+ _changeDetectorRef = inject(ChangeDetectorRef);
2306
2410
  ngOnInit() {
2307
- this.subscriptions$.add(this.subscribeOnPopover());
2411
+ this._fPopover.dispose(this._destroyRef);
2412
+ this._subscribeOnPopover();
2308
2413
  }
2309
- subscribeOnPopover() {
2310
- return this.fPopoverService.popover$.subscribe((x) => {
2414
+ _subscribeOnPopover() {
2415
+ this._fPopover.popover$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((x) => {
2311
2416
  this.popoverMessage = x;
2312
- this.changeDetectorRef.markForCheck();
2417
+ this._changeDetectorRef.markForCheck();
2313
2418
  });
2314
2419
  }
2315
2420
  onToggleNavigation(value) {
2316
2421
  this.isNavigationVisible = value;
2317
- this.changeDetectorRef.markForCheck();
2422
+ this._changeDetectorRef.markForCheck();
2318
2423
  }
2319
- ngOnDestroy() {
2320
- this.fPopoverService.dispose();
2321
- this.subscriptions$.unsubscribe();
2322
- }
2323
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDocumentationComponent, deps: [{ token: FPopoverService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2424
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDocumentationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2324
2425
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FDocumentationComponent, isStandalone: true, selector: "f-documentation", providers: [
2325
2426
  FDocumentationEnvironmentService,
2326
2427
  FPopoverService,
@@ -2341,11 +2442,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2341
2442
  FScrollableContainerComponent,
2342
2443
  RouterOutlet
2343
2444
  ], template: "<div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible\" (click)=\"onToggleNavigation(false)\"></div>\n<f-navigation-panel [class.visible]=\"isNavigationVisible\"></f-navigation-panel>\n\n<f-scrollable-container>\n <f-header></f-header>\n <router-outlet></router-outlet>\n</f-scrollable-container>\n@if (popoverMessage) {\n <div class=\"popover\">{{ popoverMessage }}</div>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:flex-start;height:100%;gap:10px}.f-backdrop{position:fixed;inset:0;opacity:0;z-index:var(--z-index-backdrop);background:var(--backdrop-color);transition:opacity .2s ease-in-out;pointer-events:none}.f-backdrop.visible{opacity:1;pointer-events:all}@media (min-width: 960px){.f-backdrop{position:unset}}.popover{position:fixed;min-width:120px;bottom:50%;left:50%;text-align:center;transform:translate(-50%,-50%);background-color:var(--code-view-copy-button-hover-background);border:1px solid var(--code-view-copy-button-border-color);color:var(--primary-text);font-size:14px;padding:4px 8px;border-radius:4px;z-index:var(--z-index-popover);opacity:1}\n"] }]
2344
- }], ctorParameters: () => [{ type: FPopoverService }, { type: i0.ChangeDetectorRef }] });
2445
+ }] });
2345
2446
 
2346
2447
  const F_DOCS_ENVIRONMENT = new InjectionToken('F_DOCS_ENVIRONMENT');
2347
2448
 
2348
- const F_DOCUMENTATION_ROUTES = [
2449
+ const F_DOCS_ROUTES = [
2349
2450
  {
2350
2451
  path: '',
2351
2452
  loadComponent: () => Promise.resolve().then(function () { return index$1; }).then(m => m.FDocumentationComponent),
@@ -2375,7 +2476,9 @@ var index$1 = /*#__PURE__*/Object.freeze({
2375
2476
  FFooterEditInformationComponent: FFooterEditInformationComponent,
2376
2477
  FFooterNavigationButtonComponent: FFooterNavigationButtonComponent,
2377
2478
  FFooterNavigationComponent: FFooterNavigationComponent,
2479
+ FHamburgerButtonComponent: FHamburgerButtonComponent,
2378
2480
  FHeaderComponent: FHeaderComponent,
2481
+ FHeaderMenuComponent: FHeaderMenuComponent,
2379
2482
  FMarkdownFooterComponent: FMarkdownFooterComponent,
2380
2483
  FMarkdownRendererComponent: FMarkdownRendererComponent,
2381
2484
  FNavigationGroupComponent: FNavigationGroupComponent,
@@ -2385,11 +2488,13 @@ var index$1 = /*#__PURE__*/Object.freeze({
2385
2488
  FPageComponent: FPageComponent,
2386
2489
  FPreviewComponent: FPreviewComponent,
2387
2490
  FScrollableContainerComponent: FScrollableContainerComponent,
2491
+ FSocialLinksComponent: FSocialLinksComponent,
2388
2492
  FTableOfContentComponent: FTableOfContentComponent,
2389
2493
  FTableOfContentItemsComponent: FTableOfContentItemsComponent,
2494
+ FVersionComponent: FVersionComponent,
2390
2495
  F_DOCS_ENVIRONMENT: F_DOCS_ENVIRONMENT,
2496
+ F_DOCS_ROUTES: F_DOCS_ROUTES,
2391
2497
  F_DOCUMENTATION_COMPONENT: F_DOCUMENTATION_COMPONENT,
2392
- F_DOCUMENTATION_ROUTES: F_DOCUMENTATION_ROUTES,
2393
2498
  GetAbsoluteTopToContainerHandler: GetAbsoluteTopToContainerHandler,
2394
2499
  GetAbsoluteTopToContainerRequest: GetAbsoluteTopToContainerRequest,
2395
2500
  GetPreviousNextPageNavigationHandler: GetPreviousNextPageNavigationHandler,
@@ -2417,112 +2522,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
2417
2522
  getContent: getContent
2418
2523
  });
2419
2524
 
2420
- class FHamburgerButtonComponent {
2421
- fDocumentation;
2422
- constructor(fDocumentation) {
2423
- this.fDocumentation = fDocumentation;
2424
- }
2425
- onShowNavigation() {
2426
- this.fDocumentation.onToggleNavigation(true);
2427
- }
2428
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHamburgerButtonComponent, deps: [{ token: F_DOCUMENTATION_COMPONENT }], target: i0.ɵɵFactoryTarget.Component });
2429
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FHamburgerButtonComponent, isStandalone: true, selector: "button[f-hamburger-button]", host: { listeners: { "click": "onShowNavigation()" } }, ngImport: i0, template: "<span class=\"f-icon hamburger\"></span>\n\n", styles: [":host{background-color:transparent;border:0;display:flex;padding:0;margin-right:16px;color:var(--secondary-text);cursor:pointer}@media (min-width: 960px){:host{display:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2430
- }
2431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHamburgerButtonComponent, decorators: [{
2432
- type: Component,
2433
- args: [{ selector: 'button[f-hamburger-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"f-icon hamburger\"></span>\n\n", styles: [":host{background-color:transparent;border:0;display:flex;padding:0;margin-right:16px;color:var(--secondary-text);cursor:pointer}@media (min-width: 960px){:host{display:none}}\n"] }]
2434
- }], ctorParameters: () => [{ type: undefined, decorators: [{
2435
- type: Inject,
2436
- args: [F_DOCUMENTATION_COMPONENT]
2437
- }] }], propDecorators: { onShowNavigation: [{
2438
- type: HostListener,
2439
- args: ['click']
2440
- }] } });
2441
-
2442
- class FHeaderMenuComponent {
2443
- navigation = [];
2444
- _router = inject(Router);
2445
- _fEnvironmentService = inject(INTERNAL_ENVIRONMENT_SERVICE);
2446
- ngOnInit() {
2447
- this.navigation = this._fEnvironmentService.getHeaderNavigation().map((x) => {
2448
- return {
2449
- ...x,
2450
- isActive: this._router.url.startsWith(x.link)
2451
- };
2452
- });
2453
- }
2454
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHeaderMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2455
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FHeaderMenuComponent, isStandalone: true, selector: "f-header-menu", ngImport: i0, template: "@for (item of navigation; track item.link) {\n <a class=\"header-link\" [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n}\n\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{display:flex;align-items:center;padding:0 12px;line-height:var(--header-height);font-size:14px;font-weight:500;color:var(--primary-text);cursor:pointer}.header-link:hover,.header-link.active{color:var(--primary-1)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2456
- }
2457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FHeaderMenuComponent, decorators: [{
2458
- type: Component,
2459
- args: [{ selector: 'f-header-menu', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2460
- RouterLink
2461
- ], template: "@for (item of navigation; track item.link) {\n <a class=\"header-link\" [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n}\n\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{display:flex;align-items:center;padding:0 12px;line-height:var(--header-height);font-size:14px;font-weight:500;color:var(--primary-text);cursor:pointer}.header-link:hover,.header-link.active{color:var(--primary-1)}\n"] }]
2462
- }] });
2463
-
2464
- class FSocialLinksComponent {
2465
- links = inject(INTERNAL_ENVIRONMENT_SERVICE).getSocialLinks();
2466
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSocialLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2467
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSocialLinksComponent, isStandalone: true, selector: "f-social-links", ngImport: i0, template: "@for (link of links; track link.link) {\n <a href=\"{{ link.link }}\" class=\"header-link\">\n <div class=\"f-icon {{ link.icon }}\"></div>\n </a>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{width:36px;height:36px;padding:7.5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2468
- }
2469
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSocialLinksComponent, decorators: [{
2470
- type: Component,
2471
- args: [{ selector: 'f-social-links', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (link of links; track link.link) {\n <a href=\"{{ link.link }}\" class=\"header-link\">\n <div class=\"f-icon {{ link.icon }}\"></div>\n </a>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:center}.header-link{width:36px;height:36px;padding:7.5px}\n"] }]
2472
- }] });
2473
-
2474
- class FThemeButtonComponent {
2475
- renderer;
2476
- fState;
2477
- fBrowser;
2478
- constructor(renderer, fState, fBrowser) {
2479
- this.renderer = renderer;
2480
- this.fState = fState;
2481
- this.fBrowser = fBrowser;
2482
- }
2483
- ngOnInit() {
2484
- if (this.fState.getPreferredTheme() === 'dark' && !this.isDocumentContainsDarkTheme()) {
2485
- this.renderer.addClass(this.fBrowser.document.documentElement, 'dark');
2486
- this.fBrowser.localStorage.setItem('preferred-theme', 'dark');
2487
- }
2488
- }
2489
- isDocumentContainsDarkTheme() {
2490
- return this.fBrowser.document.documentElement.classList.contains('dark');
2491
- }
2492
- onClick() {
2493
- if (this.fState.getPreferredTheme() === 'light' && !this.isDocumentContainsDarkTheme()) {
2494
- this.renderer.addClass(this.fBrowser.document.documentElement, 'dark');
2495
- this.fBrowser.localStorage.setItem('preferred-theme', 'dark');
2496
- }
2497
- else {
2498
- this.renderer.removeClass(this.fBrowser.document.documentElement, 'dark');
2499
- this.fBrowser.localStorage.setItem('preferred-theme', 'light');
2500
- }
2501
- this.fState.updateTheme();
2502
- }
2503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FThemeButtonComponent, deps: [{ token: i0.Renderer2 }, { token: FStateService }, { token: i2.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
2504
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FThemeButtonComponent, isStandalone: true, selector: "button[f-theme-button]", host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<div class=\"f-icon-container\">\n <div class=\"f-icon moon\"></div>\n <div class=\"f-icon sun\"></div>\n</div>\n", styles: [":host{margin:0 8px;position:relative;border-radius:11px;display:block;width:44px;min-width:44px;height:22px;border:1px solid var(--theme-button-border-color);background-color:var(--theme-button-background);cursor:pointer}:host:hover{border-color:var(--theme-button-hovered-border-color)}.f-icon-container{position:absolute;top:1px;left:1px;width:18px;height:18px;padding:3px;border-radius:50%;background-color:var(--theme-button-icon-background);transition:transform .4s}.f-icon-container .f-icon{position:absolute;top:3px;left:3px;width:12px;height:12px}.f-icon-container .sun{display:block}.f-icon-container .moon{display:none}.dark :host .f-icon-container{transform:translate(22px)}.dark :host .f-icon-container .sun{display:none}.dark :host .f-icon-container .moon{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2505
- }
2506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FThemeButtonComponent, decorators: [{
2507
- type: Component,
2508
- args: [{ selector: 'button[f-theme-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"f-icon-container\">\n <div class=\"f-icon moon\"></div>\n <div class=\"f-icon sun\"></div>\n</div>\n", styles: [":host{margin:0 8px;position:relative;border-radius:11px;display:block;width:44px;min-width:44px;height:22px;border:1px solid var(--theme-button-border-color);background-color:var(--theme-button-background);cursor:pointer}:host:hover{border-color:var(--theme-button-hovered-border-color)}.f-icon-container{position:absolute;top:1px;left:1px;width:18px;height:18px;padding:3px;border-radius:50%;background-color:var(--theme-button-icon-background);transition:transform .4s}.f-icon-container .f-icon{position:absolute;top:3px;left:3px;width:12px;height:12px}.f-icon-container .sun{display:block}.f-icon-container .moon{display:none}.dark :host .f-icon-container{transform:translate(22px)}.dark :host .f-icon-container .sun{display:none}.dark :host .f-icon-container .moon{display:block}\n"] }]
2509
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: FStateService }, { type: i2.BrowserService }], propDecorators: { onClick: [{
2510
- type: HostListener,
2511
- args: ['click']
2512
- }] } });
2513
-
2514
- class FVersionComponent {
2515
- version$ = inject(INTERNAL_ENVIRONMENT_SERVICE).getVersion();
2516
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FVersionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2517
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FVersionComponent, isStandalone: true, selector: "f-version", ngImport: i0, template: "@if (version$ | async;as version) {\n <span class=\"version\">v{{ version }}</span>\n}\n", styles: [".version{margin-left:8px;margin-right:8px;display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--primary-text)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2518
- }
2519
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FVersionComponent, decorators: [{
2520
- type: Component,
2521
- args: [{ selector: 'f-version', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2522
- AsyncPipe
2523
- ], template: "@if (version$ | async;as version) {\n <span class=\"version\">v{{ version }}</span>\n}\n", styles: [".version{margin-left:8px;margin-right:8px;display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--primary-text)}\n"] }]
2524
- }] });
2525
-
2526
2525
  const F_HOME_PAGE_ENVIRONMENT = new InjectionToken('F_HOME_PAGE_ENVIRONMENT');
2527
2526
 
2528
2527
  class FHomePageEnvironmentService {
@@ -2538,15 +2537,6 @@ class FHomePageEnvironmentService {
2538
2537
  getTitle() {
2539
2538
  return this.environment.title;
2540
2539
  }
2541
- getHeaderNavigation() {
2542
- return this.environment.headerNavigation || [];
2543
- }
2544
- getVersion() {
2545
- return new GetVersionHandler(this.http).handle(new GetVersionRequest(this.environment.version));
2546
- }
2547
- getSocialLinks() {
2548
- return this.environment.socialLinks || [];
2549
- }
2550
2540
  getHero() {
2551
2541
  return this.environment.hero;
2552
2542
  }
@@ -2636,20 +2626,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2636
2626
 
2637
2627
  const F_HOME_PAGE_COMPONENT = new InjectionToken('F_HOME_PAGE_COMPONENT');
2638
2628
  class FHomePageComponent {
2639
- _injector = inject(Injector);
2640
2629
  _environmentService = inject(FHomePageEnvironmentService);
2641
2630
  _backgroundContainer;
2642
2631
  _heroImageContainer;
2643
2632
  ngAfterViewInit() {
2644
- const heroImageComponent = this._environmentService.getImageComponent();
2645
- if (heroImageComponent) {
2646
- const heroImageComponentRef = this._getImageComponentReference(heroImageComponent);
2647
- this.requestComponentRedraw(heroImageComponentRef);
2633
+ this._renderImageComponent(this._environmentService.getImageComponent());
2634
+ this._renderBackgroundComponent(this._environmentService.getBackgroundComponent());
2635
+ }
2636
+ _renderImageComponent(component) {
2637
+ if (component) {
2638
+ this.requestComponentRedraw(this._getImageComponentReference(component));
2648
2639
  }
2649
- const backgroundComponent = this._environmentService.getBackgroundComponent();
2650
- if (backgroundComponent) {
2651
- const backgroundComponentRef = this._getBackgroundComponentReference(backgroundComponent);
2652
- this.requestComponentRedraw(backgroundComponentRef);
2640
+ }
2641
+ _renderBackgroundComponent(component) {
2642
+ if (component) {
2643
+ this.requestComponentRedraw(this._getBackgroundComponentReference(component));
2653
2644
  }
2654
2645
  }
2655
2646
  _getBackgroundComponentReference(component) {
@@ -2658,10 +2649,6 @@ class FHomePageComponent {
2658
2649
  _getImageComponentReference(component) {
2659
2650
  return this._heroImageContainer.createComponent(component);
2660
2651
  }
2661
- getComponentElement(componentRef) {
2662
- this.requestComponentRedraw(componentRef);
2663
- return componentRef.hostView.rootNodes[0];
2664
- }
2665
2652
  requestComponentRedraw(componentRef) {
2666
2653
  componentRef.changeDetectorRef.markForCheck();
2667
2654
  }
@@ -2715,5 +2702,5 @@ var index = /*#__PURE__*/Object.freeze({
2715
2702
  * Generated bundle index. Do not edit.
2716
2703
  */
2717
2704
 
2718
- export { CalculateHashFromScrollPositionHandler, CalculateHashFromScrollPositionRequest, ChangeCodeFocusedSyntaxPreProcessor, CookiePopup, EMarkdownContainerType, FAnalyticsService, FAsyncCodeViewHandler, FBadgeComponent, FCheckboxComponent, FCodeGroupBodyHandler, FCodeGroupHandler, FCodeViewHandler, FDocumentationComponent, FDocumentationEnvironmentService, FExampleViewHandler, FFooterEditInformationComponent, FFooterNavigationButtonComponent, FFooterNavigationComponent, FHamburgerButtonComponent, FHeadTagService, FHeaderComponent, FHeaderMenuComponent, FHomePageComponent, FHomePageEnvironmentService, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FJsonLdService, FMarkdownFooterComponent, FMarkdownRendererComponent, FMetaService, FNavigationGroupComponent, FNavigationHeaderComponent, FNavigationItemComponent, FNavigationPanelComponent, FPageComponent, FPopoverService, FPreviewComponent, FScrollableContainerComponent, FSocialLinksComponent, FTableOfContentComponent, FTableOfContentItemsComponent, FThemeButtonComponent, FVersionComponent, F_ACCEPT_COOKIES_KEY, F_DOCS_ENVIRONMENT, F_DOCUMENTATION_COMPONENT, F_DOCUMENTATION_ROUTES, F_HOME_PAGE_COMPONENT, F_HOME_PAGE_ENVIRONMENT, F_HOME_PAGE_ROUTES, GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, GetTableOfContentDataHandler, GetTableOfContentDataRequest, GetVersionHandler, GetVersionRequest, HandleDynamicComponentsHandler, HandleDynamicComponentsRequest, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HandleParsedContainersHandler, HandleParsedContainersRequest, HighlightService, INTERNAL_ENVIRONMENT_SERVICE, MarkCodeFocusedBlocksPostProcessor, MarkdownService, ModifyPunctuationHighlightPostProcessor, ParseAlerts, ParseCodeGroup, ParseCodeView, ParseExampleGroup, ParsePreviewGroup, ScrollToElementInContainer, SeparateCodeByLinesPostProcessor, TableOfContentData, copyToClipboard, getContent, setCookieConsent };
2705
+ export { CalculateHashFromScrollPositionHandler, CalculateHashFromScrollPositionRequest, ChangeCodeFocusedSyntaxPreProcessor, CookiePopup, EMarkdownContainerType, FAnalyticsService, FAsyncCodeViewHandler, FBadgeComponent, FCheckboxComponent, FCodeGroupBodyHandler, FCodeGroupHandler, FCodeViewHandler, FDocumentationComponent, FDocumentationEnvironmentService, FExampleViewHandler, FFooterEditInformationComponent, FFooterNavigationButtonComponent, FFooterNavigationComponent, FHamburgerButtonComponent, FHeadTagService, FHeaderComponent, FHeaderMenuComponent, FHomePageComponent, FHomePageEnvironmentService, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FJsonLdService, FMarkdownFooterComponent, FMarkdownRendererComponent, FMetaService, FNavigationGroupComponent, FNavigationHeaderComponent, FNavigationItemComponent, FNavigationPanelComponent, FPageComponent, FPopoverService, FPreviewComponent, FScrollableContainerComponent, FSocialLinksComponent, FTableOfContentComponent, FTableOfContentItemsComponent, FThemeButtonComponent, FVersionComponent, F_ACCEPT_COOKIES_KEY, F_DOCS_ENVIRONMENT, F_DOCS_ROUTES, F_DOCUMENTATION_COMPONENT, F_HOME_PAGE_COMPONENT, F_HOME_PAGE_ENVIRONMENT, F_HOME_PAGE_ROUTES, GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, GetTableOfContentDataHandler, GetTableOfContentDataRequest, GetVersionHandler, GetVersionRequest, HandleDynamicComponentsHandler, HandleDynamicComponentsRequest, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HandleParsedContainersHandler, HandleParsedContainersRequest, HighlightService, INTERNAL_ENVIRONMENT_SERVICE, MarkCodeFocusedBlocksPostProcessor, MarkdownService, ModifyPunctuationHighlightPostProcessor, ParseAlerts, ParseCodeGroup, ParseCodeView, ParseExampleGroup, ParsePreviewGroup, ScrollToElementInContainer, SeparateCodeByLinesPostProcessor, TableOfContentData, copyToClipboard, getContent, setCookieConsent };
2719
2706
  //# sourceMappingURL=foblex-m-render.mjs.map