@foblex/m-render 2.7.0 → 2.7.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.
- package/fesm2022/foblex-m-render-cookie-popup.component-CqwZv5lc.mjs +40 -0
- package/fesm2022/foblex-m-render-cookie-popup.component-CqwZv5lc.mjs.map +1 -0
- package/fesm2022/foblex-m-render.mjs +425 -803
- package/fesm2022/foblex-m-render.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/analytics/cookie-popup/cookie-popup.component.d.ts +12 -0
- package/lib/analytics/g-tag.service.d.ts +13 -0
- package/lib/analytics/index.d.ts +2 -0
- package/lib/analytics/provide-g-tag.d.ts +6 -0
- package/lib/common/components/index.d.ts +0 -1
- package/lib/common/index.d.ts +0 -1
- package/lib/common/services/index.d.ts +1 -1
- package/lib/documentation-page/analytics/common-services/f-meta.service.d.ts +1 -1
- package/lib/documentation-page/analytics/index.d.ts +0 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/components/f-code-group/f-code-view/utils/parse-language.d.ts +0 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/components/f-markdown-footer/f-markdown-footer.component.d.ts +1 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/components/f-preview-group/f-preview/f-preview.component.d.ts +1 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/f-markdown-renderer.component.d.ts +2 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/index.d.ts +0 -1
- package/lib/documentation-page/components/navigation-panel/navigation-panel.component.d.ts +1 -1
- package/lib/documentation-page/components/scrollable-container/components/table-of-content/table-of-content.component.d.ts +1 -1
- package/lib/documentation-page/components/scrollable-container/domain/calculate-hash-from-scroll-position-and-activate-toc/calculate-hash-from-scroll-position-and-activate-toc.handler.d.ts +2 -1
- package/lib/documentation-page/documentation-root.component.d.ts +3 -0
- package/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.handler.d.ts +0 -1
- package/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.request.d.ts +2 -3
- package/lib/home-page/home-root.component.d.ts +7 -3
- package/lib/theme/index.d.ts +3 -0
- package/lib/theme/provide-theme.d.ts +2 -0
- package/lib/theme/theme-button/theme-button.component.d.ts +14 -0
- package/lib/{common/services → theme}/theme.service.d.ts +7 -1
- package/package.json +1 -2
- package/lib/common/components/f-theme-button/f-theme-button.component.d.ts +0 -14
- package/lib/common/utils/copy-to-clipboard.d.ts +0 -2
- package/lib/common/utils/index.d.ts +0 -1
- package/lib/documentation-page/analytics/analytics/f-accept-cookies-key.d.ts +0 -1
- package/lib/documentation-page/analytics/analytics/f-analytics.service.d.ts +0 -10
- package/lib/documentation-page/analytics/analytics/f-cookie-popup/f-cookie-popup.component.d.ts +0 -9
- package/lib/documentation-page/analytics/analytics/i-window-with-analytics.d.ts +0 -5
- package/lib/documentation-page/analytics/analytics/index.d.ts +0 -5
- package/lib/documentation-page/analytics/analytics/set-cookie-consent.d.ts +0 -6
- package/lib/documentation-page/components/markdown-container/f-markdown/highlight/highlight.service.d.ts +0 -13
- package/lib/documentation-page/components/markdown-container/f-markdown/highlight/index.d.ts +0 -2
- package/lib/documentation-page/components/markdown-container/f-markdown/highlight/mark-code-focused-blocks.post-processor.d.ts +0 -11
- package/lib/documentation-page/components/markdown-container/f-markdown/highlight/theme.d.ts +0 -2
|
@@ -1,18 +1,107 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, booleanAttribute, HostListener, Input, ViewChild, Output, ChangeDetectionStrategy, Component, input, output, viewChild,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { inject, Injectable, InjectionToken, EventEmitter, booleanAttribute, HostListener, Input, ViewChild, Output, ChangeDetectionStrategy, Component, input, output, viewChild, signal, ElementRef, NgZone, Directive, Renderer2, ChangeDetectorRef, DestroyRef, computed, ViewContainerRef, Injector, forwardRef, effect, untracked } from '@angular/core';
|
|
3
|
+
import { DOCUMENT, TitleCasePipe } from '@angular/common';
|
|
4
|
+
import { of, map, Subject, startWith, filter, EMPTY, switchMap, debounceTime, fromEvent } from 'rxjs';
|
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
|
6
|
-
import { catchError, tap, filter as filter$1,
|
|
6
|
+
import { catchError, tap, filter as filter$1, take } from 'rxjs/operators';
|
|
7
7
|
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
8
|
import { Overlay, CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
9
9
|
import { Router, RouterLink, NavigationEnd, ActivatedRoute, RouterOutlet } from '@angular/router';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { LOCAL_STORAGE, WINDOW, DOCUMENT_ELEMENT, LOCATION, IS_BROWSER_PLATFORM, copyToClipboard } from '@foblex/mr-common';
|
|
11
|
+
import { HighlightService, AVAILABLE_LANGUAGES } from '@foblex/mr-highlight';
|
|
12
12
|
import MarkdownIt from 'markdown-it';
|
|
13
13
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
14
14
|
import container from 'markdown-it-container';
|
|
15
15
|
|
|
16
|
+
class GTagService {
|
|
17
|
+
_config = inject(GTAG_CONFIG);
|
|
18
|
+
_document = inject(DOCUMENT);
|
|
19
|
+
_initialized = false;
|
|
20
|
+
initialize() {
|
|
21
|
+
console.log('[GTag] Initializing with ID:', this._config.id);
|
|
22
|
+
if (this._initialized) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this._initialized = true;
|
|
26
|
+
const window = this._getGtagWindow();
|
|
27
|
+
if (!window) {
|
|
28
|
+
console.warn('[GTag] Initialization failed: No window available.');
|
|
29
|
+
this._initialized = false;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
window.dataLayer = window.dataLayer || [];
|
|
33
|
+
window.gtag = (...args) => {
|
|
34
|
+
window.dataLayer?.push(args);
|
|
35
|
+
};
|
|
36
|
+
this._loadGtagScript(this._config.id);
|
|
37
|
+
window.gtag('js', new Date());
|
|
38
|
+
window.gtag('config', this._config.id);
|
|
39
|
+
}
|
|
40
|
+
_getGtagWindow() {
|
|
41
|
+
const result = this._document.defaultView;
|
|
42
|
+
if (!result?.gtag) {
|
|
43
|
+
console.warn('[GTag] gtag function is not available. Ensure the script is loaded.');
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
_loadGtagScript(id) {
|
|
48
|
+
if (this._document.querySelector('#gtag-script'))
|
|
49
|
+
return;
|
|
50
|
+
const script = this._document.createElement('script');
|
|
51
|
+
script.id = 'gtag-script';
|
|
52
|
+
script.async = true;
|
|
53
|
+
script.src = `https://www.googletagmanager.com/gtag/js?id=${id}`;
|
|
54
|
+
this._document.head.appendChild(script);
|
|
55
|
+
}
|
|
56
|
+
updateConsent(granted) {
|
|
57
|
+
const window = this._getGtagWindow();
|
|
58
|
+
if (!window?.gtag) {
|
|
59
|
+
console.warn('[GTag] Cannot update consent: gtag not available.');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const state = granted ? 'granted' : 'denied';
|
|
63
|
+
const consentOptions = {
|
|
64
|
+
ad_user_data: state,
|
|
65
|
+
ad_personalization: state,
|
|
66
|
+
ad_storage: state,
|
|
67
|
+
analytics_storage: state,
|
|
68
|
+
};
|
|
69
|
+
if (state === 'denied') {
|
|
70
|
+
window.gtag('consent', 'default', {
|
|
71
|
+
...consentOptions,
|
|
72
|
+
wait_for_update: 500,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
window.gtag('consent', 'update', {
|
|
77
|
+
...consentOptions,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
trackEvent(action, params) {
|
|
82
|
+
this._getGtagWindow()?.gtag?.('event', action, params || {});
|
|
83
|
+
}
|
|
84
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: GTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: GTagService });
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: GTagService, decorators: [{
|
|
88
|
+
type: Injectable
|
|
89
|
+
}] });
|
|
90
|
+
|
|
91
|
+
function provideGTag(config) {
|
|
92
|
+
return [
|
|
93
|
+
{
|
|
94
|
+
provide: GTAG_CONFIG,
|
|
95
|
+
useValue: config,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
provide: GTagService,
|
|
99
|
+
useClass: GTagService,
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
const GTAG_CONFIG = new InjectionToken('GTAG_CONFIG');
|
|
104
|
+
|
|
16
105
|
let uniqueId$1 = 0;
|
|
17
106
|
class FCheckboxComponent {
|
|
18
107
|
changeDetectorRef;
|
|
@@ -58,10 +147,10 @@ class FCheckboxComponent {
|
|
|
58
147
|
event.stopPropagation();
|
|
59
148
|
}
|
|
60
149
|
}
|
|
61
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
62
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.
|
|
150
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
151
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.11", type: FCheckboxComponent, isStandalone: true, selector: "f-checkbox", inputs: { id: "id", checked: ["checked", "checked", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "click": "preventBubblingFromLabel($event)" }, properties: { "class.f-checkbox-checked": "checked" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }, { propertyName: "labelElement", first: true, predicate: ["label"], descendants: true }], ngImport: i0, template: "<input #input\n [id]=\"id\"\n type=\"checkbox\"\n [checked]=\"checked\"\n (click)=\"onInputClick()\"\n (change)=\"onInteractionEvent($event)\"/>\n<div class=\"f-checkbox-container\" (click)=\"onTouchTargetClick()\">\n <svg class=\"f-checkbox-checkmark\" focusable=\"false\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path class=\"f-checkbox-checkmark-path\" fill=\"none\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n</div>\n<label [for]=\"id\" #label>\n <ng-content></ng-content>\n</label>\n", styles: [":host{position:relative;display:flex;align-items:center;font-weight:400;white-space:nowrap;font-size:14px;cursor:pointer;background-color:var(--checkbox-container-background);border-radius:var(--checkbox-border-radius);padding:0 8px;color:var(--checkbox-text);transition:color .25s,background-color .25s}:host input{position:absolute;inset:0;opacity:0;cursor:pointer}:host .f-checkbox-container{position:relative;display:flex;align-items:center;justify-content:center;width:var(--checkbox-size);height:var(--checkbox-size);margin-right:6px;border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-background);padding:2px}:host .f-checkbox-container .f-checkbox-checkmark{position:absolute;top:calc(var(--checkbox-size) / 8);right:calc(var(--checkbox-size) / 8);bottom:calc(var(--checkbox-size) / 8);left:calc(var(--checkbox-size) / 8);opacity:0}:host .f-checkbox-container .f-checkbox-checkmark .f-checkbox-checkmark-path{stroke:currentColor;stroke-width:3}:host label{-webkit-user-select:none;user-select:none}:host.f-checkbox-checked .f-checkbox-container{background-color:var(--checkbox-checked-background)}:host.f-checkbox-checked .f-checkbox-container .f-checkbox-checkmark{color:var(--checkbox-checkmark-color);opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
63
152
|
}
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCheckboxComponent, decorators: [{
|
|
65
154
|
type: Component,
|
|
66
155
|
args: [{ selector: 'f-checkbox', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
67
156
|
'[class.f-checkbox-checked]': 'checked',
|
|
@@ -110,10 +199,10 @@ class FRadioButtonComponent {
|
|
|
110
199
|
event.stopPropagation();
|
|
111
200
|
}
|
|
112
201
|
}
|
|
113
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
114
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.
|
|
202
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FRadioButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.11", type: FRadioButtonComponent, isStandalone: true, selector: "f-radio-button", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "click": "preventBubblingFromLabel($event)" }, properties: { "class.f-radio-button-checked": "checked()" } }, viewQueries: [{ propertyName: "labelElement", first: true, predicate: ["label"], descendants: true, isSignal: true }], ngImport: i0, template: "<input [id]=\"id()\"\n type=\"radio\"\n [checked]=\"checked()\"\n (click)=\"onInputClick()\"\n (change)=\"onInteractionEvent($event)\"/>\n<div class=\"f-radio-button-container\" (click)=\"onTouchTargetClick()\">\n <div class=\"f-radio-button-inner-circle\"></div>\n</div>\n<label [for]=\"id()\" #label>\n <ng-content></ng-content>\n</label>\n", styles: [":host{position:relative;display:flex;align-items:center;font-weight:400;white-space:nowrap;font-size:14px;cursor:pointer;background-color:var(--radio-button-container-background);border-radius:var(--radio-button-container-border-radius);padding:0 8px;color:var(--radio-button-text);transition:color .25s,background-color .25s}:host input{position:absolute;inset:0;opacity:0;cursor:pointer}:host .f-radio-button-container{position:relative;display:flex;align-items:center;justify-content:center;width:var(--radio-button-size);height:var(--radio-button-size);margin-right:6px;border-radius:50%;border:1px solid var(--radio-button-border-color);background-color:var(--radio-button-background)}:host .f-radio-button-container .f-radio-button-inner-circle{position:absolute;top:calc(var(--radio-button-size) / 4);right:calc(var(--radio-button-size) / 4);bottom:calc(var(--radio-button-size) / 4);left:calc(var(--radio-button-size) / 4);border-radius:50%}:host label{-webkit-user-select:none;user-select:none}:host.f-radio-button-checked .f-radio-button-container{background-color:var(--radio-button-checked-background)}:host.f-radio-button-checked .f-radio-button-container .f-radio-button-inner-circle{background-color:var(--radio-button-inner-circle-color)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
115
204
|
}
|
|
116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FRadioButtonComponent, decorators: [{
|
|
117
206
|
type: Component,
|
|
118
207
|
args: [{ selector: 'f-radio-button', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
119
208
|
'[class.f-radio-button-checked]': 'checked()',
|
|
@@ -127,95 +216,14 @@ const F_SOCIAL_LINKS_PROVIDER = new InjectionToken('F_SOCIAL_LINKS_PROVIDER');
|
|
|
127
216
|
|
|
128
217
|
class FSocialLinksComponent {
|
|
129
218
|
links = inject(F_SOCIAL_LINKS_PROVIDER).getSocialLinks();
|
|
130
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
131
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
219
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FSocialLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", 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 });
|
|
132
221
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FSocialLinksComponent, decorators: [{
|
|
134
223
|
type: Component,
|
|
135
224
|
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"] }]
|
|
136
225
|
}] });
|
|
137
226
|
|
|
138
|
-
class PopoverService {
|
|
139
|
-
_message = signal(null);
|
|
140
|
-
get message() {
|
|
141
|
-
return this._message.asReadonly();
|
|
142
|
-
}
|
|
143
|
-
show(message, timeout = 2000) {
|
|
144
|
-
this._message.set(message);
|
|
145
|
-
setTimeout(() => this._message.set(null), timeout);
|
|
146
|
-
}
|
|
147
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
148
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PopoverService, providedIn: 'root' });
|
|
149
|
-
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PopoverService, decorators: [{
|
|
151
|
-
type: Injectable,
|
|
152
|
-
args: [{
|
|
153
|
-
providedIn: 'root',
|
|
154
|
-
}]
|
|
155
|
-
}] });
|
|
156
|
-
|
|
157
|
-
class ThemeService {
|
|
158
|
-
_browser = inject(BrowserService);
|
|
159
|
-
_theme = new Subject();
|
|
160
|
-
get theme$() {
|
|
161
|
-
return this._theme.asObservable();
|
|
162
|
-
}
|
|
163
|
-
updateTheme() {
|
|
164
|
-
this._theme.next();
|
|
165
|
-
}
|
|
166
|
-
getPreferredTheme() {
|
|
167
|
-
return this._browser.localStorage.getItem('preferred-theme')
|
|
168
|
-
|| (this._browser.window.isMediaQuery('(prefers-color-scheme: dark)') ? 'dark' : 'light');
|
|
169
|
-
}
|
|
170
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
171
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ThemeService, providedIn: 'root' });
|
|
172
|
-
}
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ThemeService, decorators: [{
|
|
174
|
-
type: Injectable,
|
|
175
|
-
args: [{ providedIn: 'root' }]
|
|
176
|
-
}] });
|
|
177
|
-
|
|
178
|
-
class FThemeButtonComponent {
|
|
179
|
-
_renderer = inject(Renderer2);
|
|
180
|
-
_fState = inject(ThemeService);
|
|
181
|
-
_browser = inject(BrowserService);
|
|
182
|
-
get _localStorage() {
|
|
183
|
-
return this._browser.localStorage;
|
|
184
|
-
}
|
|
185
|
-
get _documentElement() {
|
|
186
|
-
return this._browser.document.documentElement;
|
|
187
|
-
}
|
|
188
|
-
ngOnInit() {
|
|
189
|
-
if (this._fState.getPreferredTheme() === 'dark' && !this._isDocumentContainsDarkTheme()) {
|
|
190
|
-
this._renderer.addClass(this._documentElement, 'dark');
|
|
191
|
-
this._localStorage.setItem('preferred-theme', 'dark');
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
_isDocumentContainsDarkTheme() {
|
|
195
|
-
return this._documentElement.classList.contains('dark');
|
|
196
|
-
}
|
|
197
|
-
_onClick() {
|
|
198
|
-
if (this._fState.getPreferredTheme() === 'light' && !this._isDocumentContainsDarkTheme()) {
|
|
199
|
-
this._renderer.addClass(this._documentElement, 'dark');
|
|
200
|
-
this._localStorage.setItem('preferred-theme', 'dark');
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
this._renderer.removeClass(this._documentElement, 'dark');
|
|
204
|
-
this._localStorage.setItem('preferred-theme', 'light');
|
|
205
|
-
}
|
|
206
|
-
this._fState.updateTheme();
|
|
207
|
-
}
|
|
208
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FThemeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 });
|
|
210
|
-
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FThemeButtonComponent, decorators: [{
|
|
212
|
-
type: Component,
|
|
213
|
-
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"] }]
|
|
214
|
-
}], propDecorators: { _onClick: [{
|
|
215
|
-
type: HostListener,
|
|
216
|
-
args: ['click']
|
|
217
|
-
}] } });
|
|
218
|
-
|
|
219
227
|
class NpmVersionComponent {
|
|
220
228
|
value = input();
|
|
221
229
|
_http = inject(HttpClient);
|
|
@@ -236,10 +244,10 @@ class NpmVersionComponent {
|
|
|
236
244
|
_npmRegistry(name) {
|
|
237
245
|
return `https://registry.npmjs.org/${encodeURIComponent(name)}`;
|
|
238
246
|
}
|
|
239
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
240
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
247
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NpmVersionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
248
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: NpmVersionComponent, isStandalone: true, selector: "npm-version", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (version()) {\n <span class=\"version\">v{{ version() }}</span>\n} @else {\n <div class=\"spinner\"></div>\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
241
249
|
}
|
|
242
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NpmVersionComponent, decorators: [{
|
|
243
251
|
type: Component,
|
|
244
252
|
args: [{ selector: 'npm-version', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (version()) {\n <span class=\"version\">v{{ version() }}</span>\n} @else {\n <div class=\"spinner\"></div>\n}\n" }]
|
|
245
253
|
}] });
|
|
@@ -300,10 +308,10 @@ class DropdownMenuComponent {
|
|
|
300
308
|
ngOnDestroy() {
|
|
301
309
|
clearTimeout(this._hoverTimeout);
|
|
302
310
|
}
|
|
303
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
304
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
311
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
312
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DropdownMenuComponent, isStandalone: true, selector: "dropdown-menu", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span class=\"label\" cdk-overlay-origin\n (click)=\"toggle()\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\"\n #overlayOrigin=\"cdkOverlayOrigin\">\n <span class=\"text\">{{ label() }}</span>\n <span class=\"f-icon chevron-down\"></span>\n</span>\n\n<ng-template\n cdk-connected-overlay\n [cdkConnectedOverlayLockPosition]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayOffsetY]=\"-10\"\n (backdropClick)=\"close()\"\n>\n <div class=\"dropdown-panel\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\">\n <div class=\"items\">\n @for (link of links(); track link.link) {\n <div class=\"menu-item\">\n <a class=\"menu-link\" [href]=\"link.link\">{{ link.text }}</a>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n", styles: [":host{overflow:hidden}.label{margin-left:8px;margin-right:8px;display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--primary-text);cursor:pointer;line-height:64px}.label .text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.label .f-icon{margin-left:4px;width:14px;min-width:14px;height:14px;color:inherit}.label:hover{color:var(--secondary-text)}.dropdown-panel{border-radius:6px;padding:12px;min-width:128px;border:1px solid var(--divider-color);background-color:var(--background-color);box-shadow:var(--shadow-3);max-height:calc(100vh - var(--header-height));overflow-y:auto}.menu-link{display:block;border-radius:4px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--primary-text);white-space:nowrap;cursor:pointer}.menu-link:hover{color:var(--primary-1);background-color:var(--gray-soft)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
305
313
|
}
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
314
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DropdownMenuComponent, decorators: [{
|
|
307
315
|
type: Component,
|
|
308
316
|
args: [{ selector: 'dropdown-menu', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
309
317
|
CdkConnectedOverlay,
|
|
@@ -366,10 +374,10 @@ class InlineMenuComponent {
|
|
|
366
374
|
overflowed(event) {
|
|
367
375
|
this.isOverflowed.set(event);
|
|
368
376
|
}
|
|
369
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
370
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
377
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: InlineMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
378
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: InlineMenuComponent, isStandalone: true, selector: "inline-menu", ngImport: i0, template: "<!--<div class=\"inline-menu-wrapper\" [element]=\"element\" overflowObserver (overflowed)=\"overflowed($event)\">-->\n<!-- <div #element class=\"inline-menu-container\" [class.hidden]=\"isOverflowed()\">-->\n<!-- @for (item of navigation; track item.link) {-->\n<!-- <a class=\"inline-menu-link\" [routerLink]=\"item.link\" [class.active]=\"item.isActive\">-->\n<!-- <span>{{ item.text }}</span>-->\n<!-- </a>-->\n<!-- }-->\n<!-- </div>-->\n\n<!-- @if (isOverflowed()) {-->\n\n<!-- }-->\n<!-- <dropdown-menu label=\"\"/>-->\n<!--</div>-->\n\n\n\n<div class=\"inline-menu-wrapper\" >\n <div #element class=\"inline-menu-container\" [class.hidden]=\"isOverflowed()\">\n @for (item of navigation; track item.link) {\n <a class=\"inline-menu-link\" [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n }\n </div>\n</div>\n\n", styles: [":host{flex:1;max-width:100%}.inline-menu-wrapper{display:flex;justify-content:end;width:100%}.inline-menu-container{display:flex;justify-content:flex-start;align-items:center;overflow:hidden}.inline-menu-container.hidden{visibility:hidden;position:absolute}.inline-menu-link{padding:0 12px;line-height:var(--header-height);font-size:14px;font-weight:500;color:var(--primary-text);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inline-menu-link:hover,.inline-menu-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 });
|
|
371
379
|
}
|
|
372
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: InlineMenuComponent, decorators: [{
|
|
373
381
|
type: Component,
|
|
374
382
|
args: [{ selector: 'inline-menu', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
375
383
|
RouterLink,
|
|
@@ -409,10 +417,10 @@ class OverflowObserverDirective {
|
|
|
409
417
|
ngOnDestroy() {
|
|
410
418
|
this._resizeObserver.disconnect();
|
|
411
419
|
}
|
|
412
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
413
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.
|
|
420
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: OverflowObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
421
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.11", type: OverflowObserverDirective, isStandalone: true, selector: "[overflowObserver]", inputs: { element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowed: "overflowed" }, ngImport: i0 });
|
|
414
422
|
}
|
|
415
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: OverflowObserverDirective, decorators: [{
|
|
416
424
|
type: Directive,
|
|
417
425
|
args: [{
|
|
418
426
|
selector: '[overflowObserver]',
|
|
@@ -420,121 +428,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
420
428
|
}]
|
|
421
429
|
}] });
|
|
422
430
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
})
|
|
431
|
+
class PopoverService {
|
|
432
|
+
_message = signal(null);
|
|
433
|
+
get message() {
|
|
434
|
+
return this._message.asReadonly();
|
|
435
|
+
}
|
|
436
|
+
show(message, timeout = 2000) {
|
|
437
|
+
this._message.set(message);
|
|
438
|
+
setTimeout(() => this._message.set(null), timeout);
|
|
439
|
+
}
|
|
440
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: PopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
441
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: PopoverService, providedIn: 'root' });
|
|
433
442
|
}
|
|
443
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: PopoverService, decorators: [{
|
|
444
|
+
type: Injectable,
|
|
445
|
+
args: [{
|
|
446
|
+
providedIn: 'root',
|
|
447
|
+
}]
|
|
448
|
+
}] });
|
|
434
449
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
ad_personalization: state,
|
|
443
|
-
ad_storage: state,
|
|
444
|
-
analytics_storage: state,
|
|
445
|
-
};
|
|
446
|
-
if (state === 'denied') {
|
|
447
|
-
window.gtag('consent', 'default', {
|
|
448
|
-
...consentOptions,
|
|
449
|
-
wait_for_update: 500,
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
else if (state === 'granted') {
|
|
453
|
-
window.gtag('consent', 'update', {
|
|
454
|
-
...consentOptions,
|
|
455
|
-
});
|
|
456
|
-
}
|
|
457
|
-
}
|
|
450
|
+
class ThemeService {
|
|
451
|
+
_localStorage = inject(LOCAL_STORAGE, { optional: true });
|
|
452
|
+
_window = inject(WINDOW, { optional: true });
|
|
453
|
+
_theme = new Subject();
|
|
454
|
+
_docElement = inject(DOCUMENT_ELEMENT);
|
|
455
|
+
get theme$() {
|
|
456
|
+
return this._theme.asObservable();
|
|
458
457
|
}
|
|
459
|
-
|
|
460
|
-
if (
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
else if (state === 'granted') {
|
|
464
|
-
console.error('Unable to grant cookie consent.');
|
|
458
|
+
initialize() {
|
|
459
|
+
if (this.getPreferredTheme() === 'dark' && !this._isDocumentContainsDarkTheme()) {
|
|
460
|
+
this._docElement.classList.add('dark');
|
|
461
|
+
this._localStorage?.setItem('preferred-theme', 'dark');
|
|
465
462
|
}
|
|
466
463
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
class FCookiePopupComponent {
|
|
470
|
-
_storage = inject(F_LOCAL_STORAGE);
|
|
471
|
-
hasAccepted = signal(false);
|
|
472
|
-
constructor() {
|
|
473
|
-
try {
|
|
474
|
-
this.hasAccepted.set(this._storage?.getItem(F_ACCEPT_COOKIES_KEY) === 'true');
|
|
475
|
-
}
|
|
476
|
-
catch {
|
|
477
|
-
this.hasAccepted.set(false);
|
|
478
|
-
}
|
|
464
|
+
updateTheme() {
|
|
465
|
+
this._theme.next();
|
|
479
466
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
this.
|
|
483
|
-
}
|
|
484
|
-
catch { /* empty */ }
|
|
485
|
-
this.hasAccepted.set(true);
|
|
486
|
-
setCookieConsent('granted');
|
|
467
|
+
getPreferredTheme() {
|
|
468
|
+
return this._getItem('preferred-theme')
|
|
469
|
+
|| (this._matchMedia('(prefers-color-scheme: dark)')?.matches ? 'dark' : 'light');
|
|
487
470
|
}
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
}
|
|
491
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FCookiePopupComponent, decorators: [{
|
|
492
|
-
type: Component,
|
|
493
|
-
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"] }]
|
|
494
|
-
}], ctorParameters: () => [] });
|
|
495
|
-
|
|
496
|
-
class FAnalyticsService {
|
|
497
|
-
fLocalStorage = inject(F_LOCAL_STORAGE);
|
|
498
|
-
document = inject(DOCUMENT);
|
|
499
|
-
initialize(analyticsId) {
|
|
500
|
-
this._installGtag(analyticsId);
|
|
471
|
+
_getItem(key) {
|
|
472
|
+
return this._localStorage?.getItem?.(key) || null;
|
|
501
473
|
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
window.dataLayer = window.dataLayer || [];
|
|
505
|
-
window.gtag = function () {
|
|
506
|
-
window.dataLayer?.push(arguments);
|
|
507
|
-
};
|
|
508
|
-
if (this.fLocalStorage) {
|
|
509
|
-
if (this.fLocalStorage.getItem(F_ACCEPT_COOKIES_KEY) === 'true') {
|
|
510
|
-
setCookieConsent('granted');
|
|
511
|
-
}
|
|
512
|
-
else {
|
|
513
|
-
setCookieConsent('denied');
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
else {
|
|
517
|
-
setCookieConsent('denied');
|
|
518
|
-
}
|
|
519
|
-
window.gtag('js', new Date());
|
|
520
|
-
window.gtag('config', analyticsId);
|
|
521
|
-
if (this.document.querySelector('#gtag-script') === null) {
|
|
522
|
-
this.document.head.appendChild(this._getGtmScript(analyticsId));
|
|
523
|
-
}
|
|
474
|
+
_matchMedia(query) {
|
|
475
|
+
return this._window?.matchMedia?.(query) || { matches: false };
|
|
524
476
|
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
gtmScript.async = true;
|
|
528
|
-
gtmScript.src = `https://www.googletagmanager.com/gtag/js?id=${analyticsId}`;
|
|
529
|
-
gtmScript.id = 'gtag-script';
|
|
530
|
-
return gtmScript;
|
|
477
|
+
_isDocumentContainsDarkTheme() {
|
|
478
|
+
return this._docElement.classList.contains('dark');
|
|
531
479
|
}
|
|
532
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
533
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
480
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
481
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ThemeService });
|
|
534
482
|
}
|
|
535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
536
|
-
type: Injectable
|
|
537
|
-
args: [{ providedIn: 'root' }]
|
|
483
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ThemeService, decorators: [{
|
|
484
|
+
type: Injectable
|
|
538
485
|
}] });
|
|
539
486
|
|
|
540
487
|
class FHeadTagService {
|
|
@@ -572,10 +519,10 @@ class FHeadTagService {
|
|
|
572
519
|
head.appendChild(element);
|
|
573
520
|
return element;
|
|
574
521
|
}
|
|
575
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
576
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
522
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHeadTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
523
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHeadTagService, providedIn: 'root' });
|
|
577
524
|
}
|
|
578
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
525
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHeadTagService, decorators: [{
|
|
579
526
|
type: Injectable,
|
|
580
527
|
args: [{ providedIn: 'root' }]
|
|
581
528
|
}] });
|
|
@@ -590,7 +537,7 @@ class HandleNavigationLinksHandler {
|
|
|
590
537
|
this._navigateInternalLink(href, request.router);
|
|
591
538
|
}
|
|
592
539
|
else {
|
|
593
|
-
|
|
540
|
+
window.open(href, '_blank');
|
|
594
541
|
}
|
|
595
542
|
}
|
|
596
543
|
}
|
|
@@ -612,18 +559,15 @@ class HandleNavigationLinksHandler {
|
|
|
612
559
|
}
|
|
613
560
|
router.navigate([href]).then();
|
|
614
561
|
}
|
|
615
|
-
_navigateExternalLink(href, browser) {
|
|
616
|
-
browser.window.open(href, '_blank');
|
|
617
|
-
}
|
|
618
562
|
}
|
|
619
563
|
|
|
620
564
|
class HandleNavigationLinksRequest {
|
|
621
565
|
event;
|
|
622
|
-
|
|
566
|
+
window;
|
|
623
567
|
router;
|
|
624
|
-
constructor(event,
|
|
568
|
+
constructor(event, window, router) {
|
|
625
569
|
this.event = event;
|
|
626
|
-
this.
|
|
570
|
+
this.window = window;
|
|
627
571
|
this.router = router;
|
|
628
572
|
}
|
|
629
573
|
}
|
|
@@ -702,9 +646,9 @@ function provideTocData(toC) {
|
|
|
702
646
|
}
|
|
703
647
|
|
|
704
648
|
class FMetaService {
|
|
649
|
+
_location = inject(LOCATION);
|
|
705
650
|
_router = inject(Router);
|
|
706
651
|
_headTag = inject(FHeadTagService);
|
|
707
|
-
_browser = inject(BrowserService);
|
|
708
652
|
_configuration = inject(DOCUMENTATION_CONFIGURATION);
|
|
709
653
|
changes() {
|
|
710
654
|
return this._router.events.pipe(startWith(new NavigationEnd(1, '', '')), filter(event => event instanceof NavigationEnd), map(() => void 0), tap(() => {
|
|
@@ -718,7 +662,7 @@ class FMetaService {
|
|
|
718
662
|
const item = this._findDocItemByUrl(this._findDocGroupByUrl(this._router.url), this._router.url);
|
|
719
663
|
if (item) {
|
|
720
664
|
data.title = `${item.text} - ${defaultData.app_name}`;
|
|
721
|
-
data.url = this.
|
|
665
|
+
data.url = this._location.href;
|
|
722
666
|
data.description = item.description || defaultData.description;
|
|
723
667
|
data.image = item.image || defaultData.image;
|
|
724
668
|
data.image_width = item.image_width || defaultData.image_width;
|
|
@@ -726,14 +670,14 @@ class FMetaService {
|
|
|
726
670
|
data.image_type = item.image_type || defaultData.image_type;
|
|
727
671
|
}
|
|
728
672
|
if (!data.url) {
|
|
729
|
-
data.url = this.
|
|
673
|
+
data.url = this._location.origin + this._router.url;
|
|
730
674
|
}
|
|
731
675
|
if (!data.image.startsWith('http') && !data.image.startsWith('www')) {
|
|
732
676
|
if (data.image.startsWith('.')) {
|
|
733
|
-
data.image = this.
|
|
677
|
+
data.image = this._location.origin + data.image.slice(1);
|
|
734
678
|
}
|
|
735
679
|
else {
|
|
736
|
-
data.image = this.
|
|
680
|
+
data.image = this._location.origin + data.image;
|
|
737
681
|
}
|
|
738
682
|
}
|
|
739
683
|
if (!data.url.endsWith('/')) {
|
|
@@ -770,10 +714,10 @@ class FMetaService {
|
|
|
770
714
|
this._headTag.updateTag({ property: 'og:image:width', content: item.image_width.toString() });
|
|
771
715
|
this._headTag.updateTag({ property: 'og:image:height', content: item.image_height.toString() });
|
|
772
716
|
}
|
|
773
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
774
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
717
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMetaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
718
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMetaService });
|
|
775
719
|
}
|
|
776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
720
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMetaService, decorators: [{
|
|
777
721
|
type: Injectable
|
|
778
722
|
}] });
|
|
779
723
|
|
|
@@ -786,10 +730,10 @@ class HamburgerButtonComponent {
|
|
|
786
730
|
_onShowNavigation() {
|
|
787
731
|
this._parent?.onToggleNavigation(true);
|
|
788
732
|
}
|
|
789
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
790
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
733
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HamburgerButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
734
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: HamburgerButtonComponent, isStandalone: true, selector: "button[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 });
|
|
791
735
|
}
|
|
792
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
736
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HamburgerButtonComponent, decorators: [{
|
|
793
737
|
type: Component,
|
|
794
738
|
args: [{ selector: 'button[hamburger-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
795
739
|
'(click)': '_onShowNavigation()',
|
|
@@ -855,26 +799,71 @@ class DocumentationStore {
|
|
|
855
799
|
getHeader() {
|
|
856
800
|
return this._configuration.header;
|
|
857
801
|
}
|
|
858
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
859
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
802
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DocumentationStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
803
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DocumentationStore });
|
|
860
804
|
}
|
|
861
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
805
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DocumentationStore, decorators: [{
|
|
862
806
|
type: Injectable
|
|
863
807
|
}] });
|
|
864
808
|
|
|
809
|
+
class ThemeButtonComponent {
|
|
810
|
+
_renderer = inject(Renderer2);
|
|
811
|
+
_themeService = inject(ThemeService, { optional: true });
|
|
812
|
+
_localStorage = inject(LOCAL_STORAGE);
|
|
813
|
+
_documentElement = inject(DOCUMENT_ELEMENT);
|
|
814
|
+
_isBrowser = inject(IS_BROWSER_PLATFORM);
|
|
815
|
+
ngOnInit() {
|
|
816
|
+
if (!this._themeService && this._isBrowser) {
|
|
817
|
+
throw new Error('Theme is not provided. Please provide it using provideTheme() provider in your application config.');
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
_isDocumentContainsDarkTheme() {
|
|
821
|
+
return this._documentElement.classList.contains('dark');
|
|
822
|
+
}
|
|
823
|
+
_onClick() {
|
|
824
|
+
if (this._themeService?.getPreferredTheme() === 'light' && !this._isDocumentContainsDarkTheme()) {
|
|
825
|
+
this._renderer.addClass(this._documentElement, 'dark');
|
|
826
|
+
this._localStorage.setItem('preferred-theme', 'dark');
|
|
827
|
+
}
|
|
828
|
+
else {
|
|
829
|
+
this._renderer.removeClass(this._documentElement, 'dark');
|
|
830
|
+
this._localStorage.setItem('preferred-theme', 'light');
|
|
831
|
+
}
|
|
832
|
+
this._themeService?.updateTheme();
|
|
833
|
+
}
|
|
834
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ThemeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
835
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: ThemeButtonComponent, isStandalone: true, selector: "button[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 });
|
|
836
|
+
}
|
|
837
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ThemeButtonComponent, decorators: [{
|
|
838
|
+
type: Component,
|
|
839
|
+
args: [{ selector: 'button[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"] }]
|
|
840
|
+
}], propDecorators: { _onClick: [{
|
|
841
|
+
type: HostListener,
|
|
842
|
+
args: ['click']
|
|
843
|
+
}] } });
|
|
844
|
+
|
|
845
|
+
function provideTheme() {
|
|
846
|
+
return [
|
|
847
|
+
{
|
|
848
|
+
provide: ThemeService,
|
|
849
|
+
useClass: ThemeService,
|
|
850
|
+
},
|
|
851
|
+
];
|
|
852
|
+
}
|
|
853
|
+
|
|
865
854
|
class HeaderComponent {
|
|
866
855
|
title = inject(DocumentationStore).getTitle();
|
|
867
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
868
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
856
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
857
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: HeaderComponent, isStandalone: true, selector: "f-header", ngImport: i0, template: "<button hamburger-button></button>\n<div class=\"title text-ellipsis\">{{ title }}</div>\n<inline-menu/>\n<!--<npm-version/>-->\n<div class=\"divider\"></div>\n<button theme-button></button>\n<div class=\"divider\"></div>\n<f-social-links/>\n\n", styles: [":host{position:sticky;width:100%;top:0;display:flex;justify-content:flex-start;align-items:center;padding:20px 32px;font-weight:600;color:var(--primary-text);height:calc(var(--header-height) + 1px);background-color:var(--background-color);border-bottom:1px solid var(--divider-color);z-index:var(--z-index-header)}@media (min-width: 1280px){:host{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 3);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 4)}}.title{display:none;justify-content:flex-start;align-items:center;padding:20px 0;font-weight:600;color:var(--primary-text);height:var(--header-height)}@media (min-width: 460px){.title{display:block}}@media (min-width: 960px){.title{display:none}}.divider{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--divider-color);content:\"\"}\n"], dependencies: [{ kind: "component", type: HamburgerButtonComponent, selector: "button[hamburger-button]" }, { kind: "component", type: FSocialLinksComponent, selector: "f-social-links" }, { kind: "component", type: ThemeButtonComponent, selector: "button[theme-button]" }, { kind: "component", type: InlineMenuComponent, selector: "inline-menu" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
869
858
|
}
|
|
870
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
859
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
871
860
|
type: Component,
|
|
872
861
|
args: [{ selector: 'f-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
873
862
|
HamburgerButtonComponent,
|
|
874
863
|
FSocialLinksComponent,
|
|
875
|
-
|
|
864
|
+
ThemeButtonComponent,
|
|
876
865
|
InlineMenuComponent,
|
|
877
|
-
], template: "<button hamburger-button></button>\n<div class=\"title text-ellipsis\">{{ title }}</div>\n<inline-menu/>\n<!--<npm-version/>-->\n<div class=\"divider\"></div>\n<button
|
|
866
|
+
], template: "<button hamburger-button></button>\n<div class=\"title text-ellipsis\">{{ title }}</div>\n<inline-menu/>\n<!--<npm-version/>-->\n<div class=\"divider\"></div>\n<button theme-button></button>\n<div class=\"divider\"></div>\n<f-social-links/>\n\n", styles: [":host{position:sticky;width:100%;top:0;display:flex;justify-content:flex-start;align-items:center;padding:20px 32px;font-weight:600;color:var(--primary-text);height:calc(var(--header-height) + 1px);background-color:var(--background-color);border-bottom:1px solid var(--divider-color);z-index:var(--z-index-header)}@media (min-width: 1280px){:host{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 3);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 4)}}.title{display:none;justify-content:flex-start;align-items:center;padding:20px 0;font-weight:600;color:var(--primary-text);height:var(--header-height)}@media (min-width: 460px){.title{display:block}}@media (min-width: 960px){.title{display:none}}.divider{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--divider-color);content:\"\"}\n"] }]
|
|
878
867
|
}] });
|
|
879
868
|
|
|
880
869
|
class NavigationGroupComponent {
|
|
@@ -883,10 +872,10 @@ class NavigationGroupComponent {
|
|
|
883
872
|
toggle() {
|
|
884
873
|
this.isCollapsed.set(!this.isCollapsed());
|
|
885
874
|
}
|
|
886
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
887
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
875
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NavigationGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
876
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: NavigationGroupComponent, isStandalone: true, selector: "f-navigation-group", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.collapsed": "isCollapsed()", "class.no-title": "!title()" } }, ngImport: i0, template: "@if (title()) {\n <header (click)=\"toggle()\">\n <span>{{ title() }}</span>\n <div class=\"flex-space\"></div>\n <div class=\"caret\">\n <span class=\"chevron-right caret-icon\"></span>\n </div>\n </header>\n}\n@if (!isCollapsed()) {\n <ng-content></ng-content>\n}\n\n\n\n", styles: [":host{padding-top:10px;padding-bottom:24px;border-top:1px solid var(--divider-color);display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;width:100%;max-width:240px;margin-left:auto}:host.collapsed,:host.no-title{padding-top:10px;padding-bottom:10px}header{font-weight:600;color:var(--primary-text);flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;cursor:pointer;display:flex;justify-content:flex-start;align-items:center;width:100%}.caret{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--tertiary-text);cursor:pointer;transition:color .25s;flex-shrink:0}:host:hover .caret{color:var(--secondary-text)}:host:hover .caret:hover{color:var(--primary-text)}:host .caret-icon{font-size:18px;transform:rotate(90deg);transition:transform .25s;mask-size:100% 100%;background-color:currentColor;color:inherit;width:18px;height:18px}:host.collapsed .caret-icon{transform:rotate(0)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
888
877
|
}
|
|
889
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
878
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NavigationGroupComponent, decorators: [{
|
|
890
879
|
type: Component,
|
|
891
880
|
args: [{ selector: 'f-navigation-group', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
892
881
|
'[class.collapsed]': 'isCollapsed()',
|
|
@@ -895,10 +884,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
895
884
|
}] });
|
|
896
885
|
|
|
897
886
|
class FNavigationItemComponent {
|
|
898
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
899
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
887
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FNavigationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
888
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FNavigationItemComponent, isStandalone: true, selector: "a[f-navigation-item]", ngImport: i0, template: "<ng-content></ng-content>\n\n\n\n", styles: [":host{font-weight:500;color:var(--secondary-text);flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;cursor:pointer;width:100%;display:flex;align-items:center;justify-content:flex-start;gap:2px}:host:hover{text-decoration:none;color:var(--primary-1)}:host.active{color:var(--primary-1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
900
889
|
}
|
|
901
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
890
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FNavigationItemComponent, decorators: [{
|
|
902
891
|
type: Component,
|
|
903
892
|
args: [{ selector: 'a[f-navigation-item]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n\n\n\n", styles: [":host{font-weight:500;color:var(--secondary-text);flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;cursor:pointer;width:100%;display:flex;align-items:center;justify-content:flex-start;gap:2px}:host:hover{text-decoration:none;color:var(--primary-1)}:host.active{color:var(--primary-1)}\n"] }]
|
|
904
893
|
}] });
|
|
@@ -911,7 +900,7 @@ class NavigationPanelComponent {
|
|
|
911
900
|
_router = inject(Router);
|
|
912
901
|
_changeDetectorRef = inject(ChangeDetectorRef);
|
|
913
902
|
_destroyRef = inject(DestroyRef);
|
|
914
|
-
|
|
903
|
+
_window = inject(WINDOW);
|
|
915
904
|
value;
|
|
916
905
|
navigation = this._provider.getNavigation();
|
|
917
906
|
title = this._provider.getTitle();
|
|
@@ -960,12 +949,12 @@ class NavigationPanelComponent {
|
|
|
960
949
|
});
|
|
961
950
|
}
|
|
962
951
|
_onDocumentClick(event) {
|
|
963
|
-
new HandleNavigationLinksHandler().handle(new HandleNavigationLinksRequest(event, this.
|
|
952
|
+
new HandleNavigationLinksHandler().handle(new HandleNavigationLinksRequest(event, this._window, this._router));
|
|
964
953
|
}
|
|
965
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
966
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
954
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NavigationPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
955
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: NavigationPanelComponent, isStandalone: true, selector: "f-navigation-panel", host: { listeners: { "click": "_onDocumentClick($event)" } }, ngImport: i0, template: "<a routerLink class=\"navigation-header\">\n <img [src]=\"image\" width=\"24\" height=\"24\" alt=\"logo\" class=\"logo\"/> {{ title }}\n</a>\n\n@for (group of navigation; track group) {\n <f-navigation-group [title]=\"group.text\">\n @for (item of group.items; track item.link) {\n <a f-navigation-item [href]=\"item.link\" [class.active]=\"item.link === value\">\n <div class=\"text-ellipsis\">{{ item.text }}</div>\n @if (item.badge) {\n <span class=\"f-badge {{ item.badge.type }}\">{{ item.badge.text }}</span>\n }\n </a>\n }\n </f-navigation-group>\n}\n", styles: [":host{height:100%;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:0 var(--navigation-panel-padding);background-color:var(--navigation-panel-background);overflow:hidden;overflow-y:auto;position:fixed;width:var(--navigation-panel-width);top:0;left:calc(-1 * var(--navigation-panel-width));transition:transform .2s ease-in-out;z-index:var(--z-index-navigation);transform:none}@media (min-width: 960px){:host{position:unset;display:flex;min-width:var(--navigation-panel-width);width:fit-content;transform:none!important}}@media (min-width: 1440px){:host{min-width:calc((100% - (var(--layout-max-width) - 64px)) / 3 + var(--navigation-panel-width) - var(--navigation-panel-padding))}}:host.visible{transform:translate(var(--navigation-panel-width))}.navigation-header{display:flex;justify-content:flex-start;align-items:center;padding:20px 0;font-weight:600;color:var(--primary-text);height:var(--header-height);width:100%;max-width:240px;margin-left:auto;cursor:pointer}.navigation-header img{margin-right:8px}\n"], dependencies: [{ kind: "component", type: FNavigationItemComponent, selector: "a[f-navigation-item]" }, { kind: "component", type: NavigationGroupComponent, selector: "f-navigation-group", inputs: ["title"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
967
956
|
}
|
|
968
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
957
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NavigationPanelComponent, decorators: [{
|
|
969
958
|
type: Component,
|
|
970
959
|
args: [{ selector: 'f-navigation-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
971
960
|
FNavigationItemComponent,
|
|
@@ -989,10 +978,10 @@ class FCodeGroupTabsComponent {
|
|
|
989
978
|
this.index.set(index);
|
|
990
979
|
this.tabIndex.emit(index);
|
|
991
980
|
}
|
|
992
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
993
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
981
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCodeGroupTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
982
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FCodeGroupTabsComponent, isStandalone: true, selector: "f-code-group-tabs", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabIndex: "tabIndex" }, host: { properties: { "style.display": "display()" }, classAttribute: "f-code-group-tabs" }, ngImport: i0, template: "@for (data of data(); track data) {\n <button class=\"f-tab-button\" [class.active]=\"$index === index()\"\n (click)=\"onTabClick($index)\">\n {{ data.tab }}\n </button>\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
994
983
|
}
|
|
995
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
984
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCodeGroupTabsComponent, decorators: [{
|
|
996
985
|
type: Component,
|
|
997
986
|
args: [{ selector: 'f-code-group-tabs', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
998
987
|
class: 'f-code-group-tabs',
|
|
@@ -1000,375 +989,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1000
989
|
}, template: "@for (data of data(); track data) {\n <button class=\"f-tab-button\" [class.active]=\"$index === index()\"\n (click)=\"onTabClick($index)\">\n {{ data.tab }}\n </button>\n}\n" }]
|
|
1001
990
|
}] });
|
|
1002
991
|
|
|
1003
|
-
class MarkCodeFocusedBlocksPostProcessor {
|
|
1004
|
-
_browser;
|
|
1005
|
-
constructor(_browser) {
|
|
1006
|
-
this._browser = _browser;
|
|
1007
|
-
}
|
|
1008
|
-
handle(element) {
|
|
1009
|
-
const html = element.innerHTML;
|
|
1010
|
-
if (!FOCUS_REGEX.test(html)) {
|
|
1011
|
-
return of(element);
|
|
1012
|
-
}
|
|
1013
|
-
element.innerHTML = html.replace(FOCUS_REGEX, (_match, content) => {
|
|
1014
|
-
return `<focus class="focused"><div class="inline-focus">${content}</div></focus>`;
|
|
1015
|
-
});
|
|
1016
|
-
const focused = element.querySelector('.focused');
|
|
1017
|
-
if (focused) {
|
|
1018
|
-
this._applyOpacity(element.parentElement);
|
|
1019
|
-
}
|
|
1020
|
-
return of(element);
|
|
1021
|
-
}
|
|
1022
|
-
_applyOpacity(element) {
|
|
1023
|
-
if (!element.classList.contains('focused')) {
|
|
1024
|
-
element.style.color = this._createRgbaString(this._getElementColor(element), 0.5);
|
|
1025
|
-
element.childNodes.forEach((child) => {
|
|
1026
|
-
if (child.nodeType === Node.ELEMENT_NODE) {
|
|
1027
|
-
this._applyOpacity(child);
|
|
1028
|
-
}
|
|
1029
|
-
});
|
|
1030
|
-
}
|
|
1031
|
-
else {
|
|
1032
|
-
element.style.color = this._createRgbaString(this._getElementColor(element), 1, true);
|
|
1033
|
-
}
|
|
1034
|
-
}
|
|
1035
|
-
_getElementColor(element) {
|
|
1036
|
-
return this._browser.window.getComputedStyle(element).color;
|
|
1037
|
-
}
|
|
1038
|
-
_createRgbaString(color, opacity, isRgb = false) {
|
|
1039
|
-
const [r, g, b, a] = this._getRgbValues(color);
|
|
1040
|
-
const alpha = Number(a) || 1;
|
|
1041
|
-
return isRgb ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${opacity * alpha})`;
|
|
1042
|
-
}
|
|
1043
|
-
_getRgbValues(color) {
|
|
1044
|
-
return color.match(/\d+/g);
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
const FOCUS_REGEX = /ƒƒƒ([\s\S]*?)¢¢¢/g;
|
|
1048
|
-
|
|
1049
|
-
const UNIVERSAL_THEME = {
|
|
1050
|
-
name: 'universal',
|
|
1051
|
-
colors: {
|
|
1052
|
-
'editor.background': 'transparent',
|
|
1053
|
-
'editor.foreground': 'var(--code-view-text-color)',
|
|
1054
|
-
},
|
|
1055
|
-
settings: [
|
|
1056
|
-
{
|
|
1057
|
-
scope: ['comment', 'punctuation.definition.comment', 'string.comment'],
|
|
1058
|
-
settings: {
|
|
1059
|
-
foreground: 'var(--token-comment)',
|
|
1060
|
-
},
|
|
1061
|
-
},
|
|
1062
|
-
{
|
|
1063
|
-
scope: ['constant', 'entity.name.constant', 'variable.other.constant', 'variable.other.enummember', 'variable.language'],
|
|
1064
|
-
settings: {
|
|
1065
|
-
foreground: 'var(--token-number)',
|
|
1066
|
-
},
|
|
1067
|
-
},
|
|
1068
|
-
{
|
|
1069
|
-
scope: ['entity', 'entity.name'],
|
|
1070
|
-
settings: {
|
|
1071
|
-
foreground: 'var(--token-tag)',
|
|
1072
|
-
},
|
|
1073
|
-
},
|
|
1074
|
-
{
|
|
1075
|
-
scope: 'variable.parameter.function',
|
|
1076
|
-
settings: {
|
|
1077
|
-
foreground: 'var(--primary-text)',
|
|
1078
|
-
},
|
|
1079
|
-
},
|
|
1080
|
-
{
|
|
1081
|
-
scope: 'entity.name.tag',
|
|
1082
|
-
settings: {
|
|
1083
|
-
foreground: 'var(--token-tag)',
|
|
1084
|
-
},
|
|
1085
|
-
},
|
|
1086
|
-
{
|
|
1087
|
-
scope: 'keyword',
|
|
1088
|
-
settings: {
|
|
1089
|
-
foreground: 'var(--token-keyword)',
|
|
1090
|
-
},
|
|
1091
|
-
},
|
|
1092
|
-
{
|
|
1093
|
-
scope: ['storage', 'storage.type'],
|
|
1094
|
-
settings: {
|
|
1095
|
-
foreground: 'var(--token-keyword)',
|
|
1096
|
-
},
|
|
1097
|
-
},
|
|
1098
|
-
{
|
|
1099
|
-
scope: ['storage.modifier.package', 'storage.modifier.import', 'storage.type.java'],
|
|
1100
|
-
settings: {
|
|
1101
|
-
foreground: 'var(--primary-text)',
|
|
1102
|
-
},
|
|
1103
|
-
},
|
|
1104
|
-
{
|
|
1105
|
-
scope: ['string', 'punctuation.definition.string', 'string punctuation.section.embedded source'],
|
|
1106
|
-
settings: {
|
|
1107
|
-
foreground: 'var(--token-string)',
|
|
1108
|
-
},
|
|
1109
|
-
},
|
|
1110
|
-
{
|
|
1111
|
-
scope: 'support',
|
|
1112
|
-
settings: {
|
|
1113
|
-
foreground: 'var(--token-function)',
|
|
1114
|
-
},
|
|
1115
|
-
},
|
|
1116
|
-
{
|
|
1117
|
-
scope: 'meta.property-name',
|
|
1118
|
-
settings: {
|
|
1119
|
-
foreground: 'var(--token-function)',
|
|
1120
|
-
},
|
|
1121
|
-
},
|
|
1122
|
-
{
|
|
1123
|
-
scope: 'variable',
|
|
1124
|
-
settings: {
|
|
1125
|
-
foreground: 'var(--token-variable)',
|
|
1126
|
-
},
|
|
1127
|
-
},
|
|
1128
|
-
{
|
|
1129
|
-
scope: 'variable.other',
|
|
1130
|
-
settings: {
|
|
1131
|
-
foreground: 'var(--token-function)',
|
|
1132
|
-
},
|
|
1133
|
-
},
|
|
1134
|
-
{
|
|
1135
|
-
scope: [
|
|
1136
|
-
'invalid.broken',
|
|
1137
|
-
'invalid.deprecated',
|
|
1138
|
-
'invalid.illegal',
|
|
1139
|
-
'invalid.unimplemented',
|
|
1140
|
-
],
|
|
1141
|
-
settings: {
|
|
1142
|
-
fontStyle: 'italic',
|
|
1143
|
-
foreground: 'var(--danger-2)',
|
|
1144
|
-
},
|
|
1145
|
-
},
|
|
1146
|
-
{
|
|
1147
|
-
scope: 'carriage-return',
|
|
1148
|
-
settings: {
|
|
1149
|
-
fontStyle: 'italic underline',
|
|
1150
|
-
foreground: 'var(--background-color)',
|
|
1151
|
-
background: 'var(--token-keyword)',
|
|
1152
|
-
},
|
|
1153
|
-
},
|
|
1154
|
-
{
|
|
1155
|
-
scope: 'message.error',
|
|
1156
|
-
settings: {
|
|
1157
|
-
foreground: 'var(--danger-2)',
|
|
1158
|
-
},
|
|
1159
|
-
},
|
|
1160
|
-
{
|
|
1161
|
-
scope: 'string variable',
|
|
1162
|
-
settings: {
|
|
1163
|
-
foreground: 'var(--token-function)',
|
|
1164
|
-
},
|
|
1165
|
-
},
|
|
1166
|
-
{
|
|
1167
|
-
scope: ['source.regexp', 'string.regexp'],
|
|
1168
|
-
settings: {
|
|
1169
|
-
foreground: 'var(--token-interpolation)',
|
|
1170
|
-
},
|
|
1171
|
-
},
|
|
1172
|
-
{
|
|
1173
|
-
scope: [
|
|
1174
|
-
'string.regexp.character-class',
|
|
1175
|
-
'string.regexp constant.character.escape',
|
|
1176
|
-
'string.regexp source.ruby.embedded',
|
|
1177
|
-
'string.regexp string.regexp.arbitrary-repitition',
|
|
1178
|
-
],
|
|
1179
|
-
settings: {
|
|
1180
|
-
foreground: 'var(--token-interpolation)',
|
|
1181
|
-
},
|
|
1182
|
-
},
|
|
1183
|
-
{
|
|
1184
|
-
scope: 'string.regexp constant.character.escape',
|
|
1185
|
-
settings: {
|
|
1186
|
-
fontStyle: 'bold',
|
|
1187
|
-
foreground: 'var(--token-attr-value)',
|
|
1188
|
-
},
|
|
1189
|
-
},
|
|
1190
|
-
{
|
|
1191
|
-
scope: ['support.constant', 'support.variable', 'meta.module-reference'],
|
|
1192
|
-
settings: {
|
|
1193
|
-
foreground: 'var(--token-function)',
|
|
1194
|
-
},
|
|
1195
|
-
},
|
|
1196
|
-
{
|
|
1197
|
-
scope: 'punctuation.definition.list.begin.markdown',
|
|
1198
|
-
settings: {
|
|
1199
|
-
foreground: 'var(--token-variable)',
|
|
1200
|
-
},
|
|
1201
|
-
},
|
|
1202
|
-
{
|
|
1203
|
-
scope: ['markup.heading', 'markup.heading entity.name'],
|
|
1204
|
-
settings: {
|
|
1205
|
-
fontStyle: 'bold',
|
|
1206
|
-
foreground: 'var(--token-function)',
|
|
1207
|
-
},
|
|
1208
|
-
},
|
|
1209
|
-
{
|
|
1210
|
-
scope: 'markup.quote',
|
|
1211
|
-
settings: {
|
|
1212
|
-
foreground: 'var(--token-attr-value)',
|
|
1213
|
-
},
|
|
1214
|
-
},
|
|
1215
|
-
{
|
|
1216
|
-
scope: 'markup.italic',
|
|
1217
|
-
settings: {
|
|
1218
|
-
fontStyle: 'italic',
|
|
1219
|
-
foreground: 'var(--primary-text)',
|
|
1220
|
-
},
|
|
1221
|
-
},
|
|
1222
|
-
{
|
|
1223
|
-
scope: 'markup.bold',
|
|
1224
|
-
settings: {
|
|
1225
|
-
fontStyle: 'bold',
|
|
1226
|
-
foreground: 'var(--primary-text)',
|
|
1227
|
-
},
|
|
1228
|
-
},
|
|
1229
|
-
{
|
|
1230
|
-
scope: 'markup.underline',
|
|
1231
|
-
settings: {
|
|
1232
|
-
fontStyle: 'underline',
|
|
1233
|
-
},
|
|
1234
|
-
},
|
|
1235
|
-
{
|
|
1236
|
-
scope: 'markup.strikethrough',
|
|
1237
|
-
settings: {
|
|
1238
|
-
fontStyle: 'strikethrough',
|
|
1239
|
-
},
|
|
1240
|
-
},
|
|
1241
|
-
{
|
|
1242
|
-
scope: 'markup.inline.raw',
|
|
1243
|
-
settings: {
|
|
1244
|
-
foreground: 'var(--token-function)',
|
|
1245
|
-
},
|
|
1246
|
-
},
|
|
1247
|
-
{
|
|
1248
|
-
scope: ['markup.deleted', 'meta.diff.header.from-file', 'punctuation.definition.deleted'],
|
|
1249
|
-
settings: {
|
|
1250
|
-
background: 'var(--danger-3)',
|
|
1251
|
-
foreground: 'var(--danger-2)',
|
|
1252
|
-
},
|
|
1253
|
-
},
|
|
1254
|
-
{
|
|
1255
|
-
scope: ['markup.inserted', 'meta.diff.header.to-file', 'punctuation.definition.inserted'],
|
|
1256
|
-
settings: {
|
|
1257
|
-
background: 'var(--success-3)',
|
|
1258
|
-
foreground: 'var(--token-attr-value)',
|
|
1259
|
-
},
|
|
1260
|
-
},
|
|
1261
|
-
{
|
|
1262
|
-
scope: ['markup.changed', 'punctuation.definition.changed'],
|
|
1263
|
-
settings: {
|
|
1264
|
-
background: 'var(--warning-3)',
|
|
1265
|
-
foreground: 'var(--token-variable)',
|
|
1266
|
-
},
|
|
1267
|
-
},
|
|
1268
|
-
{
|
|
1269
|
-
scope: ['markup.ignored', 'markup.untracked'],
|
|
1270
|
-
settings: {
|
|
1271
|
-
background: 'var(--token-function)',
|
|
1272
|
-
foreground: 'var(--alt-background)',
|
|
1273
|
-
},
|
|
1274
|
-
},
|
|
1275
|
-
{
|
|
1276
|
-
scope: 'meta.diff.range',
|
|
1277
|
-
settings: {
|
|
1278
|
-
fontStyle: 'bold',
|
|
1279
|
-
foreground: 'var(--token-attr-name)',
|
|
1280
|
-
},
|
|
1281
|
-
},
|
|
1282
|
-
{
|
|
1283
|
-
scope: 'meta.diff.header',
|
|
1284
|
-
settings: {
|
|
1285
|
-
foreground: 'var(--token-function)',
|
|
1286
|
-
},
|
|
1287
|
-
},
|
|
1288
|
-
{
|
|
1289
|
-
scope: 'meta.separator',
|
|
1290
|
-
settings: {
|
|
1291
|
-
fontStyle: 'bold',
|
|
1292
|
-
foreground: 'var(--token-function)',
|
|
1293
|
-
},
|
|
1294
|
-
},
|
|
1295
|
-
{
|
|
1296
|
-
scope: 'meta.output',
|
|
1297
|
-
settings: {
|
|
1298
|
-
foreground: 'var(--token-function)',
|
|
1299
|
-
},
|
|
1300
|
-
},
|
|
1301
|
-
{
|
|
1302
|
-
scope: [
|
|
1303
|
-
'brackethighlighter.tag',
|
|
1304
|
-
'brackethighlighter.curly',
|
|
1305
|
-
'brackethighlighter.round',
|
|
1306
|
-
'brackethighlighter.square',
|
|
1307
|
-
'brackethighlighter.angle',
|
|
1308
|
-
'brackethighlighter.quote',
|
|
1309
|
-
],
|
|
1310
|
-
settings: {
|
|
1311
|
-
foreground: 'var(--gray-1)',
|
|
1312
|
-
},
|
|
1313
|
-
},
|
|
1314
|
-
{
|
|
1315
|
-
scope: 'brackethighlighter.unmatched',
|
|
1316
|
-
settings: {
|
|
1317
|
-
foreground: 'var(--danger-2)',
|
|
1318
|
-
},
|
|
1319
|
-
},
|
|
1320
|
-
{
|
|
1321
|
-
scope: ['constant.other.reference.link', 'string.other.link'],
|
|
1322
|
-
settings: {
|
|
1323
|
-
fontStyle: 'underline',
|
|
1324
|
-
foreground: 'var(--token-interpolation)',
|
|
1325
|
-
},
|
|
1326
|
-
},
|
|
1327
|
-
],
|
|
1328
|
-
};
|
|
1329
|
-
|
|
1330
|
-
class HighlightService {
|
|
1331
|
-
_browser = inject(BrowserService);
|
|
1332
|
-
_highlighter$ = defer(() => from(createHighlighter({ themes: [UNIVERSAL_THEME], langs: LANGUAGES }))).pipe(shareReplay(1));
|
|
1333
|
-
highlight(element, lang, content) {
|
|
1334
|
-
if (!this._browser.isBrowser()) {
|
|
1335
|
-
console.warn('[HighlightService] Skipping highlight on server.');
|
|
1336
|
-
return of(element);
|
|
1337
|
-
}
|
|
1338
|
-
return this._highlightCodeBlock(element, lang, content).pipe(switchMap((x) => this._postProcess(x)), catchError((err) => {
|
|
1339
|
-
console.error('[HighlightService] Failed to highlight:', err);
|
|
1340
|
-
return of(element);
|
|
1341
|
-
}));
|
|
1342
|
-
}
|
|
1343
|
-
_highlightCodeBlock(element, lang, content) {
|
|
1344
|
-
return this._highlighter$.pipe(switchMap((highlighter) => this._renderCode(element, highlighter, lang, content)));
|
|
1345
|
-
}
|
|
1346
|
-
_renderCode(element, highlighter, lang, content) {
|
|
1347
|
-
return new Observable((observer) => {
|
|
1348
|
-
const processedContent = this._preprocessFocus(content);
|
|
1349
|
-
element.innerHTML = highlighter.codeToHtml(processedContent, { lang, theme: 'universal', defaultColor: false });
|
|
1350
|
-
requestAnimationFrame(() => {
|
|
1351
|
-
observer.next(element);
|
|
1352
|
-
observer.complete();
|
|
1353
|
-
});
|
|
1354
|
-
});
|
|
1355
|
-
}
|
|
1356
|
-
_preprocessFocus(code) {
|
|
1357
|
-
return code.replace(/\|\:\|([\s\S]*?)\|\:\|/g, (_, p1) => `ƒƒƒ${p1}¢¢¢`);
|
|
1358
|
-
}
|
|
1359
|
-
_postProcess(element) {
|
|
1360
|
-
return of(element).pipe(switchMap((x) => new MarkCodeFocusedBlocksPostProcessor(this._browser).handle(x)));
|
|
1361
|
-
}
|
|
1362
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1363
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HighlightService, providedIn: 'root' });
|
|
1364
|
-
}
|
|
1365
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HighlightService, decorators: [{
|
|
1366
|
-
type: Injectable,
|
|
1367
|
-
args: [{
|
|
1368
|
-
providedIn: 'root',
|
|
1369
|
-
}]
|
|
1370
|
-
}] });
|
|
1371
|
-
|
|
1372
992
|
class HighlightComponent {
|
|
1373
993
|
_highlightService = inject(HighlightService);
|
|
1374
994
|
_elementRef = inject(ElementRef);
|
|
@@ -1381,10 +1001,10 @@ class HighlightComponent {
|
|
|
1381
1001
|
.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe();
|
|
1382
1002
|
});
|
|
1383
1003
|
}
|
|
1384
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1385
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.
|
|
1004
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1005
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.11", type: HighlightComponent, isStandalone: true, selector: "highlight", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1386
1006
|
}
|
|
1387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1007
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HighlightComponent, decorators: [{
|
|
1388
1008
|
type: Component,
|
|
1389
1009
|
args: [{
|
|
1390
1010
|
selector: 'highlight',
|
|
@@ -1405,19 +1025,6 @@ function parseLanguageFromFileExtension(url) {
|
|
|
1405
1025
|
}
|
|
1406
1026
|
return '';
|
|
1407
1027
|
}
|
|
1408
|
-
const LANGUAGES = [
|
|
1409
|
-
'javascript',
|
|
1410
|
-
'typescript',
|
|
1411
|
-
'angular-html',
|
|
1412
|
-
'angular-ts',
|
|
1413
|
-
'shell',
|
|
1414
|
-
'html',
|
|
1415
|
-
'bash',
|
|
1416
|
-
'css',
|
|
1417
|
-
'scss',
|
|
1418
|
-
'markdown',
|
|
1419
|
-
'text',
|
|
1420
|
-
];
|
|
1421
1028
|
function parseSyntaxLanguage(language) {
|
|
1422
1029
|
let result;
|
|
1423
1030
|
switch (language) {
|
|
@@ -1437,7 +1044,7 @@ function parseSyntaxLanguage(language) {
|
|
|
1437
1044
|
default:
|
|
1438
1045
|
result = extractLanguage(language);
|
|
1439
1046
|
}
|
|
1440
|
-
if (!
|
|
1047
|
+
if (!AVAILABLE_LANGUAGES.includes(result)) {
|
|
1441
1048
|
result = 'text';
|
|
1442
1049
|
}
|
|
1443
1050
|
return result;
|
|
@@ -1467,10 +1074,10 @@ class FInsertComponentDirective {
|
|
|
1467
1074
|
this._componentRef?.destroy();
|
|
1468
1075
|
this._viewContainerRef.clear();
|
|
1469
1076
|
}
|
|
1470
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1471
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.
|
|
1077
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FInsertComponentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1078
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.11", type: FInsertComponentDirective, isStandalone: true, selector: "ng-container[fInsertComponent]", inputs: { component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
1472
1079
|
}
|
|
1473
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1080
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FInsertComponentDirective, decorators: [{
|
|
1474
1081
|
type: Directive,
|
|
1475
1082
|
args: [{
|
|
1476
1083
|
standalone: true,
|
|
@@ -1543,10 +1150,10 @@ class FExampleViewComponent {
|
|
|
1543
1150
|
}
|
|
1544
1151
|
}).catch(error => this._logComponentLoadingError(tag, error));
|
|
1545
1152
|
}
|
|
1546
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1547
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FExampleViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FExampleViewComponent, isStandalone: true, selector: "f-example-view", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "style.height": "data().height" }, classAttribute: "f-example-view" }, ngImport: i0, template: "{{ errors() }}\n@if (component()) {\n <ng-container fInsertComponent [component]=\"component()\"/>\n}\n\n", dependencies: [{ kind: "directive", type: FInsertComponentDirective, selector: "ng-container[fInsertComponent]", inputs: ["component"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1548
1155
|
}
|
|
1549
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FExampleViewComponent, decorators: [{
|
|
1550
1157
|
type: Component,
|
|
1551
1158
|
args: [{ selector: 'f-example-view', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1552
1159
|
FInsertComponentDirective,
|
|
@@ -1599,10 +1206,10 @@ class FCodeViewComponent {
|
|
|
1599
1206
|
_copyContentToClipboard(content) {
|
|
1600
1207
|
copyToClipboard(content).pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe(() => this._popoverService.show('Copied!'));
|
|
1601
1208
|
}
|
|
1602
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1603
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1209
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCodeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1210
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FCodeViewComponent, isStandalone: true, selector: "f-code-view", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.height": "height()" }, classAttribute: "f-code-view" }, ngImport: i0, template: "<span class=\"f-code-language\">{{ visibleLanguage() }}</span>\n<button class=\"f-copy-button\" (click)=\"onCopyClick()\"></button>\n@if (content()) {\n <highlight [content]=\"content()\" [language]=\"syntaxLanguage()\"/>\n}\n\n", dependencies: [{ kind: "component", type: HighlightComponent, selector: "highlight", inputs: ["content", "language"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1604
1211
|
}
|
|
1605
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCodeViewComponent, decorators: [{
|
|
1606
1213
|
type: Component,
|
|
1607
1214
|
args: [{ selector: 'f-code-view', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1608
1215
|
class: 'f-code-view',
|
|
@@ -1680,10 +1287,10 @@ class MarkdownService {
|
|
|
1680
1287
|
_cleanupWasteParagraphFromPreviewGroup(html) {
|
|
1681
1288
|
return html.replace(/<p>(\[[^\]]+\](\s*\[[^\]]+\])*)<\/p>/g, '');
|
|
1682
1289
|
}
|
|
1683
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1684
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1290
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: MarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1291
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: MarkdownService });
|
|
1685
1292
|
}
|
|
1686
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: MarkdownService, decorators: [{
|
|
1687
1294
|
type: Injectable
|
|
1688
1295
|
}], ctorParameters: () => [] });
|
|
1689
1296
|
|
|
@@ -1908,10 +1515,10 @@ class FCodeGroupComponent {
|
|
|
1908
1515
|
onTabClick(index) {
|
|
1909
1516
|
this.index.set(index);
|
|
1910
1517
|
}
|
|
1911
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1912
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1518
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCodeGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1519
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FCodeGroupComponent, isStandalone: true, selector: "f-code-group", host: { classAttribute: "f-code-group" }, ngImport: i0, template: "<f-code-group-tabs [data]=\"data()\" (tabIndex)=\"onTabClick($event)\"/>\n<div class=\"f-code-group-body\">\n @for (data of data(); track data) {\n @let isExampleView = data.type === containerType.EXAMPLE;\n @let display = $index === index() ? 'block' : 'none';\n @if (isExampleView) {\n <f-example-view [style.display]=\"display\" [data]=\"data\"/>\n } @else {\n <f-code-view [style.display]=\"display\" [data]=\"data\"/>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: FCodeGroupTabsComponent, selector: "f-code-group-tabs", inputs: ["data"], outputs: ["tabIndex"] }, { kind: "component", type: FCodeViewComponent, selector: "f-code-view", inputs: ["data"] }, { kind: "component", type: FExampleViewComponent, selector: "f-example-view", inputs: ["data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1913
1520
|
}
|
|
1914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FCodeGroupComponent, decorators: [{
|
|
1915
1522
|
type: Component,
|
|
1916
1523
|
args: [{ selector: 'f-code-group', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1917
1524
|
FCodeGroupTabsComponent,
|
|
@@ -1975,10 +1582,10 @@ class GetPreviousNextPageNavigationRequest {
|
|
|
1975
1582
|
}
|
|
1976
1583
|
|
|
1977
1584
|
class FFooterEditInformationComponent {
|
|
1978
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1979
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1585
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterEditInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1586
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FFooterEditInformationComponent, isStandalone: true, selector: "f-footer-edit-information", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{padding-bottom:18px}@media (min-width: 640px){:host{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1980
1587
|
}
|
|
1981
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterEditInformationComponent, decorators: [{
|
|
1982
1589
|
type: Component,
|
|
1983
1590
|
args: [{ selector: 'f-footer-edit-information', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<ng-content></ng-content>\n", styles: [":host{padding-bottom:18px}@media (min-width: 640px){:host{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}\n"] }]
|
|
1984
1591
|
}] });
|
|
@@ -1986,10 +1593,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1986
1593
|
class FFooterNavigationButtonComponent {
|
|
1987
1594
|
description;
|
|
1988
1595
|
link;
|
|
1989
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1990
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1596
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterNavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1597
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FFooterNavigationButtonComponent, isStandalone: true, selector: "a[f-footer-navigation-button]", inputs: { description: "description", link: "link" }, ngImport: i0, template: "<span class=\"description\">{{ description }}</span>\n<span class=\"page-title\">{{ link.text }}</span>\n", styles: [":host{display:block;border:1px solid var(--divider-color);border-radius:2px;padding:12px 16px;flex:1;max-width:50%;min-width:260px;text-decoration:none!important;cursor:pointer;pointer-events:all}:host:hover{border-color:var(--dark-divider-color)}:host:active{border-color:var(--primary-1)}:host.next{margin-left:auto;text-align:right}:host .description{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--secondary-text);pointer-events:none}:host .page-title{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--primary-1);pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1991
1598
|
}
|
|
1992
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterNavigationButtonComponent, decorators: [{
|
|
1993
1600
|
type: Component,
|
|
1994
1601
|
args: [{ selector: 'a[f-footer-navigation-button]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<span class=\"description\">{{ description }}</span>\n<span class=\"page-title\">{{ link.text }}</span>\n", styles: [":host{display:block;border:1px solid var(--divider-color);border-radius:2px;padding:12px 16px;flex:1;max-width:50%;min-width:260px;text-decoration:none!important;cursor:pointer;pointer-events:all}:host:hover{border-color:var(--dark-divider-color)}:host:active{border-color:var(--primary-1)}:host.next{margin-left:auto;text-align:right}:host .description{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--secondary-text);pointer-events:none}:host .page-title{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--primary-1);pointer-events:none}\n"] }]
|
|
1995
1602
|
}], propDecorators: { description: [{
|
|
@@ -2001,19 +1608,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
2001
1608
|
}] } });
|
|
2002
1609
|
|
|
2003
1610
|
class FFooterNavigationComponent {
|
|
2004
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2005
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1611
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1612
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FFooterNavigationComponent, isStandalone: true, selector: "nav[f-footer-navigation]", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{border-top:1px solid var(--divider-color);padding-top:24px;display:flex;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;gap:16px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2006
1613
|
}
|
|
2007
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1614
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterNavigationComponent, decorators: [{
|
|
2008
1615
|
type: Component,
|
|
2009
1616
|
args: [{ selector: 'nav[f-footer-navigation]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<ng-content></ng-content>\n", styles: [":host{border-top:1px solid var(--divider-color);padding-top:24px;display:flex;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;gap:16px}\n"] }]
|
|
2010
1617
|
}] });
|
|
2011
1618
|
|
|
2012
1619
|
class FFooterEditLinkComponent {
|
|
2013
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2014
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1620
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterEditLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1621
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FFooterEditLinkComponent, isStandalone: true, selector: "a[f-footer-edit-link]", ngImport: i0, template: "<span class=\"edit-link-icon f-icon edit\"></span>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--primary-1);cursor:pointer}:host .edit-link-icon{margin-right:8px;width:14px;height:14px;color:inherit}:host:hover{color:var(--primary-2)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2015
1622
|
}
|
|
2016
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1623
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FFooterEditLinkComponent, decorators: [{
|
|
2017
1624
|
type: Component,
|
|
2018
1625
|
args: [{ selector: 'a[f-footer-edit-link]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<span class=\"edit-link-icon f-icon edit\"></span>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--primary-1);cursor:pointer}:host .edit-link-icon{margin-right:8px;width:14px;height:14px;color:inherit}:host:hover{color:var(--primary-2)}\n"] }]
|
|
2019
1626
|
}] });
|
|
@@ -2024,7 +1631,7 @@ class FMarkdownFooterComponent {
|
|
|
2024
1631
|
_activatedRoute = inject(ActivatedRoute);
|
|
2025
1632
|
_changeDetectorRef = inject(ChangeDetectorRef);
|
|
2026
1633
|
_destroyRef = inject(DestroyRef);
|
|
2027
|
-
|
|
1634
|
+
_window = inject(WINDOW);
|
|
2028
1635
|
navigation = {};
|
|
2029
1636
|
editLink;
|
|
2030
1637
|
previousLink;
|
|
@@ -2065,12 +1672,12 @@ class FMarkdownFooterComponent {
|
|
|
2065
1672
|
return this._activatedRoute.snapshot.url.map((x) => x.path).join('/');
|
|
2066
1673
|
}
|
|
2067
1674
|
_onDocumentClick(event) {
|
|
2068
|
-
new HandleNavigationLinksHandler().handle(new HandleNavigationLinksRequest(event, this.
|
|
1675
|
+
new HandleNavigationLinksHandler().handle(new HandleNavigationLinksRequest(event, this._window, this._router));
|
|
2069
1676
|
}
|
|
2070
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2071
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1677
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMarkdownFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1678
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FMarkdownFooterComponent, isStandalone: true, selector: "footer [f-markdown-footer]", host: { listeners: { "click": "_onDocumentClick($event)" } }, ngImport: i0, template: "@if (editLink) {\n <f-footer-edit-information>\n <a f-footer-edit-link [href]=\"editLink\">\n {{ navigation.editLink?.text || 'Edit this page on GitHub' }}\n </a>\n\n<!-- <f-footer-last-updated>-->\n<!-- Last updated: <span>111</span>-->\n<!-- </f-footer-last-updated>-->\n </f-footer-edit-information>\n}\n\n@if (previousLink || nextLink) {\n <nav f-footer-navigation>\n @if (previousLink) {\n <a f-footer-navigation-button\n [href]=\"previousLink.link\"\n [description]=\"navigation.previous\"\n [link]=\"previousLink\">\n </a>\n }\n @if (nextLink) {\n <a f-footer-navigation-button class=\"next\"\n [href]=\"nextLink.link\"\n [description]=\"navigation.next\"\n [link]=\"nextLink\">\n </a>\n }\n </nav>\n}\n\n", styles: [":host{display:block;margin-top:64px}\n"], dependencies: [{ kind: "component", type: FFooterNavigationComponent, selector: "nav[f-footer-navigation]" }, { kind: "component", type: FFooterNavigationButtonComponent, selector: "a[f-footer-navigation-button]", inputs: ["description", "link"] }, { kind: "component", type: FFooterEditInformationComponent, selector: "f-footer-edit-information" }, { kind: "component", type: FFooterEditLinkComponent, selector: "a[f-footer-edit-link]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2072
1679
|
}
|
|
2073
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1680
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMarkdownFooterComponent, decorators: [{
|
|
2074
1681
|
type: Component,
|
|
2075
1682
|
args: [{ selector: 'footer [f-markdown-footer]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2076
1683
|
FFooterNavigationComponent,
|
|
@@ -2090,7 +1697,7 @@ class FPreviewComponent extends FPreviewBase {
|
|
|
2090
1697
|
_elementReference = inject(ElementRef);
|
|
2091
1698
|
_fEnvironment = inject(DocumentationStore);
|
|
2092
1699
|
_fPreviewGroupService = inject(FPreviewGroupService);
|
|
2093
|
-
|
|
1700
|
+
_themeService = inject(ThemeService, { optional: true });
|
|
2094
1701
|
_router = inject(Router);
|
|
2095
1702
|
_destroyRef = inject(DestroyRef);
|
|
2096
1703
|
item;
|
|
@@ -2113,7 +1720,7 @@ class FPreviewComponent extends FPreviewBase {
|
|
|
2113
1720
|
this._subscribeToThemeChanges();
|
|
2114
1721
|
}
|
|
2115
1722
|
_subscribeToThemeChanges() {
|
|
2116
|
-
this.
|
|
1723
|
+
this._themeService?.theme$.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => this._updateTheme());
|
|
2117
1724
|
}
|
|
2118
1725
|
ngOnInit() {
|
|
2119
1726
|
this._fPreviewGroupService.add(this);
|
|
@@ -2125,7 +1732,7 @@ class FPreviewComponent extends FPreviewBase {
|
|
|
2125
1732
|
return group.items.find((x) => x.link === this.item);
|
|
2126
1733
|
}
|
|
2127
1734
|
_updateTheme() {
|
|
2128
|
-
this.src.set(this.
|
|
1735
|
+
this.src.set(this._themeService?.getPreferredTheme() === 'dark' ? this.viewModel?.image_dark : this.viewModel?.image);
|
|
2129
1736
|
if (!this.src()) {
|
|
2130
1737
|
this.src.set(this.viewModel?.image);
|
|
2131
1738
|
}
|
|
@@ -2145,10 +1752,10 @@ class FPreviewComponent extends FPreviewBase {
|
|
|
2145
1752
|
ngOnDestroy() {
|
|
2146
1753
|
this._fPreviewGroupService.remove(this);
|
|
2147
1754
|
}
|
|
2148
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2149
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1755
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1756
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FPreviewComponent, isStandalone: true, selector: "a[f-preview]", host: { properties: { "attr.href": "url", "attr.title": "viewModel?.text" } }, usesInheritance: true, ngImport: i0, template: "@if (viewModel) {\n <img [src]=\"src()\" [alt]=\"viewModel.description\" [title]=\"viewModel.text\">\n <div class=\"title\">\n {{ viewModel.text }}\n @if (viewModel.badge) {\n <span class=\"f-badge {{viewModel.badge.type}}\">{{ viewModel.badge.text }}</span>\n }\n </div>\n <div class=\"description\">{{ viewModel.description }}</div>\n}\n\n\n\n", styles: [":host{display:block;border-radius:4px;background-color:var(--soft-background);padding:24px;width:100%;text-decoration:none!important;color:inherit!important;line-height:24px;font-size:14px;cursor:pointer}:host:hover img{transform:scale(1.1)}:host img{display:block;margin-bottom:16px;width:100%;height:180px;border-radius:4px;object-fit:cover;transition:transform .3s}:host .title{line-height:inherit;font-weight:600;text-transform:uppercase;color:var(--primary-text);display:flex;justify-content:space-between;align-items:center}:host .description{margin:8px 0!important;line-height:inherit;color:var(--secondary-text);width:100%;word-wrap:break-word;white-space:normal;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}@media (min-width: 640px){:host{width:calc((100% - 32px)/2)}}.f-badge{padding:0 6px;line-height:14px;text-transform:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2150
1757
|
}
|
|
2151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewComponent, decorators: [{
|
|
2152
1759
|
type: Component,
|
|
2153
1760
|
args: [{ selector: 'a[f-preview]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2154
1761
|
'[attr.href]': 'url',
|
|
@@ -2191,10 +1798,10 @@ class FPreviewGroupFiltersComponent {
|
|
|
2191
1798
|
this.isSortByDateChecked.set(event);
|
|
2192
1799
|
this._fPreviewGroupService.sortByDate(event);
|
|
2193
1800
|
}
|
|
2194
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2195
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1801
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewGroupFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1802
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FPreviewGroupFiltersComponent, isStandalone: true, selector: "div[f-preview-group-filters]", ngImport: i0, template: "@if (filters().length) {\n <div class=\"filters-row\">\n @for (filter of filters(); track filter) {\n <f-radio-button [checked]=\"activeFilter() === filter\"\n (change)=\"onFilterChange(filter)\">{{ filter | titlecase }}\n </f-radio-button>\n }\n <div class=\"flex-space\"></div>\n <f-checkbox [checked]=\"isSortByDateChecked()\" (change)=\"onSortByDateChange($event)\">Sort by Newness</f-checkbox>\n </div>\n}\n\n\n\n", styles: [".filters-row{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;width:100%;padding-top:20px;gap:8px}\n"], dependencies: [{ kind: "component", type: FCheckboxComponent, selector: "f-checkbox", inputs: ["id", "checked"], outputs: ["change"] }, { kind: "component", type: FRadioButtonComponent, selector: "f-radio-button", inputs: ["id", "checked"], outputs: ["change"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2196
1803
|
}
|
|
2197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewGroupFiltersComponent, decorators: [{
|
|
2198
1805
|
type: Component,
|
|
2199
1806
|
args: [{ selector: 'div[f-preview-group-filters]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2200
1807
|
FCheckboxComponent,
|
|
@@ -2267,19 +1874,19 @@ class FPreviewGroupService {
|
|
|
2267
1874
|
x.hostElement.style.display = 'block';
|
|
2268
1875
|
});
|
|
2269
1876
|
}
|
|
2270
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2271
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1877
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1878
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewGroupService });
|
|
2272
1879
|
}
|
|
2273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FPreviewGroupService, decorators: [{
|
|
2274
1881
|
type: Injectable
|
|
2275
1882
|
}] });
|
|
2276
1883
|
|
|
2277
1884
|
class TableOfContentItemsComponent {
|
|
2278
1885
|
items = input.required();
|
|
2279
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2280
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1886
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TableOfContentItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1887
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: TableOfContentItemsComponent, isStandalone: true, selector: "ul[f-table-of-content-items]", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@for (item of items(); track item.hash) {\n <li [class.active]=\"item.isActive\"><a class=\"text-ellipsis\" [href]=\"item.hash\">{{ item.title }}</a></li>\n @if (item.children) {\n <ul f-table-of-content-items [items]=\"item.children\"></ul>\n }\n}\n", styles: [":host{list-style:none;margin:0;padding:0}:host li{overflow-wrap:break-word;color:var(--secondary-text);max-width:180px}:host li a{display:block;line-height:var(--on-page-navigation-item-height);font-size:14px;color:inherit;font-weight:400}:host li.active{color:var(--primary-text)}:host li+ul{padding:0 16px}\n"], dependencies: [{ kind: "component", type: TableOfContentItemsComponent, selector: "ul[f-table-of-content-items]", inputs: ["items"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
2281
1888
|
}
|
|
2282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1889
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TableOfContentItemsComponent, decorators: [{
|
|
2283
1890
|
type: Component,
|
|
2284
1891
|
args: [{ selector: 'ul[f-table-of-content-items]', changeDetection: ChangeDetectionStrategy.Default, standalone: true, template: "@for (item of items(); track item.hash) {\n <li [class.active]=\"item.isActive\"><a class=\"text-ellipsis\" [href]=\"item.hash\">{{ item.title }}</a></li>\n @if (item.children) {\n <ul f-table-of-content-items [items]=\"item.children\"></ul>\n }\n}\n", styles: [":host{list-style:none;margin:0;padding:0}:host li{overflow-wrap:break-word;color:var(--secondary-text);max-width:180px}:host li a{display:block;line-height:var(--on-page-navigation-item-height);font-size:14px;color:inherit;font-weight:400}:host li.active{color:var(--primary-text)}:host li+ul{padding:0 16px}\n"] }]
|
|
2285
1892
|
}] });
|
|
@@ -2334,12 +1941,14 @@ class GetAbsoluteTopToContainerRequest {
|
|
|
2334
1941
|
|
|
2335
1942
|
class CalculateHashFromScrollPositionAndActivateTocHandler {
|
|
2336
1943
|
_injector;
|
|
2337
|
-
|
|
1944
|
+
_docElement;
|
|
1945
|
+
_window;
|
|
2338
1946
|
_provider;
|
|
2339
1947
|
_scrollableContainer;
|
|
2340
1948
|
constructor(_injector) {
|
|
2341
1949
|
this._injector = _injector;
|
|
2342
|
-
this.
|
|
1950
|
+
this._docElement = _injector.get(DOCUMENT_ELEMENT);
|
|
1951
|
+
this._window = _injector.get(WINDOW);
|
|
2343
1952
|
this._provider = _injector.get(DocumentationStore);
|
|
2344
1953
|
this._scrollableContainer = _injector.get(SCROLLABLE_CONTAINER);
|
|
2345
1954
|
}
|
|
@@ -2361,8 +1970,8 @@ class CalculateHashFromScrollPositionAndActivateTocHandler {
|
|
|
2361
1970
|
return this._scrollableContainer.htmlElement.scrollTop + this._getHeaderHeight();
|
|
2362
1971
|
}
|
|
2363
1972
|
_getHeaderHeight() {
|
|
2364
|
-
return parseInt(this.
|
|
2365
|
-
.getComputedStyle(this.
|
|
1973
|
+
return parseInt(this._window
|
|
1974
|
+
.getComputedStyle(this._docElement)
|
|
2366
1975
|
.getPropertyValue('--header-height'), 10);
|
|
2367
1976
|
}
|
|
2368
1977
|
_calculateElementsTopPositions() {
|
|
@@ -2593,9 +2202,9 @@ const SCROLLABLE_CONTAINER = new InjectionToken('SCROLLABLE_CONTAINER');
|
|
|
2593
2202
|
|
|
2594
2203
|
class TableOfContentComponent {
|
|
2595
2204
|
_elementRef = inject((ElementRef));
|
|
2596
|
-
_browser = inject(BrowserService);
|
|
2597
2205
|
_provider = inject(DocumentationStore);
|
|
2598
2206
|
_injector = inject(Injector);
|
|
2207
|
+
_window = inject(WINDOW);
|
|
2599
2208
|
tocData = computed(() => {
|
|
2600
2209
|
return this._provider.tocData();
|
|
2601
2210
|
});
|
|
@@ -2609,7 +2218,7 @@ class TableOfContentComponent {
|
|
|
2609
2218
|
return (activeIndex + 1) * itemHeight + itemHeight / 4;
|
|
2610
2219
|
}
|
|
2611
2220
|
_getComputedStyle(element) {
|
|
2612
|
-
return this.
|
|
2221
|
+
return this._window.getComputedStyle(element);
|
|
2613
2222
|
}
|
|
2614
2223
|
_onDocumentClick(event) {
|
|
2615
2224
|
const target = event.target;
|
|
@@ -2622,10 +2231,10 @@ class TableOfContentComponent {
|
|
|
2622
2231
|
new ActivateTocByHashHandler(this._injector).handle(new ActivateTocByHashRequest(hash));
|
|
2623
2232
|
new ScrollToElementInContainerHandler(this._injector).handle(new ScrollToElementInContainerRequest(hash));
|
|
2624
2233
|
}
|
|
2625
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2626
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2234
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TableOfContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2235
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: TableOfContentComponent, isStandalone: true, selector: "aside[f-table-of-content]", host: { listeners: { "click": "_onDocumentClick($event)" } }, ngImport: i0, template: "@let data = tocData();\n@if (data) {\n <div class=\"title\">{{ title || 'In this article' }}</div>\n <ul f-table-of-content-items [items]=\"data.tree\"></ul>\n <div class=\"active-marker\" [style.top]=\"activeMarkerPosition() + 'px'\"></div>\n}\n\n", styles: [":host{--on-page-navigation-item-height: 32px;display:none;padding-left:16px;border-left:1px solid var(--divider-color);font-size:13px;font-weight:500;position:relative}:host .title{line-height:32px;font-size:14px;font-weight:600}@media (min-width: 1280px){:host{display:block;width:var(--on-page-navigation-width);position:fixed;top:calc(var(--header-height) + 48px);right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 3)}}:host .active-marker{position:absolute;top:0;left:0;width:2px;height:calc(var(--on-page-navigation-item-height) / 2);border-radius:2px;background-color:var(--primary-1);transition:top .25s cubic-bezier(0,1,.5,1),opacity .25s}\n"], dependencies: [{ kind: "component", type: TableOfContentItemsComponent, selector: "ul[f-table-of-content-items]", inputs: ["items"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2627
2236
|
}
|
|
2628
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TableOfContentComponent, decorators: [{
|
|
2629
2238
|
type: Component,
|
|
2630
2239
|
args: [{ selector: 'aside[f-table-of-content]', standalone: true, imports: [TableOfContentItemsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let data = tocData();\n@if (data) {\n <div class=\"title\">{{ title || 'In this article' }}</div>\n <ul f-table-of-content-items [items]=\"data.tree\"></ul>\n <div class=\"active-marker\" [style.top]=\"activeMarkerPosition() + 'px'\"></div>\n}\n\n", styles: [":host{--on-page-navigation-item-height: 32px;display:none;padding-left:16px;border-left:1px solid var(--divider-color);font-size:13px;font-weight:500;position:relative}:host .title{line-height:32px;font-size:14px;font-weight:600}@media (min-width: 1280px){:host{display:block;width:var(--on-page-navigation-width);position:fixed;top:calc(var(--header-height) + 48px);right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 3)}}:host .active-marker{position:absolute;top:0;left:0;width:2px;height:calc(var(--on-page-navigation-item-height) / 2);border-radius:2px;background-color:var(--primary-1);transition:top .25s cubic-bezier(0,1,.5,1),opacity .25s}\n"] }]
|
|
2631
2240
|
}], propDecorators: { _onDocumentClick: [{
|
|
@@ -2645,15 +2254,15 @@ class ScrollableContainerComponent {
|
|
|
2645
2254
|
_calculateHashAndActivate() {
|
|
2646
2255
|
new CalculateHashFromScrollPositionAndActivateTocHandler(this._injector).handle();
|
|
2647
2256
|
}
|
|
2648
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2649
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2257
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ScrollableContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2258
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: ScrollableContainerComponent, isStandalone: true, selector: "f-scrollable-container", providers: [
|
|
2650
2259
|
{
|
|
2651
2260
|
provide: SCROLLABLE_CONTAINER,
|
|
2652
2261
|
useExisting: forwardRef(() => ScrollableContainerComponent),
|
|
2653
2262
|
},
|
|
2654
2263
|
], ngImport: i0, template: "<ng-content></ng-content>\n<aside f-table-of-content></aside>\n\n\n", styles: [":host{position:relative;width:100%;height:100%;overflow:hidden;overflow-y:auto}\n"], dependencies: [{ kind: "component", type: TableOfContentComponent, selector: "aside[f-table-of-content]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2655
2264
|
}
|
|
2656
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: ScrollableContainerComponent, decorators: [{
|
|
2657
2266
|
type: Component,
|
|
2658
2267
|
args: [{ selector: 'f-scrollable-container', standalone: true, providers: [
|
|
2659
2268
|
{
|
|
@@ -2672,7 +2281,8 @@ class FMarkdownRendererComponent {
|
|
|
2672
2281
|
_activatedRoute = inject(ActivatedRoute);
|
|
2673
2282
|
_destroyRef = inject(DestroyRef);
|
|
2674
2283
|
_injector = inject(Injector);
|
|
2675
|
-
|
|
2284
|
+
_isBrowser = inject(IS_BROWSER_PLATFORM);
|
|
2285
|
+
_window = inject(WINDOW);
|
|
2676
2286
|
_markdown = inject(MarkdownService);
|
|
2677
2287
|
_provider = inject(DocumentationStore);
|
|
2678
2288
|
get _markdownPath() {
|
|
@@ -2693,7 +2303,7 @@ class FMarkdownRendererComponent {
|
|
|
2693
2303
|
_updateRenderDependencies() {
|
|
2694
2304
|
effect(() => {
|
|
2695
2305
|
const html = this.value();
|
|
2696
|
-
if (html && this.
|
|
2306
|
+
if (html && this._isBrowser) {
|
|
2697
2307
|
untracked(() => {
|
|
2698
2308
|
raf(() => {
|
|
2699
2309
|
new RenderDynamicComponentsHandler(this._injector).handle(new RenderDynamicComponentsRequest(this._hostElement));
|
|
@@ -2704,17 +2314,17 @@ class FMarkdownRendererComponent {
|
|
|
2704
2314
|
}, { injector: this._injector });
|
|
2705
2315
|
}
|
|
2706
2316
|
_onDocumentClick(event) {
|
|
2707
|
-
new HandleNavigationLinksHandler().handle(new HandleNavigationLinksRequest(event, this.
|
|
2317
|
+
new HandleNavigationLinksHandler().handle(new HandleNavigationLinksRequest(event, this._window, this._router));
|
|
2708
2318
|
}
|
|
2709
2319
|
ngOnDestroy() {
|
|
2710
2320
|
this._provider.disposeDComponents();
|
|
2711
2321
|
}
|
|
2712
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2713
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2322
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMarkdownRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2323
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FMarkdownRendererComponent, isStandalone: true, selector: "f-markdown-renderer", host: { listeners: { "click": "_onDocumentClick($event)" }, classAttribute: "m-render" }, providers: [
|
|
2714
2324
|
MarkdownService,
|
|
2715
2325
|
], ngImport: i0, template: "<div [innerHTML]=\"value()\"></div>\n@if (value()) {\n <footer f-markdown-footer></footer>\n}\n\n", styles: [":host{display:block;width:100%}@media (min-width: 1280px){:host{width:calc(100% - var(--on-page-navigation-width) - var(--page-padding))}}\n"], dependencies: [{ kind: "component", type: FMarkdownFooterComponent, selector: "footer [f-markdown-footer]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2716
2326
|
}
|
|
2717
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2327
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FMarkdownRendererComponent, decorators: [{
|
|
2718
2328
|
type: Component,
|
|
2719
2329
|
args: [{ selector: 'f-markdown-renderer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
2720
2330
|
MarkdownService,
|
|
@@ -2730,10 +2340,10 @@ const raf = typeof requestAnimationFrame === 'function'
|
|
|
2730
2340
|
: (fn) => setTimeout(fn);
|
|
2731
2341
|
|
|
2732
2342
|
class MarkdownContainerComponent {
|
|
2733
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2734
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2343
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: MarkdownContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2344
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: MarkdownContainerComponent, isStandalone: true, selector: "f-markdown-container", host: { attributes: { "ngSkipHydration": "" } }, ngImport: i0, template: "<f-markdown-renderer></f-markdown-renderer>\n\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}:host [fMarkdownRenderer]{width:100%}@media (min-width: 1280px){:host{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 4)}:host [fMarkdownRenderer]{width:calc(100% - var(--on-page-navigation-width) - var(--page-padding))}}\n"], dependencies: [{ kind: "component", type: FMarkdownRendererComponent, selector: "f-markdown-renderer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2735
2345
|
}
|
|
2736
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: MarkdownContainerComponent, decorators: [{
|
|
2737
2347
|
type: Component,
|
|
2738
2348
|
args: [{ selector: 'f-markdown-container', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2739
2349
|
FMarkdownRendererComponent,
|
|
@@ -2765,9 +2375,6 @@ var index$2 = /*#__PURE__*/Object.freeze({
|
|
|
2765
2375
|
GetPreviousNextPageNavigationRequest: GetPreviousNextPageNavigationRequest,
|
|
2766
2376
|
GetPreviousNextPageNavigationResponse: GetPreviousNextPageNavigationResponse,
|
|
2767
2377
|
HighlightComponent: HighlightComponent,
|
|
2768
|
-
HighlightService: HighlightService,
|
|
2769
|
-
LANGUAGES: LANGUAGES,
|
|
2770
|
-
MarkCodeFocusedBlocksPostProcessor: MarkCodeFocusedBlocksPostProcessor,
|
|
2771
2378
|
MarkdownContainerComponent: MarkdownContainerComponent,
|
|
2772
2379
|
MarkdownService: MarkdownService,
|
|
2773
2380
|
ParseAlerts: ParseAlerts,
|
|
@@ -2792,7 +2399,15 @@ class DocumentationRootComponent {
|
|
|
2792
2399
|
popover = inject(PopoverService).message;
|
|
2793
2400
|
_metaService = inject(FMetaService);
|
|
2794
2401
|
_destroyRef = inject(DestroyRef);
|
|
2402
|
+
_gTagService = inject(GTagService, { optional: true });
|
|
2403
|
+
_themeService = inject(ThemeService, { optional: true });
|
|
2404
|
+
isBrowser = inject(IS_BROWSER_PLATFORM);
|
|
2795
2405
|
ngOnInit() {
|
|
2406
|
+
if (!this.isBrowser) {
|
|
2407
|
+
return;
|
|
2408
|
+
}
|
|
2409
|
+
this._themeService?.initialize();
|
|
2410
|
+
this._gTagService?.initialize();
|
|
2796
2411
|
this._metaService.changes().pipe(takeUntilDestroyed(this._destroyRef))
|
|
2797
2412
|
.subscribe();
|
|
2798
2413
|
}
|
|
@@ -2803,8 +2418,9 @@ class DocumentationRootComponent {
|
|
|
2803
2418
|
this._metaService.dispose();
|
|
2804
2419
|
// Cleanup logic if needed
|
|
2805
2420
|
}
|
|
2806
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2807
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2421
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DocumentationRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2422
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DocumentationRootComponent, isStandalone: true, selector: "documentation-root", providers: [
|
|
2423
|
+
HighlightService,
|
|
2808
2424
|
DocumentationStore,
|
|
2809
2425
|
FMetaService,
|
|
2810
2426
|
{
|
|
@@ -2824,37 +2440,39 @@ class DocumentationRootComponent {
|
|
|
2824
2440
|
provide: TOGGLE_NAVIGATION_COMPONENT,
|
|
2825
2441
|
useExisting: DocumentationRootComponent,
|
|
2826
2442
|
},
|
|
2827
|
-
], ngImport: i0, template: "<f-navigation-panel [class.visible]=\"isNavigationVisible()\"></f-navigation-panel>\n<div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n\n<f-scrollable-container>\n <f-header></f-header>\n <router-outlet></router-outlet>\n</f-scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:flex-start;height:100%;gap:5px}.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);box-shadow:var(--shadow-3);color:var(--primary-text);font-size:14px;padding:4px 8px;border-radius:4px;z-index:var(--z-index-popover);opacity:1}\n"], dependencies: [{ kind: "component", type: NavigationPanelComponent, selector: "f-navigation-panel" }, { kind: "component", type: ScrollableContainerComponent, selector: "f-scrollable-container" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: HeaderComponent, selector: "f-header" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2828
|
-
}
|
|
2829
|
-
i0.ɵɵ
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2443
|
+
], ngImport: i0, template: "<f-navigation-panel [class.visible]=\"isNavigationVisible()\"></f-navigation-panel>\n<div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n\n<f-scrollable-container>\n <f-header></f-header>\n <router-outlet></router-outlet>\n</f-scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:flex-start;height:100%;gap:5px}.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);box-shadow:var(--shadow-3);color:var(--primary-text);font-size:14px;padding:4px 8px;border-radius:4px;z-index:var(--z-index-popover);opacity:1}\n"], dependencies: [{ kind: "component", type: NavigationPanelComponent, selector: "f-navigation-panel" }, { kind: "component", type: ScrollableContainerComponent, selector: "f-scrollable-container" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: HeaderComponent, selector: "f-header" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)]] });
|
|
2444
|
+
}
|
|
2445
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.11", ngImport: i0, type: DocumentationRootComponent, resolveDeferredDeps: () => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)], resolveMetadata: CookiePopupComponent => ({ decorators: [{
|
|
2446
|
+
type: Component,
|
|
2447
|
+
args: [{ selector: 'documentation-root', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
2448
|
+
HighlightService,
|
|
2449
|
+
DocumentationStore,
|
|
2450
|
+
FMetaService,
|
|
2451
|
+
{
|
|
2452
|
+
provide: F_PREVIEW_NAVIGATION_PROVIDER,
|
|
2453
|
+
useExisting: DocumentationStore,
|
|
2454
|
+
},
|
|
2455
|
+
{
|
|
2456
|
+
provide: F_SOCIAL_LINKS_PROVIDER,
|
|
2457
|
+
useExisting: DocumentationStore,
|
|
2458
|
+
},
|
|
2459
|
+
{
|
|
2460
|
+
provide: HEADER_CONFIGURATION_STORE,
|
|
2461
|
+
useExisting: DocumentationStore,
|
|
2462
|
+
},
|
|
2463
|
+
FPreviewGroupService,
|
|
2464
|
+
{
|
|
2465
|
+
provide: TOGGLE_NAVIGATION_COMPONENT,
|
|
2466
|
+
useExisting: DocumentationRootComponent,
|
|
2467
|
+
},
|
|
2468
|
+
], imports: [
|
|
2469
|
+
NavigationPanelComponent,
|
|
2470
|
+
ScrollableContainerComponent,
|
|
2471
|
+
RouterOutlet,
|
|
2472
|
+
HeaderComponent,
|
|
2473
|
+
CookiePopupComponent,
|
|
2474
|
+
], template: "<f-navigation-panel [class.visible]=\"isNavigationVisible()\"></f-navigation-panel>\n<div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n\n<f-scrollable-container>\n <f-header></f-header>\n <router-outlet></router-outlet>\n</f-scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:flex-start;height:100%;gap:5px}.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);box-shadow:var(--shadow-3);color:var(--primary-text);font-size:14px;padding:4px 8px;border-radius:4px;z-index:var(--z-index-popover);opacity:1}\n"] }]
|
|
2475
|
+
}], ctorParameters: null, propDecorators: null }) });
|
|
2858
2476
|
|
|
2859
2477
|
const DOCUMENTATION_ROUTES = [
|
|
2860
2478
|
{
|
|
@@ -2883,11 +2501,9 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
|
2883
2501
|
DocumentationStore: DocumentationStore,
|
|
2884
2502
|
get EMarkdownContainerType () { return EMarkdownContainerType; },
|
|
2885
2503
|
get EParsedContainerType () { return EParsedContainerType; },
|
|
2886
|
-
FAnalyticsService: FAnalyticsService,
|
|
2887
2504
|
FCodeGroupComponent: FCodeGroupComponent,
|
|
2888
2505
|
FCodeGroupTabsComponent: FCodeGroupTabsComponent,
|
|
2889
2506
|
FCodeViewComponent: FCodeViewComponent,
|
|
2890
|
-
FCookiePopupComponent: FCookiePopupComponent,
|
|
2891
2507
|
FExampleViewComponent: FExampleViewComponent,
|
|
2892
2508
|
FFooterEditInformationComponent: FFooterEditInformationComponent,
|
|
2893
2509
|
FFooterNavigationButtonComponent: FFooterNavigationButtonComponent,
|
|
@@ -2901,7 +2517,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
|
2901
2517
|
FPreviewComponent: FPreviewComponent,
|
|
2902
2518
|
FPreviewGroupFiltersComponent: FPreviewGroupFiltersComponent,
|
|
2903
2519
|
FPreviewGroupService: FPreviewGroupService,
|
|
2904
|
-
F_ACCEPT_COOKIES_KEY: F_ACCEPT_COOKIES_KEY,
|
|
2905
2520
|
F_PREVIEW_NAVIGATION_PROVIDER: F_PREVIEW_NAVIGATION_PROVIDER,
|
|
2906
2521
|
GetAbsoluteTopToContainerHandler: GetAbsoluteTopToContainerHandler,
|
|
2907
2522
|
GetAbsoluteTopToContainerRequest: GetAbsoluteTopToContainerRequest,
|
|
@@ -2913,9 +2528,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
|
2913
2528
|
HandleNavigationLinksRequest: HandleNavigationLinksRequest,
|
|
2914
2529
|
HeaderComponent: HeaderComponent,
|
|
2915
2530
|
HighlightComponent: HighlightComponent,
|
|
2916
|
-
HighlightService: HighlightService,
|
|
2917
|
-
LANGUAGES: LANGUAGES,
|
|
2918
|
-
MarkCodeFocusedBlocksPostProcessor: MarkCodeFocusedBlocksPostProcessor,
|
|
2919
2531
|
MarkdownContainerComponent: MarkdownContainerComponent,
|
|
2920
2532
|
MarkdownService: MarkdownService,
|
|
2921
2533
|
NavigationGroupComponent: NavigationGroupComponent,
|
|
@@ -2955,8 +2567,7 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
|
2955
2567
|
provideDocumentationMeta: provideDocumentationMeta,
|
|
2956
2568
|
provideFooterNavigation: provideFooterNavigation,
|
|
2957
2569
|
provideNavigation: provideNavigation,
|
|
2958
|
-
provideTocData: provideTocData
|
|
2959
|
-
setCookieConsent: setCookieConsent
|
|
2570
|
+
provideTocData: provideTocData
|
|
2960
2571
|
});
|
|
2961
2572
|
|
|
2962
2573
|
function provideBackground(background) {
|
|
@@ -3035,19 +2646,19 @@ class HomeStore {
|
|
|
3035
2646
|
getHeader() {
|
|
3036
2647
|
return this._configuration.header;
|
|
3037
2648
|
}
|
|
3038
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3039
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2649
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HomeStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2650
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HomeStore });
|
|
3040
2651
|
}
|
|
3041
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2652
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HomeStore, decorators: [{
|
|
3042
2653
|
type: Injectable
|
|
3043
2654
|
}] });
|
|
3044
2655
|
|
|
3045
2656
|
class FHomePageButtonsRowComponent {
|
|
3046
2657
|
viewModel = inject(HomeStore).getButtons();
|
|
3047
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3048
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2658
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageButtonsRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2659
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FHomePageButtonsRowComponent, isStandalone: true, selector: "f-home-page-buttons-row", host: { properties: { "class.display-none": "!viewModel.length" } }, ngImport: i0, template: "@for (button of viewModel; track button.text) {\n @if (button.routerLink) {\n <a class=\"f-button\" [class.primary]=\"button.primary\" routerLink=\"{{ button.routerLink }}\">\n @if (button.icon) {\n <span class=\"f-icon {{ button.icon }}\"></span>\n }\n {{ button.text }}\n </a>\n } @else if(button.href) {\n <a class=\"f-button\" [class.primary]=\"button.primary\" href=\"{{ button.href }}\" target=\"_blank\" rel=\"noopener noreferrer\">\n @if (button.icon) {\n <span class=\"f-icon {{ button.icon }}\"></span>\n }\n {{ button.text }}\n </a>\n }\n}\n\n", styles: [":host{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;width:fit-content;margin:0 auto;padding:32px 10px 0}@media (min-width: 960px){:host{margin:0;padding:32px 0 0;justify-content:flex-start}}.f-button{display:flex;align-items:center;gap:6px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
3049
2660
|
}
|
|
3050
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageButtonsRowComponent, decorators: [{
|
|
3051
2662
|
type: Component,
|
|
3052
2663
|
args: [{ selector: 'f-home-page-buttons-row', standalone: true, imports: [
|
|
3053
2664
|
RouterLink,
|
|
@@ -3058,10 +2669,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3058
2669
|
|
|
3059
2670
|
class FHomePageFeaturesComponent {
|
|
3060
2671
|
viewModel = inject(HomeStore).getFeatures();
|
|
3061
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3062
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageFeaturesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2673
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FHomePageFeaturesComponent, isStandalone: true, selector: "f-home-page-features", host: { properties: { "class.display-none": "!viewModel.length" } }, ngImport: i0, template: "<div class=\"feature-list\">\n @for (feature of viewModel; track feature.headline) {\n <div class=\"feature\">\n <h2>{{ feature.headline }}</h2>\n <p>{{ feature.description }}</p>\n </div>\n }\n</div>\n\n", styles: [":host{margin-top:64px;margin-bottom:64px;width:100%;display:block;padding:0 24px}:host .feature-list{margin:0 auto;display:flex;flex-wrap:wrap;gap:16px;max-width:1248px;pointer-events:none}:host .feature{width:100%;border-radius:4px;background-color:var(--soft-background);display:flex;flex-direction:column;padding:24px;pointer-events:all}:host .feature h2{margin:0;line-height:24px;font-size:16px;font-weight:600}:host .feature p{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--secondary-text)}@media (min-width: 640px){:host{padding:0 48px}:host .feature{width:calc(50% - 12px)}}@media (min-width: 960px){:host{padding:0 64px}:host .feature{width:calc(25% - 12px)}}\n"] });
|
|
3063
2674
|
}
|
|
3064
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageFeaturesComponent, decorators: [{
|
|
3065
2676
|
type: Component,
|
|
3066
2677
|
args: [{ selector: 'f-home-page-features', standalone: true, host: {
|
|
3067
2678
|
'[class.display-none]': '!viewModel.length',
|
|
@@ -3070,10 +2681,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3070
2681
|
|
|
3071
2682
|
class FHomePageFooterComponent {
|
|
3072
2683
|
viewModel = inject(HomeStore).getFooter();
|
|
3073
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3074
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2684
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2685
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FHomePageFooterComponent, isStandalone: true, selector: "footer[f-home-page-footer]", ngImport: i0, template: "<div class=\"content\">\n <div class=\"flex-space\"></div>\n <div>\n <div class=\"item\">Created with Foblex <a href=\"https://m-render.foblex.com/\" target=\"_blank\">MRender</a></div>\n <div class=\"item\">{{ viewModel.text }}</div>\n </div>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .content{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .item{line-height:20px;font-size:12px;font-weight:500;color:var(--secondary-text);text-align:right}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"] });
|
|
3075
2686
|
}
|
|
3076
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2687
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageFooterComponent, decorators: [{
|
|
3077
2688
|
type: Component,
|
|
3078
2689
|
args: [{ selector: 'footer[f-home-page-footer]', standalone: true, template: "<div class=\"content\">\n <div class=\"flex-space\"></div>\n <div>\n <div class=\"item\">Created with Foblex <a href=\"https://m-render.foblex.com/\" target=\"_blank\">MRender</a></div>\n <div class=\"item\">{{ viewModel.text }}</div>\n </div>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .content{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .item{line-height:20px;font-size:12px;font-weight:500;color:var(--secondary-text);text-align:right}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"] }]
|
|
3079
2690
|
}] });
|
|
@@ -3081,22 +2692,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3081
2692
|
class FHomePageHeaderComponent {
|
|
3082
2693
|
logo = inject(HomeStore).getLogo();
|
|
3083
2694
|
title = inject(HomeStore).getTitle();
|
|
3084
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3085
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2695
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2696
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FHomePageHeaderComponent, isStandalone: true, selector: "header[f-home-page-header]", ngImport: i0, template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"\" aria-label=\"Home\">\n <img [src]=\"logo\" class=\"logo\" alt=\"{{ title }} Logo\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title }}</span>\n </a>\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .logo-link{display:flex;align-items:center;text-decoration:none}:host .content{display:flex;justify-content:flex-start;align-items:center;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .logo{margin-right:8px}:host .title{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;font-size:16px;font-weight:600;color:var(--primary-text)}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"], dependencies: [{ kind: "component", type: ThemeButtonComponent, selector: "button[theme-button]" }] });
|
|
3086
2697
|
}
|
|
3087
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageHeaderComponent, decorators: [{
|
|
3088
2699
|
type: Component,
|
|
3089
2700
|
args: [{ selector: 'header[f-home-page-header]', standalone: true, imports: [
|
|
3090
|
-
|
|
3091
|
-
], template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"
|
|
2701
|
+
ThemeButtonComponent,
|
|
2702
|
+
], template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"\" aria-label=\"Home\">\n <img [src]=\"logo\" class=\"logo\" alt=\"{{ title }} Logo\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title }}</span>\n </a>\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .logo-link{display:flex;align-items:center;text-decoration:none}:host .content{display:flex;justify-content:flex-start;align-items:center;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .logo{margin-right:8px}:host .title{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;font-size:16px;font-weight:600;color:var(--primary-text)}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"] }]
|
|
3092
2703
|
}] });
|
|
3093
2704
|
|
|
3094
2705
|
class FHomePageHeroComponent {
|
|
3095
2706
|
viewModel = inject(HomeStore).getHero();
|
|
3096
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3097
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2707
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageHeroComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2708
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FHomePageHeroComponent, isStandalone: true, selector: "f-home-page-hero", ngImport: i0, template: "<h1>{{ viewModel.headline }}</h1>\n<p class=\"powered\">{{ viewModel.tagline1 }}</p>\n<p class=\"powered\">{{ viewModel.tagline2 }}</p>\n<p class=\"second-description\">{{ viewModel.subDescription }}</p>\n<f-home-page-buttons-row></f-home-page-buttons-row>\n", styles: [":host{display:block;width:100%;padding:0 10px}@media (min-width: 640px){:host{padding:0;width:100%}}@media (min-width: 960px){:host{width:50%}}.powered,h1{letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;width:fit-content;margin:0 auto;text-align:center;white-space:pre-wrap;pointer-events:all}@media (min-width: 640px){.powered,h1{line-height:56px;font-size:48px}}@media (min-width: 960px){.powered,h1{line-height:64px;font-size:56px;margin:0;text-align:left}}h1{background:-webkit-linear-gradient(120deg,#bd34fe 30%,#41d1ff);background-clip:text;color:transparent}.second-description{line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--secondary-text);margin:0 auto;width:fit-content;pointer-events:all;text-align:center;padding:8px 16px 0}@media (min-width: 640px){.second-description{padding-top:12px;line-height:32px;font-size:20px}}@media (min-width: 960px){.second-description{line-height:36px;font-size:24px;margin:0;text-align:left;padding:8px 0 0}}\n"], dependencies: [{ kind: "component", type: FHomePageButtonsRowComponent, selector: "f-home-page-buttons-row" }] });
|
|
3098
2709
|
}
|
|
3099
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageHeroComponent, decorators: [{
|
|
3100
2711
|
type: Component,
|
|
3101
2712
|
args: [{ selector: 'f-home-page-hero', standalone: true, imports: [
|
|
3102
2713
|
FHomePageButtonsRowComponent,
|
|
@@ -3105,10 +2716,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3105
2716
|
|
|
3106
2717
|
class FHomePageMembershipsComponent {
|
|
3107
2718
|
viewModel = inject(HomeStore).getMemberships();
|
|
3108
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2719
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageMembershipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2720
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: FHomePageMembershipsComponent, isStandalone: true, selector: "f-home-page-memberships", host: { properties: { "class.display-none": "!viewModel.length" } }, ngImport: i0, template: "<div class=\"membership-list\">\n @for (membership of viewModel; track membership.id) {\n <div class=\"membership\">\n <h2>{{ membership.name }}</h2>\n <p>{{ membership.description }}</p>\n <div class=\"benefit-list\">\n @for (benefit of membership.benefits; track benefit) {\n <p class=\"benefit\">\u2705 {{ benefit }}</p>\n }\n </div>\n <a class=\"f-button\" [href]=\"membership.buttonRef\">{{ membership.buttonText }}</a>\n </div>\n }\n</div>\n", styles: [":host{margin-top:64px;margin-bottom:64px;width:100%;display:block;padding:0 24px}:host .membership-list{margin:0 auto;display:flex;flex-wrap:wrap;gap:16px;max-width:1248px;pointer-events:none}:host .membership{width:100%;border-radius:4px;background-color:var(--soft-background);display:flex;flex-direction:column;padding:24px;position:relative;pointer-events:all}:host .membership h2{margin:0;line-height:24px;font-size:16px;font-weight:600}:host .membership p{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--secondary-text)}:host .membership .price{color:var(--primary-text);font-size:1.2rem;font-weight:700;padding-top:16px}:host .membership .price span{font-weight:600;color:var(--primary-color)}:host .membership .benefit-list{display:flex;flex-direction:column;padding:16px 0}@media (min-width: 640px){:host{padding:0 48px}:host .membership{width:calc(50% - 12px);min-width:unset}}@media (min-width: 960px){:host{padding:0 64px}:host .membership{width:calc(25% - 12px);min-width:300px}}.ribbon{position:absolute;top:-10px;right:-10px;color:var(--button-primary-text);background-color:var(--button-primary-bg);padding:4px 8px;font-size:.8rem;border-radius:2px}\n"] });
|
|
3110
2721
|
}
|
|
3111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2722
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageMembershipsComponent, decorators: [{
|
|
3112
2723
|
type: Component,
|
|
3113
2724
|
args: [{ selector: 'f-home-page-memberships', standalone: true, host: {
|
|
3114
2725
|
'[class.display-none]': '!viewModel.length',
|
|
@@ -3117,8 +2728,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3117
2728
|
|
|
3118
2729
|
class HomeRootComponent {
|
|
3119
2730
|
_environment = inject(HomeStore);
|
|
2731
|
+
_gTagService = inject(GTagService, { optional: true });
|
|
2732
|
+
_themeService = inject(ThemeService, { optional: true });
|
|
2733
|
+
isBrowser = inject(IS_BROWSER_PLATFORM);
|
|
3120
2734
|
_backgroundContainer;
|
|
3121
2735
|
_heroImageContainer;
|
|
2736
|
+
ngOnInit() {
|
|
2737
|
+
if (!this.isBrowser) {
|
|
2738
|
+
return;
|
|
2739
|
+
}
|
|
2740
|
+
this._themeService?.initialize();
|
|
2741
|
+
this._gTagService?.initialize();
|
|
2742
|
+
}
|
|
3122
2743
|
ngAfterViewInit() {
|
|
3123
2744
|
this._renderImageComponent(this._environment.getImageComponent());
|
|
3124
2745
|
this._renderBackgroundComponent(this._environment.getBackgroundComponent());
|
|
@@ -3142,37 +2763,38 @@ class HomeRootComponent {
|
|
|
3142
2763
|
_requestComponentRedraw(componentRef) {
|
|
3143
2764
|
componentRef.changeDetectorRef.markForCheck();
|
|
3144
2765
|
}
|
|
3145
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2766
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HomeRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2767
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: HomeRootComponent, isStandalone: true, selector: "home-root", providers: [
|
|
3147
2768
|
HomeStore,
|
|
3148
2769
|
{
|
|
3149
2770
|
provide: HEADER_CONFIGURATION_STORE,
|
|
3150
2771
|
useExisting: HomeStore,
|
|
3151
2772
|
},
|
|
3152
|
-
], viewQueries: [{ propertyName: "_backgroundContainer", first: true, predicate: ["backgroundContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_heroImageContainer", first: true, predicate: ["heroImageContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #backgroundContainer></ng-container>\n<header f-home-page-header></header>\n\n<div class=\"body\">\n <div class=\"hero-row\">\n <f-home-page-hero></f-home-page-hero>\n <ng-container #heroImageContainer></ng-container>\n </div>\n <f-home-page-features></f-home-page-features>\n <f-home-page-memberships></f-home-page-memberships>\n</div>\n\n<div class=\"flex-space\"></div>\n<footer f-home-page-footer></footer>\n", styles: [":host{display:flex;flex-direction:column;position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;overflow-y:auto}.body{position:relative;z-index:3;pointer-events:none}@media (min-width: 960px){.body{margin-top:50px}}@media (min-width: 1376px){.body{margin-top:100px}}.hero-row{display:flex;flex-direction:column-reverse;justify-content:space-between;align-items:center;margin:0 auto}@media (min-width: 960px){.hero-row{flex-direction:row;margin-left:64px;margin-right:64px}}@media (min-width: 1376px){.hero-row{flex-direction:row;margin-left:calc(50% - 624px);margin-right:calc(50% - 624px)}}\n"], dependencies: [{ kind: "component", type: FHomePageFooterComponent, selector: "footer[f-home-page-footer]" }, { kind: "component", type: FHomePageHeaderComponent, selector: "header[f-home-page-header]" }, { kind: "component", type: FHomePageFeaturesComponent, selector: "f-home-page-features" }, { kind: "component", type: FHomePageHeroComponent, selector: "f-home-page-hero" }, { kind: "component", type: FHomePageMembershipsComponent, selector: "f-home-page-memberships" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3153
|
-
}
|
|
3154
|
-
i0.ɵɵ
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
2773
|
+
], viewQueries: [{ propertyName: "_backgroundContainer", first: true, predicate: ["backgroundContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_heroImageContainer", first: true, predicate: ["heroImageContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #backgroundContainer></ng-container>\n<header f-home-page-header></header>\n\n<div class=\"body\">\n <div class=\"hero-row\">\n <f-home-page-hero></f-home-page-hero>\n <ng-container #heroImageContainer></ng-container>\n </div>\n <f-home-page-features></f-home-page-features>\n <f-home-page-memberships></f-home-page-memberships>\n</div>\n\n<div class=\"flex-space\"></div>\n<footer f-home-page-footer></footer>\n\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;flex-direction:column;position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;overflow-y:auto}.body{position:relative;z-index:3;pointer-events:none}@media (min-width: 960px){.body{margin-top:50px}}@media (min-width: 1376px){.body{margin-top:100px}}.hero-row{display:flex;flex-direction:column-reverse;justify-content:space-between;align-items:center;margin:0 auto}@media (min-width: 960px){.hero-row{flex-direction:row;margin-left:64px;margin-right:64px}}@media (min-width: 1376px){.hero-row{flex-direction:row;margin-left:calc(50% - 624px);margin-right:calc(50% - 624px)}}\n"], dependencies: [{ kind: "component", type: FHomePageFooterComponent, selector: "footer[f-home-page-footer]" }, { kind: "component", type: FHomePageHeaderComponent, selector: "header[f-home-page-header]" }, { kind: "component", type: FHomePageFeaturesComponent, selector: "f-home-page-features" }, { kind: "component", type: FHomePageHeroComponent, selector: "f-home-page-hero" }, { kind: "component", type: FHomePageMembershipsComponent, selector: "f-home-page-memberships" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)]] });
|
|
2774
|
+
}
|
|
2775
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.11", ngImport: i0, type: HomeRootComponent, resolveDeferredDeps: () => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)], resolveMetadata: CookiePopupComponent => ({ decorators: [{
|
|
2776
|
+
type: Component,
|
|
2777
|
+
args: [{ selector: 'home-root', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
2778
|
+
HomeStore,
|
|
2779
|
+
{
|
|
2780
|
+
provide: HEADER_CONFIGURATION_STORE,
|
|
2781
|
+
useExisting: HomeStore,
|
|
2782
|
+
},
|
|
2783
|
+
], imports: [
|
|
2784
|
+
FHomePageFooterComponent,
|
|
2785
|
+
FHomePageHeaderComponent,
|
|
2786
|
+
FHomePageFeaturesComponent,
|
|
2787
|
+
FHomePageHeroComponent,
|
|
2788
|
+
FHomePageMembershipsComponent,
|
|
2789
|
+
CookiePopupComponent,
|
|
2790
|
+
], template: "<ng-container #backgroundContainer></ng-container>\n<header f-home-page-header></header>\n\n<div class=\"body\">\n <div class=\"hero-row\">\n <f-home-page-hero></f-home-page-hero>\n <ng-container #heroImageContainer></ng-container>\n </div>\n <f-home-page-features></f-home-page-features>\n <f-home-page-memberships></f-home-page-memberships>\n</div>\n\n<div class=\"flex-space\"></div>\n<footer f-home-page-footer></footer>\n\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;flex-direction:column;position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;overflow-y:auto}.body{position:relative;z-index:3;pointer-events:none}@media (min-width: 960px){.body{margin-top:50px}}@media (min-width: 1376px){.body{margin-top:100px}}.hero-row{display:flex;flex-direction:column-reverse;justify-content:space-between;align-items:center;margin:0 auto}@media (min-width: 960px){.hero-row{flex-direction:row;margin-left:64px;margin-right:64px}}@media (min-width: 1376px){.hero-row{flex-direction:row;margin-left:calc(50% - 624px);margin-right:calc(50% - 624px)}}\n"] }]
|
|
2791
|
+
}], ctorParameters: null, propDecorators: { _backgroundContainer: [{
|
|
2792
|
+
type: ViewChild,
|
|
2793
|
+
args: ['backgroundContainer', { read: ViewContainerRef }]
|
|
2794
|
+
}], _heroImageContainer: [{
|
|
2795
|
+
type: ViewChild,
|
|
2796
|
+
args: ['heroImageContainer', { read: ViewContainerRef }]
|
|
2797
|
+
}] } }) });
|
|
3176
2798
|
|
|
3177
2799
|
const HOME_ROUTES = [
|
|
3178
2800
|
{
|
|
@@ -3206,5 +2828,5 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
3206
2828
|
* Generated bundle index. Do not edit.
|
|
3207
2829
|
*/
|
|
3208
2830
|
|
|
3209
|
-
export { ActivateTocByHashHandler, ActivateTocByHashRequest, CalculateHashFromScrollPositionAndActivateTocHandler, CalculateHashFromScrollPositionAndActivateTocRequest, CalculateTableOfContentDataHandler, CalculateTableOfContentDataRequest, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DocumentationRootComponent, DocumentationStore, DropdownMenuComponent, EMarkdownContainerType, EParsedContainerType,
|
|
2831
|
+
export { ActivateTocByHashHandler, ActivateTocByHashRequest, CalculateHashFromScrollPositionAndActivateTocHandler, CalculateHashFromScrollPositionAndActivateTocRequest, CalculateTableOfContentDataHandler, CalculateTableOfContentDataRequest, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DocumentationRootComponent, DocumentationStore, DropdownMenuComponent, EMarkdownContainerType, EParsedContainerType, FCheckboxComponent, FCodeGroupComponent, FCodeGroupTabsComponent, FCodeViewComponent, FExampleViewComponent, FFooterEditInformationComponent, FFooterNavigationButtonComponent, FFooterNavigationComponent, FHomePageButtonsRowComponent, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FHomePageHeroComponent, FHomePageMembershipsComponent, FInsertComponentDirective, FMarkdownFooterComponent, FMarkdownRendererComponent, FMetaService, FNavigationItemComponent, FPreviewBase, FPreviewComponent, FPreviewGroupFiltersComponent, FPreviewGroupService, FRadioButtonComponent, FSocialLinksComponent, F_PREVIEW_NAVIGATION_PROVIDER, F_SOCIAL_LINKS_PROVIDER, GTAG_CONFIG, GTagService, GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, HEADER_CONFIGURATION, HEADER_CONFIGURATION_STORE, HOME_PAGE_CONFIGURATION, HOME_ROUTES, HamburgerButtonComponent, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HeaderComponent, HighlightComponent, HomeRootComponent, HomeStore, InlineMenuComponent, MarkdownContainerComponent, MarkdownService, NavigationGroupComponent, NavigationPanelComponent, NpmVersionComponent, OverflowObserverDirective, ParseAlerts, ParseAngularExampleWithCodeLinks, ParseGroupedCodeItems, ParsePreviewGroup, ParseSingleCodeItem, PopoverService, RIGHT_TOP_OVERLAY_POSITION, RenderDynamicComponentsHandler, RenderDynamicComponentsRequest, SCROLLABLE_CONTAINER, ScrollToElementInContainerHandler, ScrollToElementInContainerRequest, ScrollableContainerComponent, TOGGLE_NAVIGATION_COMPONENT, TableOfContentComponent, TableOfContentData, TableOfContentItemsComponent, ThemeButtonComponent, ThemeService, coerceComponentHeight, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, parseLanguageFromFileExtension, parseSingleBracketText, parseSyntaxLanguage, provide404Markdown, provideBackground, provideComponents, provideDirectory, provideDocumentation, provideDocumentationMeta, provideFooterNavigation, provideGTag, provideHeader, provideHeaderMediaLinks, provideHeaderNavigation, provideHero, provideHomeButtons, provideHomeFeatures, provideHomeFooter, provideHomePage, provideImage, provideLanguage, provideLogo, provideNavigation, provideTheme, provideTitle, provideTocData };
|
|
3210
2832
|
//# sourceMappingURL=foblex-m-render.mjs.map
|