@foblex/m-render 2.9.5 → 3.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foblex/m-render",
3
- "version": "2.9.5",
3
+ "version": "3.0.1",
4
4
  "description": "MRender is a static site generator designed for creating fast and user-friendly documentation sites based on Markdown files. MarkEngine supports extended Markdown syntax and can render Angular components directly from Markdown files.",
5
5
  "author": "Siarhei Huzarevich",
6
6
  "license": "MIT",
@@ -31,13 +31,13 @@
31
31
  },
32
32
  "sideEffects": false,
33
33
  "module": "fesm2022/foblex-m-render.mjs",
34
- "typings": "index.d.ts",
34
+ "typings": "types/foblex-m-render.d.ts",
35
35
  "exports": {
36
36
  "./package.json": {
37
37
  "default": "./package.json"
38
38
  },
39
39
  ".": {
40
- "types": "./index.d.ts",
40
+ "types": "./types/foblex-m-render.d.ts",
41
41
  "default": "./fesm2022/foblex-m-render.mjs"
42
42
  }
43
43
  }
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Provider, InjectionToken, EventEmitter, ElementRef, ChangeDetectorRef, OnDestroy, AfterViewInit, OnInit, Type, ViewContainerRef, ComponentRef, Signal } from '@angular/core';
2
+ import { InjectionToken, Provider, OnDestroy, AfterViewInit, OnInit, Type, ViewContainerRef, ComponentRef, Signal, EventEmitter, ElementRef, ChangeDetectorRef } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as _angular_cdk_overlay from '@angular/cdk/overlay';
5
5
  import { ConnectedPosition } from '@angular/cdk/overlay';
6
- import { SafeHtml } from '@angular/platform-browser';
6
+ import * as _foblex_m_render from '@foblex/m-render';
7
+ import { SafeResourceUrl, SafeHtml } from '@angular/platform-browser';
7
8
  import MarkdownIt from 'markdown-it';
8
9
  import container from 'markdown-it-container';
9
- import * as _foblex_m_render from '@foblex/m-render';
10
10
  import { Router, Routes } from '@angular/router';
11
- import { ThemeInput } from '@shikijs/types';
11
+ import { PlainTextLanguage, LanguageInput, ThemeInput } from '@shikijs/types';
12
12
 
13
13
  declare function provideGTag(config: GTagConfig): Provider[];
