@foblex/m-render 2.7.2 → 2.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { LOCAL_STORAGE, GTagService } from './foblex-m-render.mjs';
3
+ import { GTagService } from './foblex-m-render.mjs';
4
+ import { LOCAL_STORAGE } from '@foblex/mr-common';
4
5
 
5
6
  const F_ACCEPT_COOKIES_KEY = 'm-accepts-cookies';
6
7
  class CookiePopupComponent {
@@ -36,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
36
37
  }], ctorParameters: () => [] });
37
38
 
38
39
  export { CookiePopupComponent, F_ACCEPT_COOKIES_KEY };
39
- //# sourceMappingURL=foblex-m-render-cookie-popup.component-BZZxqp3j.mjs.map
40
+ //# sourceMappingURL=foblex-m-render-cookie-popup.component-CqwZv5lc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foblex-m-render-cookie-popup.component-CqwZv5lc.mjs","sources":["../../../../libs/m-render/src/lib/analytics/cookie-popup/cookie-popup.component.ts","../../../../libs/m-render/src/lib/analytics/cookie-popup/cookie-popup.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { GTagService } from '../g-tag.service';\nimport { LOCAL_STORAGE } from '@foblex/mr-common';\n\nexport const F_ACCEPT_COOKIES_KEY = 'm-accepts-cookies';\n\n@Component({\n selector: 'cookie-popup',\n standalone: true,\n templateUrl: './cookie-popup.component.html',\n styleUrls: ['./cookie-popup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CookiePopupComponent {\n private readonly _localStorage = inject(LOCAL_STORAGE);\n private readonly _gtag = inject(GTagService, { optional: true });\n\n private readonly _consentValue = signal<string | null>(null);\n\n protected readonly showPopup = computed(() =>\n this._gtag !== null &&\n this._consentValue() !== 'true' &&\n this._consentValue() !== 'false',\n );\n\n constructor() {\n try {\n const value = this._localStorage?.getItem(F_ACCEPT_COOKIES_KEY);\n this._consentValue.set(value);\n } catch {\n this._consentValue.set(null);\n }\n }\n\n protected accept(): void {\n try {\n this._localStorage?.setItem(F_ACCEPT_COOKIES_KEY, 'true');\n } catch { /* empty */ }\n\n this._gtag?.updateConsent(true);\n this._consentValue.set('true');\n }\n}\n\n","@if (showPopup()) {\n <div class=\"docs-cookies-popup docs-invert-mode\">\n <p>This site uses cookies from Google to deliver its services and to analyze traffic.</p>\n\n <div>\n <a href=\"https://policies.google.com/technologies/cookies\" target=\"_blank\" rel=\"noopener\">\n <button class=\"f-button\" [attr.text]=\"'Learn more'\" aria-label=\"Learn More\">\n Learn more\n </button>\n </a>\n <button\n (click)=\"accept()\"\n class=\"f-button\"\n [attr.text]=\"'Ok, Got it'\"\n aria-label=\"Ok, Got it\">\n Ok, Got it\n </button>\n </div>\n </div>\n}\n"],"names":[],"mappings":";;;;;AAIO,MAAM,oBAAoB,GAAG;MASvB,oBAAoB,CAAA;AACd,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE/C,IAAA,aAAa,GAAG,MAAM,CAAgB,IAAI,CAAC;IAEzC,SAAS,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,KAAK,KAAK,IAAI;AACnB,QAAA,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;AAC/B,QAAA,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,CACjC;AAED,IAAA,WAAA,GAAA;AACE,QAAA,IAAI;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,CAAC;AAC/D,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;AAC7B,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;;;IAItB,MAAM,GAAA;AACd,QAAA,IAAI;YACF,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;;AACzD,QAAA,MAAM;AAER,QAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;;wGA3BrB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wECbjC,ooBAoBA,EAAA,MAAA,EAAA,CAAA,+sBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDPa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACZ,UAAA,EAAA,IAAI,EAGC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ooBAAA,EAAA,MAAA,EAAA,CAAA,+sBAAA,CAAA,EAAA;;;;;"}
@@ -1,13 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injectable, InjectionToken, EventEmitter, booleanAttribute, HostListener, Input, ViewChild, Output, ChangeDetectionStrategy, Component, input, output, viewChild, signal, ElementRef, NgZone, Directive, PLATFORM_ID, Renderer2, ChangeDetectorRef, DestroyRef, computed, ViewContainerRef, Injector, forwardRef, effect, untracked } from '@angular/core';
3
- import { DOCUMENT, isPlatformBrowser, TitleCasePipe } from '@angular/common';
4
- import { of, map, Subject, from, switchMap, startWith, filter, defer, Observable, EMPTY, debounceTime, fromEvent } from 'rxjs';
2
+ import { inject, Injectable, InjectionToken, EventEmitter, booleanAttribute, HostListener, Input, ViewChild, Output, ChangeDetectionStrategy, Component, input, output, viewChild, signal, ElementRef, NgZone, Directive, Renderer2, ChangeDetectorRef, DestroyRef, computed, ViewContainerRef, Injector, forwardRef, effect, untracked } from '@angular/core';
3
+ import { DOCUMENT, TitleCasePipe } from '@angular/common';
4
+ import { of, map, Subject, startWith, filter, EMPTY, switchMap, debounceTime, fromEvent } from 'rxjs';
5
5
  import { HttpClient } from '@angular/common/http';
