@foblex/m-render 2.6.8 → 2.7.0
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.mjs +139 -189
- package/fesm2022/foblex-m-render.mjs.map +1 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/components/f-markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.handler.d.ts +1 -2
- package/lib/documentation-page/components/markdown-container/f-markdown/f-markdown-renderer.component.d.ts +0 -1
- package/lib/documentation-page/components/markdown-container/f-markdown/highlight/mark-code-focused-blocks.post-processor.d.ts +1 -2
- package/lib/documentation-page/components/navigation-panel/navigation-panel.component.d.ts +1 -0
- 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/activate-toc-by-hash/activate-toc-by-hash.handler.d.ts +3 -5
- 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 +4 -7
- package/lib/documentation-page/components/scrollable-container/domain/calculate-table-of-content-data/calculate-table-of-content-data.handler.d.ts +4 -6
- package/lib/documentation-page/components/scrollable-container/domain/get-absolute-top-to-container/get-absolute-top-to-container.handler.d.ts +3 -5
- package/lib/documentation-page/components/scrollable-container/domain/index.d.ts +0 -1
- package/lib/documentation-page/components/scrollable-container/domain/render-dynamic-components/render-dynamic-components.handler.d.ts +4 -6
- package/lib/documentation-page/components/scrollable-container/domain/scroll-to-element-in-container/scroll-to-element-in-container.handler.d.ts +3 -5
- package/lib/documentation-page/components/scrollable-container/scrollable-container.component.d.ts +1 -1
- package/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.handler.d.ts +1 -2
- package/lib/documentation-page/domain/index.d.ts +0 -1
- package/package.json +1 -3
- package/lib/documentation-page/components/scrollable-container/domain/providers.d.ts +0 -7
- package/lib/documentation-page/domain/providers.d.ts +0 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { EventEmitter, booleanAttribute, HostListener, Input, ViewChild, Output, ChangeDetectionStrategy, Component, input, output, viewChild, InjectionToken, inject, signal, Injectable, Renderer2, ElementRef, NgZone, Directive, ChangeDetectorRef, DestroyRef, computed, ViewContainerRef,
|
2
|
+
import { EventEmitter, booleanAttribute, HostListener, Input, ViewChild, Output, ChangeDetectionStrategy, Component, input, output, viewChild, InjectionToken, inject, signal, Injectable, Renderer2, ElementRef, NgZone, Directive, ChangeDetectorRef, DestroyRef, computed, ViewContainerRef, Injector, forwardRef, effect, untracked } from '@angular/core';
|
3
3
|
import { BrowserService, F_LOCAL_STORAGE } from '@foblex/platform';
|
4
4
|
import { Subject, of, map, from, switchMap, startWith, filter, defer, Observable, EMPTY, debounceTime, fromEvent } from 'rxjs';
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
@@ -8,13 +8,10 @@ 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
10
|
import { DOCUMENT, TitleCasePipe } from '@angular/common';
|
11
|
-
import { deepClone } from '@foblex/utils';
|
12
11
|
import { createHighlighter } from 'shiki';
|
13
12
|
import MarkdownIt from 'markdown-it';
|
14
13
|
import { DomSanitizer } from '@angular/platform-browser';
|
15
14
|
import container from 'markdown-it-container';
|
16
|
-
import { __decorate } from 'tslib';
|
17
|
-
import { FExecutionRegister, FMediator } from '@foblex/mediator';
|
18
15
|
|
19
16
|
let uniqueId$1 = 0;
|
20
17
|
class FCheckboxComponent {
|
@@ -704,10 +701,6 @@ function provideTocData(toC) {
|
|
704
701
|
};
|
705
702
|
}
|
706
703
|
|
707
|
-
const COMMON_FEATURES = [
|
708
|
-
HandleNavigationLinksHandler,
|
709
|
-
];
|
710
|
-
|
711
704
|
class FMetaService {
|
712
705
|
_router = inject(Router);
|
713
706
|
_headTag = inject(FHeadTagService);
|
@@ -878,11 +871,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
878
871
|
type: Component,
|
879
872
|
args: [{ selector: 'f-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
880
873
|
HamburgerButtonComponent,
|
881
|
-
NpmVersionComponent,
|
882
874
|
FSocialLinksComponent,
|
883
875
|
FThemeButtonComponent,
|
884
876
|
InlineMenuComponent,
|
885
|
-
DropdownMenuComponent,
|
886
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 f-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"] }]
|
887
878
|
}] });
|
888
879
|
|
@@ -928,12 +919,15 @@ class NavigationPanelComponent {
|
|
928
919
|
ngOnInit() {
|
929
920
|
const currentPath = this._router.url;
|
930
921
|
const prefix = currentPath.substring(0, currentPath.lastIndexOf('/'));
|
931
|
-
const navigation =
|
922
|
+
const navigation = this._deepClone(this._provider.getNavigation());
|
932
923
|
navigation.forEach((group) => {
|
933
924
|
group.items.forEach((item) => this._normalizeLink(item, prefix));
|
934
925
|
});
|
935
926
|
this.navigation = navigation;
|
936
927
|
}
|
928
|
+
_deepClone(value) {
|
929
|
+
return JSON.parse(JSON.stringify(value));
|
930
|
+
}
|
937
931
|
_normalizeLink(item, prefix) {
|
938
932
|
if (item.link && !this._isExternalLink(item.link)) {
|
939
933
|
item.link = item.link.startsWith('/')
|
@@ -2290,15 +2284,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
2290
2284
|
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"] }]
|
2291
2285
|
}] });
|
2292
2286
|
|
2293
|
-
class
|
2294
|
-
|
2295
|
-
constructor(
|
2296
|
-
this.
|
2287
|
+
class ActivateTocByHashHandler {
|
2288
|
+
_provider;
|
2289
|
+
constructor(_injector) {
|
2290
|
+
this._provider = _injector.get(DocumentationStore);
|
2297
2291
|
}
|
2298
|
-
}
|
2299
|
-
|
2300
|
-
let ActivateTocByHashHandler = class ActivateTocByHashHandler {
|
2301
|
-
_provider = inject(DocumentationStore);
|
2302
2292
|
handle(payload) {
|
2303
2293
|
this._provider.tocData.update((data) => ({
|
2304
2294
|
...data,
|
@@ -2308,70 +2298,20 @@ let ActivateTocByHashHandler = class ActivateTocByHashHandler {
|
|
2308
2298
|
})),
|
2309
2299
|
}));
|
2310
2300
|
}
|
2311
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActivateTocByHashHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
2312
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActivateTocByHashHandler });
|
2313
|
-
};
|
2314
|
-
ActivateTocByHashHandler = __decorate([
|
2315
|
-
FExecutionRegister(ActivateTocByHashRequest)
|
2316
|
-
], ActivateTocByHashHandler);
|
2317
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActivateTocByHashHandler, decorators: [{
|
2318
|
-
type: Injectable
|
2319
|
-
}] });
|
2320
|
-
|
2321
|
-
class TableOfContentComponent {
|
2322
|
-
_elementRef = inject((ElementRef));
|
2323
|
-
_browser = inject(BrowserService);
|
2324
|
-
_provider = inject(DocumentationStore);
|
2325
|
-
_mediator = inject(FMediator);
|
2326
|
-
tocData = computed(() => {
|
2327
|
-
return this._provider.tocData();
|
2328
|
-
});
|
2329
|
-
activeMarkerPosition = computed(() => {
|
2330
|
-
const index = this.tocData()?.flat.findIndex((x) => x.isActive) || 0;
|
2331
|
-
return this._getActiveMarkerPosition(index);
|
2332
|
-
});
|
2333
|
-
title = inject(DocumentationStore).getToC().title;
|
2334
|
-
_getActiveMarkerPosition(activeIndex) {
|
2335
|
-
const itemHeight = parseInt(this._getComputedStyle(this._elementRef.nativeElement).getPropertyValue('--on-page-navigation-item-height'));
|
2336
|
-
return (activeIndex + 1) * itemHeight + itemHeight / 4;
|
2337
|
-
}
|
2338
|
-
_getComputedStyle(element) {
|
2339
|
-
return this._browser.window.getComputedStyle(element);
|
2340
|
-
}
|
2341
|
-
_onDocumentClick(event) {
|
2342
|
-
const target = event.target;
|
2343
|
-
if (target.tagName === 'A') {
|
2344
|
-
event.preventDefault();
|
2345
|
-
this._scrollTo(target.getAttribute('href'));
|
2346
|
-
}
|
2347
|
-
}
|
2348
|
-
_scrollTo(hash) {
|
2349
|
-
this._mediator.execute(new ActivateTocByHashRequest(hash));
|
2350
|
-
this._mediator.execute(new ScrollToElementInContainerRequest(hash));
|
2351
|
-
}
|
2352
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TableOfContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
2353
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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 });
|
2354
|
-
}
|
2355
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TableOfContentComponent, decorators: [{
|
2356
|
-
type: Component,
|
2357
|
-
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"] }]
|
2358
|
-
}], propDecorators: { _onDocumentClick: [{
|
2359
|
-
type: HostListener,
|
2360
|
-
args: ['click', ['$event']]
|
2361
|
-
}] } });
|
2362
|
-
|
2363
|
-
class CalculateHashFromScrollPositionAndActivateTocRequest {
|
2364
2301
|
}
|
2365
2302
|
|
2366
|
-
class
|
2367
|
-
|
2368
|
-
constructor(
|
2369
|
-
this.
|
2303
|
+
class ActivateTocByHashRequest {
|
2304
|
+
hash;
|
2305
|
+
constructor(hash) {
|
2306
|
+
this.hash = hash;
|
2370
2307
|
}
|
2371
2308
|
}
|
2372
2309
|
|
2373
|
-
|
2374
|
-
_scrollableContainer
|
2310
|
+
class GetAbsoluteTopToContainerHandler {
|
2311
|
+
_scrollableContainer;
|
2312
|
+
constructor(_injector) {
|
2313
|
+
this._scrollableContainer = _injector.get(SCROLLABLE_CONTAINER);
|
2314
|
+
}
|
2375
2315
|
handle(request) {
|
2376
2316
|
let element = request.element;
|
2377
2317
|
let result = 0;
|
@@ -2383,21 +2323,26 @@ let GetAbsoluteTopToContainerHandler = class GetAbsoluteTopToContainerHandler {
|
|
2383
2323
|
}
|
2384
2324
|
return result;
|
2385
2325
|
}
|
2386
|
-
|
2387
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: GetAbsoluteTopToContainerHandler });
|
2388
|
-
};
|
2389
|
-
GetAbsoluteTopToContainerHandler = __decorate([
|
2390
|
-
FExecutionRegister(GetAbsoluteTopToContainerRequest)
|
2391
|
-
], GetAbsoluteTopToContainerHandler);
|
2392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: GetAbsoluteTopToContainerHandler, decorators: [{
|
2393
|
-
type: Injectable
|
2394
|
-
}] });
|
2326
|
+
}
|
2395
2327
|
|
2396
|
-
|
2397
|
-
|
2398
|
-
|
2399
|
-
|
2400
|
-
|
2328
|
+
class GetAbsoluteTopToContainerRequest {
|
2329
|
+
element;
|
2330
|
+
constructor(element) {
|
2331
|
+
this.element = element;
|
2332
|
+
}
|
2333
|
+
}
|
2334
|
+
|
2335
|
+
class CalculateHashFromScrollPositionAndActivateTocHandler {
|
2336
|
+
_injector;
|
2337
|
+
_browser;
|
2338
|
+
_provider;
|
2339
|
+
_scrollableContainer;
|
2340
|
+
constructor(_injector) {
|
2341
|
+
this._injector = _injector;
|
2342
|
+
this._browser = _injector.get(BrowserService);
|
2343
|
+
this._provider = _injector.get(DocumentationStore);
|
2344
|
+
this._scrollableContainer = _injector.get(SCROLLABLE_CONTAINER);
|
2345
|
+
}
|
2401
2346
|
handle() {
|
2402
2347
|
let result;
|
2403
2348
|
const containerScrollTop = this._getContainerScrollTop();
|
@@ -2410,7 +2355,7 @@ let CalculateHashFromScrollPositionAndActivateTocHandler = class CalculateHashFr
|
|
2410
2355
|
result = this._findTargetHashByPosition(containerScrollTop, elementsWithTopPosition);
|
2411
2356
|
}
|
2412
2357
|
}
|
2413
|
-
this.
|
2358
|
+
new ActivateTocByHashHandler(this._injector).handle(new ActivateTocByHashRequest(result));
|
2414
2359
|
}
|
2415
2360
|
_getContainerScrollTop() {
|
2416
2361
|
return this._scrollableContainer.htmlElement.scrollTop + this._getHeaderHeight();
|
@@ -2429,7 +2374,7 @@ let CalculateHashFromScrollPositionAndActivateTocHandler = class CalculateHashFr
|
|
2429
2374
|
}).filter((x) => !Number.isNaN(x.top));
|
2430
2375
|
}
|
2431
2376
|
_getAbsoluteTopToContainer(element) {
|
2432
|
-
return this.
|
2377
|
+
return new GetAbsoluteTopToContainerHandler(this._injector).handle(new GetAbsoluteTopToContainerRequest(element));
|
2433
2378
|
}
|
2434
2379
|
_isScrollAtBottom(containerScrollTop) {
|
2435
2380
|
return Math.abs(containerScrollTop - this._getHeaderHeight() + this._scrollableContainer.htmlElement.clientHeight - this._scrollableContainer.htmlElement.scrollHeight) < 1;
|
@@ -2443,21 +2388,9 @@ let CalculateHashFromScrollPositionAndActivateTocHandler = class CalculateHashFr
|
|
2443
2388
|
}
|
2444
2389
|
return result;
|
2445
2390
|
}
|
2446
|
-
|
2447
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculateHashFromScrollPositionAndActivateTocHandler });
|
2448
|
-
};
|
2449
|
-
CalculateHashFromScrollPositionAndActivateTocHandler = __decorate([
|
2450
|
-
FExecutionRegister(CalculateHashFromScrollPositionAndActivateTocRequest)
|
2451
|
-
], CalculateHashFromScrollPositionAndActivateTocHandler);
|
2452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculateHashFromScrollPositionAndActivateTocHandler, decorators: [{
|
2453
|
-
type: Injectable
|
2454
|
-
}] });
|
2391
|
+
}
|
2455
2392
|
|
2456
|
-
class
|
2457
|
-
fMarkdownPage;
|
2458
|
-
constructor(fMarkdownPage) {
|
2459
|
-
this.fMarkdownPage = fMarkdownPage;
|
2460
|
-
}
|
2393
|
+
class CalculateHashFromScrollPositionAndActivateTocRequest {
|
2461
2394
|
}
|
2462
2395
|
|
2463
2396
|
class TableOfContentData {
|
@@ -2469,9 +2402,13 @@ class TableOfContentData {
|
|
2469
2402
|
}
|
2470
2403
|
}
|
2471
2404
|
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2405
|
+
class CalculateTableOfContentDataHandler {
|
2406
|
+
_injector;
|
2407
|
+
_provider;
|
2408
|
+
constructor(_injector) {
|
2409
|
+
this._injector = _injector;
|
2410
|
+
this._provider = _injector.get(DocumentationStore);
|
2411
|
+
}
|
2475
2412
|
handle(request) {
|
2476
2413
|
const flat = [];
|
2477
2414
|
const tree = [];
|
@@ -2482,7 +2419,7 @@ let CalculateTableOfContentDataHandler = class CalculateTableOfContentDataHandle
|
|
2482
2419
|
flat.push(tocItem);
|
2483
2420
|
});
|
2484
2421
|
this._provider.tocData.set(new TableOfContentData(flat, tree));
|
2485
|
-
this.
|
2422
|
+
new CalculateHashFromScrollPositionAndActivateTocHandler(this._injector).handle();
|
2486
2423
|
}
|
2487
2424
|
_getNavigationSelectors(fMarkdownPage, tocRange) {
|
2488
2425
|
if (!tocRange || tocRange.start < 1 || tocRange.end > 6) {
|
@@ -2521,31 +2458,27 @@ let CalculateTableOfContentDataHandler = class CalculateTableOfContentDataHandle
|
|
2521
2458
|
}
|
2522
2459
|
stack.push(tocItem);
|
2523
2460
|
}
|
2524
|
-
|
2525
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculateTableOfContentDataHandler });
|
2526
|
-
};
|
2527
|
-
CalculateTableOfContentDataHandler = __decorate([
|
2528
|
-
FExecutionRegister(CalculateTableOfContentDataRequest)
|
2529
|
-
], CalculateTableOfContentDataHandler);
|
2530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculateTableOfContentDataHandler, decorators: [{
|
2531
|
-
type: Injectable
|
2532
|
-
}] });
|
2461
|
+
}
|
2533
2462
|
|
2534
|
-
class
|
2535
|
-
|
2536
|
-
constructor(
|
2537
|
-
this.
|
2463
|
+
class CalculateTableOfContentDataRequest {
|
2464
|
+
fMarkdownPage;
|
2465
|
+
constructor(fMarkdownPage) {
|
2466
|
+
this.fMarkdownPage = fMarkdownPage;
|
2538
2467
|
}
|
2539
2468
|
}
|
2540
2469
|
|
2541
|
-
|
2542
|
-
_provider = inject(DocumentationStore);
|
2543
|
-
_containerRef = inject(ViewContainerRef);
|
2470
|
+
class RenderDynamicComponentsHandler {
|
2544
2471
|
_componentsMap = [
|
2545
2472
|
{ tag: 'f-code-group', component: FCodeGroupComponent },
|
2546
2473
|
{ tag: 'f-preview', component: FPreviewComponent },
|
2547
2474
|
{ tag: 'f-preview-group-filters', component: FPreviewGroupFiltersComponent },
|
2548
2475
|
];
|
2476
|
+
_provider;
|
2477
|
+
_containerRef;
|
2478
|
+
constructor(_injector) {
|
2479
|
+
this._provider = _injector.get(DocumentationStore);
|
2480
|
+
this._containerRef = _injector.get(ViewContainerRef);
|
2481
|
+
}
|
2549
2482
|
handle(request) {
|
2550
2483
|
this._provider.disposeDComponents();
|
2551
2484
|
this._componentsMap.forEach(({ tag, component }) => {
|
@@ -2587,7 +2520,8 @@ let RenderDynamicComponentsHandler = class RenderDynamicComponentsHandler {
|
|
2587
2520
|
value = JSON.parse(value);
|
2588
2521
|
// eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
|
2589
2522
|
}
|
2590
|
-
catch (e) { /* empty */
|
2523
|
+
catch (e) { /* empty */
|
2524
|
+
}
|
2591
2525
|
}
|
2592
2526
|
if (componentRef.instance[key]?.set) {
|
2593
2527
|
componentRef.instance[key].set(value);
|
@@ -2604,25 +2538,20 @@ let RenderDynamicComponentsHandler = class RenderDynamicComponentsHandler {
|
|
2604
2538
|
_logError(tag, error) {
|
2605
2539
|
console.error(`Error inserting component for <${tag}>:`, error);
|
2606
2540
|
}
|
2607
|
-
|
2608
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderDynamicComponentsHandler });
|
2609
|
-
};
|
2610
|
-
RenderDynamicComponentsHandler = __decorate([
|
2611
|
-
FExecutionRegister(RenderDynamicComponentsRequest)
|
2612
|
-
], RenderDynamicComponentsHandler);
|
2613
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderDynamicComponentsHandler, decorators: [{
|
2614
|
-
type: Injectable
|
2615
|
-
}] });
|
2541
|
+
}
|
2616
2542
|
|
2617
|
-
class
|
2618
|
-
|
2619
|
-
constructor(
|
2620
|
-
this.
|
2543
|
+
class RenderDynamicComponentsRequest {
|
2544
|
+
hostElement;
|
2545
|
+
constructor(hostElement) {
|
2546
|
+
this.hostElement = hostElement;
|
2621
2547
|
}
|
2622
2548
|
}
|
2623
2549
|
|
2624
|
-
|
2625
|
-
_scrollableContainer
|
2550
|
+
class ScrollToElementInContainerHandler {
|
2551
|
+
_scrollableContainer;
|
2552
|
+
constructor(_injector) {
|
2553
|
+
this._scrollableContainer = _injector.get(SCROLLABLE_CONTAINER);
|
2554
|
+
}
|
2626
2555
|
handle(payload) {
|
2627
2556
|
this._scrollableContainer.htmlElement.scrollTo({
|
2628
2557
|
top: this._getScrollTo(this._getScrollToElement(payload.hash)) - 64,
|
@@ -2651,30 +2580,62 @@ let ScrollToElementInContainerHandler = class ScrollToElementInContainerHandler
|
|
2651
2580
|
_getContainerTop() {
|
2652
2581
|
return this._scrollableContainer.htmlElement.getBoundingClientRect().top;
|
2653
2582
|
}
|
2654
|
-
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2659
|
-
|
2660
|
-
|
2661
|
-
|
2662
|
-
}] });
|
2583
|
+
}
|
2584
|
+
|
2585
|
+
class ScrollToElementInContainerRequest {
|
2586
|
+
hash;
|
2587
|
+
constructor(hash) {
|
2588
|
+
this.hash = hash;
|
2589
|
+
}
|
2590
|
+
}
|
2663
2591
|
|
2664
2592
|
const SCROLLABLE_CONTAINER = new InjectionToken('SCROLLABLE_CONTAINER');
|
2665
2593
|
|
2666
|
-
|
2667
|
-
|
2668
|
-
|
2669
|
-
|
2670
|
-
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2594
|
+
class TableOfContentComponent {
|
2595
|
+
_elementRef = inject((ElementRef));
|
2596
|
+
_browser = inject(BrowserService);
|
2597
|
+
_provider = inject(DocumentationStore);
|
2598
|
+
_injector = inject(Injector);
|
2599
|
+
tocData = computed(() => {
|
2600
|
+
return this._provider.tocData();
|
2601
|
+
});
|
2602
|
+
activeMarkerPosition = computed(() => {
|
2603
|
+
const index = this.tocData()?.flat.findIndex((x) => x.isActive) || 0;
|
2604
|
+
return this._getActiveMarkerPosition(index);
|
2605
|
+
});
|
2606
|
+
title = inject(DocumentationStore).getToC().title;
|
2607
|
+
_getActiveMarkerPosition(activeIndex) {
|
2608
|
+
const itemHeight = parseInt(this._getComputedStyle(this._elementRef.nativeElement).getPropertyValue('--on-page-navigation-item-height'));
|
2609
|
+
return (activeIndex + 1) * itemHeight + itemHeight / 4;
|
2610
|
+
}
|
2611
|
+
_getComputedStyle(element) {
|
2612
|
+
return this._browser.window.getComputedStyle(element);
|
2613
|
+
}
|
2614
|
+
_onDocumentClick(event) {
|
2615
|
+
const target = event.target;
|
2616
|
+
if (target.tagName === 'A') {
|
2617
|
+
event.preventDefault();
|
2618
|
+
this._scrollTo(target.getAttribute('href'));
|
2619
|
+
}
|
2620
|
+
}
|
2621
|
+
_scrollTo(hash) {
|
2622
|
+
new ActivateTocByHashHandler(this._injector).handle(new ActivateTocByHashRequest(hash));
|
2623
|
+
new ScrollToElementInContainerHandler(this._injector).handle(new ScrollToElementInContainerRequest(hash));
|
2624
|
+
}
|
2625
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TableOfContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
2626
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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
|
+
}
|
2628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TableOfContentComponent, decorators: [{
|
2629
|
+
type: Component,
|
2630
|
+
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
|
+
}], propDecorators: { _onDocumentClick: [{
|
2632
|
+
type: HostListener,
|
2633
|
+
args: ['click', ['$event']]
|
2634
|
+
}] } });
|
2674
2635
|
|
2675
2636
|
class ScrollableContainerComponent {
|
2676
|
-
_mediator = inject(FMediator);
|
2677
2637
|
_destroyRef = inject(DestroyRef);
|
2638
|
+
_injector = inject(Injector);
|
2678
2639
|
htmlElement = inject((ElementRef)).nativeElement;
|
2679
2640
|
ngOnInit() {
|
2680
2641
|
fromEvent(this.htmlElement, 'scroll')
|
@@ -2682,7 +2643,7 @@ class ScrollableContainerComponent {
|
|
2682
2643
|
.subscribe(() => this._calculateHashAndActivate());
|
2683
2644
|
}
|
2684
2645
|
_calculateHashAndActivate() {
|
2685
|
-
this.
|
2646
|
+
new CalculateHashFromScrollPositionAndActivateTocHandler(this._injector).handle();
|
2686
2647
|
}
|
2687
2648
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
2688
2649
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ScrollableContainerComponent, isStandalone: true, selector: "f-scrollable-container", providers: [
|
@@ -2690,8 +2651,6 @@ class ScrollableContainerComponent {
|
|
2690
2651
|
provide: SCROLLABLE_CONTAINER,
|
2691
2652
|
useExisting: forwardRef(() => ScrollableContainerComponent),
|
2692
2653
|
},
|
2693
|
-
FMediator,
|
2694
|
-
...SCROLLABLE_CONTAINER_FEATURES,
|
2695
2654
|
], 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 });
|
2696
2655
|
}
|
2697
2656
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableContainerComponent, decorators: [{
|
@@ -2701,8 +2660,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
2701
2660
|
provide: SCROLLABLE_CONTAINER,
|
2702
2661
|
useExisting: forwardRef(() => ScrollableContainerComponent),
|
2703
2662
|
},
|
2704
|
-
FMediator,
|
2705
|
-
...SCROLLABLE_CONTAINER_FEATURES,
|
2706
2663
|
], changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
2707
2664
|
TableOfContentComponent,
|
2708
2665
|
], 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"] }]
|
@@ -2716,7 +2673,6 @@ class FMarkdownRendererComponent {
|
|
2716
2673
|
_destroyRef = inject(DestroyRef);
|
2717
2674
|
_injector = inject(Injector);
|
2718
2675
|
_browser = inject(BrowserService);
|
2719
|
-
_mediator = inject(FMediator);
|
2720
2676
|
_markdown = inject(MarkdownService);
|
2721
2677
|
_provider = inject(DocumentationStore);
|
2722
2678
|
get _markdownPath() {
|
@@ -2740,8 +2696,8 @@ class FMarkdownRendererComponent {
|
|
2740
2696
|
if (html && this._browser.isBrowser()) {
|
2741
2697
|
untracked(() => {
|
2742
2698
|
raf(() => {
|
2743
|
-
this.
|
2744
|
-
this.
|
2699
|
+
new RenderDynamicComponentsHandler(this._injector).handle(new RenderDynamicComponentsRequest(this._hostElement));
|
2700
|
+
new CalculateTableOfContentDataHandler(this._injector).handle(new CalculateTableOfContentDataRequest(this._hostElement));
|
2745
2701
|
});
|
2746
2702
|
});
|
2747
2703
|
}
|
@@ -2868,8 +2824,6 @@ class DocumentationRootComponent {
|
|
2868
2824
|
provide: TOGGLE_NAVIGATION_COMPONENT,
|
2869
2825
|
useExisting: DocumentationRootComponent,
|
2870
2826
|
},
|
2871
|
-
FMediator,
|
2872
|
-
...COMMON_FEATURES,
|
2873
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 });
|
2874
2828
|
}
|
2875
2829
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DocumentationRootComponent, decorators: [{
|
@@ -2894,8 +2848,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
2894
2848
|
provide: TOGGLE_NAVIGATION_COMPONENT,
|
2895
2849
|
useExisting: DocumentationRootComponent,
|
2896
2850
|
},
|
2897
|
-
FMediator,
|
2898
|
-
...COMMON_FEATURES,
|
2899
2851
|
], imports: [
|
2900
2852
|
NavigationPanelComponent,
|
2901
2853
|
ScrollableContainerComponent,
|
@@ -2919,12 +2871,11 @@ const DOCUMENTATION_ROUTES = [
|
|
2919
2871
|
|
2920
2872
|
var index$1 = /*#__PURE__*/Object.freeze({
|
2921
2873
|
__proto__: null,
|
2922
|
-
|
2874
|
+
ActivateTocByHashHandler: ActivateTocByHashHandler,
|
2923
2875
|
ActivateTocByHashRequest: ActivateTocByHashRequest,
|
2924
|
-
|
2925
|
-
get CalculateHashFromScrollPositionAndActivateTocHandler () { return CalculateHashFromScrollPositionAndActivateTocHandler; },
|
2876
|
+
CalculateHashFromScrollPositionAndActivateTocHandler: CalculateHashFromScrollPositionAndActivateTocHandler,
|
2926
2877
|
CalculateHashFromScrollPositionAndActivateTocRequest: CalculateHashFromScrollPositionAndActivateTocRequest,
|
2927
|
-
|
2878
|
+
CalculateTableOfContentDataHandler: CalculateTableOfContentDataHandler,
|
2928
2879
|
CalculateTableOfContentDataRequest: CalculateTableOfContentDataRequest,
|
2929
2880
|
DOCUMENTATION_CONFIGURATION: DOCUMENTATION_CONFIGURATION,
|
2930
2881
|
DOCUMENTATION_ROUTES: DOCUMENTATION_ROUTES,
|
@@ -2952,7 +2903,7 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
2952
2903
|
FPreviewGroupService: FPreviewGroupService,
|
2953
2904
|
F_ACCEPT_COOKIES_KEY: F_ACCEPT_COOKIES_KEY,
|
2954
2905
|
F_PREVIEW_NAVIGATION_PROVIDER: F_PREVIEW_NAVIGATION_PROVIDER,
|
2955
|
-
|
2906
|
+
GetAbsoluteTopToContainerHandler: GetAbsoluteTopToContainerHandler,
|
2956
2907
|
GetAbsoluteTopToContainerRequest: GetAbsoluteTopToContainerRequest,
|
2957
2908
|
GetPreviousNextPageNavigationHandler: GetPreviousNextPageNavigationHandler,
|
2958
2909
|
GetPreviousNextPageNavigationRequest: GetPreviousNextPageNavigationRequest,
|
@@ -2974,11 +2925,10 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
2974
2925
|
ParseGroupedCodeItems: ParseGroupedCodeItems,
|
2975
2926
|
ParsePreviewGroup: ParsePreviewGroup,
|
2976
2927
|
ParseSingleCodeItem: ParseSingleCodeItem,
|
2977
|
-
|
2928
|
+
RenderDynamicComponentsHandler: RenderDynamicComponentsHandler,
|
2978
2929
|
RenderDynamicComponentsRequest: RenderDynamicComponentsRequest,
|
2979
2930
|
SCROLLABLE_CONTAINER: SCROLLABLE_CONTAINER,
|
2980
|
-
|
2981
|
-
get ScrollToElementInContainerHandler () { return ScrollToElementInContainerHandler; },
|
2931
|
+
ScrollToElementInContainerHandler: ScrollToElementInContainerHandler,
|
2982
2932
|
ScrollToElementInContainerRequest: ScrollToElementInContainerRequest,
|
2983
2933
|
ScrollableContainerComponent: ScrollableContainerComponent,
|
2984
2934
|
TOGGLE_NAVIGATION_COMPONENT: TOGGLE_NAVIGATION_COMPONENT,
|
@@ -3095,7 +3045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
3095
3045
|
class FHomePageButtonsRowComponent {
|
3096
3046
|
viewModel = inject(HomeStore).getButtons();
|
3097
3047
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FHomePageButtonsRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
3098
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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;
|
3048
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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"] }] });
|
3099
3049
|
}
|
3100
3050
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FHomePageButtonsRowComponent, decorators: [{
|
3101
3051
|
type: Component,
|
@@ -3103,7 +3053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
3103
3053
|
RouterLink,
|
3104
3054
|
], host: {
|
3105
3055
|
'[class.display-none]': '!viewModel.length',
|
3106
|
-
}, 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;
|
3056
|
+
}, 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"] }]
|
3107
3057
|
}] });
|
3108
3058
|
|
3109
3059
|
class FHomePageFeaturesComponent {
|
@@ -3121,11 +3071,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
3121
3071
|
class FHomePageFooterComponent {
|
3122
3072
|
viewModel = inject(HomeStore).getFooter();
|
3123
3073
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FHomePageFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
3124
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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://
|
3074
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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"] });
|
3125
3075
|
}
|
3126
3076
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FHomePageFooterComponent, decorators: [{
|
3127
3077
|
type: Component,
|
3128
|
-
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://
|
3078
|
+
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"] }]
|
3129
3079
|
}] });
|
3130
3080
|
|
3131
3081
|
class FHomePageHeaderComponent {
|
@@ -3144,13 +3094,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
3144
3094
|
class FHomePageHeroComponent {
|
3145
3095
|
viewModel = inject(HomeStore).getHero();
|
3146
3096
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FHomePageHeroComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
3147
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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
|
3097
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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" }] });
|
3148
3098
|
}
|
3149
3099
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FHomePageHeroComponent, decorators: [{
|
3150
3100
|
type: Component,
|
3151
3101
|
args: [{ selector: 'f-home-page-hero', standalone: true, imports: [
|
3152
3102
|
FHomePageButtonsRowComponent,
|
3153
|
-
], 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
|
3103
|
+
], 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"] }]
|
3154
3104
|
}] });
|
3155
3105
|
|
3156
3106
|
class FHomePageMembershipsComponent {
|
@@ -3256,5 +3206,5 @@ var index = /*#__PURE__*/Object.freeze({
|
|
3256
3206
|
* Generated bundle index. Do not edit.
|
3257
3207
|
*/
|
3258
3208
|
|
3259
|
-
export { ActivateTocByHashHandler, ActivateTocByHashRequest,
|
3209
|
+
export { ActivateTocByHashHandler, ActivateTocByHashRequest, CalculateHashFromScrollPositionAndActivateTocHandler, CalculateHashFromScrollPositionAndActivateTocRequest, CalculateTableOfContentDataHandler, CalculateTableOfContentDataRequest, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DocumentationRootComponent, DocumentationStore, DropdownMenuComponent, EMarkdownContainerType, EParsedContainerType, FAnalyticsService, FCheckboxComponent, FCodeGroupComponent, FCodeGroupTabsComponent, FCodeViewComponent, FCookiePopupComponent, FExampleViewComponent, FFooterEditInformationComponent, FFooterNavigationButtonComponent, FFooterNavigationComponent, FHomePageButtonsRowComponent, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FHomePageHeroComponent, FHomePageMembershipsComponent, FInsertComponentDirective, FMarkdownFooterComponent, FMarkdownRendererComponent, FMetaService, FNavigationItemComponent, FPreviewBase, FPreviewComponent, FPreviewGroupFiltersComponent, FPreviewGroupService, FRadioButtonComponent, FSocialLinksComponent, FThemeButtonComponent, F_ACCEPT_COOKIES_KEY, F_PREVIEW_NAVIGATION_PROVIDER, F_SOCIAL_LINKS_PROVIDER, GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, HEADER_CONFIGURATION, HEADER_CONFIGURATION_STORE, HOME_PAGE_CONFIGURATION, HOME_ROUTES, HamburgerButtonComponent, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HeaderComponent, HighlightComponent, HighlightService, HomeRootComponent, HomeStore, InlineMenuComponent, LANGUAGES, MarkCodeFocusedBlocksPostProcessor, 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, ThemeService, coerceComponentHeight, copyToClipboard, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, parseLanguageFromFileExtension, parseSingleBracketText, parseSyntaxLanguage, provide404Markdown, provideBackground, provideComponents, provideDirectory, provideDocumentation, provideDocumentationMeta, provideFooterNavigation, provideHeader, provideHeaderMediaLinks, provideHeaderNavigation, provideHero, provideHomeButtons, provideHomeFeatures, provideHomeFooter, provideHomePage, provideImage, provideLanguage, provideLogo, provideNavigation, provideTitle, provideTocData, setCookieConsent };
|
3260
3210
|
//# sourceMappingURL=foblex-m-render.mjs.map
|