14
14
  interface GTagConfig {
@@ -39,45 +39,36 @@ declare class GTagService {
39
39
  static ɵprov: i0.ɵɵInjectableDeclaration<GTagService>;
40
40
  }
41
41
 
42
- declare class FSearchButtonComponent {
43
- static ɵfac: i0.ɵɵFactoryDeclaration<FSearchButtonComponent, never>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<FSearchButtonComponent, "f-search-button", never, {}, {}, never, never, true, never>;
45
- }
46
-
47
- declare class FCheckboxComponent {
48
- private changeDetectorRef;
49
- id: string;
50
- change: EventEmitter<boolean>;
51
- private inputElement?;
52
- labelElement?: ElementRef<HTMLLabelElement>;
53
- get checked(): boolean;
54
- set checked(value: boolean);
55
- private isChecked;
56
- constructor(changeDetectorRef: ChangeDetectorRef);
57
- onInputClick(): void;
58
- onTouchTargetClick(): void;
59
- private handleInputClick;
60
- private emitChangeEvent;
61
- onInteractionEvent(event: Event): void;
62
- preventBubblingFromLabel(event: MouseEvent): void;
63
- static ɵfac: i0.ɵɵFactoryDeclaration<FCheckboxComponent, never>;
64
- static ɵcmp: i0.ɵɵComponentDeclaration<FCheckboxComponent, "f-checkbox", never, { "id": { "alias": "id"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
65
- static ngAcceptInputType_checked: unknown;
66
- }
67
-
68
- declare class FRadioButtonComponent {
69
- id: i0.InputSignal<string>;
70
- change: i0.OutputEmitterRef<boolean>;
71
- checked: i0.InputSignal<boolean>;
72
- protected labelElement: i0.Signal<ElementRef<any> | undefined>;
73
- onInputClick(): void;
74
- onTouchTargetClick(): void;
75
- private _handleInputClick;
76
- private _emitChangeEvent;
77
- protected onInteractionEvent(event: Event): void;
78
- protected preventBubblingFromLabel(event: MouseEvent): void;
79
- static ɵfac: i0.ɵɵFactoryDeclaration<FRadioButtonComponent, never>;
80
- static ɵcmp: i0.ɵɵComponentDeclaration<FRadioButtonComponent, "f-radio-button", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, ["*"], true, never>;
42
+ interface IMetaData {
43
+ url: string;
44
+ canonical?: string;
45
+ type: string;
46
+ title: string;
47
+ app_name: string;
48
+ locale: string;
49
+ description: string;
50
+ image: string;
51
+ image_type: string;
52
+ image_width: number;
53
+ image_height: number;
54
+ keywords?: string;
55
+ robots?: string;
56
+ twitter_card?: string;
57
+ twitter_site?: string;
58
+ twitter_creator?: string;
59
+ }
60
+
61
+ interface ISeoOverrides extends Partial<IMetaData> {
62
+ og_type?: string;
63
+ og_title?: string;
64
+ og_description?: string;
65
+ og_image?: string;
66
+ twitter_card?: string;
67
+ twitter_title?: string;
68
+ twitter_description?: string;
69
+ twitter_image?: string;
70
+ noindex?: boolean;
71
+ nofollow?: boolean;
81
72
  }
82
73
 
83
74
  declare class FMetaService {
@@ -85,31 +76,23 @@ declare class FMetaService {
85
76
  private readonly _router;
86
77
  private readonly _headTag;
87
78
  private readonly _configuration;
79
+ private _seoOverrides;
80
+ private _lastPath;
88
81
  changes(): Observable<string>;
82
+ applyMarkdownSeo(overrides: ISeoOverrides | null | undefined): void;
89
83
  dispose(): void;
84
+ private _updateMetaByUrl;
90
85
  private _findDocGroupByUrl;
91
86
  private _findDocItemByUrl;
92
87
  private _buildAbsoluteUrl;
93
88
  private _toAbsoluteUrl;
94
89
  private _updateMetaTags;
90
+ private _resolveRobots;
91
+ private _normalizeCurrentPath;
95
92
  static ɵfac: i0.ɵɵFactoryDeclaration<FMetaService, never>;
96
93
  static ɵprov: i0.ɵɵInjectableDeclaration<FMetaService>;
97
94
  }
98
95
 
99
- interface IMetaData {
100
- url: string;
101
- canonical?: string;
102
- type: string;
103
- title: string;
104
- app_name: string;
105
- locale: string;
106
- description: string;
107
- image: string;
108
- image_type: string;
109
- image_width: number;
110
- image_height: number;
111
- }
112
-
113
96
  declare class HamburgerButton {
114
97
  private readonly _parent;
115
98
  protected _onShowNavigation(): void;
@@ -171,7 +154,7 @@ interface IMediaLinksProvider {
171
154
  declare const MEDIA_LINKS_PROVIDER: InjectionToken<IMediaLink[]>;
172
155
 
173
156
  declare class MediaLinks {
174
- protected links: IMediaLink[] | null;
157
+ protected links: _foblex_m_render.IMediaLink[] | null;
175
158
  static ɵfac: i0.ɵɵFactoryDeclaration<MediaLinks, never>;
176
159
  static ɵcmp: i0.ɵɵComponentDeclaration<MediaLinks, "media-links", never, {}, {}, never, never, true, never>;
177
160
  }
@@ -179,7 +162,7 @@ declare class MediaLinks {
179
162
  declare class HeaderComponent implements AfterViewInit, OnDestroy {
180
163
  protected title: string;
181
164
  protected image: string;
182
- protected config: IHeaderConfiguration;
165
+ protected config: _foblex_m_render.IHeaderConfiguration;
183
166
  protected readonly emptyNavigation: boolean;
184
167
  private readonly _zone;
185
168
  private readonly _containerRef;
@@ -245,7 +228,7 @@ declare class NavigationPanelComponent implements OnInit, AfterViewInit {
245
228
  private readonly _destroyRef;
246
229
  private readonly _window;
247
230
  protected value: string | undefined;
248
- protected navigation: INavigationGroup[];
231
+ protected navigation: _foblex_m_render.INavigationGroup[];
249
232
  protected title: string;
250
233
  protected image: string;
251
234
  ngOnInit(): void;
@@ -286,19 +269,35 @@ declare class CodeGroup {
286
269
  }
287
270
 
288
271
  interface IExampleViewData {
289
- value: string;
272
+ selector?: string;
273
+ iframeUrl?: string;
290
274
  height?: string | number;
291
275
  }
292
276
 
293
277
  declare function coerceComponentHeight(value: string | number | undefined): string | undefined;
294
278
 
279
+ declare function parseIframeUrl(value: string): string | null;
280
+
295
281
  declare function parseComponentTag(html: string): string | null;
296
282
 
297
283
  declare class ExternalComponent implements OnInit {
298
284
  readonly data: i0.InputSignalWithTransform<IExampleViewData, IParsedContainerData>;
285
+ protected readonly iframeUrl: i0.Signal<string | undefined>;
286
+ protected readonly iframeResourceUrl: i0.Signal<SafeResourceUrl | undefined>;
287
+ protected readonly hasContent: i0.Signal<boolean>;
288
+ protected readonly canToggleFullscreen: i0.Signal<boolean>;
289
+ protected readonly fullscreenLabel: i0.Signal<"Exit full screen" | "Full screen">;
290
+ protected readonly isFullscreen: i0.WritableSignal<boolean>;
291
+ private readonly _document;
292
+ private readonly _hostElement;
293
+ private readonly _isBrowser;
299
294
  private readonly _mediatr;
300
295
  private readonly _viewContainerRef;
296
+ private readonly _sanitizer;
301
297
  ngOnInit(): void;
298
+ protected toggleFullscreen(): Promise<void>;
299
+ protected onFullscreenChange(): void;
300
+ private _isCurrentElementInFullscreen;
302
301
  static ɵfac: i0.ɵɵFactoryDeclaration<ExternalComponent, never>;
303
302
  static ɵcmp: i0.ɵɵComponentDeclaration<ExternalComponent, "external-component", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
304
303
  }
@@ -551,7 +550,7 @@ declare class MarkdownFooter {
551
550
  private readonly _router;
552
551
  private readonly _activatedRoute;
553
552
  private readonly _window;
554
- protected readonly navigation: IMarkdownFooterNavigation;
553
+ protected readonly navigation: _foblex_m_render.IMarkdownFooterNavigation;
555
554
  private readonly _url;
556
555
  private readonly _currentLink;
557
556
  private readonly _prefix;
@@ -560,7 +559,7 @@ declare class MarkdownFooter {
560
559
  protected readonly nextLink: i0.Signal<IMarkdownFooterLink | undefined>;
561
560
  private _normalizeLink;
562
561
  private _isExternal;
563
- private _click;
562
+ protected _click(event: MouseEvent): void;
564
563
  static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownFooter, never>;
565
564
  static ɵcmp: i0.ɵɵComponentDeclaration<MarkdownFooter, "markdown-footer", never, {}, {}, never, never, true, never>;
566
565
  }
@@ -599,8 +598,8 @@ interface IMarkdownItToken {
599
598
  }
600
599
 
601
600
  interface IMarkdownContainerData {
602
- tag: string;
603
- height?: string;
601
+ value: string;
602
+ height?: string | number;
604
603
  }
605
604
 
606
605
  interface IParsedContainerData {
@@ -627,12 +626,30 @@ interface IPreviewNavigationService<T extends IPreviewNavigationGroup> {
627
626
  }
628
627
  declare const F_PREVIEW_NAVIGATION_PROVIDER: InjectionToken<IPreviewNavigationService<IPreviewNavigationGroup>>;
629
628
 
629
+ interface IMarkdownPageLayoutOptions {
630
+ hideTableOfContent: boolean;
631
+ expandContentWithoutTableOfContent: boolean;
632
+ }
633
+ interface IMarkdownFrontMatterData {
634
+ layout: IMarkdownPageLayoutOptions;
635
+ seo: ISeoOverrides | null;
636
+ }
637
+ interface IMarkdownFrontMatterParseResult {
638
+ markdown: string;
639
+ data: IMarkdownFrontMatterData;
640
+ }
641
+ declare const DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS: IMarkdownPageLayoutOptions;
642
+
630
643
  declare class MarkdownService {
631
644
  private readonly _markdown;
632
645
  private readonly _httpClient;
633
646
  private readonly _domSanitizer;
634
647
  private readonly _router;
635
648
  private readonly _provider;
649
+ private readonly _pageLayout;
650
+ private readonly _pageSeo;
651
+ readonly pageLayout: i0.Signal<IMarkdownPageLayoutOptions>;
652
+ readonly pageSeo: i0.Signal<ISeoOverrides | null>;
636
653
  constructor();
637
654
  parseUrl(src: string): Observable<SafeHtml>;
638
655
  parseText(value: string): Observable<SafeHtml>;
@@ -641,6 +658,18 @@ declare class MarkdownService {
641
658
  private _cleanupEmptyParagraphs;
642
659
  private _cleanupWasteParagraphFromExampleView;
643
660
  private _cleanupWasteParagraphFromPreviewGroup;
661
+ private _renderMarkdownWithPageContext;
662
+ private _parseFrontMatter;
663
+ private _parseFrontMatterData;
664
+ private _parseFrontMatterLine;
665
+ private _normalizeFrontMatterValue;
666
+ private _parseBoolean;
667
+ private _applyLayoutKey;
668
+ private _applySeoKey;
669
+ private _parseNumberOrDefault;
670
+ private _applyPageContext;
671
+ private _resetPageContext;
672
+ private _getDefaultFrontMatterData;
644
673
  static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownService, never>;
645
674
  static ɵprov: i0.ɵɵInjectableDeclaration<MarkdownService>;
646
675
  }
@@ -679,6 +708,7 @@ declare class ParseAngularExampleWithCodeLinks {
679
708
  private _opening;
680
709
  private _collectData;
681
710
  private _parseNgComponent;
711
+ private _parseHeight;
682
712
  }
683
713
 
684
714
  type ContainerArgs$1 = [typeof container, string, {
@@ -740,7 +770,9 @@ declare class MarkdownRouter {
740
770
  private readonly _activatedRoute;
741
771
  private readonly _markdown;
742
772
  private readonly _dataProvider;
773
+ private readonly _metaService;
743
774
  protected readonly emptyNavigation: boolean;
775
+ protected readonly shouldExpandContent: i0.Signal<boolean>;
744
776
  private readonly _path$;
745
777
  protected readonly html: i0.Signal<SafeHtml | undefined>;
746
778
  static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownRouter, never>;
@@ -754,6 +786,19 @@ interface IScrollableContainer {
754
786
  };
755
787
  }
756
788
 
789
+ declare class ScrollableContainer implements OnInit, IScrollableContainer {
790
+ private readonly _destroyRef;
791
+ private readonly _injector;
792
+ private readonly _markdown;
793
+ protected readonly tableOfContent: _foblex_m_render.ITableOfContent | null;
794
+ protected readonly canShowTableOfContent: i0.Signal<boolean>;
795
+ readonly htmlElement: any;
796
+ ngOnInit(): void;
797
+ private _calculateHashAndActivate;
798
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollableContainer, never>;
799
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScrollableContainer, "scrollable-container", never, {}, {}, never, ["*"], true, never>;
800
+ }
801
+
757
802
  declare class ActivateTocByHashRequest {
758
803
  hash: string | undefined;
759
804
  static readonly requestToken: unique symbol;
@@ -884,17 +929,6 @@ declare class TableOfContent {
884
929
  static ɵcmp: i0.ɵɵComponentDeclaration<TableOfContent, "table-of-content", never, {}, {}, never, never, true, never>;
885
930
  }
886
931
 
887
- declare class ScrollableContainer implements OnInit, IScrollableContainer {
888
- private readonly _destroyRef;
889
- private readonly _injector;
890
- protected readonly tableOfContent: ITableOfContent | null;
891
- readonly htmlElement: any;
892
- ngOnInit(): void;
893
- private _calculateHashAndActivate;
894
- static ɵfac: i0.ɵɵFactoryDeclaration<ScrollableContainer, never>;
895
- static ɵcmp: i0.ɵɵComponentDeclaration<ScrollableContainer, "scrollable-container", never, {}, {}, never, ["*"], true, never>;
896
- }
897
-
898
932
  declare class HandleNavigationLinksRequest {
899
933
  event: MouseEvent;
900
934
  window: Window;
@@ -1093,17 +1127,25 @@ declare class HighlightService {
1093
1127
  */
1094
1128
  private readonly _isBrowser;
1095
1129
  private readonly _window;
1130
+ private readonly _languageLoadingTasks;
1096
1131
  private readonly _highlighter$;
1097
1132
  highlight(element: HTMLElement, lang: string, content: string): Observable<HTMLElement>;
1098
1133
  private _highlightCodeBlock;
1099
1134
  private _renderCode;
1100
1135
  private _preprocessFocus;
1136
+ private _createHighlighter;
1137
+ private _ensureLanguageLoaded;
1138
+ private _scheduleRender;
1101
1139
  private _postProcess;
1102
1140
  static ɵfac: i0.ɵɵFactoryDeclaration<HighlightService, never>;
1103
1141
  static ɵprov: i0.ɵɵInjectableDeclaration<HighlightService>;
1104
1142
  }
1105
1143
 
1106
- declare const AVAILABLE_LANGUAGES: string[];
1144
+ type ShikiLanguage = 'javascript' | 'typescript' | 'angular-html' | 'angular-ts' | 'shell' | 'html' | 'bash' | 'css' | 'scss' | 'markdown';
1145
+ type HighlightLanguage = ShikiLanguage | PlainTextLanguage;
1146
+ declare const AVAILABLE_LANGUAGES: readonly HighlightLanguage[];
1147
+ declare function resolveHighlightLanguage(lang?: string): HighlightLanguage;
1148
+ declare function getLanguageLoader(lang: HighlightLanguage): LanguageInput | null;
1107
1149
 
1108
1150
  declare class MarkCodeFocusedBlocksPostProcessor {
1109
1151
  private _window;
@@ -1249,6 +1291,58 @@ declare class HomeRootComponent implements AfterViewInit, OnInit {
1249
1291
 
1250
1292
  declare const HOME_ROUTES: Routes;
1251
1293
 
1294
+ declare class FBrandLinkComponent {
1295
+ readonly title: i0.InputSignal<string>;
1296
+ readonly logo: i0.InputSignal<string>;
1297
+ readonly ariaLabel: i0.InputSignal<string>;
1298
+ readonly logoAlt: i0.InputSignal<string>;
1299
+ readonly href: i0.InputSignal<string>;
1300
+ readonly routerLink: i0.InputSignal<string | readonly unknown[] | null>;
1301
+ static ɵfac: i0.ɵɵFactoryDeclaration<FBrandLinkComponent, never>;
1302
+ static ɵcmp: i0.ɵɵComponentDeclaration<FBrandLinkComponent, "f-brand-link", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "logo": { "alias": "logo"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "logoAlt": { "alias": "logoAlt"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1303
+ }
1304
+
1305
+ declare class FSearchButtonComponent {
1306
+ static ɵfac: i0.ɵɵFactoryDeclaration<FSearchButtonComponent, never>;
1307
+ static ɵcmp: i0.ɵɵComponentDeclaration<FSearchButtonComponent, "f-search-button", never, {}, {}, never, never, true, never>;
1308
+ }
1309
+
1310
+ declare class FCheckboxComponent {
1311
+ private changeDetectorRef;
1312
+ id: string;
1313
+ change: EventEmitter<boolean>;
1314
+ private inputElement?;
1315
+ labelElement?: ElementRef<HTMLLabelElement>;
1316
+ get checked(): boolean;
1317
+ set checked(value: boolean);
1318
+ private isChecked;
1319
+ constructor(changeDetectorRef: ChangeDetectorRef);
1320
+ onInputClick(): void;
1321
+ onTouchTargetClick(): void;
1322
+ private handleInputClick;
1323
+ private emitChangeEvent;
1324
+ onInteractionEvent(event: Event): void;
1325
+ preventBubblingFromLabel(event: MouseEvent): void;
1326
+ static ɵfac: i0.ɵɵFactoryDeclaration<FCheckboxComponent, never>;
1327
+ static ɵcmp: i0.ɵɵComponentDeclaration<FCheckboxComponent, "f-checkbox", never, { "id": { "alias": "id"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
1328
+ static ngAcceptInputType_checked: unknown;
1329
+ }
1330
+
1331
+ declare class FRadioButtonComponent {
1332
+ id: i0.InputSignal<string>;
1333
+ change: i0.OutputEmitterRef<boolean>;
1334
+ checked: i0.InputSignal<boolean>;
1335
+ protected labelElement: i0.Signal<ElementRef<any> | undefined>;
1336
+ onInputClick(): void;
1337
+ onTouchTargetClick(): void;
1338
+ private _handleInputClick;
1339
+ private _emitChangeEvent;
1340
+ protected onInteractionEvent(event: Event): void;
1341
+ protected preventBubblingFromLabel(event: MouseEvent): void;
1342
+ static ɵfac: i0.ɵɵFactoryDeclaration<FRadioButtonComponent, never>;
1343
+ static ɵcmp: i0.ɵɵComponentDeclaration<FRadioButtonComponent, "f-radio-button", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, ["*"], true, never>;
1344
+ }
1345
+
1252
1346
  declare class ThemeButtonComponent implements OnInit {
1253
1347
  private readonly _renderer;
1254
1348
  private readonly _themeService;
@@ -1264,5 +1358,5 @@ declare class ThemeButtonComponent implements OnInit {
1264
1358
 
1265
1359
  declare function provideTheme(): Provider[];
1266
1360
 
1267
- export { AVAILABLE_LANGUAGES, ActivateTocByHash, ActivateTocByHashRequest, CalculateAbsoluteTopToContainer, CalculateAbsoluteTopToContainerRequest, CalculateHashFromScrollPosition, CalculateTableOfContent, CalculateTableOfContentRequest, CodeGroup, CodeView, DOCUMENTATION_CONFIGURATION, DOCUMENTATION_ROUTES, DOCUMENT_ELEMENT, DYNAMIC_COMPONENTS_MODULE_PROVIDERS, Documentation, DocumentationStore, DropdownMenu, DynamicComponentsStore, EMarkdownContainerType, EParsedContainerType, EXTERNAL_COMPONENT_PROVIDER, ExternalComponent, 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, copyToClipboard, defineLazyComponent, defineNavigationGroup, encodeDataAttr, extractComponent, getContent, isClosingToken, isOpeningToken, parseComponentTag, parseFileLinkLine, 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 };
1268
- export type { ConsentState, GTagConfig, IDocumentationConfiguration, IDocumentationFooterConfiguration, IDynamicComponentInstance, IDynamicComponentItem, IExampleViewData, IExecution, IHandler, IHasHeaderConfiguration, IHeaderConfiguration, IHeaderConfigurationStore, IHeaderMenuLink, IHomePageConfiguration, IHomePageFeature, IHomePageFooter, IHomePageHero, IHomePageLink, IHomePageMembership, ILanguageConfiguration, ILink, ILogoConfiguration, IMarkdownContainerData, IMarkdownFooterLink, IMarkdownFooterNavigation, IMarkdownItToken, IMediaLink, IMediaLinksProvider, IMetaData, INavigationGroup, INavigationItem, INavigationItemBadge, IParsedContainerData, IPreviewNavigationGroup, IPreviewNavigationService, IScrollableContainer, IShowcaseItem, ITableOfContent, ITableOfContentItem, ITitleConfiguration, IToggleNavigationComponent };
1361
+ 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, 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 };
1362
+ export type { ConsentState, GTagConfig, HighlightLanguage, IDocumentationConfiguration, IDocumentationFooterConfiguration, IDynamicComponentInstance, IDynamicComponentItem, IExampleViewData, IExecution, IHandler, IHasHeaderConfiguration, IHeaderConfiguration, IHeaderConfigurationStore, IHeaderMenuLink, IHomePageConfiguration, IHomePageFeature, IHomePageFooter, IHomePageHero, IHomePageLink, IHomePageMembership, ILanguageConfiguration, ILink, ILogoConfiguration, IMarkdownContainerData, IMarkdownFooterLink, IMarkdownFooterNavigation, IMarkdownFrontMatterData, IMarkdownFrontMatterParseResult, IMarkdownItToken, IMarkdownPageLayoutOptions, IMediaLink, IMediaLinksProvider, IMetaData, INavigationGroup, INavigationItem, INavigationItemBadge, IParsedContainerData, IPreviewNavigationGroup, IPreviewNavigationService, IScrollableContainer, ISeoOverrides, IShowcaseItem, ITableOfContent, ITableOfContentItem, ITitleConfiguration, IToggleNavigationComponent };
@@ -1 +0,0 @@
1
- {"version":3,"file":"foblex-m-render-cookie-popup.component-Cx-ELX3C.mjs","sources":["../tmp-esm2022/lib/analytics/cookie-popup/cookie-popup.component.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { GTagService } from '../g-tag.service';\nimport { LOCAL_STORAGE } from '../../common';\nimport * as i0 from \"@angular/core\";\nexport const F_ACCEPT_COOKIES_KEY = 'm-accepts-cookies';\nexport class CookiePopupComponent {\n _localStorage = inject(LOCAL_STORAGE);\n _gtag = inject(GTagService, { optional: true });\n _consentValue = signal(null, ...(ngDevMode ? [{ debugName: \"_consentValue\" }] : []));\n showPopup = computed(() => this._gtag !== null &&\n this._consentValue() !== 'true' &&\n this._consentValue() !== 'false', ...(ngDevMode ? [{ debugName: \"showPopup\" }] : []));\n constructor() {\n try {\n const value = this._localStorage?.getItem(F_ACCEPT_COOKIES_KEY);\n this._consentValue.set(value);\n }\n catch {\n this._consentValue.set(null);\n }\n }\n accept() {\n try {\n this._localStorage?.setItem(F_ACCEPT_COOKIES_KEY, 'true');\n }\n catch { /* empty */ }\n this._gtag?.updateConsent(true);\n this._consentValue.set('true');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: CookiePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: CookiePopupComponent, isStandalone: true, selector: \"cookie-popup\", ngImport: i0, template: \"@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\", styles: [\":host{position:fixed;bottom:16px;right:16px;z-index:99999;opacity:0;visibility:hidden;animation:1s linear forwards .5s fadeIn}.docs-cookies-popup{padding:1rem;background-color:var(--background-color);border:1px solid var(--divider-color);color:var(--primary-text);border-radius:var(--border-radius);font-size:14px;max-width:310px;transition:background-color .3s ease,border-color .3s ease,color .3s ease;box-shadow:var(--shadow-3)}.docs-cookies-popup>div{display:flex;gap:8px;align-items:center;width:100%;margin-block-start:1rem}.f-button{outline:none;border:none;height:unset;line-height:26px;font-size:14px;font-weight:500;border-radius:var(--border-radius)}@keyframes fadeIn{to{opacity:100%;visibility:visible}}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: CookiePopupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'cookie-popup', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: \"@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\", styles: [\":host{position:fixed;bottom:16px;right:16px;z-index:99999;opacity:0;visibility:hidden;animation:1s linear forwards .5s fadeIn}.docs-cookies-popup{padding:1rem;background-color:var(--background-color);border:1px solid var(--divider-color);color:var(--primary-text);border-radius:var(--border-radius);font-size:14px;max-width:310px;transition:background-color .3s ease,border-color .3s ease,color .3s ease;box-shadow:var(--shadow-3)}.docs-cookies-popup>div{display:flex;gap:8px;align-items:center;width:100%;margin-block-start:1rem}.f-button{outline:none;border:none;height:unset;line-height:26px;font-size:14px;font-weight:500;border-radius:var(--border-radius)}@keyframes fadeIn{to{opacity:100%;visibility:visible}}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbS1yZW5kZXIvc3JjL2xpYi9hbmFseXRpY3MvY29va2llLXBvcHVwL2Nvb2tpZS1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL20tcmVuZGVyL3NyYy9saWIvYW5hbHl0aWNzL2Nvb2tpZS1wb3B1cC9jb29raWUtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFN0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7QUFTeEQsTUFBTSxPQUFPLG9CQUFvQjtJQUNkLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVoRCxhQUFhLEdBQUcsTUFBTSxDQUFnQixJQUFJLHlEQUFDLENBQUM7SUFFMUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxNQUFNO1FBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxPQUFPLHFEQUNqQyxDQUFDO0lBRUY7UUFDRSxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVTLE1BQU07UUFDZCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQzt1R0E1QlUsb0JBQW9COzJGQUFwQixvQkFBb0Isd0VDYmpDLG9vQkFvQkE7OzJGRFBhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHVGFnU2VydmljZSB9IGZyb20gJy4uL2ctdGFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBGX0FDQ0VQVF9DT09LSUVTX0tFWSA9ICdtLWFjY2VwdHMtY29va2llcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nvb2tpZS1wb3B1cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb29raWUtcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb29raWUtcG9wdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvb2tpZVBvcHVwQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYWxTdG9yYWdlID0gaW5qZWN0KExPQ0FMX1NUT1JBR0UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ndGFnID0gaW5qZWN0KEdUYWdTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnNlbnRWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1BvcHVwID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLl9ndGFnICE9PSBudWxsICYmXG4gICAgdGhpcy5fY29uc2VudFZhbHVlKCkgIT09ICd0cnVlJyAmJlxuICAgIHRoaXMuX2NvbnNlbnRWYWx1ZSgpICE9PSAnZmFsc2UnLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2xvY2FsU3RvcmFnZT8uZ2V0SXRlbShGX0FDQ0VQVF9DT09LSUVTX0tFWSk7XG4gICAgICB0aGlzLl9jb25zZW50VmFsdWUuc2V0KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuX2NvbnNlbnRWYWx1ZS5zZXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFjY2VwdCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlPy5zZXRJdGVtKEZfQUNDRVBUX0NPT0tJRVNfS0VZLCAndHJ1ZScpO1xuICAgIH0gY2F0Y2ggeyAvKiBlbXB0eSAqLyB9XG5cbiAgICB0aGlzLl9ndGFnPy51cGRhdGVDb25zZW50KHRydWUpO1xuICAgIHRoaXMuX2NvbnNlbnRWYWx1ZS5zZXQoJ3RydWUnKTtcbiAgfVxufVxuXG4iLCJAaWYgKHNob3dQb3B1cCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJkb2NzLWNvb2tpZXMtcG9wdXAgZG9jcy1pbnZlcnQtbW9kZVwiPlxuICAgIDxwPlRoaXMgc2l0ZSB1c2VzIGNvb2tpZXMgZnJvbSBHb29nbGUgdG8gZGVsaXZlciBpdHMgc2VydmljZXMgYW5kIHRvIGFuYWx5emUgdHJhZmZpYy48L3A+XG5cbiAgICA8ZGl2PlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vcG9saWNpZXMuZ29vZ2xlLmNvbS90ZWNobm9sb2dpZXMvY29va2llc1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJmLWJ1dHRvblwiIFthdHRyLnRleHRdPVwiJ0xlYXJuIG1vcmUnXCIgYXJpYS1sYWJlbD1cIkxlYXJuIE1vcmVcIj5cbiAgICAgICAgICBMZWFybiBtb3JlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9hPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiYWNjZXB0KClcIlxuICAgICAgICBjbGFzcz1cImYtYnV0dG9uXCJcbiAgICAgICAgW2F0dHIudGV4dF09XCInT2ssIEdvdCBpdCdcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiT2ssIEdvdCBpdFwiPlxuICAgICAgICBPaywgR290IGl0XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0="],"names":[],"mappings":";;;;AAIY,MAAC,oBAAoB,GAAG;AAC7B,MAAM,oBAAoB,CAAC;AAClC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxF,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI;AAClD,QAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;AACvC,QAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI;AACZ,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,CAAC;AAC3E,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC;AACA,QAAQ,MAAM;AACd,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;AACrE;AACA,QAAQ,MAAM;AACd,QAAQ,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AACtC;AACA,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAC9K,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,ooBAAooB,EAAE,MAAM,EAAE,CAAC,+sBAA+sB,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;AAC7kD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,ooBAAooB,EAAE,MAAM,EAAE,CAAC,+sBAA+sB,CAAC,EAAE;AAC79C,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;;;"}