6
- import { catchError, tap, filter as filter$1, shareReplay, take } from 'rxjs/operators';
6
+ import { catchError, tap, filter as filter$1, take } from 'rxjs/operators';
7
7
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
8
  import { Overlay, CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
9
9
  import { Router, RouterLink, NavigationEnd, ActivatedRoute, RouterOutlet } from '@angular/router';
10
- import { createHighlighter } from 'shiki';
10
+ import { LOCAL_STORAGE, WINDOW, DOCUMENT_ELEMENT, LOCATION, IS_BROWSER_PLATFORM, copyToClipboard } from '@foblex/mr-common';
11
+ import { HighlightService, AVAILABLE_LANGUAGES } from '@foblex/mr-highlight';
11
12
  import MarkdownIt from 'markdown-it';
12
13
  import { DomSanitizer } from '@angular/platform-browser';
13
14
  import container from 'markdown-it-container';
@@ -483,46 +484,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
483
484
  type: Injectable
484
485
  }] });
485
486
 
486
- function copyToClipboard(value) {
487
- const blob = new Blob([value], { type: 'text/plain' });
488
- const data = [new ClipboardItem({ [blob.type]: blob })];
489
- // @ts-ignore
490
- return from(window?.navigator.permissions.query({ name: 'clipboard-write' })).pipe(map((permission) => permission.state !== 'denied'), switchMap((isGranted) => {
491
- if (isGranted) {
492
- return from(navigator.clipboard.write(data));
493
- }
494
- return of(undefined);
495
- }));
496
- }
497
-
498
- const DOCUMENT_ELEMENT = new InjectionToken('DOCUMENT_ELEMENT', {
499
- factory: () => inject(DOCUMENT).documentElement,
500
- });
501
-
502
- const WINDOW = new InjectionToken('F_WINDOW', {
503
- factory: () => {
504
- const { defaultView } = inject(DOCUMENT);
505
- if (!defaultView) {
506
- throw new Error('Window is not available');
507
- }
508
- return defaultView;
509
- },
510
- });
511
-
512
- const LOCAL_STORAGE = new InjectionToken('F_LOCAL_STORAGE', {
513
- factory: () => inject(WINDOW).localStorage,
514
- });
515
-
516
- const LOCATION = new InjectionToken('F_LOCATION', {
517
- factory: () => inject(WINDOW).location,
518
- });
519
-
520
- const IS_BROWSER_PLATFORM = new InjectionToken('IS_BROWSER_PLATFORM', {
521
- factory() {
522
- return isPlatformBrowser(inject(PLATFORM_ID));
523
- },
524
- });
525
-
526
487
  class FHeadTagService {
527
488
  _document = inject(DOCUMENT);
528
489
  setTitle(title) {
@@ -1028,376 +989,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
1028
989
  }, template: "@for (data of data(); track data) {\n <button class=\"f-tab-button\" [class.active]=\"$index === index()\"\n (click)=\"onTabClick($index)\">\n {{ data.tab }}\n </button>\n}\n" }]
1029
990
  }] });
1030
991
 
