@foblex/m-render 3.0.1 → 3.0.5
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/assets/styles/_code-group.scss +10 -0
- package/assets/styles/_code-highlight.scss +28 -28
- package/assets/styles/_preview-group.scss +9 -0
- package/assets/styles/_variables.scss +1 -1
- package/assets/styles/styles.scss +12 -12
- package/fesm2022/foblex-m-render.mjs +173 -14
- package/fesm2022/foblex-m-render.mjs.map +1 -1
- package/package.json +1 -1
- package/types/foblex-m-render.d.ts +36 -5
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
.m-render {
|
|
2
|
-
--token-tag:
|
|
3
|
-
--token-attr-name:
|
|
4
|
-
--token-attr-value:
|
|
5
|
-
--token-string:
|
|
6
|
-
--token-punctuation:
|
|
7
|
-
--token-keyword:
|
|
8
|
-
--token-function:
|
|
9
|
-
--token-number:
|
|
10
|
-
--token-operator:
|
|
11
|
-
--token-interpolation:
|
|
12
|
-
--token-expression:
|
|
13
|
-
--token-comment:
|
|
14
|
-
--token-selector:
|
|
15
|
-
--token-variable: #
|
|
2
|
+
--token-tag: #1d4ed8;
|
|
3
|
+
--token-attr-name: #7c3aed;
|
|
4
|
+
--token-attr-value: #0f7a43;
|
|
5
|
+
--token-string: #0f8a55;
|
|
6
|
+
--token-punctuation: #2f3441;
|
|
7
|
+
--token-keyword: #6d28d9;
|
|
8
|
+
--token-function: #1e40af;
|
|
9
|
+
--token-number: #b45309;
|
|
10
|
+
--token-operator: #4b5563;
|
|
11
|
+
--token-interpolation: #8b3cf6;
|
|
12
|
+
--token-expression: #0c7a4c;
|
|
13
|
+
--token-comment: #6b7280;
|
|
14
|
+
--token-selector: #1d4ed8;
|
|
15
|
+
--token-variable: #9b2fae;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.dark {
|
|
19
19
|
.m-render {
|
|
20
|
-
--token-tag:
|
|
21
|
-
--token-attr-name:
|
|
22
|
-
--token-attr-value:
|
|
23
|
-
--token-string:
|
|
24
|
-
--token-punctuation:
|
|
25
|
-
--token-keyword:
|
|
26
|
-
--token-function:
|
|
27
|
-
--token-number:
|
|
28
|
-
--token-operator:
|
|
29
|
-
--token-interpolation:
|
|
30
|
-
--token-expression:
|
|
31
|
-
--token-comment:
|
|
32
|
-
--token-selector:
|
|
33
|
-
--token-variable: #
|
|
20
|
+
--token-tag: #8fb5ff;
|
|
21
|
+
--token-attr-name: #d2b4ff;
|
|
22
|
+
--token-attr-value: #7fe3a0;
|
|
23
|
+
--token-string: #84e1a8;
|
|
24
|
+
--token-punctuation: #ececf2;
|
|
25
|
+
--token-keyword: #cab8ff;
|
|
26
|
+
--token-function: #79a6ff;
|
|
27
|
+
--token-number: #f3c97a;
|
|
28
|
+
--token-operator: #b6bbca;
|
|
29
|
+
--token-interpolation: #e4b8ff;
|
|
30
|
+
--token-expression: #8fe7b8;
|
|
31
|
+
--token-comment: #8d95a5;
|
|
32
|
+
--token-selector: #8fb5ff;
|
|
33
|
+
--token-variable: #ffb4d8;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
--code-view-background: var(--alt-background);
|
|
230
230
|
--code-view-border-radius: var(--border-radius);
|
|
231
231
|
|
|
232
|
-
--code-view-text-color: var(--
|
|
232
|
+
--code-view-text-color: var(--primary-text);
|
|
233
233
|
--code-view-line-height: 1.7;
|
|
234
234
|
--code-view-font-size: 0.875em;
|
|
235
235
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
9
|
-
@
|
|
10
|
-
@
|
|
11
|
-
@
|
|
12
|
-
@
|
|
1
|
+
@use "./variables";
|
|
2
|
+
@use "./badge";
|
|
3
|
+
@use "./alert";
|
|
4
|
+
@use "./button";
|
|
5
|
+
@use "./fonts";
|
|
6
|
+
@use "./icons";
|
|
7
|
+
@use "./preview-group";
|
|
8
|
+
@use "./code-group";
|
|
9
|
+
@use "./code-view";
|
|
10
|
+
@use "./code-highlight";
|
|
11
|
+
@use "./doc-text";
|
|
12
|
+
@use "./table";
|
|
13
13
|
|
|
14
14
|
html {
|
|
15
15
|
height: 100%;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injectable, InjectionToken, signal, PLATFORM_ID, ChangeDetectionStrategy, Component, computed, Renderer2, HostListener, input, EventEmitter, booleanAttribute, Input, ViewChild, Output, output,
|
|
2
|
+
import { inject, Injectable, InjectionToken, signal, PLATFORM_ID, ChangeDetectionStrategy, Component, computed, Renderer2, HostListener, input, viewChild, EventEmitter, booleanAttribute, Input, ViewChild, Output, output, NgZone, ChangeDetectorRef, DestroyRef, Injector, ElementRef, ViewContainerRef, untracked, forwardRef, effect, afterNextRender } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, isPlatformBrowser, TitleCasePipe } from '@angular/common';
|
|
4
4
|
import { Router, NavigationEnd, RouterLink, ActivatedRoute, RouterOutlet } from '@angular/router';
|
|
5
5
|
import { filter, tap, take, catchError, shareReplay, finalize } from 'rxjs/operators';
|
|
@@ -130,6 +130,13 @@ function provideHeaderSearch(search) {
|
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
function provideHeaderSearchAlgolia(configuration) {
|
|
134
|
+
return {
|
|
135
|
+
search: true,
|
|
136
|
+
searchConfiguration: configuration,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
|
|
133
140
|
function provideHeaderMediaLinks(mediaLinks) {
|
|
134
141
|
return {
|
|
135
142
|
mediaLinks,
|
|
@@ -892,15 +899,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
892
899
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], logo: [{ type: i0.Input, args: [{ isSignal: true, alias: "logo", required: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], logoAlt: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoAlt", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }] } });
|
|
893
900
|
|
|
894
901
|
class FSearchButtonComponent {
|
|
902
|
+
configuration = input(undefined, ...(ngDevMode ? [{ debugName: "configuration" }] : []));
|
|
903
|
+
_isBrowser = inject(IS_BROWSER_PLATFORM);
|
|
904
|
+
_document = inject(DOCUMENT);
|
|
905
|
+
_containerRef = viewChild('searchContainer', ...(ngDevMode ? [{ debugName: "_containerRef" }] : []));
|
|
906
|
+
_instance = null;
|
|
907
|
+
async ngAfterViewInit() {
|
|
908
|
+
if (!this._isBrowser)
|
|
909
|
+
return;
|
|
910
|
+
const docsearch = await loadDocSearch(this._document);
|
|
911
|
+
if (!docsearch)
|
|
912
|
+
return;
|
|
913
|
+
const config = this.configuration();
|
|
914
|
+
if (!config)
|
|
915
|
+
return;
|
|
916
|
+
const container = this._containerRef()?.nativeElement;
|
|
917
|
+
if (!container)
|
|
918
|
+
return;
|
|
919
|
+
this._instance = docsearch({
|
|
920
|
+
container,
|
|
921
|
+
appId: config.appId,
|
|
922
|
+
apiKey: config.apiKey,
|
|
923
|
+
indexName: config.indexName,
|
|
924
|
+
placeholder: config.placeholder || 'Search docs',
|
|
925
|
+
insights: config.insights ?? true,
|
|
926
|
+
searchParameters: config.searchParameters,
|
|
927
|
+
});
|
|
928
|
+
}
|
|
929
|
+
ngOnDestroy() {
|
|
930
|
+
this._instance?.destroy?.();
|
|
931
|
+
this._instance = null;
|
|
932
|
+
}
|
|
895
933
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FSearchButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
896
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
934
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: FSearchButtonComponent, isStandalone: true, selector: "f-search-button", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["searchContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (configuration()) {\n <div #searchContainer class=\"search-container\"></div>\n} @else {\n <a class=\"f-icon search fallback-search\" [routerLink]=\"[]\" fragment=\"search\" aria-label=\"Search\"></a>\n}\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}.search-container{display:inline-flex;justify-content:center;align-items:center}.fallback-search{display:block;width:20px;height:20px;color:var(--sponsor);cursor:pointer}:host ::ng-deep .DocSearch-Button{margin:0;border:1px solid var(--divider-color);border-radius:6px;width:36px;min-width:36px;height:32px;padding:0;background:var(--code-view-copy-button-background);color:var(--secondary-text)}:host ::ng-deep .DocSearch-Button:hover{background:var(--soft-background)}:host ::ng-deep .DocSearch-Button-Placeholder,:host ::ng-deep .DocSearch-Button-Keys,:host ::ng-deep .DocSearch-Search-Icon+span{display:none}:host ::ng-deep .DocSearch-Search-Icon{width:18px;height:18px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
897
935
|
}
|
|
898
936
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FSearchButtonComponent, decorators: [{
|
|
899
937
|
type: Component,
|
|
900
938
|
args: [{ selector: 'f-search-button', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
901
939
|
RouterLink,
|
|
902
|
-
], template: "<a class=\"f-icon search\" [routerLink]=\"[]\" fragment=\"search\"></a>\n", styles: [".
|
|
903
|
-
}] });
|
|
940
|
+
], template: "@if (configuration()) {\n <div #searchContainer class=\"search-container\"></div>\n} @else {\n <a class=\"f-icon search fallback-search\" [routerLink]=\"[]\" fragment=\"search\" aria-label=\"Search\"></a>\n}\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}.search-container{display:inline-flex;justify-content:center;align-items:center}.fallback-search{display:block;width:20px;height:20px;color:var(--sponsor);cursor:pointer}:host ::ng-deep .DocSearch-Button{margin:0;border:1px solid var(--divider-color);border-radius:6px;width:36px;min-width:36px;height:32px;padding:0;background:var(--code-view-copy-button-background);color:var(--secondary-text)}:host ::ng-deep .DocSearch-Button:hover{background:var(--soft-background)}:host ::ng-deep .DocSearch-Button-Placeholder,:host ::ng-deep .DocSearch-Button-Keys,:host ::ng-deep .DocSearch-Search-Icon+span{display:none}:host ::ng-deep .DocSearch-Search-Icon{width:18px;height:18px}\n"] }]
|
|
941
|
+
}], propDecorators: { configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: false }] }], _containerRef: [{ type: i0.ViewChild, args: ['searchContainer', { isSignal: true }] }] } });
|
|
942
|
+
let cachedDocSearchFactory = null;
|
|
943
|
+
async function loadDocSearch(documentRef) {
|
|
944
|
+
if (cachedDocSearchFactory) {
|
|
945
|
+
return cachedDocSearchFactory;
|
|
946
|
+
}
|
|
947
|
+
cachedDocSearchFactory = (async () => {
|
|
948
|
+
await Promise.all([
|
|
949
|
+
appendStyle(documentRef),
|
|
950
|
+
appendScript(documentRef),
|
|
951
|
+
]);
|
|
952
|
+
const docsearch = documentRef.defaultView?.docsearch;
|
|
953
|
+
return typeof docsearch === 'function' ? docsearch : null;
|
|
954
|
+
})();
|
|
955
|
+
return cachedDocSearchFactory;
|
|
956
|
+
}
|
|
957
|
+
function appendScript(documentRef) {
|
|
958
|
+
const existing = documentRef.getElementById(DOCSEARCH_SCRIPT_ID);
|
|
959
|
+
if (existing) {
|
|
960
|
+
return Promise.resolve();
|
|
961
|
+
}
|
|
962
|
+
return new Promise((resolve, reject) => {
|
|
963
|
+
const script = documentRef.createElement('script');
|
|
964
|
+
script.id = DOCSEARCH_SCRIPT_ID;
|
|
965
|
+
script.src = DOCSEARCH_SCRIPT_URL;
|
|
966
|
+
script.async = true;
|
|
967
|
+
script.onload = () => resolve();
|
|
968
|
+
script.onerror = () => reject(new Error('Failed to load Algolia DocSearch script.'));
|
|
969
|
+
documentRef.head.appendChild(script);
|
|
970
|
+
});
|
|
971
|
+
}
|
|
972
|
+
function appendStyle(documentRef) {
|
|
973
|
+
const existing = documentRef.getElementById(DOCSEARCH_STYLE_ID);
|
|
974
|
+
if (existing) {
|
|
975
|
+
return Promise.resolve();
|
|
976
|
+
}
|
|
977
|
+
const link = documentRef.createElement('link');
|
|
978
|
+
link.id = DOCSEARCH_STYLE_ID;
|
|
979
|
+
link.rel = 'stylesheet';
|
|
980
|
+
link.href = DOCSEARCH_STYLE_URL;
|
|
981
|
+
documentRef.head.appendChild(link);
|
|
982
|
+
return Promise.resolve();
|
|
983
|
+
}
|
|
984
|
+
const DOCSEARCH_SCRIPT_ID = 'f-docsearch-script';
|
|
985
|
+
const DOCSEARCH_STYLE_ID = 'f-docsearch-style';
|
|
986
|
+
const DOCSEARCH_SCRIPT_URL = 'https://cdn.jsdelivr.net/npm/@docsearch/js@3/dist/umd/index.js';
|
|
987
|
+
const DOCSEARCH_STYLE_URL = 'https://cdn.jsdelivr.net/npm/@docsearch/css@3/dist/style.css';
|
|
904
988
|
|
|
905
989
|
let uniqueId$1 = 0;
|
|
906
990
|
class FCheckboxComponent {
|
|
@@ -1073,18 +1157,19 @@ class HeaderComponent {
|
|
|
1073
1157
|
cancelAnimationFrame(this._rafId);
|
|
1074
1158
|
}
|
|
1075
1159
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1076
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: HeaderComponent, isStandalone: true, selector: "f-header", viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "_targetRef", first: true, predicate: ["target"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (emptyNavigation) {\n <f-brand-link class=\"empty-navigation-title\"\n [routerLink]=\"''\"\n [title]=\"title\"\n [logo]=\"image\" />\n} @else {\n <div class=\"portal-title\">\n <button hamburger-button></button>\n <div class=\"title text-ellipsis\">{{ title }}</div>\n </div>\n}\n\n<div class=\"collapsable-row\" #container>\n <div #target class=\"target\" [class.hidden]=\"initialized() && overflowed()\">\n @if (config.navigation) {\n <inline-menu />\n <div class=\"divider\"></div>\n }\n\n <button theme-button></button>\n <div class=\"divider\"></div>\n <media-links />\n </div>\n\n <div class=\"fallback\" [class.hidden]=\"!initialized() || !overflowed()\">\n <dropdown-menu />\n </div>\n</div>\n", styles: [":host{position:sticky;width:100%;top:0;display:flex;justify-content:flex-start;align-items:center;padding:0 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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}.empty-navigation-title{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}.portal-title{display:flex;justify-content:flex-start;align-items:center}@media(min-width:960px){.portal-title{display:none}}.portal-title .title{font-weight:600;color:var(--primary-text)}.divider{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--divider-color);content:\"\"}.collapsable-row{position:relative;width:100%;display:flex;justify-content:flex-end}.collapsable-row .target{display:flex;justify-content:flex-start;align-items:center;width:fit-content}.collapsable-row .target.hidden{position:absolute;left:-99999px;top:0;visibility:hidden;white-space:nowrap}.collapsable-row .fallback.hidden{display:none}\n"], dependencies: [{ kind: "component", type: HamburgerButton, selector: "button[hamburger-button]" }, { kind: "component", type: FBrandLinkComponent, selector: "f-brand-link", inputs: ["title", "logo", "ariaLabel", "logoAlt", "href", "routerLink"] }, { kind: "component", type: ThemeButtonComponent, selector: "button[theme-button]" }, { kind: "component", type: InlineMenu, selector: "inline-menu" }, { kind: "component", type: DropdownMenu, selector: "dropdown-menu" }, { kind: "component", type: MediaLinks, selector: "media-links" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1160
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: HeaderComponent, isStandalone: true, selector: "f-header", viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "_targetRef", first: true, predicate: ["target"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (emptyNavigation) {\n <f-brand-link class=\"empty-navigation-title\"\n [routerLink]=\"''\"\n [title]=\"title\"\n [logo]=\"image\" />\n} @else {\n <div class=\"portal-title\">\n <button hamburger-button></button>\n <div class=\"title text-ellipsis\">{{ title }}</div>\n </div>\n}\n\n@if (config.search) {\n <f-search-button [configuration]=\"config.searchConfiguration\"></f-search-button>\n <div class=\"divider search-divider\"></div>\n}\n\n<div class=\"collapsable-row\" #container>\n <div #target class=\"target\" [class.hidden]=\"initialized() && overflowed()\">\n @if (config.navigation) {\n <inline-menu />\n <div class=\"divider\"></div>\n }\n\n <button theme-button></button>\n <div class=\"divider\"></div>\n <media-links />\n </div>\n\n <div class=\"fallback\" [class.hidden]=\"!initialized() || !overflowed()\">\n <dropdown-menu />\n </div>\n</div>\n", styles: [":host{position:sticky;width:100%;top:0;display:flex;justify-content:flex-start;align-items:center;padding:0 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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}.empty-navigation-title{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}.portal-title{display:flex;justify-content:flex-start;align-items:center}@media(min-width:960px){.portal-title{display:none}}.portal-title .title{font-weight:600;color:var(--primary-text)}.divider{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--divider-color);content:\"\"}@media(max-width:639px){.search-divider{margin-right:6px;margin-left:6px}}.collapsable-row{position:relative;width:100%;display:flex;justify-content:flex-end}.collapsable-row .target{display:flex;justify-content:flex-start;align-items:center;width:fit-content}.collapsable-row .target.hidden{position:absolute;left:-99999px;top:0;visibility:hidden;white-space:nowrap}.collapsable-row .fallback.hidden{display:none}\n"], dependencies: [{ kind: "component", type: HamburgerButton, selector: "button[hamburger-button]" }, { kind: "component", type: FBrandLinkComponent, selector: "f-brand-link", inputs: ["title", "logo", "ariaLabel", "logoAlt", "href", "routerLink"] }, { kind: "component", type: FSearchButtonComponent, selector: "f-search-button", inputs: ["configuration"] }, { kind: "component", type: ThemeButtonComponent, selector: "button[theme-button]" }, { kind: "component", type: InlineMenu, selector: "inline-menu" }, { kind: "component", type: DropdownMenu, selector: "dropdown-menu" }, { kind: "component", type: MediaLinks, selector: "media-links" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1077
1161
|
}
|
|
1078
1162
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
1079
1163
|
type: Component,
|
|
1080
1164
|
args: [{ selector: 'f-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1081
1165
|
HamburgerButton,
|
|
1082
1166
|
FBrandLinkComponent,
|
|
1167
|
+
FSearchButtonComponent,
|
|
1083
1168
|
ThemeButtonComponent,
|
|
1084
1169
|
InlineMenu,
|
|
1085
1170
|
DropdownMenu,
|
|
1086
1171
|
MediaLinks,
|
|
1087
|
-
], template: "@if (emptyNavigation) {\n <f-brand-link class=\"empty-navigation-title\"\n [routerLink]=\"''\"\n [title]=\"title\"\n [logo]=\"image\" />\n} @else {\n <div class=\"portal-title\">\n <button hamburger-button></button>\n <div class=\"title text-ellipsis\">{{ title }}</div>\n </div>\n}\n\n<div class=\"collapsable-row\" #container>\n <div #target class=\"target\" [class.hidden]=\"initialized() && overflowed()\">\n @if (config.navigation) {\n <inline-menu />\n <div class=\"divider\"></div>\n }\n\n <button theme-button></button>\n <div class=\"divider\"></div>\n <media-links />\n </div>\n\n <div class=\"fallback\" [class.hidden]=\"!initialized() || !overflowed()\">\n <dropdown-menu />\n </div>\n</div>\n", styles: [":host{position:sticky;width:100%;top:0;display:flex;justify-content:flex-start;align-items:center;padding:0 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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}.empty-navigation-title{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}.portal-title{display:flex;justify-content:flex-start;align-items:center}@media(min-width:960px){.portal-title{display:none}}.portal-title .title{font-weight:600;color:var(--primary-text)}.divider{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--divider-color);content:\"\"}.collapsable-row{position:relative;width:100%;display:flex;justify-content:flex-end}.collapsable-row .target{display:flex;justify-content:flex-start;align-items:center;width:fit-content}.collapsable-row .target.hidden{position:absolute;left:-99999px;top:0;visibility:hidden;white-space:nowrap}.collapsable-row .fallback.hidden{display:none}\n"] }]
|
|
1172
|
+
], template: "@if (emptyNavigation) {\n <f-brand-link class=\"empty-navigation-title\"\n [routerLink]=\"''\"\n [title]=\"title\"\n [logo]=\"image\" />\n} @else {\n <div class=\"portal-title\">\n <button hamburger-button></button>\n <div class=\"title text-ellipsis\">{{ title }}</div>\n </div>\n}\n\n@if (config.search) {\n <f-search-button [configuration]=\"config.searchConfiguration\"></f-search-button>\n <div class=\"divider search-divider\"></div>\n}\n\n<div class=\"collapsable-row\" #container>\n <div #target class=\"target\" [class.hidden]=\"initialized() && overflowed()\">\n @if (config.navigation) {\n <inline-menu />\n <div class=\"divider\"></div>\n }\n\n <button theme-button></button>\n <div class=\"divider\"></div>\n <media-links />\n </div>\n\n <div class=\"fallback\" [class.hidden]=\"!initialized() || !overflowed()\">\n <dropdown-menu />\n </div>\n</div>\n", styles: [":host{position:sticky;width:100%;top:0;display:flex;justify-content:flex-start;align-items:center;padding:0 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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}.empty-navigation-title{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}.portal-title{display:flex;justify-content:flex-start;align-items:center}@media(min-width:960px){.portal-title{display:none}}.portal-title .title{font-weight:600;color:var(--primary-text)}.divider{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--divider-color);content:\"\"}@media(max-width:639px){.search-divider{margin-right:6px;margin-left:6px}}.collapsable-row{position:relative;width:100%;display:flex;justify-content:flex-end}.collapsable-row .target{display:flex;justify-content:flex-start;align-items:center;width:fit-content}.collapsable-row .target.hidden{position:absolute;left:-99999px;top:0;visibility:hidden;white-space:nowrap}.collapsable-row .fallback.hidden{display:none}\n"] }]
|
|
1088
1173
|
}], propDecorators: { _containerRef: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], _targetRef: [{ type: i0.ViewChild, args: ['target', { isSignal: true }] }] } });
|
|
1089
1174
|
|
|
1090
1175
|
class NavigationGroupComponent {
|
|
@@ -1351,8 +1436,10 @@ class MarkdownService {
|
|
|
1351
1436
|
_provider = inject(F_PREVIEW_NAVIGATION_PROVIDER, { optional: true });
|
|
1352
1437
|
_pageLayout = signal({ ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS }, ...(ngDevMode ? [{ debugName: "_pageLayout" }] : []));
|
|
1353
1438
|
_pageSeo = signal(null, ...(ngDevMode ? [{ debugName: "_pageSeo" }] : []));
|
|
1439
|
+
_pageOrigin = signal(null, ...(ngDevMode ? [{ debugName: "_pageOrigin" }] : []));
|
|
1354
1440
|
pageLayout = this._pageLayout.asReadonly();
|
|
1355
1441
|
pageSeo = this._pageSeo.asReadonly();
|
|
1442
|
+
pageOrigin = this._pageOrigin.asReadonly();
|
|
1356
1443
|
constructor() {
|
|
1357
1444
|
this._markdown
|
|
1358
1445
|
.use((x) => new ParseSingleCodeItem().render(x))
|
|
@@ -1425,15 +1512,17 @@ class MarkdownService {
|
|
|
1425
1512
|
_parseFrontMatterData(rawFrontMatter) {
|
|
1426
1513
|
const layout = { ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS };
|
|
1427
1514
|
const seo = {};
|
|
1515
|
+
const origin = { url: null, label: null };
|
|
1428
1516
|
rawFrontMatter
|
|
1429
1517
|
.split(/\r?\n/)
|
|
1430
|
-
.forEach((line) => this._parseFrontMatterLine(line, layout, seo));
|
|
1518
|
+
.forEach((line) => this._parseFrontMatterLine(line, layout, seo, origin));
|
|
1431
1519
|
return {
|
|
1432
1520
|
layout,
|
|
1433
1521
|
seo: Object.keys(seo).length ? seo : null,
|
|
1522
|
+
origin: this._resolveOrigin(origin),
|
|
1434
1523
|
};
|
|
1435
1524
|
}
|
|
1436
|
-
_parseFrontMatterLine(line, layout, seo) {
|
|
1525
|
+
_parseFrontMatterLine(line, layout, seo, origin) {
|
|
1437
1526
|
const normalizedLine = line.trim();
|
|
1438
1527
|
if (!normalizedLine || normalizedLine.startsWith('#')) {
|
|
1439
1528
|
return;
|
|
@@ -1450,6 +1539,7 @@ class MarkdownService {
|
|
|
1450
1539
|
const boolValue = this._parseBoolean(value);
|
|
1451
1540
|
this._applyLayoutKey(key, boolValue, layout);
|
|
1452
1541
|
this._applySeoKey(key, value, boolValue, seo);
|
|
1542
|
+
this._applyOriginKey(key, value, origin);
|
|
1453
1543
|
}
|
|
1454
1544
|
_normalizeFrontMatterValue(value) {
|
|
1455
1545
|
const trimmed = value.trim();
|
|
@@ -1574,6 +1664,71 @@ class MarkdownService {
|
|
|
1574
1664
|
return;
|
|
1575
1665
|
}
|
|
1576
1666
|
}
|
|
1667
|
+
_applyOriginKey(key, value, origin) {
|
|
1668
|
+
switch (key) {
|
|
1669
|
+
case 'origin':
|
|
1670
|
+
case 'originurl':
|
|
1671
|
+
case 'origin_url':
|
|
1672
|
+
case 'original':
|
|
1673
|
+
case 'originalurl':
|
|
1674
|
+
case 'original_url':
|
|
1675
|
+
case 'source':
|
|
1676
|
+
case 'sourceurl':
|
|
1677
|
+
case 'source_url': {
|
|
1678
|
+
const normalizedUrl = this._normalizeOriginUrl(value);
|
|
1679
|
+
if (normalizedUrl) {
|
|
1680
|
+
origin.url = normalizedUrl;
|
|
1681
|
+
}
|
|
1682
|
+
return;
|
|
1683
|
+
}
|
|
1684
|
+
case 'originlabel':
|
|
1685
|
+
case 'origin_label':
|
|
1686
|
+
case 'origintext':
|
|
1687
|
+
case 'origin_text':
|
|
1688
|
+
case 'sourcelabel':
|
|
1689
|
+
case 'source_label':
|
|
1690
|
+
origin.label = value;
|
|
1691
|
+
return;
|
|
1692
|
+
}
|
|
1693
|
+
}
|
|
1694
|
+
_normalizeOriginUrl(value) {
|
|
1695
|
+
const trimmed = value.trim();
|
|
1696
|
+
if (!trimmed) {
|
|
1697
|
+
return null;
|
|
1698
|
+
}
|
|
1699
|
+
const candidate = /^https?:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`;
|
|
1700
|
+
try {
|
|
1701
|
+
const url = new URL(candidate);
|
|
1702
|
+
if (!['http:', 'https:'].includes(url.protocol)) {
|
|
1703
|
+
return null;
|
|
1704
|
+
}
|
|
1705
|
+
return url.toString();
|
|
1706
|
+
}
|
|
1707
|
+
catch {
|
|
1708
|
+
return null;
|
|
1709
|
+
}
|
|
1710
|
+
}
|
|
1711
|
+
_resolveOrigin(origin) {
|
|
1712
|
+
if (!origin.url) {
|
|
1713
|
+
return null;
|
|
1714
|
+
}
|
|
1715
|
+
return {
|
|
1716
|
+
url: origin.url,
|
|
1717
|
+
label: origin.label || this._getOriginLabel(origin.url),
|
|
1718
|
+
};
|
|
1719
|
+
}
|
|
1720
|
+
_getOriginLabel(originUrl) {
|
|
1721
|
+
try {
|
|
1722
|
+
const hostname = new URL(originUrl).hostname.toLowerCase().replace(/^www\./, '');
|
|
1723
|
+
if (hostname === 'medium.com' || hostname.endsWith('.medium.com')) {
|
|
1724
|
+
return 'Originally published on Medium';
|
|
1725
|
+
}
|
|
1726
|
+
return `Originally published on ${hostname}`;
|
|
1727
|
+
}
|
|
1728
|
+
catch {
|
|
1729
|
+
return 'Originally published externally';
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1577
1732
|
_parseNumberOrDefault(value, fallback) {
|
|
1578
1733
|
const numericValue = Number(value);
|
|
1579
1734
|
if (!Number.isFinite(numericValue) || numericValue <= 0) {
|
|
@@ -1584,6 +1739,7 @@ class MarkdownService {
|
|
|
1584
1739
|
_applyPageContext(data) {
|
|
1585
1740
|
this._pageLayout.set({ ...data.layout });
|
|
1586
1741
|
this._pageSeo.set(data.seo ? { ...data.seo } : null);
|
|
1742
|
+
this._pageOrigin.set(data.origin ? { ...data.origin } : null);
|
|
1587
1743
|
}
|
|
1588
1744
|
_resetPageContext() {
|
|
1589
1745
|
this._applyPageContext(this._getDefaultFrontMatterData());
|
|
@@ -1592,6 +1748,7 @@ class MarkdownService {
|
|
|
1592
1748
|
return {
|
|
1593
1749
|
layout: { ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS },
|
|
1594
1750
|
seo: null,
|
|
1751
|
+
origin: null,
|
|
1595
1752
|
};
|
|
1596
1753
|
}
|
|
1597
1754
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: MarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -3461,6 +3618,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
3461
3618
|
|
|
3462
3619
|
class MarkdownRenderer {
|
|
3463
3620
|
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
3621
|
+
origin = input(null, ...(ngDevMode ? [{ debugName: "origin" }] : []));
|
|
3464
3622
|
_hostElement = inject(ElementRef).nativeElement;
|
|
3465
3623
|
_router = inject(Router);
|
|
3466
3624
|
_injector = inject(Injector);
|
|
@@ -3507,14 +3665,14 @@ class MarkdownRenderer {
|
|
|
3507
3665
|
this._dynamicComponents.dispose();
|
|
3508
3666
|
}
|
|
3509
3667
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: MarkdownRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3510
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: MarkdownRenderer, isStandalone: true, selector: "markdown-renderer", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "_onDocumentClick($event)" }, classAttribute: "m-render" }, ngImport: i0, template: "<div [innerHTML]=\"value()\"></div>\n@if (value()) {\n <markdown-footer />\n}\n
|
|
3668
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: MarkdownRenderer, isStandalone: true, selector: "markdown-renderer", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, origin: { classPropertyName: "origin", publicName: "origin", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onDocumentClick($event)" }, classAttribute: "m-render" }, ngImport: i0, template: "<div [innerHTML]=\"value()\"></div>\n@if (origin(); as pageOrigin) {\n <aside class=\"origin-link\" role=\"note\">\n <span class=\"origin-link-icon\" aria-hidden=\"true\"></span>\n <div class=\"origin-link-content\">\n <span class=\"origin-link-label\">{{ pageOrigin.label }}</span>\n <a class=\"origin-link-url\"\n [href]=\"pageOrigin.url\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\">{{ pageOrigin.url }}</a>\n </div>\n </aside>\n}\n@if (value()) {\n <markdown-footer />\n}\n", styles: [":host{display:block;width:100%}@media(min-width:1280px){:host{width:calc(100% - var(--on-page-navigation-width) - var(--page-padding))}}@media(min-width:1280px){:host.expand-no-toc{width:100%}}:host.empty-navigation{margin:auto;max-width:900px}.origin-link{display:flex;justify-content:flex-start;align-items:flex-start;gap:12px;margin-top:28px;border:1px solid var(--divider-color);border-radius:10px;padding:12px 14px;background:linear-gradient(135deg,var(--soft-background) 0%,var(--alt-background) 100%);box-shadow:var(--shadow-1);line-height:20px;font-size:14px}.origin-link-icon{flex-shrink:0;display:inline-flex;justify-content:center;align-items:center;width:28px;height:28px;border-radius:999px;background-color:var(--primary-soft);color:var(--primary-2);font-size:10px;font-weight:700;letter-spacing:.06em}.origin-link-icon:before{content:\"SRC\"}.origin-link-content{min-width:0}.origin-link-label{display:block;color:var(--secondary-text);font-weight:600}.origin-link-url{display:inline-block;margin-top:2px;color:var(--primary-1);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere;transition:color .2s ease}.origin-link-url:hover{color:var(--primary-2)}@media(max-width:639px){.origin-link{margin-top:24px;border-radius:8px;padding:10px 12px;gap:10px}.origin-link-icon{width:24px;height:24px;font-size:9px}}\n"], dependencies: [{ kind: "component", type: MarkdownFooter, selector: "markdown-footer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3511
3669
|
}
|
|
3512
3670
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: MarkdownRenderer, decorators: [{
|
|
3513
3671
|
type: Component,
|
|
3514
3672
|
args: [{ selector: 'markdown-renderer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MarkdownFooter], host: {
|
|
3515
3673
|
class: 'm-render',
|
|
3516
|
-
}, template: "<div [innerHTML]=\"value()\"></div>\n@if (value()) {\n <markdown-footer />\n}\n
|
|
3517
|
-
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], _onDocumentClick: [{
|
|
3674
|
+
}, template: "<div [innerHTML]=\"value()\"></div>\n@if (origin(); as pageOrigin) {\n <aside class=\"origin-link\" role=\"note\">\n <span class=\"origin-link-icon\" aria-hidden=\"true\"></span>\n <div class=\"origin-link-content\">\n <span class=\"origin-link-label\">{{ pageOrigin.label }}</span>\n <a class=\"origin-link-url\"\n [href]=\"pageOrigin.url\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\">{{ pageOrigin.url }}</a>\n </div>\n </aside>\n}\n@if (value()) {\n <markdown-footer />\n}\n", styles: [":host{display:block;width:100%}@media(min-width:1280px){:host{width:calc(100% - var(--on-page-navigation-width) - var(--page-padding))}}@media(min-width:1280px){:host.expand-no-toc{width:100%}}:host.empty-navigation{margin:auto;max-width:900px}.origin-link{display:flex;justify-content:flex-start;align-items:flex-start;gap:12px;margin-top:28px;border:1px solid var(--divider-color);border-radius:10px;padding:12px 14px;background:linear-gradient(135deg,var(--soft-background) 0%,var(--alt-background) 100%);box-shadow:var(--shadow-1);line-height:20px;font-size:14px}.origin-link-icon{flex-shrink:0;display:inline-flex;justify-content:center;align-items:center;width:28px;height:28px;border-radius:999px;background-color:var(--primary-soft);color:var(--primary-2);font-size:10px;font-weight:700;letter-spacing:.06em}.origin-link-icon:before{content:\"SRC\"}.origin-link-content{min-width:0}.origin-link-label{display:block;color:var(--secondary-text);font-weight:600}.origin-link-url{display:inline-block;margin-top:2px;color:var(--primary-1);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere;transition:color .2s ease}.origin-link-url:hover{color:var(--primary-2)}@media(max-width:639px){.origin-link{margin-top:24px;border-radius:8px;padding:10px 12px;gap:10px}.origin-link-icon{width:24px;height:24px;font-size:9px}}\n"] }]
|
|
3675
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], origin: [{ type: i0.Input, args: [{ isSignal: true, alias: "origin", required: false }] }], _onDocumentClick: [{
|
|
3518
3676
|
type: HostListener,
|
|
3519
3677
|
args: ['click', ['$event']]
|
|
3520
3678
|
}] } });
|
|
@@ -3526,6 +3684,7 @@ class MarkdownRouter {
|
|
|
3526
3684
|
_dataProvider = inject(DocumentationStore);
|
|
3527
3685
|
_metaService = inject(FMetaService, { optional: true });
|
|
3528
3686
|
emptyNavigation = !this._dataProvider.getNavigation().length;
|
|
3687
|
+
pageOrigin = this._markdown.pageOrigin;
|
|
3529
3688
|
shouldExpandContent = computed(() => {
|
|
3530
3689
|
const layout = this._markdown.pageLayout();
|
|
3531
3690
|
return layout.hideTableOfContent && layout.expandContentWithoutTableOfContent;
|
|
@@ -3539,7 +3698,7 @@ class MarkdownRouter {
|
|
|
3539
3698
|
}), tap(() => this._metaService?.applyMarkdownSeo(this._markdown.pageSeo())));
|
|
3540
3699
|
})), { initialValue: undefined });
|
|
3541
3700
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: MarkdownRouter, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3542
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: MarkdownRouter, isStandalone: true, selector: "markdown-router", host: { attributes: { "ngSkipHydration": "" }, properties: { "class.empty-navigation": "emptyNavigation" } }, ngImport: i0, template: "<markdown-renderer [value]=\"html()\"\n [class.empty-navigation]=\"emptyNavigation\"\n [class.expand-no-toc]=\"shouldExpandContent()\"/>\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}@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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}\n"], dependencies: [{ kind: "component", type: MarkdownRenderer, selector: "markdown-renderer", inputs: ["value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3701
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: MarkdownRouter, isStandalone: true, selector: "markdown-router", host: { attributes: { "ngSkipHydration": "" }, properties: { "class.empty-navigation": "emptyNavigation" } }, ngImport: i0, template: "<markdown-renderer [value]=\"html()\"\n [origin]=\"pageOrigin()\"\n [class.empty-navigation]=\"emptyNavigation\"\n [class.expand-no-toc]=\"shouldExpandContent()\"/>\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}@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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}\n"], dependencies: [{ kind: "component", type: MarkdownRenderer, selector: "markdown-renderer", inputs: ["value", "origin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3543
3702
|
}
|
|
3544
3703
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: MarkdownRouter, decorators: [{
|
|
3545
3704
|
type: Component,
|
|
@@ -3548,7 +3707,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
3548
3707
|
'[class.empty-navigation]': 'emptyNavigation',
|
|
3549
3708
|
}, imports: [
|
|
3550
3709
|
MarkdownRenderer,
|
|
3551
|
-
], template: "<markdown-renderer [value]=\"html()\"\n [class.empty-navigation]=\"emptyNavigation\"\n [class.expand-no-toc]=\"shouldExpandContent()\"/>\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}@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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}\n"] }]
|
|
3710
|
+
], template: "<markdown-renderer [value]=\"html()\"\n [origin]=\"pageOrigin()\"\n [class.empty-navigation]=\"emptyNavigation\"\n [class.expand-no-toc]=\"shouldExpandContent()\"/>\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}@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)}}@media(min-width:1280px){:host.empty-navigation{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2)}}\n"] }]
|
|
3552
3711
|
}] });
|
|
3553
3712
|
|
|
3554
3713
|
var index$2 = /*#__PURE__*/Object.freeze({
|
|
@@ -3992,5 +4151,5 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
3992
4151
|
* Generated bundle index. Do not edit.
|
|
3993
4152
|
*/
|
|
3994
4153
|
|
|
3995
|
-
export { AVAILABLE_LANGUAGES, ActivateTocByHash, ActivateTocByHashRequest, CalculateAbsoluteTopToContainer, CalculateAbsoluteTopToContainerRequest, CalculateHashFromScrollPosition, CalculateTableOfContent, CalculateTableOfContentRequest, CodeGroup, CodeView, DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DOCUMENT_ELEMENT, DYNAMIC_COMPONENTS_MODULE_PROVIDERS, Documentation, DocumentationStore, DropdownMenu, DynamicComponentsStore, EMarkdownContainerType, EParsedContainerType, EXTERNAL_COMPONENT_PROVIDER, ExternalComponent, FBrandLinkComponent, FCheckboxComponent, FHomePageButtonsRowComponent, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FHomePageHeroComponent, FHomePageMembershipsComponent, FMetaService, FNavigationItemComponent, FRadioButtonComponent, FSearchButtonComponent, F_PREVIEW_NAVIGATION_PROVIDER, FooterNavigationButton, GTAG_CONFIG, GTagService, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, HEADER_CONFIGURATION_PROVIDER, HOME_PAGE_CONFIGURATION, HOME_ROUTES, HamburgerButton, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HeaderComponent, HeaderMenuBase, Highlight, HighlightService, HomeRootComponent, HomeStore, IS_BROWSER_PLATFORM, InlineMenu, LOCAL_STORAGE, LOCATION, MEDIA_LINKS_PROVIDER, MExecution, MarkCodeFocusedBlocksPostProcessor, MarkdownFooter, MarkdownRenderer, MarkdownRouter, MarkdownService, MediaLinks, Mediatr, NavigationGroupComponent, NavigationPanelComponent, ParseAlerts, ParseAngularExampleWithCodeLinks, ParseGroupedCodeItems, ParsePreviewGroup, ParseShowcase, ParseSingleCodeItem, PopoverService, PreviewActionBar, PreviewCard, PreviewCardBase, PreviewGroupService, RenderDynamicComponent, RenderDynamicComponentRequest, RenderExternalComponent, RenderExternalComponentRequest, RenderInternalComponents, RenderInternalComponentsRequest, SCROLLABLE_CONTAINER, SHOWCASE_DATA, ScrollToElementInContainer, ScrollToElementInContainerRequest, ScrollableContainer, Showcase, ShowcaseItem, TABLE_OF_CONTENT_MODULE_PROVIDERS, TOGGLE_NAVIGATION_COMPONENT, TableOfContent, TableOfContentData, TableOfContentItemsComponent, ThemeButtonComponent, ThemeService, UNIVERSAL_THEME, WINDOW, calculateMarkdownUrl, coerceComponentHeight$1 as coerceComponentHeight, copyToClipboard, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, getLanguageLoader, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, parseIframeUrl, parseSingleBracketText, provide404Markdown, provideBackground, provideComponents, provideDirectory, provideDocumentation, provideFooterNavigation, provideGTag, provideHeader, provideHeaderMediaLinks, provideHeaderNavigation, provideHeaderSearch, provideHero, provideHomeButtons, provideHomeFeatures, provideHomeFooter, provideHomePage, provideImage, provideLanguage, provideLogo, provideMeta, provideNavigation, provideShowcase, provideTableOfContent, provideTheme, provideTitle, resolveHighlightLanguage };
|
|
4154
|
+
export { AVAILABLE_LANGUAGES, ActivateTocByHash, ActivateTocByHashRequest, CalculateAbsoluteTopToContainer, CalculateAbsoluteTopToContainerRequest, CalculateHashFromScrollPosition, CalculateTableOfContent, CalculateTableOfContentRequest, CodeGroup, CodeView, DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DOCUMENT_ELEMENT, DYNAMIC_COMPONENTS_MODULE_PROVIDERS, Documentation, DocumentationStore, DropdownMenu, DynamicComponentsStore, EMarkdownContainerType, EParsedContainerType, EXTERNAL_COMPONENT_PROVIDER, ExternalComponent, FBrandLinkComponent, FCheckboxComponent, FHomePageButtonsRowComponent, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FHomePageHeroComponent, FHomePageMembershipsComponent, FMetaService, FNavigationItemComponent, FRadioButtonComponent, FSearchButtonComponent, F_PREVIEW_NAVIGATION_PROVIDER, FooterNavigationButton, GTAG_CONFIG, GTagService, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, HEADER_CONFIGURATION_PROVIDER, HOME_PAGE_CONFIGURATION, HOME_ROUTES, HamburgerButton, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HeaderComponent, HeaderMenuBase, Highlight, HighlightService, HomeRootComponent, HomeStore, IS_BROWSER_PLATFORM, InlineMenu, LOCAL_STORAGE, LOCATION, MEDIA_LINKS_PROVIDER, MExecution, MarkCodeFocusedBlocksPostProcessor, MarkdownFooter, MarkdownRenderer, MarkdownRouter, MarkdownService, MediaLinks, Mediatr, NavigationGroupComponent, NavigationPanelComponent, ParseAlerts, ParseAngularExampleWithCodeLinks, ParseGroupedCodeItems, ParsePreviewGroup, ParseShowcase, ParseSingleCodeItem, PopoverService, PreviewActionBar, PreviewCard, PreviewCardBase, PreviewGroupService, RenderDynamicComponent, RenderDynamicComponentRequest, RenderExternalComponent, RenderExternalComponentRequest, RenderInternalComponents, RenderInternalComponentsRequest, SCROLLABLE_CONTAINER, SHOWCASE_DATA, ScrollToElementInContainer, ScrollToElementInContainerRequest, ScrollableContainer, Showcase, ShowcaseItem, TABLE_OF_CONTENT_MODULE_PROVIDERS, TOGGLE_NAVIGATION_COMPONENT, TableOfContent, TableOfContentData, TableOfContentItemsComponent, ThemeButtonComponent, ThemeService, UNIVERSAL_THEME, WINDOW, calculateMarkdownUrl, coerceComponentHeight$1 as coerceComponentHeight, copyToClipboard, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, getLanguageLoader, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, parseIframeUrl, parseSingleBracketText, provide404Markdown, provideBackground, provideComponents, provideDirectory, provideDocumentation, provideFooterNavigation, provideGTag, provideHeader, provideHeaderMediaLinks, provideHeaderNavigation, provideHeaderSearch, provideHeaderSearchAlgolia, provideHero, provideHomeButtons, provideHomeFeatures, provideHomeFooter, provideHomePage, provideImage, provideLanguage, provideLogo, provideMeta, provideNavigation, provideShowcase, provideTableOfContent, provideTheme, provideTitle, resolveHighlightLanguage };
|
|
3996
4155
|
//# sourceMappingURL=foblex-m-render.mjs.map
|