1031
- class MarkCodeFocusedBlocksPostProcessor {
1032
- _window;
1033
- constructor(_window) {
1034
- this._window = _window;
1035
- }
1036
- handle(element) {
1037
- const html = element.innerHTML;
1038
- if (!FOCUS_REGEX.test(html)) {
1039
- return of(element);
1040
- }
1041
- element.innerHTML = html.replace(FOCUS_REGEX, (_match, content) => {
1042
- return `<focus class="focused"><div class="inline-focus">${content}</div></focus>`;
1043
- });
1044
- const focused = element.querySelector('.focused');
1045
- if (focused) {
1046
- this._applyOpacity(element.parentElement);
1047
- }
1048
- return of(element);
1049
- }
1050
- _applyOpacity(element) {
1051
- if (!element.classList.contains('focused')) {
1052
- element.style.color = this._createRgbaString(this._getElementColor(element), 0.5);
1053
- element.childNodes.forEach((child) => {
1054
- if (child.nodeType === Node.ELEMENT_NODE) {
1055
- this._applyOpacity(child);
1056
- }
1057
- });
1058
- }
1059
- else {
1060
- element.style.color = this._createRgbaString(this._getElementColor(element), 1, true);
1061
- }
1062
- }
1063
- _getElementColor(element) {
1064
- return this._window.getComputedStyle(element).color;
1065
- }
1066
- _createRgbaString(color, opacity, isRgb = false) {
1067
- const [r, g, b, a] = this._getRgbValues(color);
1068
- const alpha = Number(a) || 1;
1069
- return isRgb ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${opacity * alpha})`;
1070
- }
1071
- _getRgbValues(color) {
1072
- return color.match(/\d+/g);
1073
- }
1074
- }
1075
- const FOCUS_REGEX = /ƒƒƒ([\s\S]*?)¢¢¢/g;
1076
-
1077
- const UNIVERSAL_THEME = {
1078
- name: 'universal',
1079
- colors: {
1080
- 'editor.background': 'transparent',
1081
- 'editor.foreground': 'var(--code-view-text-color)',
1082
- },
1083
- settings: [
1084
- {
1085
- scope: ['comment', 'punctuation.definition.comment', 'string.comment'],
1086
- settings: {
1087
- foreground: 'var(--token-comment)',
1088
- },
1089
- },
1090
- {
1091
- scope: ['constant', 'entity.name.constant', 'variable.other.constant', 'variable.other.enummember', 'variable.language'],
1092
- settings: {
1093
- foreground: 'var(--token-number)',
1094
- },
1095
- },
1096
- {
1097
- scope: ['entity', 'entity.name'],
1098
- settings: {
1099
- foreground: 'var(--token-tag)',
1100
- },
1101
- },
1102
- {
1103
- scope: 'variable.parameter.function',
1104
- settings: {
1105
- foreground: 'var(--primary-text)',
1106
- },
1107
- },
1108
- {
1109
- scope: 'entity.name.tag',
1110
- settings: {
1111
- foreground: 'var(--token-tag)',
1112
- },
1113
- },
1114
- {
1115
- scope: 'keyword',
1116
- settings: {
1117
- foreground: 'var(--token-keyword)',
1118
- },
1119
- },
1120
- {
1121
- scope: ['storage', 'storage.type'],
1122
- settings: {
1123
- foreground: 'var(--token-keyword)',
1124
- },
1125
- },
1126
- {
1127
- scope: ['storage.modifier.package', 'storage.modifier.import', 'storage.type.java'],
1128
- settings: {
1129
- foreground: 'var(--primary-text)',
1130
- },
1131
- },
1132
- {
1133
- scope: ['string', 'punctuation.definition.string', 'string punctuation.section.embedded source'],
1134
- settings: {
1135
- foreground: 'var(--token-string)',
1136
- },
1137
- },
1138
- {
1139
- scope: 'support',
1140
- settings: {
1141
- foreground: 'var(--token-function)',
1142
- },
1143
- },
1144
- {
1145
- scope: 'meta.property-name',
1146
- settings: {
1147
- foreground: 'var(--token-function)',
1148
- },
1149
- },
1150
- {
1151
- scope: 'variable',
1152
- settings: {
1153
- foreground: 'var(--token-variable)',
1154
- },
1155
- },
1156
- {
1157
- scope: 'variable.other',
1158
- settings: {
1159
- foreground: 'var(--token-function)',
1160
- },
1161
- },
1162
- {
1163
- scope: [
1164
- 'invalid.broken',
1165
- 'invalid.deprecated',
1166
- 'invalid.illegal',
1167
- 'invalid.unimplemented',
1168
- ],
1169
- settings: {
1170
- fontStyle: 'italic',
1171
- foreground: 'var(--danger-2)',
1172
- },
1173
- },
1174
- {
1175
- scope: 'carriage-return',
1176
- settings: {
1177
- fontStyle: 'italic underline',
1178
- foreground: 'var(--background-color)',
1179
- background: 'var(--token-keyword)',
1180
- },
1181
- },
1182
- {
1183
- scope: 'message.error',
1184
- settings: {
1185
- foreground: 'var(--danger-2)',
1186
- },
1187
- },
1188
- {
1189
- scope: 'string variable',
1190
- settings: {
1191
- foreground: 'var(--token-function)',
1192
- },
1193
- },
1194
- {
1195
- scope: ['source.regexp', 'string.regexp'],
1196
- settings: {
1197
- foreground: 'var(--token-interpolation)',
1198
- },
1199
- },
1200
- {
1201
- scope: [
1202
- 'string.regexp.character-class',
1203
- 'string.regexp constant.character.escape',
1204
- 'string.regexp source.ruby.embedded',
1205
- 'string.regexp string.regexp.arbitrary-repitition',
1206
- ],
1207
- settings: {
1208
- foreground: 'var(--token-interpolation)',
1209
- },
1210
- },
1211
- {
1212
- scope: 'string.regexp constant.character.escape',
1213
- settings: {
1214
- fontStyle: 'bold',
1215
- foreground: 'var(--token-attr-value)',
1216
- },
1217
- },
1218
- {
1219
- scope: ['support.constant', 'support.variable', 'meta.module-reference'],
1220
- settings: {
1221
- foreground: 'var(--token-function)',
1222
- },
1223
- },
1224
- {
1225
- scope: 'punctuation.definition.list.begin.markdown',
1226
- settings: {
1227
- foreground: 'var(--token-variable)',
1228
- },
1229
- },
1230
- {
1231
- scope: ['markup.heading', 'markup.heading entity.name'],
1232
- settings: {
1233
- fontStyle: 'bold',
1234
- foreground: 'var(--token-function)',
1235
- },
1236
- },
1237
- {
1238
- scope: 'markup.quote',
1239
- settings: {
1240
- foreground: 'var(--token-attr-value)',
1241
- },
1242
- },
1243
- {
1244
- scope: 'markup.italic',
1245
- settings: {
1246
- fontStyle: 'italic',
1247
- foreground: 'var(--primary-text)',
1248
- },
1249
- },
1250
- {
1251
- scope: 'markup.bold',
1252
- settings: {
1253
- fontStyle: 'bold',
1254
- foreground: 'var(--primary-text)',
1255
- },
1256
- },
1257
- {
1258
- scope: 'markup.underline',
1259
- settings: {
1260
- fontStyle: 'underline',
1261
- },
1262
- },
1263
- {
1264
- scope: 'markup.strikethrough',
1265
- settings: {
1266
- fontStyle: 'strikethrough',
1267
- },
1268
- },
1269
- {
1270
- scope: 'markup.inline.raw',
1271
- settings: {
1272
- foreground: 'var(--token-function)',
1273
- },
1274
- },
1275
- {
1276
- scope: ['markup.deleted', 'meta.diff.header.from-file', 'punctuation.definition.deleted'],
1277
- settings: {
1278
- background: 'var(--danger-3)',
1279
- foreground: 'var(--danger-2)',
1280
- },
1281
- },
1282
- {
1283
- scope: ['markup.inserted', 'meta.diff.header.to-file', 'punctuation.definition.inserted'],
1284
- settings: {
1285
- background: 'var(--success-3)',
1286
- foreground: 'var(--token-attr-value)',
1287
- },
1288
- },
1289
- {
1290
- scope: ['markup.changed', 'punctuation.definition.changed'],
1291
- settings: {
1292
- background: 'var(--warning-3)',
1293
- foreground: 'var(--token-variable)',
1294
- },
1295
- },
1296
- {
1297
- scope: ['markup.ignored', 'markup.untracked'],
1298
- settings: {
1299
- background: 'var(--token-function)',
1300
- foreground: 'var(--alt-background)',
1301
- },
1302
- },
1303
- {
1304
- scope: 'meta.diff.range',
1305
- settings: {
1306
- fontStyle: 'bold',
1307
- foreground: 'var(--token-attr-name)',
1308
- },
1309
- },
1310
- {
1311
- scope: 'meta.diff.header',
1312
- settings: {
1313
- foreground: 'var(--token-function)',
1314
- },
1315
- },
1316
- {
1317
- scope: 'meta.separator',
1318
- settings: {
1319
- fontStyle: 'bold',
1320
- foreground: 'var(--token-function)',
1321
- },
1322
- },
1323
- {
1324
- scope: 'meta.output',
1325
- settings: {
1326
- foreground: 'var(--token-function)',
1327
- },
1328
- },
1329
- {
1330
- scope: [
1331
- 'brackethighlighter.tag',
1332
- 'brackethighlighter.curly',
1333
- 'brackethighlighter.round',
1334
- 'brackethighlighter.square',
1335
- 'brackethighlighter.angle',
1336
- 'brackethighlighter.quote',
1337
- ],
1338
- settings: {
1339
- foreground: 'var(--gray-1)',
1340
- },
1341
- },
1342
- {
1343
- scope: 'brackethighlighter.unmatched',
1344
- settings: {
1345
- foreground: 'var(--danger-2)',
1346
- },
1347
- },
1348
- {
1349
- scope: ['constant.other.reference.link', 'string.other.link'],
1350
- settings: {
1351
- fontStyle: 'underline',
1352
- foreground: 'var(--token-interpolation)',
1353
- },
1354
- },
1355
- ],
1356
- };
1357
-
1358
- class HighlightService {
1359
- _isBrowser = inject(IS_BROWSER_PLATFORM);
1360
- _window = inject(WINDOW);
1361
- _highlighter$ = defer(() => from(createHighlighter({ themes: [UNIVERSAL_THEME], langs: LANGUAGES }))).pipe(shareReplay(1));
1362
- highlight(element, lang, content) {
1363
- if (!this._isBrowser) {
1364
- console.warn('[HighlightService] Skipping highlight on server.');
1365
- return of(element);
1366
- }
1367
- return this._highlightCodeBlock(element, lang, content).pipe(switchMap((x) => this._postProcess(x)), catchError((err) => {
1368
- console.error('[HighlightService] Failed to highlight:', err);
1369
- return of(element);
1370
- }));
1371
- }
1372
- _highlightCodeBlock(element, lang, content) {
1373
- return this._highlighter$.pipe(switchMap((highlighter) => this._renderCode(element, highlighter, lang, content)));
1374
- }
1375
- _renderCode(element, highlighter, lang, content) {
1376
- return new Observable((observer) => {
1377
- const processedContent = this._preprocessFocus(content);
1378
- element.innerHTML = highlighter.codeToHtml(processedContent, { lang, theme: 'universal', defaultColor: false });
1379
- requestAnimationFrame(() => {
1380
- observer.next(element);
1381
- observer.complete();
1382
- });
1383
- });
1384
- }
1385
- _preprocessFocus(code) {
1386
- return code.replace(/\|\:\|([\s\S]*?)\|\:\|/g, (_, p1) => `ƒƒƒ${p1}¢¢¢`);
1387
- }
1388
- _postProcess(element) {
1389
- return of(element).pipe(switchMap((x) => new MarkCodeFocusedBlocksPostProcessor(this._window).handle(x)));
1390
- }
1391
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1392
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HighlightService, providedIn: 'root' });
1393
- }
1394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: HighlightService, decorators: [{
1395
- type: Injectable,
1396
- args: [{
1397
- providedIn: 'root',
1398
- }]
1399
- }] });
1400
-
1401
992
  class HighlightComponent {
1402
993
  _highlightService = inject(HighlightService);
1403
994
  _elementRef = inject(ElementRef);
@@ -1434,19 +1025,6 @@ function parseLanguageFromFileExtension(url) {
1434
1025
  }
1435
1026
  return '';
1436
1027
  }
1437
- const LANGUAGES = [
1438
- 'javascript',
1439
- 'typescript',
1440
- 'angular-html',
1441
- 'angular-ts',
1442
- 'shell',
1443
- 'html',
1444
- 'bash',
1445
- 'css',
1446
- 'scss',
1447
- 'markdown',
1448
- 'text',
1449
- ];
1450
1028
  function parseSyntaxLanguage(language) {
1451
1029
  let result;
1452
1030
  switch (language) {
@@ -1466,7 +1044,7 @@ function parseSyntaxLanguage(language) {
1466
1044
  default:
1467
1045
  result = extractLanguage(language);
1468
1046
  }
1469
- if (!LANGUAGES.includes(result)) {
1047
+ if (!AVAILABLE_LANGUAGES.includes(result)) {
1470
1048
  result = 'text';
1471
1049
  }
1472
1050
  return result;
@@ -2797,9 +2375,6 @@ var index$2 = /*#__PURE__*/Object.freeze({
2797
2375
  GetPreviousNextPageNavigationRequest: GetPreviousNextPageNavigationRequest,
2798
2376
  GetPreviousNextPageNavigationResponse: GetPreviousNextPageNavigationResponse,
2799
2377
  HighlightComponent: HighlightComponent,
2800
- HighlightService: HighlightService,
2801
- LANGUAGES: LANGUAGES,
2802
- MarkCodeFocusedBlocksPostProcessor: MarkCodeFocusedBlocksPostProcessor,
2803
2378
  MarkdownContainerComponent: MarkdownContainerComponent,
2804
2379
  MarkdownService: MarkdownService,
2805
2380
  ParseAlerts: ParseAlerts,
@@ -2845,6 +2420,7 @@ class DocumentationRootComponent {
2845
2420
  }
2846
2421
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DocumentationRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2847
2422
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DocumentationRootComponent, isStandalone: true, selector: "documentation-root", providers: [
2423
+ HighlightService,
2848
2424
  DocumentationStore,
2849
2425
  FMetaService,
2850
2426
  {
@@ -2864,11 +2440,12 @@ class DocumentationRootComponent {
2864
2440
  provide: TOGGLE_NAVIGATION_COMPONENT,
2865
2441
  useExisting: DocumentationRootComponent,
2866
2442
  },
2867
- ], ngImport: i0, template: "<f-navigation-panel [class.visible]=\"isNavigationVisible()\"></f-navigation-panel>\n<div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n\n<f-scrollable-container>\n <f-header></f-header>\n <router-outlet></router-outlet>\n</f-scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:flex-start;height:100%;gap:5px}.f-backdrop{position:fixed;inset:0;opacity:0;z-index:var(--z-index-backdrop);background:var(--backdrop-color);transition:opacity .2s ease-in-out;pointer-events:none}.f-backdrop.visible{opacity:1;pointer-events:all}@media (min-width: 960px){.f-backdrop{position:unset}}.popover{position:fixed;min-width:120px;bottom:50%;left:50%;text-align:center;transform:translate(-50%,-50%);background-color:var(--code-view-copy-button-hover-background);border:1px solid var(--code-view-copy-button-border-color);box-shadow:var(--shadow-3);color:var(--primary-text);font-size:14px;padding:4px 8px;border-radius:4px;z-index:var(--z-index-popover);opacity:1}\n"], dependencies: [{ kind: "component", type: NavigationPanelComponent, selector: "f-navigation-panel" }, { kind: "component", type: ScrollableContainerComponent, selector: "f-scrollable-container" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: HeaderComponent, selector: "f-header" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./foblex-m-render-cookie-popup.component-BZZxqp3j.mjs').then(m => m.CookiePopupComponent)]] });
2443
+ ], ngImport: i0, template: "<f-navigation-panel [class.visible]=\"isNavigationVisible()\"></f-navigation-panel>\n<div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n\n<f-scrollable-container>\n <f-header></f-header>\n <router-outlet></router-outlet>\n</f-scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;justify-content:flex-start;align-items:flex-start;height:100%;gap:5px}.f-backdrop{position:fixed;inset:0;opacity:0;z-index:var(--z-index-backdrop);background:var(--backdrop-color);transition:opacity .2s ease-in-out;pointer-events:none}.f-backdrop.visible{opacity:1;pointer-events:all}@media (min-width: 960px){.f-backdrop{position:unset}}.popover{position:fixed;min-width:120px;bottom:50%;left:50%;text-align:center;transform:translate(-50%,-50%);background-color:var(--code-view-copy-button-hover-background);border:1px solid var(--code-view-copy-button-border-color);box-shadow:var(--shadow-3);color:var(--primary-text);font-size:14px;padding:4px 8px;border-radius:4px;z-index:var(--z-index-popover);opacity:1}\n"], dependencies: [{ kind: "component", type: NavigationPanelComponent, selector: "f-navigation-panel" }, { kind: "component", type: ScrollableContainerComponent, selector: "f-scrollable-container" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: HeaderComponent, selector: "f-header" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)]] });
2868
2444
  }
2869
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.11", ngImport: i0, type: DocumentationRootComponent, resolveDeferredDeps: () => [import('./foblex-m-render-cookie-popup.component-BZZxqp3j.mjs').then(m => m.CookiePopupComponent)], resolveMetadata: CookiePopupComponent => ({ decorators: [{
2445
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.11", ngImport: i0, type: DocumentationRootComponent, resolveDeferredDeps: () => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)], resolveMetadata: CookiePopupComponent => ({ decorators: [{
2870
2446
  type: Component,
2871
2447
  args: [{ selector: 'documentation-root', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2448
+ HighlightService,
2872
2449
  DocumentationStore,
2873
2450
  FMetaService,
2874
2451
  {
@@ -2951,9 +2528,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
2951
2528
  HandleNavigationLinksRequest: HandleNavigationLinksRequest,
2952
2529
  HeaderComponent: HeaderComponent,
2953
2530
  HighlightComponent: HighlightComponent,
2954
- HighlightService: HighlightService,
2955
- LANGUAGES: LANGUAGES,
2956
- MarkCodeFocusedBlocksPostProcessor: MarkCodeFocusedBlocksPostProcessor,
2957
2531
  MarkdownContainerComponent: MarkdownContainerComponent,
2958
2532
  MarkdownService: MarkdownService,
2959
2533
  NavigationGroupComponent: NavigationGroupComponent,
@@ -3119,13 +2693,13 @@ class FHomePageHeaderComponent {
3119
2693
  logo = inject(HomeStore).getLogo();
3120
2694
  title = inject(HomeStore).getTitle();
3121
2695
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3122
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FHomePageHeaderComponent, isStandalone: true, selector: "header[f-home-page-header]", ngImport: i0, template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"/libs/public\" aria-label=\"Home\">\n <img [src]=\"logo\" class=\"logo\" alt=\"{{ title }} Logo\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title }}</span>\n </a>\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .logo-link{display:flex;align-items:center;text-decoration:none}:host .content{display:flex;justify-content:flex-start;align-items:center;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .logo{margin-right:8px}:host .title{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;font-size:16px;font-weight:600;color:var(--primary-text)}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"], dependencies: [{ kind: "component", type: ThemeButtonComponent, selector: "button[theme-button]" }] });
2696
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: FHomePageHeaderComponent, isStandalone: true, selector: "header[f-home-page-header]", ngImport: i0, template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"\" aria-label=\"Home\">\n <img [src]=\"logo\" class=\"logo\" alt=\"{{ title }} Logo\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title }}</span>\n </a>\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .logo-link{display:flex;align-items:center;text-decoration:none}:host .content{display:flex;justify-content:flex-start;align-items:center;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .logo{margin-right:8px}:host .title{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;font-size:16px;font-weight:600;color:var(--primary-text)}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"], dependencies: [{ kind: "component", type: ThemeButtonComponent, selector: "button[theme-button]" }] });
3123
2697
  }
3124
2698
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: FHomePageHeaderComponent, decorators: [{
3125
2699
  type: Component,
3126
2700
  args: [{ selector: 'header[f-home-page-header]', standalone: true, imports: [
3127
2701
  ThemeButtonComponent,
3128
- ], template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"/libs/public\" aria-label=\"Home\">\n <img [src]=\"logo\" class=\"logo\" alt=\"{{ title }} Logo\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title }}</span>\n </a>\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .logo-link{display:flex;align-items:center;text-decoration:none}:host .content{display:flex;justify-content:flex-start;align-items:center;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .logo{margin-right:8px}:host .title{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;font-size:16px;font-weight:600;color:var(--primary-text)}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"] }]
2702
+ ], template: "<div class=\"content\">\n <a class=\"logo-link\" href=\"\" aria-label=\"Home\">\n <img [src]=\"logo\" class=\"logo\" alt=\"{{ title }} Logo\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title }}</span>\n </a>\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n\n", styles: [":host{position:relative;z-index:5;padding:0 24px}:host .logo-link{display:flex;align-items:center;text-decoration:none}:host .content{display:flex;justify-content:flex-start;align-items:center;width:100%;height:64px;max-width:1376px;margin:0 auto}:host .logo{margin-right:8px}:host .title{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;font-size:16px;font-weight:600;color:var(--primary-text)}@media (min-width: 640px){:host{padding:0 48px}}@media (min-width: 960px){:host{padding:0 64px}}\n"] }]
3129
2703
  }] });
3130
2704
 
3131
2705
  class FHomePageHeroComponent {
@@ -3196,9 +2770,9 @@ class HomeRootComponent {
3196
2770
  provide: HEADER_CONFIGURATION_STORE,
3197
2771
  useExisting: HomeStore,
3198
2772
  },
3199
- ], viewQueries: [{ propertyName: "_backgroundContainer", first: true, predicate: ["backgroundContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_heroImageContainer", first: true, predicate: ["heroImageContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #backgroundContainer></ng-container>\n<header f-home-page-header></header>\n\n<div class=\"body\">\n <div class=\"hero-row\">\n <f-home-page-hero></f-home-page-hero>\n <ng-container #heroImageContainer></ng-container>\n </div>\n <f-home-page-features></f-home-page-features>\n <f-home-page-memberships></f-home-page-memberships>\n</div>\n\n<div class=\"flex-space\"></div>\n<footer f-home-page-footer></footer>\n\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;flex-direction:column;position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;overflow-y:auto}.body{position:relative;z-index:3;pointer-events:none}@media (min-width: 960px){.body{margin-top:50px}}@media (min-width: 1376px){.body{margin-top:100px}}.hero-row{display:flex;flex-direction:column-reverse;justify-content:space-between;align-items:center;margin:0 auto}@media (min-width: 960px){.hero-row{flex-direction:row;margin-left:64px;margin-right:64px}}@media (min-width: 1376px){.hero-row{flex-direction:row;margin-left:calc(50% - 624px);margin-right:calc(50% - 624px)}}\n"], dependencies: [{ kind: "component", type: FHomePageFooterComponent, selector: "footer[f-home-page-footer]" }, { kind: "component", type: FHomePageHeaderComponent, selector: "header[f-home-page-header]" }, { kind: "component", type: FHomePageFeaturesComponent, selector: "f-home-page-features" }, { kind: "component", type: FHomePageHeroComponent, selector: "f-home-page-hero" }, { kind: "component", type: FHomePageMembershipsComponent, selector: "f-home-page-memberships" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./foblex-m-render-cookie-popup.component-BZZxqp3j.mjs').then(m => m.CookiePopupComponent)]] });
2773
+ ], viewQueries: [{ propertyName: "_backgroundContainer", first: true, predicate: ["backgroundContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_heroImageContainer", first: true, predicate: ["heroImageContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #backgroundContainer></ng-container>\n<header f-home-page-header></header>\n\n<div class=\"body\">\n <div class=\"hero-row\">\n <f-home-page-hero></f-home-page-hero>\n <ng-container #heroImageContainer></ng-container>\n </div>\n <f-home-page-features></f-home-page-features>\n <f-home-page-memberships></f-home-page-memberships>\n</div>\n\n<div class=\"flex-space\"></div>\n<footer f-home-page-footer></footer>\n\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n", styles: [":host{display:flex;flex-direction:column;position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;overflow-y:auto}.body{position:relative;z-index:3;pointer-events:none}@media (min-width: 960px){.body{margin-top:50px}}@media (min-width: 1376px){.body{margin-top:100px}}.hero-row{display:flex;flex-direction:column-reverse;justify-content:space-between;align-items:center;margin:0 auto}@media (min-width: 960px){.hero-row{flex-direction:row;margin-left:64px;margin-right:64px}}@media (min-width: 1376px){.hero-row{flex-direction:row;margin-left:calc(50% - 624px);margin-right:calc(50% - 624px)}}\n"], dependencies: [{ kind: "component", type: FHomePageFooterComponent, selector: "footer[f-home-page-footer]" }, { kind: "component", type: FHomePageHeaderComponent, selector: "header[f-home-page-header]" }, { kind: "component", type: FHomePageFeaturesComponent, selector: "f-home-page-features" }, { kind: "component", type: FHomePageHeroComponent, selector: "f-home-page-hero" }, { kind: "component", type: FHomePageMembershipsComponent, selector: "f-home-page-memberships" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)]] });
3200
2774
  }
3201
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.11", ngImport: i0, type: HomeRootComponent, resolveDeferredDeps: () => [import('./foblex-m-render-cookie-popup.component-BZZxqp3j.mjs').then(m => m.CookiePopupComponent)], resolveMetadata: CookiePopupComponent => ({ decorators: [{
2775
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.11", ngImport: i0, type: HomeRootComponent, resolveDeferredDeps: () => [import('./foblex-m-render-cookie-popup.component-CqwZv5lc.mjs').then(m => m.CookiePopupComponent)], resolveMetadata: CookiePopupComponent => ({ decorators: [{
3202
2776
  type: Component,
3203
2777
  args: [{ selector: 'home-root', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3204
2778
  HomeStore,
@@ -3254,5 +2828,5 @@ var index = /*#__PURE__*/Object.freeze({
3254
2828
  * Generated bundle index. Do not edit.
3255
2829
  */
3256
2830
 
3257
- export { ActivateTocByHashHandler, ActivateTocByHashRequest, CalculateHashFromScrollPositionAndActivateTocHandler, CalculateHashFromScrollPositionAndActivateTocRequest, CalculateTableOfContentDataHandler, CalculateTableOfContentDataRequest, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DOCUMENT_ELEMENT, DocumentationRootComponent, DocumentationStore, DropdownMenuComponent, EMarkdownContainerType, EParsedContainerType, FCheckboxComponent, FCodeGroupComponent, FCodeGroupTabsComponent, FCodeViewComponent, FExampleViewComponent, FFooterEditInformationComponent, FFooterNavigationButtonComponent, FFooterNavigationComponent, FHomePageButtonsRowComponent, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FHomePageHeroComponent, FHomePageMembershipsComponent, FInsertComponentDirective, FMarkdownFooterComponent, FMarkdownRendererComponent, FMetaService, FNavigationItemComponent, FPreviewBase, FPreviewComponent, FPreviewGroupFiltersComponent, FPreviewGroupService, FRadioButtonComponent, FSocialLinksComponent, F_PREVIEW_NAVIGATION_PROVIDER, F_SOCIAL_LINKS_PROVIDER, GTAG_CONFIG, GTagService, GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, HEADER_CONFIGURATION, HEADER_CONFIGURATION_STORE, HOME_PAGE_CONFIGURATION, HOME_ROUTES, HamburgerButtonComponent, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HeaderComponent, HighlightComponent, HighlightService, HomeRootComponent, HomeStore, IS_BROWSER_PLATFORM, InlineMenuComponent, LANGUAGES, LOCAL_STORAGE, LOCATION, 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, ThemeButtonComponent, ThemeService, WINDOW, coerceComponentHeight, copyToClipboard, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, parseLanguageFromFileExtension, parseSingleBracketText, parseSyntaxLanguage, provide404Markdown, provideBackground, provideComponents, provideDirectory, provideDocumentation, provideDocumentationMeta, provideFooterNavigation, provideGTag, provideHeader, provideHeaderMediaLinks, provideHeaderNavigation, provideHero, provideHomeButtons, provideHomeFeatures, provideHomeFooter, provideHomePage, provideImage, provideLanguage, provideLogo, provideNavigation, provideTheme, provideTitle, provideTocData };
2831
+ export { ActivateTocByHashHandler, ActivateTocByHashRequest, CalculateHashFromScrollPositionAndActivateTocHandler, CalculateHashFromScrollPositionAndActivateTocRequest, CalculateTableOfContentDataHandler, CalculateTableOfContentDataRequest, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DocumentationRootComponent, DocumentationStore, DropdownMenuComponent, EMarkdownContainerType, EParsedContainerType, FCheckboxComponent, FCodeGroupComponent, FCodeGroupTabsComponent, FCodeViewComponent, FExampleViewComponent, FFooterEditInformationComponent, FFooterNavigationButtonComponent, FFooterNavigationComponent, FHomePageButtonsRowComponent, FHomePageFeaturesComponent, FHomePageFooterComponent, FHomePageHeaderComponent, FHomePageHeroComponent, FHomePageMembershipsComponent, FInsertComponentDirective, FMarkdownFooterComponent, FMarkdownRendererComponent, FMetaService, FNavigationItemComponent, FPreviewBase, FPreviewComponent, FPreviewGroupFiltersComponent, FPreviewGroupService, FRadioButtonComponent, FSocialLinksComponent, F_PREVIEW_NAVIGATION_PROVIDER, F_SOCIAL_LINKS_PROVIDER, GTAG_CONFIG, GTagService, GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest, GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest, GetPreviousNextPageNavigationResponse, HEADER_CONFIGURATION, HEADER_CONFIGURATION_STORE, HOME_PAGE_CONFIGURATION, HOME_ROUTES, HamburgerButtonComponent, HandleNavigationLinksHandler, HandleNavigationLinksRequest, HeaderComponent, HighlightComponent, HomeRootComponent, HomeStore, InlineMenuComponent, MarkdownContainerComponent, MarkdownService, NavigationGroupComponent, NavigationPanelComponent, NpmVersionComponent, OverflowObserverDirective, ParseAlerts, ParseAngularExampleWithCodeLinks, ParseGroupedCodeItems, ParsePreviewGroup, ParseSingleCodeItem, PopoverService, RIGHT_TOP_OVERLAY_POSITION, RenderDynamicComponentsHandler, RenderDynamicComponentsRequest, SCROLLABLE_CONTAINER, ScrollToElementInContainerHandler, ScrollToElementInContainerRequest, ScrollableContainerComponent, TOGGLE_NAVIGATION_COMPONENT, TableOfContentComponent, TableOfContentData, TableOfContentItemsComponent, ThemeButtonComponent, ThemeService, coerceComponentHeight, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, parseLanguageFromFileExtension, parseSingleBracketText, parseSyntaxLanguage, provide404Markdown, provideBackground, provideComponents, provideDirectory, provideDocumentation, provideDocumentationMeta, provideFooterNavigation, provideGTag, provideHeader, provideHeaderMediaLinks, provideHeaderNavigation, provideHero, provideHomeButtons, provideHomeFeatures, provideHomeFooter, provideHomePage, provideImage, provideLanguage, provideLogo, provideNavigation, provideTheme, provideTitle, provideTocData };
3258
2832
  //# sourceMappingURL=foblex-m-render.mjs.map