@foblex/m-render 3.0.0 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"foblex-m-render.mjs","sources":["../../../../libs/m-render/src/lib/analytics/g-tag.service.ts","../../../../libs/m-render/src/lib/analytics/provide-g-tag.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header-search.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header-media-links.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header-navigation.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-language.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-logo.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-title.ts","../../../../libs/m-render/src/lib/common/domain/providers.ts","../../../../libs/m-render/src/lib/common/services/popover.service.ts","../../../../libs/m-render/src/lib/theme/theme.service.ts","../../../../libs/m-render/src/lib/common/utils/copy-to-clipboard.ts","../../../../libs/m-render/src/lib/common/utils/document-element.ts","../../../../libs/m-render/src/lib/common/utils/window.ts","../../../../libs/m-render/src/lib/common/utils/local-storage.ts","../../../../libs/m-render/src/lib/common/utils/location.ts","../../../../libs/m-render/src/lib/common/utils/platform.ts","../../../../libs/m-render/src/lib/documentation-page/analytics/common-services/f-head-tag.service.ts","../../../../libs/m-render/src/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.handler.ts","../../../../libs/m-render/src/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.request.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-404-markdown.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-components.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-directory.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-documentation.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-meta.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-footer-navigation.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-navigation.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-table-of-content.ts","../../../../libs/m-render/src/lib/documentation-page/analytics/common-services/f-meta.service.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/hamburger-button/domain/i-toggle-navigation-component.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/hamburger-button/hamburger-button.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/hamburger-button/hamburger-button.html","../../../../libs/m-render/src/lib/documentation-page/components/header/models/header-menu-base.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/inline-menu/inline-menu.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/inline-menu/inline-menu.html","../../../../libs/m-render/src/lib/theme/theme-button/theme-button.component.ts","../../../../libs/m-render/src/lib/theme/theme-button/theme-button.component.html","../../../../libs/m-render/src/lib/theme/provide-theme.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/media-links/domain/i-media-links-provider.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/media-links/media-links.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/media-links/media-links.html","../../../../libs/m-render/src/lib/documentation-page/components/header/components/dropdown-menu/dropdown-menu.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/dropdown-menu/dropdown-menu.html","../../../../libs/m-render/src/lib/documentation-page/utils/calculate-markdown-url.ts","../../../../libs/m-render/src/lib/documentation-page/services/documentation.store.ts","../../../../libs/m-render/src/lib/dynamic-components/dynamic-components.store.ts","../../../../libs/m-render/src/lib/shared/components/f-brand-link/f-brand-link.component.ts","../../../../libs/m-render/src/lib/shared/components/f-brand-link/f-brand-link.component.html","../../../../libs/m-render/src/lib/shared/components/f-search-button/f-search-button.component.ts","../../../../libs/m-render/src/lib/shared/components/f-search-button/f-search-button.component.html","../../../../libs/m-render/src/lib/shared/components/f-checkbox/f-checkbox.component.ts","../../../../libs/m-render/src/lib/shared/components/f-checkbox/f-checkbox.component.html","../../../../libs/m-render/src/lib/shared/components/f-radio-button/f-radio-button.component.ts","../../../../libs/m-render/src/lib/shared/components/f-radio-button/f-radio-button.component.html","../../../../libs/m-render/src/lib/documentation-page/components/header/header.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/header.component.html","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-group/navigation-group.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-group/navigation-group.component.html","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/f-navigation-item/f-navigation-item.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/f-navigation-item/f-navigation-item.component.html","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-panel.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-panel.component.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.response.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.handler.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.request.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/footer-navigation-button/footer-navigation-button.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/footer-navigation-button/footer-navigation-button.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/markdown-footer.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/markdown-footer.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/e-markdown-container-type.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/e-parsed-container-type.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/i-preview-navigation-service.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/i-markdown-frontmatter.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/markdown.service.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/utils.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-alerts.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-grouped-code-items.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-single-code-item.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-angular-example-with-code-links.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-preview-group.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-showcase.ts","../../../../libs/m-render/src/lib/mediatr/mediatr.ts","../../../../libs/m-render/src/lib/mediatr/m-execution.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/utils/coerce-component-height.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/utils/parse-iframe-url.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/utils/parse-component-tag.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-dynamic-component/render-dynamic-component-request.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-dynamic-component/render-dynamic-component.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-external-component/render-external-component-request.ts","../../../../libs/m-render/src/lib/dynamic-components/providers/external-component.provider.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-external-component/render-external-component.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-internal-components/render-internal-components-request.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-internal-components/render-internal-components.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/external-component.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/external-component.html","../../../../libs/m-render/src/lib/highlight/code-view/highlight.ts","../../../../libs/m-render/src/lib/highlight/code-view/code-view.ts","../../../../libs/m-render/src/lib/highlight/code-view/code-view.html","../../../../libs/m-render/src/lib/highlight/mark-code-focused-blocks.post-processor.ts","../../../../libs/m-render/src/lib/highlight/theme.ts","../../../../libs/m-render/src/lib/highlight/languages.ts","../../../../libs/m-render/src/lib/highlight/highlight.service.ts","../../../../libs/m-render/src/lib/dynamic-components/components/code-group/code-group.ts","../../../../libs/m-render/src/lib/dynamic-components/components/code-group/code-group.html","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-card/preview-card-base.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/preview-group.service.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-card/preview-card.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-card/preview-card.html","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-action-bar/preview-action-bar.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-action-bar/preview-action-bar.html","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/components/showcase-item/showcase-item.ts","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/components/showcase-item/showcase-item.html","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/showcase-token.ts","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/showcase.ts","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/showcase.html","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/provide-showcase.ts","../../../../libs/m-render/src/lib/dynamic-components/module-providers.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/activate-toc-by-hash/activate-toc-by-hash-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/activate-toc-by-hash/activate-toc-by-hash.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-table-of-content/calculate-table-of-content-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/models/table-of-content-data.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-absolute-top-to-container/calculate-absolute-top-to-container-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-absolute-top-to-container/calculate-absolute-top-to-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-hash-from-scroll-position/calculate-hash-from-scroll-position.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-table-of-content/calculate-table-of-content.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/scroll-to-element-in-container/scroll-to-element-in-container-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/scroll-to-element-in-container/scroll-to-element-in-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content-items/table-of-content-items.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content-items/table-of-content-items.component.html","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/module-providers.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content.html","../../../../libs/m-render/src/lib/documentation-page/components/scrollable-container/models/i-scrollable-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/scrollable-container/scrollable-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/scrollable-container/scrollable-container.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-renderer.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-renderer.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-router/markdown-router.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-router/markdown-router.html","../../../../libs/m-render/src/lib/documentation-page/documentation.ts","../../../../libs/m-render/src/lib/documentation-page/documentation.html","../../../../libs/m-render/src/lib/documentation-page/routes.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-background.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-hero.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-buttons.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-features.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-footer.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-page.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-image.ts","../../../../libs/m-render/src/lib/home-page/services/home.store.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-buttons-row/f-home-page-buttons-row.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-buttons-row/f-home-page-buttons-row.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-features/f-home-page-features.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-features/f-home-page-features.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-footer/f-home-page-footer.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-footer/f-home-page-footer.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-header/f-home-page-header.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-header/f-home-page-header.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-hero/f-home-page-hero.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-hero/f-home-page-hero.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-memberships/f-home-page-memberships.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-memberships/f-home-page-memberships.component.html","../../../../libs/m-render/src/lib/home-page/home-root.component.ts","../../../../libs/m-render/src/lib/home-page/home-root.component.html","../../../../libs/m-render/src/lib/home-page/router.ts","../../../../libs/m-render/src/foblex-m-render.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ConsentState, GTAG_CONFIG, GTagConfig } from './provide-g-tag';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable()\nexport class GTagService {\n private readonly _config = inject<GTagConfig>(GTAG_CONFIG);\n private readonly _document = inject(DOCUMENT);\n private readonly _router = inject(Router, { optional: true });\n private _initialized = false;\n private _configuredIds = new Set<string>();\n\n public initialize(): void {\n if (this._initialized) return;\n\n const win = this._document.defaultView as (Window & {\n dataLayer?: unknown[];\n gtag?: (...args: unknown[]) => void;\n __gtagLoaded__?: boolean;\n }) | null;\n\n if (!win) {\n return;\n }\n\n win.dataLayer = win.dataLayer || [];\n win.gtag = win.gtag || ((...args: unknown[]) => win.dataLayer!.push(args));\n\n const initialConsent: ConsentState = this._config.initialConsent ?? 'denied';\n this._setConsent(initialConsent);\n\n if (!win.__gtagLoaded__) {\n this._appendScript(this._config.id);\n win.__gtagLoaded__ = true;\n }\n\n win.gtag('js', new Date());\n\n this._configAll([this._config.id, ...(this._config.extraIds ?? [])]);\n\n if (this._config.autoPageview && this._router) {\n this._router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe(() => {\n this.pageview();\n });\n }\n\n this._initialized = true;\n }\n\n public updateConsent(granted: boolean): void {\n this._setConsent(granted ? 'granted' : 'denied');\n }\n\n public event(action: string, params?: Record<string, unknown>): void {\n const win = this._document.defaultView as any;\n win?.gtag?.('event', action, params || {});\n }\n\n public pageview(path?: string): void {\n const win = this._document.defaultView as any;\n const p = path ?? this._document.location?.pathname ?? '/';\n for (const id of this._getConfiguredIds()) {\n win?.gtag?.('config', id, { page_path: p });\n }\n }\n\n public adsConversion(sendTo: string, params?: Record<string, unknown>): void {\n this.event('conversion', { send_to: sendTo, ...params });\n }\n\n private _setConsent(state: ConsentState): void {\n const win = this._document.defaultView as any;\n const base = {\n ad_user_data: state,\n ad_personalization: state,\n ad_storage: state,\n analytics_storage: state,\n };\n if (state === 'denied') {\n win?.gtag?.('consent', 'default', { ...base, wait_for_update: 500 });\n } else {\n win?.gtag?.('consent', 'update', base);\n }\n }\n\n private _appendScript(id: string): void {\n if (this._document.querySelector('#gtag-script')) return;\n const s = this._document.createElement('script');\n s.id = 'gtag-script';\n s.async = true;\n s.src = `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(id)}`;\n this._document.head.appendChild(s);\n }\n\n private _configAll(ids: string[]): void {\n const win = this._document.defaultView as any;\n ids.filter(Boolean).forEach(id => {\n if (this._configuredIds.has(id)) return;\n win?.gtag?.('config', id);\n this._configuredIds.add(id);\n });\n }\n\n private _getConfiguredIds(): string[] {\n return Array.from(this._configuredIds.values());\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { GTagService } from './g-tag.service';\n\nexport function provideGTag(config: GTagConfig): Provider[] {\n return [\n {\n provide: GTAG_CONFIG,\n useValue: config,\n },\n {\n provide: GTagService,\n useClass: GTagService,\n },\n ];\n}\n\nexport interface GTagConfig {\n id: string;\n extraIds?: string[];\n autoPageview?: boolean;\n initialConsent?: ConsentState;\n}\n\nexport const GTAG_CONFIG = new InjectionToken<GTagConfig>('GTAG_CONFIG');\n\nexport type ConsentState = 'granted' | 'denied';\n","import { IHeaderMenuLink, IMediaLink } from '../../../documentation-page';\n\nexport function provideHeader(\n ...configuration: Partial<IHeaderConfiguration>[]\n): Partial<IHasHeaderConfiguration> {\n return {\n header: Object.assign({}, ...configuration),\n };\n}\n\nexport interface IHeaderConfiguration {\n\n search?: boolean;\n\n navigation?: IHeaderMenuLink[];\n\n mediaLinks?: IMediaLink[];\n}\n\nexport interface IHasHeaderConfiguration {\n\n header?: IHeaderConfiguration;\n}\n","import { IHeaderConfiguration } from './provide-header';\n\nexport function provideHeaderSearch(search?: boolean): Partial<IHeaderConfiguration> {\n return {\n search,\n };\n}\n","import { IHeaderConfiguration } from './provide-header';\nimport { IMediaLink } from '../../../documentation-page';\n\nexport function provideHeaderMediaLinks(mediaLinks: IMediaLink[]): Partial<IHeaderConfiguration> {\n return {\n mediaLinks,\n };\n}\n\n","import { IHeaderConfiguration } from './provide-header';\nimport { IHeaderMenuLink } from '../../../documentation-page';\n\nexport function provideHeaderNavigation(navigation: IHeaderMenuLink[]): Partial<IHeaderConfiguration> {\n return {\n navigation,\n };\n}\n\n","export function provideLanguage(lang: string): ILanguageConfiguration {\n return {\n lang,\n };\n}\n\nexport interface ILanguageConfiguration {\n lang: string;\n}\n","export function provideLogo(logo: string): ILogoConfiguration {\n return {\n logo,\n };\n}\n\nexport interface ILogoConfiguration {\n logo: string;\n}\n","export function provideTitle(title: string): ITitleConfiguration {\n return {\n title,\n };\n}\n\nexport interface ITitleConfiguration {\n title: string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { IHeaderConfiguration } from './configuration-providers';\n\nexport const HEADER_CONFIGURATION_PROVIDER = new InjectionToken<IHeaderConfiguration>('HEADER_CONFIGURATION_PROVIDER');\n\nexport interface IHeaderConfigurationStore {\n getHeader(): IHeaderConfiguration | undefined;\n}\n","import { Injectable, Signal, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopoverService {\n private readonly _message = signal<string | null>(null);\n\n public get message(): Signal<string | null> {\n return this._message.asReadonly();\n }\n\n public show(message: string, timeout = 2000): void {\n this._message.set(message);\n setTimeout(() => this._message.set(null), timeout);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DOCUMENT_ELEMENT, LOCAL_STORAGE, WINDOW } from '../common';\n\n@Injectable()\nexport class ThemeService {\n private readonly _localStorage = inject(LOCAL_STORAGE, { optional: true });\n private readonly _window = inject(WINDOW, { optional: true });\n private readonly _theme = new Subject<void>();\n private readonly _docElement = inject(DOCUMENT_ELEMENT);\n\n public get theme$(): Observable<void> {\n return this._theme.asObservable();\n }\n\n public initialize(): void {\n if (this.getPreferredTheme() === 'dark' && !this._isDocumentContainsDarkTheme()) {\n this._docElement.classList.add('dark');\n this._localStorage?.setItem('preferred-theme', 'dark');\n }\n }\n\n public updateTheme(): void {\n this._theme.next();\n }\n\n public getPreferredTheme(): string {\n return this._getItem('preferred-theme')\n || (this._matchMedia('(prefers-color-scheme: dark)')?.matches ? 'dark' : 'light');\n }\n\n private _getItem(key: string): string | null {\n return this._localStorage?.getItem?.(key) || null;\n }\n\n private _matchMedia(query: string): MediaQueryList {\n return this._window?.matchMedia?.(query) || { matches: false } as MediaQueryList;\n }\n\n private _isDocumentContainsDarkTheme(): boolean {\n return this._docElement.classList.contains('dark');\n }\n}\n","import { from, map, Observable, of, switchMap } from 'rxjs';\n\nexport function copyToClipboard(value: string): Observable<any | undefined> {\n const blob = new Blob([ value ], { type: 'text/plain' });\n const data = [ new ClipboardItem({ [ blob.type ]: blob }) ];\n\n // @ts-ignore\n return from(window?.navigator.permissions.query({ name: 'clipboard-write' })).pipe(\n map((permission: PermissionStatus) => permission.state !== 'denied'),\n switchMap((isGranted: boolean) => {\n if (isGranted) {\n return from(navigator.clipboard.write(data));\n }\n return of(undefined);\n }),\n );\n}\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { DOCUMENT } from '@angular/common';\n\nexport const DOCUMENT_ELEMENT = new InjectionToken<HTMLElement>('DOCUMENT_ELEMENT', {\n factory: () => inject(DOCUMENT).documentElement,\n});\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\nexport const WINDOW = new InjectionToken<Window>('F_WINDOW', {\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n },\n});\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { WINDOW } from './window';\n\nexport const LOCAL_STORAGE = new InjectionToken<Storage>('F_LOCAL_STORAGE', {\n factory: () => inject(WINDOW).localStorage,\n});\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { WINDOW } from './window';\n\nexport const LOCATION = new InjectionToken<Location>('F_LOCATION', {\n factory: () => inject(WINDOW).location,\n});\n","import { inject, InjectionToken, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const IS_BROWSER_PLATFORM = new InjectionToken<boolean>('IS_BROWSER_PLATFORM', {\n factory() {\n return isPlatformBrowser(inject(PLATFORM_ID));\n },\n});\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FHeadTagService {\n\n private readonly _document = inject(DOCUMENT);\n\n public setTitle(title: string): void {\n this._document.title = title || '';\n }\n\n public setDescription(description?: string | null): void {\n this.updateNameTag({ name: 'description', content: description || '' });\n }\n\n public setCanonical(url?: string | null): void {\n const normalizedUrl = (url || '').trim();\n const link = this._getCanonical();\n if (!normalizedUrl) {\n if (link) {\n link.remove();\n }\n return;\n }\n\n const canonicalLink: HTMLLinkElement = link || this._createElement<HTMLLinkElement>('link');\n canonicalLink.setAttribute('rel', 'canonical');\n canonicalLink.setAttribute('href', normalizedUrl);\n }\n\n private _getCanonical(): HTMLLinkElement | null {\n return this._document.querySelector(`link[rel=\"canonical\"]`) || null;\n }\n\n public updateTag(tag: IMetaTag): void {\n this.updatePropertyTag(tag);\n }\n\n public updatePropertyTag(tag: IMetaTag): void {\n const normalizedContent = tag.content?.trim() || '';\n const meta = this._getPropertyTag(tag.property);\n if (!normalizedContent) {\n if (meta) {\n meta.remove();\n }\n return;\n }\n\n const targetMeta = meta || this._createElement<HTMLMetaElement>('meta');\n targetMeta.setAttribute('property', tag.property);\n targetMeta.setAttribute('content', normalizedContent);\n }\n\n public updateNameTag(tag: INameMetaTag): void {\n const normalizedContent = tag.content?.trim() || '';\n const meta = this._getNameTag(tag.name);\n if (!normalizedContent) {\n if (meta) {\n meta.remove();\n }\n return;\n }\n\n const targetMeta = meta || this._createElement<HTMLMetaElement>('meta');\n targetMeta.setAttribute('name', tag.name);\n targetMeta.setAttribute('content', normalizedContent);\n }\n\n private _getPropertyTag(property: string): HTMLMetaElement | null {\n return this._document.querySelector(`meta[property=\"${ property }\"]`) || null;\n }\n\n private _getNameTag(name: string): HTMLMetaElement | null {\n return this._document.querySelector(`meta[name=\"${ name }\"]`) || null;\n }\n\n private _createElement<TElement extends Node>(tag: string): TElement {\n const element = this._document.createElement(tag) as Node;\n const head = this._document.getElementsByTagName('head')[ 0 ];\n head.appendChild(element);\n\n return element as TElement;\n }\n}\n\nexport interface IMetaTag {\n\n property: string;\n\n content: string;\n}\n\nexport interface INameMetaTag {\n name: string;\n content: string;\n}\n","import { HandleNavigationLinksRequest } from './handle-navigation-links.request';\nimport { Router } from '@angular/router';\n\nexport class HandleNavigationLinksHandler {\n\n public handle(request: HandleNavigationLinksRequest): void {\n const target = this._getClosestAnchorTag(this._getTargetElement(request.event));\n\n if (target && this._hasHref(target)) {\n request.event.preventDefault();\n\n const href = target.getAttribute('href')!;\n if (!this._isExternalLink(href)) {\n this._navigateInternalLink(href, request.router);\n } else {\n window.open(href, '_blank')\n }\n }\n }\n\n private _getTargetElement(event: Event): HTMLElement | null {\n return event?.target as HTMLElement;\n }\n\n private _getClosestAnchorTag(element: HTMLElement | null): HTMLElement | undefined | null {\n return element?.closest('a');\n }\n\n private _hasHref(element: HTMLElement): boolean {\n return element.hasAttribute('href');\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n private _navigateInternalLink(href: string, router: Router): void {\n if (href.startsWith('/')) {\n href = href.substring(1);\n }\n router.navigate([href]).then();\n }\n}\n","import { Router } from '@angular/router';\n\nexport class HandleNavigationLinksRequest {\n constructor(\n public event: MouseEvent,\n public window: Window,\n public router: Router,\n ) {\n }\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provide404Markdown(notFoundMarkdown: string): Partial<IDocumentationConfiguration> {\n return {\n notFoundMarkdown,\n };\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\nimport { Type } from '@angular/core';\nimport { IDynamicComponentItem } from '../../../dynamic-components';\n\nexport function defineLazyComponent(\n selector: string,\n loader: () => Promise<Record<string, unknown>>,\n): IDynamicComponentItem {\n return {\n selector,\n component: extractComponent(loader),\n };\n}\n\nexport function provideComponents(components: IDynamicComponentItem[]): Partial<IDocumentationConfiguration> {\n return {\n components,\n };\n}\n\nexport function extractComponent(loader: () => Promise<Record<string, unknown>>): Promise<Type<any>> {\n return loader().then(module => {\n const component = Object.values(module).find(\n (v): v is Type<any> => typeof v === 'function' && Object.prototype.hasOwnProperty.call(v, 'ɵcmp'),\n );\n if (!component) {\n throw new Error('Component not found');\n }\n return component;\n });\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provideDirectory(docsDir: string): Partial<IDocumentationConfiguration> {\n return {\n docsDir,\n };\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\nimport { InjectionToken } from '@angular/core';\n\nexport function provideDocumentation(configuration: IProviderInstance) {\n const merged = Object.assign({}, ...configuration.providers);\n return {\n provide: DOCUMENTATION_CONFIGURATION, useValue: merged,\n };\n}\n\nexport const DOCUMENTATION_CONFIGURATION = new InjectionToken<IDocumentationConfiguration>('DOCUMENTATION_CONFIGURATION');\n\ninterface IProviderInstance {\n providers: Partial<IDocumentationConfiguration>[];\n}\n","import { IMetaData } from '../../analytics';\nimport { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provideMeta(meta: IMetaData): Partial<IDocumentationConfiguration> {\n return {\n meta,\n };\n}\n","import { IDocumentationConfiguration, IMarkdownFooterNavigation } from '../../index';\n\nexport function provideFooterNavigation(\n navigation: IMarkdownFooterNavigation,\n): Partial<IDocumentationConfiguration> {\n return {\n footer: {\n navigation,\n },\n };\n}\n\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\nimport { INavigationGroup, INavigationItem } from '../../components';\n\nexport function provideNavigation(...navigation: INavigationGroup[]): Partial<IDocumentationConfiguration> {\n return {\n navigation,\n };\n}\n\nexport function defineNavigationGroup(name: string | undefined, items: INavigationItem[]): INavigationGroup {\n return {\n text: name,\n items,\n };\n}\n","import { ITableOfContent } from '../../components';\nimport { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provideTableOfContent(tableOfContent: ITableOfContent | null = {\n title: 'In this article',\n range: { start: 2, end: 6 },\n}): Partial<IDocumentationConfiguration> {\n return {\n tableOfContent,\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, map, Observable, startWith } from 'rxjs';\nimport { IMetaData } from './i-meta-data';\nimport { FHeadTagService } from './f-head-tag.service';\nimport { tap } from 'rxjs/operators';\nimport { DOCUMENTATION_CONFIGURATION } from '../../domain';\nimport { INavigationGroup, INavigationItem } from '../../components';\nimport { LOCATION } from '../../../common';\nimport { ISeoOverrides } from './i-seo-overrides';\n\n@Injectable()\nexport class FMetaService {\n private readonly _location = inject(LOCATION);\n private readonly _router = inject(Router);\n private readonly _headTag = inject(FHeadTagService);\n private readonly _configuration = inject(DOCUMENTATION_CONFIGURATION);\n private _seoOverrides: ISeoOverrides | null = null;\n private _lastPath = '';\n\n public changes(): Observable<string> {\n return this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._normalizeCurrentPath(this._router.url)),\n tap((currentUrl) => {\n if (this._lastPath !== currentUrl) {\n this._seoOverrides = null;\n this._lastPath = currentUrl;\n }\n this._updateMetaByUrl(currentUrl);\n }),\n );\n }\n\n public applyMarkdownSeo(overrides: ISeoOverrides | null | undefined): void {\n this._seoOverrides = overrides ? { ...overrides } : null;\n this._updateMetaByUrl(this._normalizeCurrentPath(this._router.url));\n }\n\n public dispose(): void {\n this._seoOverrides = null;\n this._lastPath = '';\n\n if (!this._configuration.meta) {\n return;\n }\n this._updateMetaTags(this._configuration.meta);\n }\n\n private _updateMetaByUrl(currentUrl: string): void {\n const defaultData = this._configuration.meta;\n if (!defaultData) {\n return;\n }\n\n const data = { ...defaultData };\n const item = this._findDocItemByUrl(this._findDocGroupByUrl(currentUrl), currentUrl);\n\n if (item) {\n data.title = `${item.pageTitle || item.text} | ${defaultData.app_name}`;\n data.url = this._buildAbsoluteUrl(currentUrl);\n data.canonical = item.canonical;\n data.description = item.description || defaultData.description;\n data.image = item.image || defaultData.image;\n data.image_width = item.image_width || defaultData.image_width;\n data.image_height = item.image_height || defaultData.image_height;\n data.image_type = item.image_type || defaultData.image_type;\n }\n\n if (!data.url) {\n data.url = this._buildAbsoluteUrl(currentUrl);\n }\n\n data.url = this._toAbsoluteUrl(data.url);\n if (data.image) {\n data.image = this._toAbsoluteUrl(data.image);\n }\n\n this._updateMetaTags(data);\n }\n\n private _findDocGroupByUrl(url: string): INavigationGroup | undefined {\n return (this._configuration.navigation || []).find((g: INavigationGroup) => g.items.find((i: INavigationItem) => url.endsWith(i.link)));\n }\n\n private _findDocItemByUrl(group: INavigationGroup | undefined, url: string): INavigationItem | undefined {\n return (group?.items || []).find((i: INavigationItem) => url.endsWith(i.link));\n }\n\n private _buildAbsoluteUrl(url: string): string {\n try {\n return new URL(url, this._location.origin).toString();\n } catch {\n return this._location.origin + url;\n }\n }\n\n private _toAbsoluteUrl(maybeRelative: string): string {\n try {\n return new URL(maybeRelative, this._location.origin).toString();\n } catch {\n return maybeRelative;\n }\n }\n\n private _updateMetaTags(item: IMetaData): void {\n const seo = this._seoOverrides || null;\n const title = seo?.title || item.title;\n const description = seo?.description || item.description;\n const url = this._toAbsoluteUrl(seo?.url || item.url);\n const canonical = this._toAbsoluteUrl(seo?.canonical || item.canonical || url);\n const type = seo?.og_type || seo?.type || item.type;\n const siteName = seo?.app_name || item.app_name;\n const locale = seo?.locale || item.locale;\n const image = this._toAbsoluteUrl(seo?.og_image || seo?.image || item.image);\n const imageType = seo?.image_type || item.image_type;\n const imageWidth = seo?.image_width || item.image_width;\n const imageHeight = seo?.image_height || item.image_height;\n const keywords = seo?.keywords || item.keywords || '';\n const robots = this._resolveRobots(item.robots, seo);\n\n const twitterCard = seo?.twitter_card || item.twitter_card || 'summary_large_image';\n const twitterSite = item.twitter_site || '';\n const twitterCreator = item.twitter_creator || '';\n const twitterTitle = seo?.twitter_title || seo?.og_title || title;\n const twitterDescription = seo?.twitter_description || seo?.og_description || description;\n const twitterImage = this._toAbsoluteUrl(seo?.twitter_image || image);\n\n this._headTag.setTitle(title);\n this._headTag.setDescription(description);\n this._headTag.setCanonical(canonical);\n\n this._headTag.updateTag({ property: 'og:url', content: url });\n this._headTag.updateTag({ property: 'og:type', content: type });\n this._headTag.updateTag({ property: 'og:title', content: seo?.og_title || title });\n this._headTag.updateTag({ property: 'og:site_name', content: siteName });\n this._headTag.updateTag({ property: 'og:locale', content: locale });\n this._headTag.updateTag({ property: 'og:description', content: seo?.og_description || description });\n this._headTag.updateTag({ property: 'og:image', content: image });\n this._headTag.updateTag({ property: 'og:image:secure_url', content: image });\n this._headTag.updateTag({ property: 'og:image:type', content: imageType });\n this._headTag.updateTag({ property: 'og:image:width', content: imageWidth ? imageWidth.toString() : '' });\n this._headTag.updateTag({ property: 'og:image:height', content: imageHeight ? imageHeight.toString() : '' });\n\n this._headTag.updateNameTag({ name: 'keywords', content: keywords });\n this._headTag.updateNameTag({ name: 'robots', content: robots });\n this._headTag.updateNameTag({ name: 'twitter:card', content: twitterCard });\n this._headTag.updateNameTag({ name: 'twitter:site', content: twitterSite });\n this._headTag.updateNameTag({ name: 'twitter:creator', content: twitterCreator });\n this._headTag.updateNameTag({ name: 'twitter:title', content: twitterTitle });\n this._headTag.updateNameTag({ name: 'twitter:description', content: twitterDescription });\n this._headTag.updateNameTag({ name: 'twitter:image', content: twitterImage });\n }\n\n private _resolveRobots(defaultRobots: string | undefined, seo: ISeoOverrides | null): string {\n if (seo?.robots) {\n return seo.robots;\n }\n\n const hasDirectiveOverride = typeof seo?.noindex === 'boolean' || typeof seo?.nofollow === 'boolean';\n if (!hasDirectiveOverride) {\n return defaultRobots || '';\n }\n\n const indexValue = seo?.noindex ? 'noindex' : 'index';\n const followValue = seo?.nofollow ? 'nofollow' : 'follow';\n const defaultTokens = (defaultRobots || '')\n .split(',')\n .map((x) => x.trim())\n .filter((x) => x && ![ 'index', 'noindex', 'follow', 'nofollow' ].includes(x.toLowerCase()));\n\n return [ indexValue, followValue, ...defaultTokens ].join(', ');\n }\n\n private _normalizeCurrentPath(url: string): string {\n return (url || '').split('#')[0].split('?')[0];\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface IToggleNavigationComponent {\n\n onToggleNavigation(value: boolean): void;\n}\n\nexport const TOGGLE_NAVIGATION_COMPONENT = new InjectionToken<IToggleNavigationComponent>('TOGGLE_NAVIGATION_COMPONENT');\n","import {\n ChangeDetectionStrategy,\n Component, inject,\n} from '@angular/core';\nimport { TOGGLE_NAVIGATION_COMPONENT } from './domain';\n\n@Component({\n selector: 'button[hamburger-button]',\n templateUrl: './hamburger-button.html',\n styleUrls: [ './hamburger-button.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(click)': '_onShowNavigation()',\n },\n})\nexport class HamburgerButton {\n private readonly _parent = inject(TOGGLE_NAVIGATION_COMPONENT, {\n optional: true,\n });\n\n protected _onShowNavigation(): void {\n this._parent?.onToggleNavigation(true);\n }\n}\n","<span class=\"f-icon hamburger\"></span>\n\n","import { computed, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { HEADER_CONFIGURATION_PROVIDER } from '../../../../common';\n\nexport class HeaderMenuBase {\n private readonly _router = inject(Router);\n private readonly _baseNav = inject(HEADER_CONFIGURATION_PROVIDER)?.navigation ?? [];\n\n private readonly _url = toSignal(\n this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._router.url),\n distinctUntilChanged(),\n ),\n { initialValue: this._router.url },\n );\n\n public readonly navigation = computed(() => {\n const url = this._cleanPath(this._url());\n return this._baseNav.map(item => ({\n ...item,\n isActive: this._isActive(url, this._cleanPath(item.active ?? '')),\n }));\n });\n\n private _cleanPath(url: string): string {\n return url.split('#')[0].split('?')[0].replace(/\\/{2,}/g, '/').replace(/\\/$/, '');\n }\n\n private _isActive(currentPath: string, itemLink: string): boolean {\n if (!itemLink) return false;\n return currentPath === itemLink || currentPath.startsWith(itemLink + '/');\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HeaderMenuBase } from '../../models';\n\n@Component({\n selector: 'inline-menu',\n templateUrl: './inline-menu.html',\n styleUrls: [ './inline-menu.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n ],\n})\nexport class InlineMenu extends HeaderMenuBase {\n}\n\n","@for (item of navigation(); track item.link) {\n <a [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener, inject, OnInit,\n Renderer2,\n} from '@angular/core';\nimport { ThemeService } from '../theme.service';\nimport { DOCUMENT_ELEMENT, IS_BROWSER_PLATFORM, LOCAL_STORAGE } from '../../common';\n\n@Component({\n selector: 'button[theme-button]',\n templateUrl: './theme-button.component.html',\n styleUrls: [ './theme-button.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ThemeButtonComponent implements OnInit {\n private readonly _renderer = inject(Renderer2);\n private readonly _themeService = inject(ThemeService, { optional: true });\n private readonly _localStorage = inject(LOCAL_STORAGE);\n private readonly _documentElement = inject(DOCUMENT_ELEMENT);\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n\n public ngOnInit(): void {\n if(!this._themeService && this._isBrowser) {\n throw new Error('Theme is not provided. Please provide it using provideTheme() provider in your application config.');\n }\n }\n private _isDocumentContainsDarkTheme(): boolean {\n return this._documentElement.classList.contains('dark');\n }\n\n @HostListener('click')\n protected _onClick(): void {\n if (this._themeService?.getPreferredTheme() === 'light' && !this._isDocumentContainsDarkTheme()) {\n this._renderer.addClass(this._documentElement, 'dark');\n this._localStorage.setItem('preferred-theme', 'dark');\n } else {\n this._renderer.removeClass(this._documentElement, 'dark');\n this._localStorage.setItem('preferred-theme', 'light');\n }\n this._themeService?.updateTheme();\n }\n}\n","<div class=\"f-icon-container\">\n <div class=\"f-icon moon\"></div>\n <div class=\"f-icon sun\"></div>\n</div>\n","import { Provider } from '@angular/core';\nimport { ThemeService } from './theme.service';\n\nexport function provideTheme(): Provider[] {\n return [\n {\n provide: ThemeService,\n useClass: ThemeService,\n },\n ];\n}\n","import { InjectionToken } from '@angular/core';\nimport { IMediaLink } from './i-media-link';\n\nexport interface IMediaLinksProvider {\n\n getMediaLinks(): IMediaLink[];\n}\n\nexport const MEDIA_LINKS_PROVIDER = new InjectionToken<IMediaLink[]>('MEDIA_LINKS_PROVIDER');\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MEDIA_LINKS_PROVIDER } from './domain';\n\n@Component({\n selector: 'media-links',\n templateUrl: './media-links.html',\n styleUrls: [ './media-links.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MediaLinks {\n\n protected links = inject(MEDIA_LINKS_PROVIDER, { optional: true });\n}\n","@for (link of links; track link.link) {\n <a href=\"{{ link.link }}\" class=\"header-link\">\n <div class=\"f-icon {{ link.icon }}\"></div>\n </a>\n}\n","import { ChangeDetectionStrategy, Component, inject, OnDestroy, signal } from '@angular/core';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { ThemeButtonComponent } from '../../../../../theme';\nimport { HeaderMenuBase } from '../../models';\nimport { RouterLink } from '@angular/router';\nimport { MediaLinks } from '../media-links';\n\n@Component({\n selector: 'dropdown-menu',\n templateUrl: './dropdown-menu.html',\n styleUrls: ['./dropdown-menu.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ThemeButtonComponent,\n RouterLink,\n MediaLinks,\n ],\n})\nexport class DropdownMenu extends HeaderMenuBase implements OnDestroy {\n protected readonly isOpen = signal(false);\n protected readonly scrollStrategy = inject(Overlay).scrollStrategies.block();\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ];\n\n private _hoverTimeout: any | undefined;\n\n protected mouseEnter(): void {\n clearTimeout(this._hoverTimeout);\n this.open();\n }\n\n protected mouseLeave(): void {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = setTimeout(() => this.close(), 200);\n }\n\n protected toggle(): void {\n this.isOpen.update(x => !x);\n }\n\n protected open(): void {\n if (!this.isOpen()) {\n this.isOpen.set(true);\n }\n }\n\n protected close(): void {\n this.isOpen.set(false);\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this._hoverTimeout);\n }\n}\n","<span class=\"label\" cdk-overlay-origin\n (click)=\"toggle()\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\"\n #overlayOrigin=\"cdkOverlayOrigin\">\n <span class=\"f-icon more-horizontal\"></span>\n</span>\n\n<ng-template\n cdk-connected-overlay\n [cdkConnectedOverlayLockPosition]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayOffsetY]=\"-10\"\n (backdropClick)=\"close()\"\n>\n <div class=\"dropdown-panel\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\">\n @if (navigation().length) {\n <div class=\"navigation-wrapper\">\n @for (item of navigation(); track item.link) {\n <a [routerLink]=\"item.link\" [class.active]=\"item.isActive\"><span>{{ item.text }}</span></a>\n }\n </div>\n }\n <div class=\"appearance\">\n <span>Appearance</span>\n <button theme-button></button>\n </div>\n <div class=\"social-links\">\n <media-links/>\n </div>\n\n </div>\n</ng-template>\n\n","import { INavigationGroup } from '../components';\n\nexport function calculateMarkdownUrl(markdown: string, navigation: INavigationGroup[], docsDir: string, notFoundMd = ''): string {\n if (!markdown || !_isMarkdownExist(markdown, navigation) && navigation.length) {\n return notFoundMd;\n }\n let url = docsDir + markdown;\n\n url = url.replace(/(\\/en\\/guides)+/g, '/en/guides');\n url = url.replace(/(\\/en\\/examples)+/g, '/en/examples');\n\n if (!url.endsWith('.md')) {\n url += '.md';\n }\n\n return url;\n}\n\nfunction _isMarkdownExist(id: string, navigation: INavigationGroup[]): boolean {\n return !!navigation.find((x) =>\n x.items.some((i: { link: string; }) => i.link === id),\n );\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport {\n IHeaderMenuLink,\n IMarkdownFooterNavigation,\n IMediaLink,\n IMediaLinksProvider,\n INavigationGroup,\n ITableOfContent,\n TableOfContentData,\n} from '../components';\nimport { IHeaderConfiguration, IHeaderConfigurationStore } from '../../common';\nimport { DOCUMENTATION_CONFIGURATION } from '../domain';\nimport { IDynamicComponentItem, IShowcaseItem } from '../../dynamic-components';\nimport { calculateMarkdownUrl } from '../utils';\n\n@Injectable()\nexport class DocumentationStore\n implements IMediaLinksProvider, IHeaderConfigurationStore {\n private readonly _configuration = inject(DOCUMENTATION_CONFIGURATION);\n\n public readonly tocData = signal<TableOfContentData>(new TableOfContentData([], []));\n\n public getMarkdownUrl(markdown: string): string {\n return calculateMarkdownUrl(\n markdown,\n (this._configuration.navigation || []),\n this._configuration.docsDir,\n this._configuration.notFoundMarkdown,\n );\n }\n\n public getLogo(): string {\n return this._configuration.logo;\n }\n\n public getTitle(): string {\n return this._configuration.title;\n }\n\n public getHeaderNavigation(): IHeaderMenuLink[] {\n return this._configuration.header?.navigation || [];\n }\n\n public getComponents(): IDynamicComponentItem[] {\n return this._configuration.components || [];\n }\n\n public getNavigation(): INavigationGroup[] {\n return this._configuration.navigation || [];\n }\n\n public getFooterNavigation(): IMarkdownFooterNavigation {\n return this._configuration.footer?.navigation || {};\n }\n\n public getMediaLinks(): IMediaLink[] {\n return this._configuration.header?.mediaLinks || [];\n }\n\n public getTableOfContent(): ITableOfContent | null {\n return this._configuration.tableOfContent;\n }\n\n public getHeader(): IHeaderConfiguration | undefined {\n return this._configuration.header;\n }\n\n public getShowcaseItems(): IShowcaseItem[] {\n return this._configuration.showcaseItems || [];\n }\n}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport { IDynamicComponentInstance } from './models';\n\n@Injectable()\nexport class DynamicComponentsStore {\n private _components: ComponentRef<IDynamicComponentInstance>[] = [];\n\n public dispose(): void {\n this._components.forEach((ref) => ref.destroy());\n this._components = [];\n }\n\n public addComponent(reference: ComponentRef<IDynamicComponentInstance>, element?: HTMLElement): void {\n this._components.push(reference);\n\n this._assignInputs(reference, element);\n reference.instance?.initialize?.();\n }\n\n private _assignInputs(componentRef: ComponentRef<IDynamicComponentInstance>, element?: HTMLElement): void {\n const dataset = element?.dataset;\n if (!dataset) return;\n\n Object.entries(dataset).forEach(([key, rawValue]) => {\n const value = this._parseDatasetValue(rawValue);\n const member = componentRef.instance[key];\n\n if (member && typeof (member as any).set === 'function') {\n (member as { set(v: unknown): void }).set(value);\n } else {\n (componentRef.instance as any)[key] = value;\n }\n });\n }\n\n private _parseDatasetValue(rawValue?: string): string | undefined {\n let result: string | undefined = rawValue;\n if (result?.startsWith?.('{') || result?.startsWith?.('[')) {\n try {\n result = JSON.parse(result);\n // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars\n } catch (e) { /* empty */\n }\n }\n return result;\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'f-brand-link',\n templateUrl: './f-brand-link.component.html',\n styleUrls: [ './f-brand-link.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ RouterLink ],\n})\nexport class FBrandLinkComponent {\n public readonly title = input.required<string>();\n public readonly logo = input.required<string>();\n public readonly ariaLabel = input<string>('Home');\n public readonly logoAlt = input<string>('logo');\n public readonly href = input<string>('');\n public readonly routerLink = input<string | readonly unknown[] | null>(null);\n}\n","@if (routerLink() !== null) {\n <a [routerLink]=\"routerLink()!\" class=\"brand-link\" [attr.aria-label]=\"ariaLabel()\">\n <img [src]=\"logo()\" class=\"logo\" [alt]=\"logoAlt()\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title() }}</span>\n </a>\n} @else {\n <a [href]=\"href()\" class=\"brand-link\" [attr.aria-label]=\"ariaLabel()\">\n <img [src]=\"logo()\" class=\"logo\" [alt]=\"logoAlt()\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title() }}</span>\n </a>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'f-search-button',\n templateUrl: './f-search-button.component.html',\n styleUrls: ['./f-search-button.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n ],\n})\nexport class FSearchButtonComponent {\n}\n","<a class=\"f-icon search\" [routerLink]=\"[]\" fragment=\"search\"></a>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild,\n} from '@angular/core';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'f-checkbox',\n templateUrl: './f-checkbox.component.html',\n styleUrls: [ './f-checkbox.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.f-checkbox-checked]': 'checked',\n },\n})\nexport class FCheckboxComponent {\n\n @Input()\n public id = `f-checkbox-${ uniqueId++ }`;\n\n @Output()\n public change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('input')\n private inputElement?: ElementRef<HTMLInputElement>;\n\n @ViewChild('label')\n public labelElement?: ElementRef<HTMLLabelElement>;\n\n @Input({ transform: booleanAttribute })\n public get checked(): boolean {\n return this.isChecked;\n }\n\n public set checked(value: boolean) {\n if (value != this.checked) {\n this.isChecked = value;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private isChecked = false;\n\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n }\n\n public onInputClick(): void {\n this.handleInputClick();\n }\n\n public onTouchTargetClick(): void {\n this.handleInputClick();\n this.inputElement?.nativeElement.focus();\n }\n\n private handleInputClick(): void {\n this.isChecked = !this.isChecked;\n this.emitChangeEvent();\n }\n\n private emitChangeEvent(): void {\n this.change.emit(this.isChecked);\n if (this.inputElement) {\n this.inputElement.nativeElement.checked = this.isChecked;\n }\n }\n\n public onInteractionEvent(event: Event): void {\n event.stopPropagation();\n }\n\n @HostListener('click', [ '$event' ])\n public preventBubblingFromLabel(event: MouseEvent): void {\n if (!!event.target && this.labelElement?.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n}\n","<input #input\n [id]=\"id\"\n type=\"checkbox\"\n [checked]=\"checked\"\n (click)=\"onInputClick()\"\n (change)=\"onInteractionEvent($event)\"/>\n<div class=\"f-checkbox-container\" (click)=\"onTouchTargetClick()\">\n <svg class=\"f-checkbox-checkmark\" focusable=\"false\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path class=\"f-checkbox-checkmark-path\" fill=\"none\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n</div>\n<label [for]=\"id\" #label>\n <ng-content></ng-content>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, HostListener, input, output, viewChild,\n} from '@angular/core';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'f-radio-button',\n templateUrl: './f-radio-button.component.html',\n styleUrls: [ './f-radio-button.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.f-radio-button-checked]': 'checked()',\n },\n})\nexport class FRadioButtonComponent {\n\n public id = input<string>(`f-radio-button-${ uniqueId++ }`);\n\n public change = output<boolean>();\n public checked = input<boolean>(false);\n\n protected labelElement = viewChild<ElementRef>('label');\n\n public onInputClick(): void {\n this._handleInputClick();\n }\n\n public onTouchTargetClick(): void {\n this._handleInputClick();\n }\n\n private _handleInputClick(): void {\n this._emitChangeEvent();\n }\n\n private _emitChangeEvent(): void {\n this.change.emit(true);\n }\n\n protected onInteractionEvent(event: Event): void {\n event.stopPropagation();\n }\n\n @HostListener('click', [ '$event' ])\n protected preventBubblingFromLabel(event: MouseEvent): void {\n if (!!event.target && this.labelElement()?.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n}\n","<input [id]=\"id()\"\n type=\"radio\"\n [checked]=\"checked()\"\n (click)=\"onInputClick()\"\n (change)=\"onInteractionEvent($event)\"/>\n<div class=\"f-radio-button-container\" (click)=\"onTouchTargetClick()\">\n <div class=\"f-radio-button-inner-circle\"></div>\n</div>\n<label [for]=\"id()\" #label>\n <ng-content></ng-content>\n</label>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n NgZone,\n OnDestroy,\n signal,\n viewChild,\n} from '@angular/core';\nimport { HamburgerButton } from './components/hamburger-button';\nimport { DocumentationStore } from '../../services';\nimport { ThemeButtonComponent } from '../../../theme';\nimport { InlineMenu } from './components/inline-menu';\nimport { MediaLinks } from './components/media-links';\nimport { DropdownMenu } from './components/dropdown-menu';\nimport { HEADER_CONFIGURATION_PROVIDER } from '../../../common';\nimport { FBrandLinkComponent } from '../../../shared';\n\n@Component({\n selector: 'f-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n HamburgerButton,\n FBrandLinkComponent,\n ThemeButtonComponent,\n InlineMenu,\n DropdownMenu,\n MediaLinks,\n ],\n})\nexport class HeaderComponent implements AfterViewInit, OnDestroy {\n protected title = inject(DocumentationStore).getTitle();\n protected image = inject(DocumentationStore).getLogo();\n protected config = inject(HEADER_CONFIGURATION_PROVIDER);\n\n protected readonly emptyNavigation = !inject(DocumentationStore).getNavigation().length;\n\n private readonly _zone = inject(NgZone);\n\n private readonly _containerRef = viewChild.required<ElementRef<HTMLElement>>('container');\n private readonly _targetRef = viewChild.required<ElementRef<HTMLElement>>('target');\n\n protected readonly overflowed = signal(false);\n protected readonly initialized = signal(false);\n\n private _rafId: number | null = null;\n private _roContainer?: ResizeObserver;\n private _roTarget?: ResizeObserver;\n\n public ngAfterViewInit(): void {\n if (typeof ResizeObserver === 'undefined') {\n this._checkOverflow(true);\n return;\n }\n this._initObservers();\n this._checkOverflow(true); // первый замер синхронно\n }\n\n private _initObservers(): void {\n const container = this._containerRef().nativeElement;\n const target = this._targetRef().nativeElement;\n\n this._zone.runOutsideAngular(() => {\n const cb = () => this._scheduleCheck();\n this._roContainer = new ResizeObserver(cb);\n this._roTarget = new ResizeObserver(cb);\n\n this._roContainer.observe(container);\n this._roTarget.observe(target);\n });\n }\n\n private _scheduleCheck(): void {\n if (this._rafId != null) return;\n this._rafId = requestAnimationFrame(() => {\n this._rafId = null;\n this._checkOverflow(false);\n });\n }\n\n private _checkOverflow(isFirst: boolean): void {\n const container = this._containerRef().nativeElement;\n const target = this._targetRef().nativeElement;\n if (!container || !target) return;\n\n const next = target.scrollWidth >= container.clientWidth;\n\n if (next !== this.overflowed() || !this.initialized()) {\n this._zone.run(() => {\n this.overflowed.set(next);\n if (isFirst) this.initialized.set(true);\n });\n }\n }\n\n public ngOnDestroy(): void {\n this._roContainer?.disconnect();\n this._roTarget?.disconnect();\n if (this._rafId != null) cancelAnimationFrame(this._rafId);\n }\n}\n","@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","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\n\n@Component({\n selector: 'f-navigation-group',\n templateUrl: './navigation-group.component.html',\n styleUrls: [ './navigation-group.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.collapsed]': 'isCollapsed()',\n '[class.no-title]': '!title()',\n },\n})\nexport class NavigationGroupComponent {\n public readonly title = input<string | undefined>(undefined);\n\n protected readonly isCollapsed = signal(false);\n\n protected toggle(): void {\n this.isCollapsed.set(!this.isCollapsed());\n }\n}\n","@if (title()) {\n <header (click)=\"toggle()\">\n <span>{{ title() }}</span>\n <div class=\"flex-space\"></div>\n <div class=\"caret\">\n <span class=\"chevron-right caret-icon\"></span>\n </div>\n </header>\n}\n@if (!isCollapsed()) {\n <ng-content></ng-content>\n}\n\n\n\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'a[f-navigation-item]',\n templateUrl: './f-navigation-item.component.html',\n styleUrls: [ './f-navigation-item.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FNavigationItemComponent {\n\n}\n","<ng-content></ng-content>\n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n HostListener,\n inject,\n OnInit,\n} from '@angular/core';\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\nimport { startWith } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { FNavigationItemComponent } from './f-navigation-item/f-navigation-item.component';\nimport { NavigationGroupComponent } from './navigation-group/navigation-group.component';\nimport { INavigationItem } from './domain';\nimport { TOGGLE_NAVIGATION_COMPONENT } from '../header';\nimport { DocumentationStore } from '../../services';\nimport { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../domain';\nimport { WINDOW } from '../../../common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'f-navigation-panel',\n templateUrl: './navigation-panel.component.html',\n styleUrls: ['./navigation-panel.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FNavigationItemComponent,\n NavigationGroupComponent,\n RouterLink,\n ],\n})\nexport class NavigationPanelComponent implements OnInit, AfterViewInit {\n private readonly _provider = inject(DocumentationStore);\n private readonly _parent = inject(TOGGLE_NAVIGATION_COMPONENT, {\n optional: true,\n });\n private readonly _router = inject(Router);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _window = inject(WINDOW);\n\n protected value: string | undefined;\n protected navigation = this._provider.getNavigation();\n protected title = this._provider.getTitle();\n protected image = this._provider.getLogo();\n\n public ngOnInit(): void {\n const currentPath = this._router.url;\n const prefix = currentPath.substring(0, currentPath.lastIndexOf('/'));\n const navigation = this._deepClone(this._provider.getNavigation());\n navigation.forEach((group) => {\n group.items.forEach((item) => this._normalizeLink(item, prefix));\n });\n this.navigation = navigation;\n }\n\n private _deepClone<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n }\n\n private _normalizeLink(item: INavigationItem, prefix: string): void {\n if (item.link && !this._isExternalLink(item.link)) {\n item.link = item.link.startsWith('/')\n ? `${prefix}${item.link}`\n : `${prefix}/${item.link}`;\n }\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n public ngAfterViewInit(): void {\n this._subscribeOnRouteChanges();\n }\n\n private _subscribeOnRouteChanges(): void {\n this._router.events\n .pipe(\n startWith(new NavigationEnd(1, '', '')),\n filter((event) => event instanceof NavigationEnd),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n this._highlightLink(this._router.url);\n this._parent?.onToggleNavigation(false);\n this._changeDetectorRef.detectChanges();\n });\n }\n\n private _highlightLink(url: string): void {\n this.value = undefined;\n this.navigation.forEach((group) => {\n this.value =\n group.items.find((x) => {\n return url.endsWith(x.link);\n })?.link || this.value;\n });\n }\n\n @HostListener('click', ['$event'])\n protected _onDocumentClick(event: MouseEvent): void {\n new HandleNavigationLinksHandler().handle(\n new HandleNavigationLinksRequest(event, this._window, this._router),\n );\n }\n}\n","<a routerLink class=\"navigation-header\">\n <img [src]=\"image\" width=\"24\" height=\"24\" alt=\"logo\" class=\"logo\"/> {{ title }}\n</a>\n\n@for (group of navigation; track group) {\n <f-navigation-group [title]=\"group.text\">\n @for (item of group.items; track item.link) {\n <a f-navigation-item [href]=\"item.link\" [class.active]=\"item.link === value\">\n <div class=\"text-ellipsis\">{{ item.text }}</div>\n @if (item.badge) {\n <span class=\"f-badge {{ item.badge.type }}\">{{ item.badge.text }}</span>\n }\n </a>\n }\n </f-navigation-group>\n}\n\n","import { IMarkdownFooterLink } from '../i-markdown-footer-link';\n\nexport class GetPreviousNextPageNavigationResponse {\n\n constructor(\n public previousLink: IMarkdownFooterLink | undefined,\n public nextLink: IMarkdownFooterLink | undefined,\n ) {\n\n }\n}\n","import { GetPreviousNextPageNavigationRequest } from './get-previous-next-page-navigation.request';\nimport { GetPreviousNextPageNavigationResponse } from './get-previous-next-page-navigation.response';\nimport { IMarkdownFooterLink } from '../i-markdown-footer-link';\nimport { DocumentationStore } from '../../../../../services';\n\nexport class GetPreviousNextPageNavigationHandler {\n\n constructor(\n private _provider: DocumentationStore,\n ) {\n }\n\n public handle(request: GetPreviousNextPageNavigationRequest): GetPreviousNextPageNavigationResponse {\n let previous: IMarkdownFooterLink | undefined = undefined;\n let next: IMarkdownFooterLink | undefined = undefined;\n\n this._provider.getNavigation().forEach((group, groupIndex: number) => {\n (group.items || []).forEach((item, index) => {\n if (item.link === request.currentLink) {\n if (index > 0) {\n previous = { ...group.items[ index - 1 ] };\n } else {\n if (groupIndex > 0) {\n const previousGroup = this._provider.getNavigation()[ groupIndex - 1 ];\n previous = { ...previousGroup.items[ previousGroup.items.length - 1 ] };\n }\n }\n if (index < group.items.length - 1) {\n next = { ...group.items[ index + 1 ] };\n } else {\n if (groupIndex < this._provider.getNavigation().length - 1) {\n const nextGroup = this._provider.getNavigation()[ groupIndex + 1 ];\n next = { ...nextGroup.items[ 0 ] };\n }\n }\n }\n });\n });\n return new GetPreviousNextPageNavigationResponse(previous, next);\n }\n}\n","export class GetPreviousNextPageNavigationRequest {\n\n constructor(\n public currentLink: string,\n ) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component, Input,\n} from '@angular/core';\nimport { IMarkdownFooterLink } from '../domain';\n\n@Component({\n selector: 'a[footer-navigation-button]',\n templateUrl: './footer-navigation-button.html',\n styleUrls: [ './footer-navigation-button.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FooterNavigationButton {\n\n @Input({ required: true })\n public description: string | undefined;\n\n @Input({ required: true })\n public link!: IMarkdownFooterLink;\n}\n","<span class=\"description\">{{ description }}</span>\n<span class=\"page-title\">{{ link.text }}</span>\n","import {\n ChangeDetectionStrategy,\n Component, computed,\n HostListener,\n inject,\n} from '@angular/core';\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport {\n GetPreviousNextPageNavigationHandler,\n GetPreviousNextPageNavigationRequest,\n IMarkdownFooterLink,\n} from './domain';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DocumentationStore } from '../../../services';\nimport { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../../domain';\nimport { WINDOW } from '../../../../common';\nimport { FooterNavigationButton } from './footer-navigation-button';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'markdown-footer',\n templateUrl: './markdown-footer.html',\n styleUrls: ['./markdown-footer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FooterNavigationButton,\n ],\n standalone: true,\n})\nexport class MarkdownFooter {\n\n private readonly _provider = inject(DocumentationStore);\n private readonly _router = inject(Router);\n private readonly _activatedRoute = inject(ActivatedRoute);\n private readonly _window = inject(WINDOW);\n\n protected readonly navigation = this._provider.getFooterNavigation();\n\n private readonly _url = toSignal(this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._router.url),\n distinctUntilChanged(),\n ), { initialValue: this._router.url });\n\n private readonly _currentLink = computed(() => {\n this._url();\n return this._activatedRoute.snapshot.url.map(s => s.path).join('/');\n });\n\n private readonly _prefix = computed(() => {\n const url = this._url();\n const idx = url.lastIndexOf('/');\n return idx > 0 ? url.substring(0, idx) : '';\n });\n\n protected readonly editLink = computed<string | undefined>(() => {\n const nav = this.navigation;\n if (!nav.editLink?.pattern) return undefined;\n return nav.editLink.pattern + this._currentLink() + '.md';\n });\n\n protected readonly previousLink = computed<IMarkdownFooterLink | undefined>(() => {\n const prevNext = new GetPreviousNextPageNavigationHandler(this._provider)\n .handle(new GetPreviousNextPageNavigationRequest(this._currentLink()));\n return this._normalizeLink(prevNext.previousLink);\n });\n\n protected readonly nextLink = computed<IMarkdownFooterLink | undefined>(() => {\n const prevNext = new GetPreviousNextPageNavigationHandler(this._provider)\n .handle(new GetPreviousNextPageNavigationRequest(this._currentLink()));\n return this._normalizeLink(prevNext.nextLink);\n });\n\n private _normalizeLink(item?: IMarkdownFooterLink): IMarkdownFooterLink | undefined {\n if (!item?.link) return item;\n if (this._isExternal(item.link)) return item;\n\n const prefix = this._prefix();\n const joined = (prefix ? `${prefix}/${item.link}` : item.link)\n .replace(/\\/{2,}/g, '/');\n\n return { ...item, link: joined.startsWith('/') ? joined : `/${joined}` };\n }\n\n private _isExternal(href: string): boolean {\n return /^(?:[a-z]+:)?\\/\\//i.test(href) || href.startsWith('www.');\n }\n\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n new HandleNavigationLinksHandler().handle(\n new HandleNavigationLinksRequest(event, this._window, this._router),\n );\n }\n}\n","@let eLink = editLink();\n@let pLink = previousLink();\n@let nLink = nextLink();\n\n@if (eLink) {\n <a class=\"footer-edit-link\" [href]=\"eLink\">\n <span class=\"edit-link-icon f-icon edit\"></span>\n {{ navigation.editLink?.text || 'Edit this page on GitHub' }}\n </a>\n}\n\n@if (pLink || nLink) {\n <nav class=\"footer-navigation\">\n @if (pLink) {\n <a footer-navigation-button\n [href]=\"pLink.link\"\n [description]=\"navigation.previous\"\n [link]=\"pLink\">\n </a>\n }\n @if (nLink) {\n <a footer-navigation-button class=\"next\"\n [href]=\"nLink.link\"\n [description]=\"navigation.next\"\n [link]=\"nLink\">\n </a>\n }\n </nav>\n}\n\n","export enum EMarkdownContainerType {\n\n CODE_GROUP = 'code-group',\n\n EXAMPLE_GROUP = 'ng-component',\n\n PREVIEW_GROUP = 'preview-group',\n\n SHOWCASE = 'showcase',\n\n ALERT_TIP = 'tip',\n\n ALERT_INFO = 'info',\n\n ALERT_WARNING = 'warning',\n\n ALERT_DANGER = 'danger',\n\n ALERT_SUCCESS = 'success'\n}\n","export enum EParsedContainerType {\n\n CODE = 'code',\n\n EXAMPLE = 'ng-component',\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { IPreviewNavigationGroup } from \"./i-preview-navigation-group\";\n\nexport interface IPreviewNavigationService<T extends IPreviewNavigationGroup> {\n getNavigation(): T[];\n}\n\nexport const F_PREVIEW_NAVIGATION_PROVIDER = new InjectionToken<IPreviewNavigationService<IPreviewNavigationGroup>>('F_PREVIEW_NAVIGATION_PROVIDER');\n","import { ISeoOverrides } from '../../../../analytics';\n\nexport interface IMarkdownPageLayoutOptions {\n hideTableOfContent: boolean;\n expandContentWithoutTableOfContent: boolean;\n}\n\nexport interface IMarkdownFrontMatterData {\n layout: IMarkdownPageLayoutOptions;\n seo: ISeoOverrides | null;\n}\n\nexport interface IMarkdownFrontMatterParseResult {\n markdown: string;\n data: IMarkdownFrontMatterData;\n}\n\nexport const DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS: IMarkdownPageLayoutOptions = {\n hideTableOfContent: false,\n expandContentWithoutTableOfContent: false,\n};\n","import { inject, Injectable, signal } from '@angular/core';\nimport { Observable, of, switchMap } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport MarkdownIt from 'markdown-it';\n\nimport {\n DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS,\n EMarkdownContainerType,\n IMarkdownFrontMatterData,\n IMarkdownFrontMatterParseResult,\n IMarkdownPageLayoutOptions,\n ParseAlerts,\n ParseAngularExampleWithCodeLinks,\n ParseGroupedCodeItems,\n ParsePreviewGroup, ParseShowcase,\n ParseSingleCodeItem,\n} from './index';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { catchError, take } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { F_PREVIEW_NAVIGATION_PROVIDER } from './domain';\nimport { ISeoOverrides } from '../../../analytics';\n\n@Injectable()\nexport class MarkdownService {\n\n private readonly _markdown = new MarkdownIt({ html: true, linkify: true });\n private readonly _httpClient = inject(HttpClient);\n private readonly _domSanitizer = inject(DomSanitizer);\n private readonly _router = inject(Router);\n private readonly _provider = inject(F_PREVIEW_NAVIGATION_PROVIDER, { optional: true });\n private readonly _pageLayout = signal<IMarkdownPageLayoutOptions>({ ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS });\n private readonly _pageSeo = signal<ISeoOverrides | null>(null);\n\n public readonly pageLayout = this._pageLayout.asReadonly();\n public readonly pageSeo = this._pageSeo.asReadonly();\n\n constructor() {\n this._markdown\n .use((x) => new ParseSingleCodeItem().render(x))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_TIP, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_INFO, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_WARNING, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_DANGER, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_SUCCESS, this._markdown))\n .use(...new ParseGroupedCodeItems().render())\n .use(...new ParsePreviewGroup(this._provider?.getNavigation() || []).render())\n .use(...new ParseShowcase().render())\n .use(...new ParseAngularExampleWithCodeLinks().render());\n }\n\n public parseUrl(src: string): Observable<SafeHtml> {\n this._resetPageContext();\n\n return this._httpClient.get(src, { responseType: 'text' }).pipe(take(1), catchError(() => of(''))).pipe(\n switchMap((text) => of(this._renderMarkdownWithPageContext(text))),\n switchMap((x) => of(this._cleanupEmptyParagraphs(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromExampleView(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromPreviewGroup(x))),\n switchMap((x) => of(this._normalizeLinks(x))),\n switchMap((x) => of(this._domSanitizer.bypassSecurityTrustHtml(x))),\n );\n }\n\n public parseText(value: string): Observable<SafeHtml> {\n this._resetPageContext();\n\n return of(this._renderMarkdownWithPageContext(value)).pipe(\n switchMap((x) => of(this._cleanupEmptyParagraphs(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromExampleView(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromPreviewGroup(x))),\n switchMap((x) => of(this._normalizeLinks(x))),\n switchMap((x) => of(this._domSanitizer.bypassSecurityTrustHtml(x))),\n );\n }\n\n private _normalizeLinks(html: string): string {\n const currentPath = this._router.url;\n const prefix = currentPath.substring(0, currentPath.lastIndexOf('/'));\n\n return html.replace(/<a\\s+href=\"([^\"]*)\"/g, (match, href) => {\n if (!this._isExternalLink(href)) {\n let newHref = href.substring(0);\n if (!href.startsWith('./')) {\n newHref = href.startsWith('/') ? `${prefix}${href}` : `${prefix}/${href}`;\n }\n return `<a href=\"${newHref}\"`;\n }\n return match;\n });\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n private _cleanupEmptyParagraphs(html: string): string {\n return html.replace(/<p>\\s*<\\/p>/g, '');\n }\n\n private _cleanupWasteParagraphFromExampleView(html: string): string {\n return html.replace(/<div class=\"f-code-group-body\">\\s*<p>[^<]*<\\/p>/g, '<div class=\"f-code-group-body\">');\n }\n\n private _cleanupWasteParagraphFromPreviewGroup(html: string): string {\n return html.replace(/<p>(\\[[^\\]]+\\](\\s*\\[[^\\]]+\\])*)<\\/p>/g, '');\n }\n\n private _renderMarkdownWithPageContext(markdown: string): string {\n const result = this._parseFrontMatter(markdown);\n this._applyPageContext(result.data);\n\n return this._markdown.render(result.markdown);\n }\n\n private _parseFrontMatter(markdown: string): IMarkdownFrontMatterParseResult {\n const source = (markdown || '').replace(/^\\uFEFF/, '');\n const match = source.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---(?:\\r?\\n|$)/);\n\n const defaults = this._getDefaultFrontMatterData();\n if (!match || !match[1].includes(':')) {\n return {\n markdown: source,\n data: defaults,\n };\n }\n\n const rawFrontMatter = match[1];\n const parsedData = this._parseFrontMatterData(rawFrontMatter);\n\n return {\n markdown: source.slice(match[0].length),\n data: parsedData,\n };\n }\n\n private _parseFrontMatterData(rawFrontMatter: string): IMarkdownFrontMatterData {\n const layout: IMarkdownPageLayoutOptions = { ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS };\n const seo: ISeoOverrides = {};\n\n rawFrontMatter\n .split(/\\r?\\n/)\n .forEach((line) => this._parseFrontMatterLine(line, layout, seo));\n\n return {\n layout,\n seo: Object.keys(seo).length ? seo : null,\n };\n }\n\n private _parseFrontMatterLine(line: string, layout: IMarkdownPageLayoutOptions, seo: ISeoOverrides): void {\n const normalizedLine = line.trim();\n if (!normalizedLine || normalizedLine.startsWith('#')) {\n return;\n }\n\n const separatorIndex = normalizedLine.indexOf(':');\n if (separatorIndex < 0) {\n return;\n }\n\n const key = normalizedLine.slice(0, separatorIndex).trim().toLowerCase();\n const value = this._normalizeFrontMatterValue(normalizedLine.slice(separatorIndex + 1));\n if (!key || !value) {\n return;\n }\n\n const boolValue = this._parseBoolean(value);\n this._applyLayoutKey(key, boolValue, layout);\n this._applySeoKey(key, value, boolValue, seo);\n }\n\n private _normalizeFrontMatterValue(value: string): string {\n const trimmed = value.trim();\n if ((trimmed.startsWith('\"') && trimmed.endsWith('\"')) || (trimmed.startsWith('\\'') && trimmed.endsWith('\\''))) {\n return trimmed.slice(1, -1).trim();\n }\n return trimmed;\n }\n\n private _parseBoolean(value: string): boolean | null {\n const normalized = value.toLowerCase();\n if ([ 'true', '1', 'yes', 'on' ].includes(normalized)) {\n return true;\n }\n\n if ([ 'false', '0', 'no', 'off' ].includes(normalized)) {\n return false;\n }\n\n return null;\n }\n\n private _applyLayoutKey(key: string, boolValue: boolean | null, layout: IMarkdownPageLayoutOptions): void {\n if (boolValue === null) {\n return;\n }\n\n switch (key) {\n case 'toc':\n case 'showtoc':\n case 'tableofcontent':\n case 'table_of_content':\n layout.hideTableOfContent = !boolValue;\n return;\n case 'hidetoc':\n case 'hide_toc':\n layout.hideTableOfContent = boolValue;\n return;\n case 'widecontent':\n case 'expandcontent':\n case 'expandwithouttoc':\n case 'expand_no_toc':\n case 'widetableofcontentgap':\n layout.expandContentWithoutTableOfContent = boolValue;\n return;\n }\n }\n\n private _applySeoKey(key: string, value: string, boolValue: boolean | null, seo: ISeoOverrides): void {\n switch (key) {\n case 'title':\n case 'seotitle':\n seo.title = value;\n return;\n case 'description':\n case 'seodescription':\n seo.description = value;\n return;\n case 'canonical':\n case 'seocanonical':\n seo.canonical = value;\n return;\n case 'keywords':\n case 'seokeywords':\n seo.keywords = value;\n return;\n case 'robots':\n case 'seorobots':\n seo.robots = value;\n return;\n case 'image':\n case 'seoimage':\n seo.image = value;\n return;\n case 'imagetype':\n case 'image_type':\n seo.image_type = value;\n return;\n case 'imagewidth':\n case 'image_width':\n seo.image_width = this._parseNumberOrDefault(value, seo.image_width);\n return;\n case 'imageheight':\n case 'image_height':\n seo.image_height = this._parseNumberOrDefault(value, seo.image_height);\n return;\n case 'ogtype':\n case 'og_type':\n seo.og_type = value;\n return;\n case 'ogtitle':\n case 'og_title':\n seo.og_title = value;\n return;\n case 'ogdescription':\n case 'og_description':\n seo.og_description = value;\n return;\n case 'ogimage':\n case 'og_image':\n seo.og_image = value;\n return;\n case 'twittercard':\n case 'twitter_card':\n seo.twitter_card = value;\n return;\n case 'twittertitle':\n case 'twitter_title':\n seo.twitter_title = value;\n return;\n case 'twitterdescription':\n case 'twitter_description':\n seo.twitter_description = value;\n return;\n case 'twitterimage':\n case 'twitter_image':\n seo.twitter_image = value;\n return;\n case 'noindex':\n if (boolValue !== null) {\n seo.noindex = boolValue;\n }\n return;\n case 'nofollow':\n if (boolValue !== null) {\n seo.nofollow = boolValue;\n }\n return;\n }\n }\n\n private _parseNumberOrDefault(value: string, fallback: number | undefined): number | undefined {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue) || numericValue <= 0) {\n return fallback;\n }\n return numericValue;\n }\n\n private _applyPageContext(data: IMarkdownFrontMatterData): void {\n this._pageLayout.set({ ...data.layout });\n this._pageSeo.set(data.seo ? { ...data.seo } : null);\n }\n\n private _resetPageContext(): void {\n this._applyPageContext(this._getDefaultFrontMatterData());\n }\n\n private _getDefaultFrontMatterData(): IMarkdownFrontMatterData {\n return {\n layout: { ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS },\n seo: null,\n };\n }\n}\n","import { IMarkdownItToken } from './domain';\n\nexport function getContent(tokens: IMarkdownItToken[], index: number, eContainerType: string): string | undefined {\n let result: string | undefined;\n\n for (let i = index + 1; i < tokens.length; i++) {\n if (tokens[ i ].type === `container_${ eContainerType }_close`) {\n break;\n }\n if (isInlineToken(tokens[ i ])) {\n result = tokens[ i ].content;\n break;\n }\n }\n return result;\n}\n\nfunction isInlineToken(token: IMarkdownItToken): boolean {\n return token.type === 'inline' && !token.tag;\n}\n\nexport function encodeDataAttr(data: unknown): string {\n return JSON.stringify(data).replace(/\"/g, '&quot;');\n}\n\nexport function isOpeningToken(token: IMarkdownItToken): boolean {\n return token.nesting === 1;\n}\n\nexport function isClosingToken(token: IMarkdownItToken): boolean {\n return token.nesting === -1;\n}\n\nexport function parseFileLinkLine(line: string): { fileName: string, url: string } | null {\n const match = line.match(/\\[(.+?)\\]\\s*<<<\\s*(.+)/);\n if (!match) return null;\n\n const fileName = match[1].trim();\n let url = match[2].trim();\n\n const markdownLink = url.match(/^\\[[^\\]]+]\\((.+)\\)$/);\n if (markdownLink) {\n url = markdownLink[1].trim();\n }\n\n const angleWrapped = url.match(/^<(.+)>$/);\n if (angleWrapped) {\n url = angleWrapped[1].trim();\n }\n\n return url ? { fileName, url } : null;\n}\n\nexport function parseSingleBracketText(line: string): string | null {\n const match = line.match(/\\[(.+?)\\]/);\n return match ? match[1] : null;\n}\n","import MarkdownIt from 'markdown-it';\nimport container from 'markdown-it-container';\nimport { IMarkdownItToken } from './domain';\nimport { isOpeningToken } from './utils';\n\ntype ContainerArgs = [ typeof container, string, { render: any } ]\n\nexport class ParseAlerts {\n\n public render(type: string, markdown: MarkdownIt): ContainerArgs {\n return [ container, type, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n const token = tokens[ index ];\n const info = token.info.trim().slice(type.length).trim();\n if (isOpeningToken(token)) {\n const title = markdown.renderInline(info);\n return `<div class=\"f-alert ${ type }\"><p class=\"f-alert-title\">${ title }</p>\\n`;\n } else {\n return `</div>\\n`;\n }\n },\n } ];\n }\n}\n","import container from 'markdown-it-container';\nimport { EMarkdownContainerType } from './domain';\nimport { IMarkdownItToken } from './domain';\nimport { EParsedContainerType, IParsedContainerData } from \"./domain\";\nimport { encodeDataAttr, isClosingToken, isOpeningToken } from './utils';\n\ntype ContainerArgs = [typeof container, string, { render: any }]\nconst F_CONTAINER_CLOSE_TAG = 'container_code-group_close';\n\nexport class ParseGroupedCodeItems {\n\n public render(): ContainerArgs {\n return [container, EMarkdownContainerType.CODE_GROUP, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n if (isOpeningToken(tokens[index])) {\n return this._openingExampleGroupHTML(this._generateData(tokens, index));\n }\n return '</f-code-group>';\n },\n }];\n }\n\n private _generateData(tokens: IMarkdownItToken[], index: number): IParsedContainerData[] {\n const result: IParsedContainerData[] = [];\n\n for (let i = index + 1; !this._isClosingToken(tokens, i); i++) {\n if (this._isCodeFenceToken(tokens[i])) {\n result.push({\n tab: this._getCodeBlockTitle(tokens[i].info),\n value: tokens[i].content,\n type: EParsedContainerType.CODE,\n isLink: false,\n height: 'auto',\n language: this._getCodeLanguage(tokens[i].info),\n });\n }\n }\n\n return result;\n }\n\n private _isClosingToken(token: IMarkdownItToken[], index: number): boolean {\n return isClosingToken(token[index]) && token[index].type === F_CONTAINER_CLOSE_TAG;\n }\n\n private _isCodeFenceToken(token: IMarkdownItToken): boolean {\n return token.type === 'fence' && token.tag === 'code';\n }\n\n private _openingExampleGroupHTML(data: IParsedContainerData[]): string {\n return `<f-code-group data-data=\"${encodeDataAttr(data)}\">`;\n }\n\n private _getCodeBlockTitle(data: string): string {\n return data.match(/\\[(.*)\\]/)?.[1] || this._getCodeLanguage(data) || 'txt';\n }\n\n private _getCodeLanguage(data: string): string {\n const match = data.trim().match(/^([a-zA-Z0-9_-]+)/);\n return match ? match[1] : '';\n }\n}\n","import MarkdownIt from 'markdown-it';\nimport { IMarkdownItToken } from './domain';\nimport { EParsedContainerType, IParsedContainerData } from './domain';\nimport { encodeDataAttr } from './utils';\n\nexport class ParseSingleCodeItem {\n\n public render(markdown: MarkdownIt): void {\n const fence = markdown.renderer.rules.fence;\n if (!fence) {\n throw new Error('Markdown renderer does not have a fence rule.');\n }\n\n markdown.renderer.rules.fence = (tokens: IMarkdownItToken[], index: number) => {\n const data = this._getTokenData(tokens[index]);\n return (\n `<f-code-group data-data=\"${encodeDataAttr([this._createCodeData(data)])}\"></f-code-group>`\n );\n };\n }\n\n private _getTokenData(token: IMarkdownItToken): ITokenData {\n return { value: token.content, language: token.info };\n }\n\n private _createCodeData({ value, language }: ITokenData): IParsedContainerData {\n return {\n tab: '',\n value,\n language,\n type: EParsedContainerType.CODE,\n };\n }\n}\n\ninterface ITokenData {\n value: string;\n language: string;\n}\n","import { EMarkdownContainerType } from './domain';\nimport { IMarkdownItToken } from './domain';\n\nimport container from 'markdown-it-container';\nimport { EParsedContainerType, IMarkdownContainerData, IParsedContainerData } from './domain';\nimport { encodeDataAttr, getContent, isOpeningToken, parseFileLinkLine } from './utils';\n\ntype ContainerArgs = [typeof container, string, { render: any }];\n\nexport class ParseAngularExampleWithCodeLinks {\n\n public render(): ContainerArgs {\n return [container, EMarkdownContainerType.EXAMPLE_GROUP, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n return isOpeningToken(tokens[index]) ? this._opening(tokens, index) : '</f-code-group>';\n },\n }];\n }\n\n private _opening(tokens: IMarkdownItToken[], index: number): string {\n const data = this._collectData(tokens, index);\n return `<f-code-group data-data=\"${encodeDataAttr(data)}\">`;\n }\n\n private _collectData(tokens: IMarkdownItToken[], index: number): IParsedContainerData[] {\n const result: IParsedContainerData[] = [];\n\n const source = this._parseNgComponent(tokens[index]);\n const height = source?.height || 'auto';\n if (source) {\n result.push({\n tab: 'Example',\n value: source.value,\n type: EParsedContainerType.EXAMPLE,\n height,\n });\n }\n\n const content = getContent(tokens, index, EMarkdownContainerType.EXAMPLE_GROUP);\n const items = (content || '').split('\\n').map(parseFileLinkLine).filter(Boolean) as {\n fileName: string,\n url: string\n }[];\n items.forEach(({ fileName, url }) => result.push({\n tab: fileName,\n value: url,\n isLink: true,\n type: EParsedContainerType.CODE,\n height,\n }));\n\n return result;\n }\n\n private _parseNgComponent(token: IMarkdownItToken): IMarkdownContainerData | null {\n const cleanedInput = token.info.replace(/^ng-component\\s*/, '').trim();\n const height = this._parseHeight(cleanedInput);\n\n const componentTag = cleanedInput.match(/<([a-zA-Z][a-zA-Z0-9-]*)(\\s[^>]*)?>\\s*<\\/\\1>/s)?.[0]?.trim();\n if (componentTag) {\n return {\n value: componentTag,\n height,\n };\n }\n\n const explicitUrl = cleanedInput.match(/\\[url\\]=[\"']([^\"']+)[\"']/)?.[1]?.trim();\n if (explicitUrl) {\n return {\n value: explicitUrl,\n height,\n };\n }\n\n const implicitUrl = cleanedInput\n .replace(/\\[height\\]=[\"'][^\"']*[\"']/g, '')\n .trim()\n .replace(/^[\"']|[\"']$/g, '');\n\n if (!implicitUrl || implicitUrl.includes('<')) return null;\n\n return {\n value: implicitUrl,\n height,\n };\n }\n\n private _parseHeight(input: string): string | number | undefined {\n const rawHeight = input.match(/\\[height\\]=[\"']([^\"']+)[\"']/)?.[1]?.trim();\n if (!rawHeight) return undefined;\n\n const numericHeight = Number(rawHeight);\n return Number.isFinite(numericHeight) ? numericHeight : rawHeight;\n }\n}\n","import { EMarkdownContainerType, IMarkdownItToken, IPreviewNavigationGroup } from './domain';\n\nimport container from 'markdown-it-container';\nimport { getContent, isOpeningToken, parseSingleBracketText } from './utils';\n\ntype ContainerArgs = [ typeof container, string, { render: any } ]\n\nexport class ParsePreviewGroup {\n\n constructor(\n private _navigation: IPreviewNavigationGroup[],\n ) {\n }\n\n public render(): ContainerArgs {\n return [ container, EMarkdownContainerType.PREVIEW_GROUP, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n if (isOpeningToken(tokens[index])) {\n return this._getGroupsHTML(this._generateData(tokens, index));\n }\n return '';\n },\n } ];\n }\n\n private _generateData(tokens: IMarkdownItToken[], index: number): IPreviewNavigationGroup[] {\n const groups: IPreviewNavigationGroup[] = [];\n\n this._parseData(getContent(tokens, index, EMarkdownContainerType.PREVIEW_GROUP) || '').forEach((x: string) => {\n const group = this._navigation.find((g) => g.text === x || g.id === x);\n if (group) {\n groups.push(group)\n }\n });\n\n return groups;\n }\n\n private _parseData(data: string): string[] {\n return data.split('\\n').map(parseSingleBracketText).filter(Boolean) as string[];\n }\n\n private _getGroupsHTML(groups: IPreviewNavigationGroup[]): string {\n const result = (groups || []).map((x) => {\n return `<h2>${ x.text }</h2><div class=\"f-preview-group\">${ this._getItemsHTML(x) }</div>`;\n }).join('');\n\n return this._getGroupFiltersHTML() + result;\n }\n\n private _getGroupFiltersHTML(): string {\n return `<f-preview-group-filters></f-preview-group-filters>`;\n }\n\n private _getItemsHTML(group: IPreviewNavigationGroup): string {\n return group.items.map((item) => {\n return `<f-preview data-group=\"${ group.text }\" data-item=\"${ item.link }\"></f-preview>`\n }).join('');\n }\n}\n","import { EMarkdownContainerType, IMarkdownItToken } from './domain';\n\nimport container from 'markdown-it-container';\nimport { isOpeningToken } from './utils';\n\ntype ContainerArgs = [ typeof container, string, { render: any } ]\n\nexport class ParseShowcase {\n\n public render(): ContainerArgs {\n return [ container, EMarkdownContainerType.SHOWCASE, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n if (isOpeningToken(tokens[index])) {\n return `<showcase></showcase>`;\n }\n return '';\n },\n } ];\n }\n}\n","import { inject, Injectable, Injector, Type } from '@angular/core';\nimport { IExecution } from './i-execution';\n\n@Injectable()\nexport class Mediatr {\n private readonly _injector = inject(Injector);\n\n private static _executions = new Map<symbol, Type<IExecution<any, any>>>();\n\n public static register<TRequest, TResponse>(\n type: any, handler: Type<IExecution<TRequest, TResponse>>,\n ): void {\n if (!type || !type.requestToken) {\n throw new Error('Type must have a requestToken static property');\n }\n Mediatr._executions.set(type.requestToken, handler);\n }\n\n public execute<TResponse>(request: any): TResponse {\n const token = request.constructor.requestToken;\n\n const handlerType = Mediatr._executions.get(token);\n if (!handlerType) {\n throw new Error(`No handler registered for token`, token);\n }\n\n const handler = this._injector.get(handlerType);\n return handler.handle(request);\n }\n}\n","import { IExecution } from './i-execution';\nimport { Mediatr } from './mediatr';\nimport { Type } from '@angular/core';\n\ntype Constructor<T = any> = new (...args: any[]) => T;\n\nexport function MExecution<TRequest, TResponse>(requestType: Type<TRequest>) {\n return function (constructor: Constructor<IExecution<TRequest, TResponse>>) {\n Mediatr.register(requestType, constructor);\n };\n}\n","export function coerceComponentHeight(value: string | number | undefined): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? `${ value }px` : undefined;\n }\n\n const normalizedValue = value.trim();\n if (!normalizedValue) return undefined;\n\n if (normalizedValue === 'auto') return 'auto';\n\n const numericValue = Number(normalizedValue);\n if (Number.isFinite(numericValue) && numericValue > 0) {\n return `${ numericValue }px`;\n }\n\n if (/^-?\\d+(\\.\\d+)?(px|%|vh|vw|vmin|vmax|rem|em|ch|ex|cm|mm|in|pt|pc)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n if (/^calc\\(.+\\)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n return undefined;\n}\n","const URL_PROTOCOL_REGEX = /^(https?:\\/\\/|\\/\\/|\\/(?!\\/)|\\.\\.?\\/)/i;\nconst BARE_DOMAIN_REGEX = /^(localhost(?::\\d+)?|([a-z0-9-]+\\.)+[a-z]{2,})(\\/.*)?$/i;\nconst UNSAFE_PROTOCOL_REGEX = /^(javascript|data|vbscript):/i;\n\nexport function parseIframeUrl(value: string): string | null {\n if (!value) return null;\n\n const normalizedValue = value.trim();\n const urlFromAttr = normalizedValue.match(/\\[url\\]=[\"']([^\"']+)[\"']/)?.[1]?.trim();\n const candidate = (urlFromAttr || normalizedValue).replace(/^[\"']|[\"']$/g, '').trim();\n\n if (!candidate || candidate.includes('<') || UNSAFE_PROTOCOL_REGEX.test(candidate)) {\n return null;\n }\n\n if (URL_PROTOCOL_REGEX.test(candidate)) {\n return candidate;\n }\n\n if (BARE_DOMAIN_REGEX.test(candidate)) {\n return `https://${ candidate }`;\n }\n\n return null;\n}\n","export function parseComponentTag(html: string): string | null {\n const regex = /^<([a-zA-Z][a-zA-Z0-9-]*)(\\s+[^>]+)?>\\s*<\\/\\1>$/s;\n const match = regex.exec(html.trim());\n return match ? match[1] : null;\n}\n","import { ViewContainerRef } from '@angular/core';\nimport { IDynamicComponentItem } from '../../models';\n\nexport class RenderDynamicComponentRequest {\n static readonly requestToken = Symbol('RenderDynamicComponentRequest');\n\n constructor(\n public readonly item: IDynamicComponentItem,\n public readonly viewContainerRef: ViewContainerRef,\n public readonly element?: HTMLElement,\n ) {\n }\n}\n","import { RenderDynamicComponentRequest } from './render-dynamic-component-request';\nimport { ComponentRef, inject, Injectable, ViewContainerRef } from '@angular/core';\nimport { DynamicComponentsStore } from '../../dynamic-components.store';\nimport { IExecution, MExecution } from '../../../mediatr';\nimport { IDynamicComponentItem } from '../../models';\n\n@Injectable()\n@MExecution(RenderDynamicComponentRequest)\nexport class RenderDynamicComponent implements IExecution<RenderDynamicComponentRequest, void>{\n\n private readonly _dynamicStore = inject(DynamicComponentsStore);\n\n public handle({ item, viewContainerRef, element }: RenderDynamicComponentRequest): void {\n try {\n this._renderComponent(item, viewContainerRef, element);\n } catch (error) {\n this._logError(item.selector, error);\n }\n }\n\n private _renderComponent({ selector, component }: IDynamicComponentItem, viewContainerRef: ViewContainerRef, element?: HTMLElement): void {\n component.then(extracted => {\n if (!extracted) {\n this._logComponentResolutionError(selector);\n return;\n }\n\n const componentRef = viewContainerRef.createComponent(extracted);\n this._dynamicStore.addComponent(componentRef, element);\n\n element?.replaceWith(this._extractComponentRoot(componentRef));\n }).catch(error => this._logComponentLoadingError(selector, error));\n }\n\n private _extractComponentRoot(componentRef: ComponentRef<any>): HTMLElement {\n componentRef.changeDetectorRef.markForCheck();\n return (componentRef.hostView as any).rootNodes[0] as HTMLElement;\n }\n\n private _logComponentResolutionError(tag: string): void {\n console.error(`Component for tag \"${tag}\" could not be resolved.`);\n }\n\n private _logComponentLoadingError(tag: string, error: object): void {\n console.error(`Error while loading component for tag \"${tag}\":`, error);\n }\n\n private _logError(tag: string, error: any): void {\n console.error(`Error inserting component for <${tag}>:`, error);\n }\n}\n","import { ViewContainerRef } from '@angular/core';\n\nexport class RenderExternalComponentRequest {\n public static readonly requestToken = Symbol('RenderExternalComponentRequest');\n\n constructor(\n public readonly selector: string,\n public readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IDynamicComponentItem } from '../models';\n\nexport const EXTERNAL_COMPONENT_PROVIDER = new InjectionToken<IDynamicComponentItem[]>('EXTERNAL_COMPONENT_PROVIDER');\n","import { RenderExternalComponentRequest } from './render-external-component-request';\nimport { inject, Injectable } from '@angular/core';\nimport { IExecution, Mediatr, MExecution } from '../../../mediatr';\nimport { RenderDynamicComponentRequest } from '../render-dynamic-component';\nimport { EXTERNAL_COMPONENT_PROVIDER } from '../../providers';\n\n@Injectable()\n@MExecution(RenderExternalComponentRequest)\nexport class RenderExternalComponent implements IExecution<RenderExternalComponentRequest, void> {\n\n private readonly _mediatr = inject(Mediatr);\n private readonly _componentsMap = inject(EXTERNAL_COMPONENT_PROVIDER, { optional: true }) ?? [];\n\n public handle({ selector, viewContainerRef }: RenderExternalComponentRequest): void {\n if (!selector) {\n console.warn('Empty selector passed to RenderExternalComponentRequest.');\n return;\n }\n\n const item = this._componentsMap.find((x) => {\n return x.selector === selector;\n });\n\n if (!item) {\n console.error(`Component for tag \"${selector}\" could not be found in external components map.`);\n return;\n }\n\n this._mediatr.execute(\n new RenderDynamicComponentRequest(item, viewContainerRef),\n );\n }\n}\n","import { ViewContainerRef } from '@angular/core';\n\nexport class RenderInternalComponentsRequest {\n public static readonly requestToken = Symbol('RenderInternalComponentsRequest');\n\n constructor(\n public readonly hostElement: HTMLElement,\n public readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n}\n","import { RenderInternalComponentsRequest } from './render-internal-components-request';\nimport { inject, Injectable } from '@angular/core';\nimport { IExecution, Mediatr, MExecution } from '../../../mediatr';\nimport { IDynamicComponentItem } from '../../models';\nimport { DynamicComponentsStore, extractComponent } from '../../../documentation-page';\nimport { RenderDynamicComponentRequest } from '../render-dynamic-component';\n\n@Injectable()\n@MExecution(RenderInternalComponentsRequest)\nexport class RenderInternalComponents implements IExecution<RenderInternalComponentsRequest, void> {\n private readonly _dynamicStore = inject(DynamicComponentsStore);\n private readonly _mediatr = inject(Mediatr);\n\n private readonly _componentsMap: IDynamicComponentItem[] = [\n {\n selector: 'f-code-group',\n component: extractComponent(() => import('../../components/code-group/code-group')),\n },\n {\n selector: 'f-preview',\n component: extractComponent(() => import('../../components/preview-group/components/preview-card/preview-card')),\n },\n {\n selector: 'f-preview-group-filters',\n component: extractComponent(() => import('../../components/preview-group/components/preview-action-bar/preview-action-bar')),\n },\n {\n selector: 'showcase',\n component: extractComponent(() => import('../../components/showcase/showcase')),\n },\n ];\n\n public handle({ hostElement, viewContainerRef }: RenderInternalComponentsRequest): void {\n this._dynamicStore.dispose();\n\n this._componentsMap.forEach(({ selector, component }) => {\n this._queryElements(hostElement, selector).forEach((x) => {\n this._mediatr.execute(\n new RenderDynamicComponentRequest({ selector, component }, viewContainerRef, x),\n );\n });\n });\n }\n\n private _queryElements(hostElement: HTMLElement, selector: string): HTMLElement[] {\n return Array.from(hostElement.querySelectorAll(selector));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n OnInit,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { coerceComponentHeight } from './utils/coerce-component-height';\nimport { parseComponentTag } from './utils/parse-component-tag';\nimport { IExampleViewData } from './domain/i-example-view-data';\nimport { IParsedContainerData } from '../../../documentation-page';\nimport { Mediatr } from '../../../mediatr';\nimport { RenderExternalComponentRequest } from '../../features';\nimport { parseIframeUrl } from './utils/parse-iframe-url';\nimport { DOCUMENT } from '@angular/common';\nimport { IS_BROWSER_PLATFORM } from '../../../common';\n\n@Component({\n selector: 'external-component',\n templateUrl: './external-component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'f-example-view',\n '[style.height]': 'data().height',\n '[class.f-example-view-fullscreen]': 'isFullscreen()',\n },\n})\nexport class ExternalComponent implements OnInit {\n public readonly data = input.required<IExampleViewData, IParsedContainerData>({\n transform: (x) => {\n const value = x.value?.trim() || '';\n\n return {\n height: coerceComponentHeight(x.height),\n selector: parseComponentTag(value) || undefined,\n iframeUrl: parseIframeUrl(value) || undefined,\n };\n },\n });\n\n protected readonly iframeUrl = computed(() => this.data().iframeUrl);\n protected readonly hasContent = computed(() => !!this.data().selector || !!this.data().iframeUrl);\n protected readonly canToggleFullscreen = computed(() => {\n return this._isBrowser\n && this.hasContent()\n && typeof this._hostElement.nativeElement.requestFullscreen === 'function'\n && typeof this._document.exitFullscreen === 'function';\n });\n protected readonly fullscreenLabel = computed(() => this.isFullscreen() ? 'Exit full screen' : 'Full screen');\n protected readonly isFullscreen = signal(false);\n\n private readonly _document = inject(DOCUMENT);\n private readonly _hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n private readonly _mediatr = inject(Mediatr);\n private readonly _viewContainerRef = viewChild.required('container', { read: ViewContainerRef });\n\n public ngOnInit(): void {\n const selector = this.data().selector;\n if (selector) {\n this._mediatr.execute(new RenderExternalComponentRequest(selector, this._viewContainerRef()));\n return;\n }\n\n if (!this.data().iframeUrl) {\n console.error('Unsupported example source. Provide either component tag or [url].');\n }\n }\n\n protected async toggleFullscreen(): Promise<void> {\n if (!this.canToggleFullscreen()) return;\n\n try {\n if (this._isCurrentElementInFullscreen()) {\n await this._document.exitFullscreen?.();\n } else {\n await this._hostElement.nativeElement.requestFullscreen?.();\n }\n } catch (error) {\n console.error('Unable to toggle full-screen mode for example preview:', error);\n }\n }\n\n @HostListener('document:fullscreenchange')\n protected onFullscreenChange(): void {\n this.isFullscreen.set(this._isCurrentElementInFullscreen());\n }\n\n private _isCurrentElementInFullscreen(): boolean {\n return this._document.fullscreenElement === this._hostElement.nativeElement;\n }\n}\n","@if (canToggleFullscreen()) {\n <button class=\"f-fullscreen-button\"\n type=\"button\"\n [class.exit]=\"isFullscreen()\"\n [attr.aria-label]=\"fullscreenLabel()\"\n [attr.title]=\"fullscreenLabel()\"\n (click)=\"toggleFullscreen()\"></button>\n}\n\n@if (iframeUrl()) {\n <iframe class=\"f-example-iframe\"\n [src]=\"iframeUrl()!\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer\"\n allow=\"fullscreen\"\n allowfullscreen></iframe>\n}\n\n<ng-container #container />\n","import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, input, OnInit } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HighlightService } from '../index';\n\n@Component({\n selector: 'highlight',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Highlight implements OnInit {\n\n private readonly _highlightService = inject(HighlightService);\n private readonly _elementRef = inject(ElementRef);\n private readonly _destroyRef = inject(DestroyRef);\n\n public content = input.required<string>();\n public language = input.required<string>();\n\n public ngOnInit() {\n queueMicrotask(() => {\n this._highlightService.highlight(this._elementRef.nativeElement, this.language(), this.content())\n .pipe(\n take(1), takeUntilDestroyed(this._destroyRef),\n ).subscribe();\n })\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, OnInit, signal } from '@angular/core';\nimport { catchError, take } from 'rxjs/operators';\nimport { EMPTY } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Highlight, resolveHighlightLanguage } from '../index';\nimport { copyToClipboard, PopoverService } from '../../common';\n\ninterface ContainerData {\n height?: string | number;\n value: string;\n isLink?: boolean;\n language?: string;\n}\n\n@Component({\n selector: 'code-view',\n templateUrl: './code-view.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'f-code-view',\n '[style.height]': 'height()',\n },\n imports: [\n Highlight,\n ],\n})\nexport class CodeView implements OnInit {\n private readonly _httpClient = inject(HttpClient);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _popoverService = inject(PopoverService);\n\n public readonly data = input<ContainerData>();\n\n protected readonly height = computed(() => {\n return coerceComponentHeight(this.data()?.height);\n });\n\n protected readonly content = signal<string>('');\n protected readonly visibleLanguage = signal<string>('');\n protected readonly syntaxLanguage = signal<string>('');\n\n public ngOnInit(): void {\n this._updateLanguage();\n this._updateNotExistingData(this.data());\n this._updateExistingData(this.data());\n }\n\n private _updateLanguage(): void {\n const data = this.data();\n const language = data?.language || parseLanguageFromFileExtension(data?.value || '');\n this.syntaxLanguage.set(parseSyntaxLanguage(language));\n this.visibleLanguage.set(language);\n }\n\n private _updateNotExistingData(data?: ContainerData): void {\n if (data?.isLink) {\n this._loadCodeByLink(data.value);\n }\n }\n\n private _updateExistingData(data?: ContainerData): void {\n if (!data?.isLink) {\n this.content.set(data?.value || '');\n }\n }\n\n private _loadCodeByLink(link: string): void {\n if (!link) return;\n\n this._httpClient.get(link, { responseType: 'text' }).pipe(\n take(1),\n takeUntilDestroyed(this._destroyRef),\n catchError(() => EMPTY),\n ).subscribe((content) => this.content.set(content));\n }\n\n protected onCopyClick(): void {\n this._copyContentToClipboard(this.content());\n }\n\n private _copyContentToClipboard(content: string): void {\n copyToClipboard(content).pipe(\n take(1),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._popoverService.show('Copied!'));\n }\n}\n\nfunction coerceComponentHeight(value: string | number | undefined): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? `${ value }px` : undefined;\n }\n\n const normalizedValue = value.trim();\n if (!normalizedValue) return undefined;\n\n if (normalizedValue === 'auto') return 'auto';\n\n const numericValue = Number(normalizedValue);\n if (Number.isFinite(numericValue) && numericValue > 0) {\n return `${ numericValue }px`;\n }\n\n if (/^-?\\d+(\\.\\d+)?(px|%|vh|vw|vmin|vmax|rem|em|ch|ex|cm|mm|in|pt|pc)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n if (/^calc\\(.+\\)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n return undefined;\n}\n\n\nfunction parseLanguageFromFileExtension(url: string): string {\n const match = url.match(/\\.([0-9a-z]+)(?:[?#]|$)/i);\n\n if (match) {\n let extension = match[1];\n if (extension === 'css') {\n extension = 'scss';\n }\n return extension;\n }\n return '';\n}\n\nfunction parseSyntaxLanguage(language: string): string {\n let result: string;\n switch (language) {\n case 'js':\n case 'javascript':\n result = 'javascript';\n break;\n case 'ts':\n case 'typescript':\n case 'angular-ts':\n result = 'angular-ts';\n break;\n case 'html':\n case 'angular-html':\n result = 'angular-html';\n break;\n default:\n result = extractLanguage(language);\n }\n return resolveHighlightLanguage(result);\n}\n\nfunction extractLanguage(language: string): string {\n const match = language.match(/^([^\\s[]+)/);\n return match ? match[1].toLowerCase() : language;\n}\n","<span class=\"f-code-language\">{{ visibleLanguage() }}</span>\n<button class=\"f-copy-button\" (click)=\"onCopyClick()\"></button>\n@if (content()) {\n <highlight [content]=\"content()\" [language]=\"syntaxLanguage()\"/>\n}\n\n","import { Observable, of } from 'rxjs';\n\nexport class MarkCodeFocusedBlocksPostProcessor {\n\n constructor(\n private _window: Window,\n ) {\n }\n\n public handle(element: HTMLElement): Observable<HTMLElement> {\n const html = element.innerHTML;\n if (!FOCUS_TEST_REGEX.test(html)) {\n return of(element);\n }\n\n element.innerHTML = html.replace(FOCUS_REPLACE_REGEX, (_match, content) => {\n return `<focus class=\"focused\"><div class=\"inline-focus\">${content}</div></focus>`;\n });\n\n const focused = element.querySelector('.focused');\n const hostElement = element.parentElement;\n if (focused && hostElement) {\n this._applyOpacity(hostElement);\n }\n\n return of(element);\n }\n\n private _applyOpacity(element: HTMLElement) {\n if (!element.classList.contains('focused')) {\n element.style.color = this._createRgbaString(this._getElementColor(element), 0.5);\n element.childNodes.forEach((child) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n this._applyOpacity(child as HTMLElement);\n }\n });\n } else {\n element.style.color = this._createRgbaString(this._getElementColor(element), 1, true);\n }\n }\n\n private _getElementColor(element: HTMLElement): string {\n return this._window.getComputedStyle(element).color;\n }\n\n private _createRgbaString(color: string, opacity: number, isRgb = false): string {\n const [r, g, b, a] = this._getRgbValues(color);\n const alpha = Number(a) || 1;\n return isRgb ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${opacity * alpha})`;\n }\n\n private _getRgbValues(color: string): [string, string, string, string] {\n const matches = color.match(/-?\\d*\\.?\\d+/g) || [];\n const [r = '0', g = '0', b = '0', a = '1'] = matches;\n return [r, g, b, a];\n }\n}\n\nconst FOCUS_TEST_REGEX = /ƒƒƒ([\\s\\S]*?)¢¢¢/;\nconst FOCUS_REPLACE_REGEX = /ƒƒƒ([\\s\\S]*?)¢¢¢/g;\n","import { ThemeInput } from '@shikijs/types'\n\nexport const UNIVERSAL_THEME: ThemeInput = {\n name: 'universal',\n colors: {\n 'editor.background': 'transparent',\n 'editor.foreground': 'var(--code-view-text-color)',\n },\n settings: [\n {\n scope: ['comment', 'punctuation.definition.comment', 'string.comment'],\n settings: {\n foreground: 'var(--token-comment)',\n },\n },\n {\n scope: ['constant', 'entity.name.constant', 'variable.other.constant', 'variable.other.enummember', 'variable.language'],\n settings: {\n foreground: 'var(--token-number)',\n },\n },\n {\n scope: ['entity', 'entity.name'],\n settings: {\n foreground: 'var(--token-tag)',\n },\n },\n {\n scope: 'variable.parameter.function',\n settings: {\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: 'entity.name.tag',\n settings: {\n foreground: 'var(--token-tag)',\n },\n },\n {\n scope: 'keyword',\n settings: {\n foreground: 'var(--token-keyword)',\n },\n },\n {\n scope: ['storage', 'storage.type'],\n settings: {\n foreground: 'var(--token-keyword)',\n },\n },\n {\n scope: ['storage.modifier.package', 'storage.modifier.import', 'storage.type.java'],\n settings: {\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: ['string', 'punctuation.definition.string', 'string punctuation.section.embedded source'],\n settings: {\n foreground: 'var(--token-string)',\n },\n },\n {\n scope: 'support',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'meta.property-name',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'variable',\n settings: {\n foreground: 'var(--token-variable)',\n },\n },\n {\n scope: 'variable.other',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: [\n 'invalid.broken',\n 'invalid.deprecated',\n 'invalid.illegal',\n 'invalid.unimplemented',\n ],\n settings: {\n fontStyle: 'italic',\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: 'carriage-return',\n settings: {\n fontStyle: 'italic underline',\n foreground: 'var(--background-color)',\n background: 'var(--token-keyword)',\n },\n },\n {\n scope: 'message.error',\n settings: {\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: 'string variable',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: ['source.regexp', 'string.regexp'],\n settings: {\n foreground: 'var(--token-interpolation)',\n },\n },\n {\n scope: [\n 'string.regexp.character-class',\n 'string.regexp constant.character.escape',\n 'string.regexp source.ruby.embedded',\n 'string.regexp string.regexp.arbitrary-repitition',\n ],\n settings: {\n foreground: 'var(--token-interpolation)',\n },\n },\n {\n scope: 'string.regexp constant.character.escape',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-attr-value)',\n },\n },\n {\n scope: ['support.constant', 'support.variable', 'meta.module-reference'],\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'punctuation.definition.list.begin.markdown',\n settings: {\n foreground: 'var(--token-variable)',\n },\n },\n {\n scope: ['markup.heading', 'markup.heading entity.name'],\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'markup.quote',\n settings: {\n foreground: 'var(--token-attr-value)',\n },\n },\n {\n scope: 'markup.italic',\n settings: {\n fontStyle: 'italic',\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: 'markup.bold',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: 'markup.underline',\n settings: {\n fontStyle: 'underline',\n },\n },\n {\n scope: 'markup.strikethrough',\n settings: {\n fontStyle: 'strikethrough',\n },\n },\n {\n scope: 'markup.inline.raw',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: ['markup.deleted', 'meta.diff.header.from-file', 'punctuation.definition.deleted'],\n settings: {\n background: 'var(--danger-3)',\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: ['markup.inserted', 'meta.diff.header.to-file', 'punctuation.definition.inserted'],\n settings: {\n background: 'var(--success-3)',\n foreground: 'var(--token-attr-value)',\n },\n },\n {\n scope: ['markup.changed', 'punctuation.definition.changed'],\n settings: {\n background: 'var(--warning-3)',\n foreground: 'var(--token-variable)',\n },\n },\n {\n scope: ['markup.ignored', 'markup.untracked'],\n settings: {\n background: 'var(--token-function)',\n foreground: 'var(--alt-background)',\n },\n },\n {\n scope: 'meta.diff.range',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-attr-name)',\n },\n },\n {\n scope: 'meta.diff.header',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'meta.separator',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'meta.output',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: [\n 'brackethighlighter.tag',\n 'brackethighlighter.curly',\n 'brackethighlighter.round',\n 'brackethighlighter.square',\n 'brackethighlighter.angle',\n 'brackethighlighter.quote',\n ],\n settings: {\n foreground: 'var(--gray-1)',\n },\n },\n {\n scope: 'brackethighlighter.unmatched',\n settings: {\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: ['constant.other.reference.link', 'string.other.link'],\n settings: {\n fontStyle: 'underline',\n foreground: 'var(--token-interpolation)',\n },\n },\n ],\n}\n","import type { LanguageInput, PlainTextLanguage } from '@shikijs/types';\n\ntype ShikiLanguage =\n | 'javascript'\n | 'typescript'\n | 'angular-html'\n | 'angular-ts'\n | 'shell'\n | 'html'\n | 'bash'\n | 'css'\n | 'scss'\n | 'markdown';\n\nexport type HighlightLanguage = ShikiLanguage | PlainTextLanguage;\n\nconst LANGUAGE_ALIASES: Record<string, HighlightLanguage> = {\n js: 'javascript',\n javascript: 'javascript',\n ts: 'typescript',\n typescript: 'typescript',\n md: 'markdown',\n sh: 'shell',\n zsh: 'shell',\n shell: 'shell',\n shellscript: 'shell',\n txt: 'text',\n plain: 'text',\n plaintext: 'text',\n};\n\nconst LANGUAGE_LOADERS = new Map<ShikiLanguage, LanguageInput>([\n [ 'javascript', () => import('@shikijs/langs/javascript') ],\n [ 'typescript', () => import('@shikijs/langs/typescript') ],\n [ 'angular-html', () => import('@shikijs/langs/angular-html') ],\n [ 'angular-ts', () => import('@shikijs/langs/angular-ts') ],\n [ 'shell', () => import('@shikijs/langs/shell') ],\n [ 'html', () => import('@shikijs/langs/html') ],\n [ 'bash', () => import('@shikijs/langs/bash') ],\n [ 'css', () => import('@shikijs/langs/css') ],\n [ 'scss', () => import('@shikijs/langs/scss') ],\n [ 'markdown', () => import('@shikijs/langs/markdown') ],\n]);\n\nexport const AVAILABLE_LANGUAGES: readonly HighlightLanguage[] = [\n 'javascript',\n 'typescript',\n 'angular-html',\n 'angular-ts',\n 'shell',\n 'html',\n 'bash',\n 'css',\n 'scss',\n 'markdown',\n 'text',\n];\n\nexport function resolveHighlightLanguage(lang?: string): HighlightLanguage {\n const normalized = (lang || '').trim().toLowerCase();\n if (!normalized) {\n return 'text';\n }\n\n const alias = LANGUAGE_ALIASES[normalized];\n if (alias) {\n return alias;\n }\n\n if (isAvailableLanguage(normalized)) {\n return normalized;\n }\n\n return 'text';\n}\n\nexport function getLanguageLoader(lang: HighlightLanguage): LanguageInput | null {\n if (isPlainTextLanguage(lang)) {\n return null;\n }\n return LANGUAGE_LOADERS.get(lang) || null;\n}\n\nfunction isAvailableLanguage(lang: string): lang is HighlightLanguage {\n return AVAILABLE_LANGUAGES.includes(lang as HighlightLanguage);\n}\n\nfunction isPlainTextLanguage(lang: HighlightLanguage): lang is PlainTextLanguage {\n return lang === 'text' || lang === 'txt' || lang === 'plain' || lang === 'plaintext';\n}\n","import { inject, Injectable } from '@angular/core';\nimport { defer, from, map, Observable, of, switchMap } from 'rxjs';\nimport { MarkCodeFocusedBlocksPostProcessor } from './mark-code-focused-blocks.post-processor';\nimport { UNIVERSAL_THEME } from './theme';\nimport { catchError, finalize, shareReplay } from 'rxjs/operators';\nimport { getLanguageLoader, HighlightLanguage, resolveHighlightLanguage } from './languages';\nimport { IS_BROWSER_PLATFORM, WINDOW } from '../common';\nimport { createHighlighterCore, HighlighterCore, isSpecialLang } from '@shikijs/core';\nimport { createOnigurumaEngine } from '@shikijs/engine-oniguruma';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HighlightService {\n /**\n * Service for highlighting code blocks using Shiki.\n * It supports syntax highlighting and post-processing for focused blocks.\n */\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n private readonly _window = inject(WINDOW, { optional: true });\n private readonly _languageLoadingTasks = new Map<HighlightLanguage, Observable<void>>();\n private readonly _highlighter$: Observable<HighlighterCore> = defer(() =>\n from(this._createHighlighter()),\n ).pipe(\n shareReplay(1),\n );\n\n public highlight(\n element: HTMLElement, lang: string, content: string,\n ): Observable<HTMLElement> {\n if (!this._isBrowser) {\n console.warn('[HighlightService] Skipping highlight on server.');\n return of(element);\n }\n\n const resolvedLanguage = resolveHighlightLanguage(lang);\n\n return this._ensureLanguageLoaded(resolvedLanguage).pipe(\n switchMap(() => this._highlightCodeBlock(element, resolvedLanguage, content)),\n switchMap((x) => this._postProcess(x)),\n catchError((err) => {\n console.error('[HighlightService] Failed to highlight:', err);\n return of(element);\n }),\n );\n }\n\n private _highlightCodeBlock(\n element: HTMLElement, lang: string, content: string,\n ): Observable<HTMLElement> {\n return this._highlighter$.pipe(\n switchMap((highlighter) => this._renderCode(element, highlighter, lang, content)),\n );\n }\n\n private _renderCode(\n element: HTMLElement, highlighter: HighlighterCore, lang: string, content: string,\n ): Observable<HTMLElement> {\n return new Observable<HTMLElement>((observer) => {\n const processedContent = this._preprocessFocus(content);\n element.innerHTML = highlighter.codeToHtml(processedContent, { lang, theme: 'universal', defaultColor: false });\n this._scheduleRender(() => {\n observer.next(element);\n observer.complete();\n });\n });\n }\n\n private _preprocessFocus(code: string): string {\n return code.replace(/\\|:\\|([\\s\\S]*?)\\|:\\|/g, (_, p1) => `ƒƒƒ${p1}¢¢¢`);\n }\n\n private _createHighlighter(): Promise<HighlighterCore> {\n return createHighlighterCore({\n engine: createOnigurumaEngine(() => import('shiki/wasm').then((x) => x.default)),\n themes: [ UNIVERSAL_THEME ],\n langs: [],\n });\n }\n\n private _ensureLanguageLoaded(lang: HighlightLanguage): Observable<void> {\n if (isSpecialLang(lang)) {\n return of(void 0);\n }\n\n return this._highlighter$.pipe(\n switchMap((highlighter) => {\n if (highlighter.getLoadedLanguages().includes(lang)) {\n return of(void 0);\n }\n\n const cachedTask = this._languageLoadingTasks.get(lang);\n if (cachedTask) {\n return cachedTask;\n }\n\n const loader = getLanguageLoader(lang);\n if (!loader) {\n return of(void 0);\n }\n\n const loadingTask = from(highlighter.loadLanguage(loader)).pipe(\n map(() => void 0),\n catchError((error) => {\n console.error(`[HighlightService] Failed to load language \"${lang}\"`, error);\n return of(void 0);\n }),\n finalize(() => {\n this._languageLoadingTasks.delete(lang);\n }),\n shareReplay(1),\n );\n\n this._languageLoadingTasks.set(lang, loadingTask);\n return loadingTask;\n }),\n );\n }\n\n private _scheduleRender(callback: () => void): void {\n const raf = this._window?.requestAnimationFrame?.bind(this._window);\n if (raf) {\n raf(callback);\n return;\n }\n queueMicrotask(callback);\n }\n\n private _postProcess(element: HTMLElement): Observable<HTMLElement> {\n const windowRef = this._window;\n if (!windowRef) {\n return of(element);\n }\n\n return of(element).pipe(\n switchMap((x) => new MarkCodeFocusedBlocksPostProcessor(windowRef).handle(x)),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { EParsedContainerType, IParsedContainerData } from '../../../documentation-page';\nimport { ExternalComponent } from '../external-component';\nimport { CodeView } from '../../../highlight';\n\n@Component({\n selector: 'code-group',\n templateUrl: './code-group.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'f-code-group',\n },\n imports: [\n ExternalComponent,\n CodeView,\n ],\n})\nexport class CodeGroup {\n public readonly data = signal<IParsedContainerData[]>([]);\n\n protected readonly index = signal<number>(0);\n protected readonly containerType = EParsedContainerType;\n\n protected tabClick(index: number): void {\n this.index.set(index);\n }\n}\n","@let views = data();\n\n@if (views.length > 1) {\n <div class=\"f-code-group-tabs\">\n @for (data of views; track data) {\n <button class=\"f-tab-button\" [class.active]=\"$index === index()\" (click)=\"tabClick($index)\">\n {{ data.tab }}\n </button>\n }\n </div>\n}\n\n<div class=\"f-code-group-body\">\n @for (data of views; track data) {\n\n @let isExampleView = data.type === containerType.EXAMPLE;\n @let display = $index === index() ? 'block' : 'none';\n\n @if (isExampleView) {\n <external-component [style.display]=\"display\" [data]=\"data\" />\n } @else {\n <code-view [style.display]=\"display\" [data]=\"data\" />\n }\n }\n</div>\n","export abstract class PreviewCardBase {\n\n public abstract date?: Date;\n\n public abstract filterKey?: string;\n\n public abstract hostElement: HTMLElement;\n}\n","import { Injectable } from '@angular/core';\nimport { PreviewCardBase } from './components/preview-card';\n\n@Injectable()\nexport class PreviewGroupService {\n\n private _cards: PreviewCardBase[] = [];\n private _originalOrder: Map<HTMLElement, Node[]> | null = null;\n\n public add(card: PreviewCardBase): void {\n this._cards.push(card);\n }\n\n public remove(card: PreviewCardBase): void {\n this._cards = this._cards.filter(preview => preview !== card);\n }\n\n public sortByDate(sort: boolean): void {\n if (sort) {\n this._applyByDateOrder();\n } else {\n this._applyOriginalOrder();\n }\n }\n\n private _setOriginalOrder(): void {\n this._originalOrder = new Map();\n this._cards.forEach((x) => {\n const parentElement = x.hostElement.parentElement;\n if (parentElement) {\n const childrenArray = Array.from(parentElement.children);\n this._originalOrder!.set(parentElement, childrenArray);\n }\n });\n }\n\n private _getOrderByDate(): PreviewCardBase[] {\n return this._cards\n .slice()\n .sort((a, b) => {\n const dateA = a.date ? a.date.getTime() : Number.MIN_SAFE_INTEGER;\n const dateB = b.date ? b.date.getTime() : Number.MIN_SAFE_INTEGER;\n return dateB - dateA;\n });\n }\n\n private _applyByDateOrder(): void {\n this._setOriginalOrder();\n this._getOrderByDate().forEach((x) => {\n const parent = x.hostElement.parentElement;\n parent?.appendChild(x.hostElement);\n });\n }\n\n private _applyOriginalOrder(): void {\n this._originalOrder!.forEach((originalChildren, parentElement) => {\n originalChildren.forEach(child => parentElement.appendChild(child));\n });\n }\n\n public filterBy(filterKey: string, _allKey: string): void {\n this._resetLastActiveFilter();\n\n if (filterKey === _allKey) {\n return;\n }\n this._cards.forEach((x) => {\n if (x.filterKey !== filterKey) {\n x.hostElement.style.display = 'none';\n }\n });\n }\n\n private _resetLastActiveFilter(): void {\n this._cards.forEach((x) => {\n x.hostElement.style.display = 'block';\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { startWith } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { PreviewCardBase } from './preview-card-base';\nimport { ThemeService } from '../../../../../theme';\nimport { DocumentationStore, INavigationGroup, INavigationItem } from '../../../../../documentation-page';\nimport { PreviewGroupService } from '../../preview-group.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'a[preview-card]',\n templateUrl: './preview-card.html',\n styleUrls: [ './preview-card.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.href]': 'url',\n '[attr.title]': 'viewModel?.text',\n },\n})\nexport class PreviewCard extends PreviewCardBase implements OnInit, OnDestroy {\n private readonly _elementReference = inject(ElementRef);\n private readonly _fEnvironment = inject(DocumentationStore);\n private readonly _fPreviewGroupService = inject(PreviewGroupService);\n private readonly _themeService = inject(ThemeService, { optional: true });\n private readonly _router = inject(Router);\n private readonly _destroyRef = inject(DestroyRef);\n\n public item: string | undefined;\n public group: string | undefined;\n\n protected viewModel: INavigationItem | undefined;\n protected src = signal<string | undefined>(undefined);\n protected url: string | undefined;\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public get filterKey(): string | undefined {\n return this.viewModel?.badge?.text.toLowerCase();\n }\n\n public get date(): Date | undefined {\n return this.viewModel?.date;\n }\n\n public initialize(): void {\n this.viewModel = this._getNavigationItem(this._getNavigationGroup()!);\n this.url = this._normalizeLink(this.viewModel!.link, this._getUrlPrefix());\n this._subscribeToThemeChanges();\n }\n\n private _subscribeToThemeChanges(): void {\n this._themeService?.theme$.pipe(\n startWith(null), takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._updateTheme());\n }\n\n public ngOnInit(): void {\n this._fPreviewGroupService.add(this);\n }\n\n private _getNavigationGroup(): INavigationGroup | undefined {\n return this._fEnvironment.getNavigation().find((x) => x.text === this.group);\n }\n\n private _getNavigationItem(group: INavigationGroup): INavigationItem | undefined {\n return group.items.find((x) => x.link === this.item);\n }\n\n private _updateTheme(): void {\n this.src.set(this._themeService?.getPreferredTheme() === 'dark' ? this.viewModel?.image_dark : this.viewModel?.image);\n if (!this.src()) {\n this.src.set(this.viewModel?.image);\n }\n }\n\n private _normalizeLink(link: string, prefix: string): string {\n if (!this._isExternalLink(link)) {\n return link.startsWith('/') ? `${ prefix }${ link }` : `${ prefix }/${ link }`;\n }\n return link;\n }\n\n private _getUrlPrefix(): string {\n return this._router.url.substring(0, this._router.url.lastIndexOf('/'));\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n public ngOnDestroy(): void {\n this._fPreviewGroupService.remove(this);\n }\n}\n","@if (viewModel) {\n <img [src]=\"src()\" [alt]=\"viewModel.description\" [title]=\"viewModel.text\">\n <div class=\"title\">\n {{ viewModel.text }}\n @if (viewModel.badge) {\n <span class=\"f-badge {{viewModel.badge.type}}\">{{ viewModel.badge.text }}</span>\n }\n </div>\n <div class=\"description\">{{ viewModel.description }}</div>\n}\n\n\n\n","import { AfterViewInit, ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { DocumentationStore } from '../../../../../documentation-page';\nimport { TitleCasePipe } from '@angular/common';\nimport { FCheckboxComponent, FRadioButtonComponent } from '../../../../../shared';\nimport { PreviewGroupService } from '../../preview-group.service';\n\n@Component({\n selector: 'div[preview-action-bar]',\n templateUrl: './preview-action-bar.html',\n styleUrls: [ './preview-action-bar.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FCheckboxComponent,\n FRadioButtonComponent,\n TitleCasePipe,\n ],\n})\nexport class PreviewActionBar implements AfterViewInit {\n\n private readonly _allKey = 'all';\n\n private _fEnvironment = inject(DocumentationStore);\n private _fPreviewGroupService = inject(PreviewGroupService);\n\n protected filters = signal<string[]>([]);\n protected activeFilter = signal<string>(this._allKey);\n\n protected isSortByDateChecked = signal<boolean>(false);\n\n public initialize(): void {\n this.filters.set(this._calculateFiltersMap());\n }\n\n public ngAfterViewInit(): void {\n this.onFilterChange(this._allKey);\n }\n\n private _calculateFiltersMap(): string[] {\n const filters: string[] = [];\n this._fEnvironment.getNavigation().forEach((group) => {\n group.items.forEach((item) => {\n if (item.badge && !filters.includes(item.badge.text.toLowerCase())) {\n filters.push(item.badge.text.toLowerCase());\n }\n });\n });\n if (filters.length > 0) {\n filters.unshift(this._allKey);\n }\n return filters;\n }\n\n protected onFilterChange(key: string): void {\n this.activeFilter.set(key);\n this._fPreviewGroupService.filterBy(key, this._allKey);\n }\n\n protected onSortByDateChange(event: boolean): void {\n this.isSortByDateChecked.set(event);\n this._fPreviewGroupService.sortByDate(event);\n }\n}\n","@if (filters().length) {\n <div class=\"filters-row\">\n @for (filter of filters(); track filter) {\n <f-radio-button [checked]=\"activeFilter() === filter\"\n (change)=\"onFilterChange(filter)\">{{ filter | titlecase }}\n </f-radio-button>\n }\n <div class=\"flex-space\"></div>\n <f-checkbox [checked]=\"isSortByDateChecked()\" (change)=\"onSortByDateChange($event)\">Sort by Newness</f-checkbox>\n </div>\n}\n\n\n\n","import {\n ChangeDetectionStrategy,\n Component, computed,\n inject, input,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs';\nimport { IShowcaseItem } from '../../models';\nimport { ThemeService } from '../../../../../theme';\n\n@Component({\n selector: 'showcase-item',\n templateUrl: './showcase-item.html',\n styleUrls: [ './showcase-item.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShowcaseItem {\n private readonly _themeService = inject(ThemeService);\n\n private readonly _themeChanges = toSignal(this._themeService.theme$.pipe(startWith(null), map(() => this._themeService.getPreferredTheme())));\n public readonly model = input.required<IShowcaseItem>();\n\n protected readonly src = computed(() => {\n const theme = this._themeChanges();\n const model = this.model();\n return theme === 'dark' ? (model.imageUrlDark || model.imageUrl) : model.imageUrl;\n });\n}\n","@let data = model();\n\n@if (data) {\n <img [src]=\"src()\" [alt]=\"data.description\" [title]=\"data.name\">\n <div class=\"title\">{{ data.name }}</div>\n <div class=\"description\">{{ data.description }}</div>\n <div class=\"links\">\n @for (link of (data.links || []); track link.text) {\n <a href=\"{{ link.url }}\" target=\"_blank\" rel=\"noopener\">{{ link.text }}</a>\n }\n </div>\n <div class=\"tags\">\n @for (tag of (data.tags || []); track tag) {\n <span class=\"f-badge tip\">{{ tag }}</span>\n }\n </div>\n}\n\n\n\n","import { IShowcaseItem } from './models';\nimport { InjectionToken } from '@angular/core';\n\nexport const SHOWCASE_DATA = new InjectionToken<IShowcaseItem[]>('SHOWCASE_DATA');\n\n","import { ChangeDetectionStrategy, Component, computed, inject, signal, } from '@angular/core';\nimport { ShowcaseItem } from './components';\nimport { SHOWCASE_DATA } from './showcase-token';\nimport { IShowcaseItem } from './models';\n\n@Component({\n selector: 'showcase',\n templateUrl: './showcase.html',\n styleUrls: [ './showcase.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ShowcaseItem,\n ],\n})\nexport class Showcase{\n private readonly _data = signal<IShowcaseItem[]>(inject(SHOWCASE_DATA));\n\n protected readonly items = computed(() => {\n const items = this._data();\n const activeTag = this.activeTag();\n return activeTag ? items.filter(item => item.tags?.includes(activeTag)) : items;\n });\n\n protected readonly tags = computed(() => {\n return this._data().reduce((result, item) => {\n item.tags?.forEach(tag => result.add(tag));\n return result;\n }, new Set<string>());\n });\n\n protected readonly activeTag = signal<string | null>(null);\n\n protected tagClick(tag: string | null): void {\n this.activeTag.update((x) => x === tag ? null : tag);\n }\n}\n","<div class=\"filters-panel\">\n @for (tag of tags(); track tag) {\n <span class=\"f-badge tip\" (click)=\"tagClick(tag)\" [class.info]=\"activeTag() === tag\">{{ tag }}</span>\n }\n</div>\n<div class=\"showcase-list\">\n @for (item of items(); track item.imageUrl) {\n <showcase-item [model]=\"item\"/>\n }\n</div>\n\n","import { IDocumentationConfiguration } from '../../../documentation-page';\nimport { IShowcaseItem } from './models';\n\nexport function provideShowcase(showcaseItems: IShowcaseItem[]): Partial<IDocumentationConfiguration> {\n return {\n showcaseItems,\n };\n}\n\n","import { DynamicComponentsStore } from './dynamic-components.store';\nimport { PreviewGroupService } from './components';\nimport { RenderDynamicComponent, RenderExternalComponent, RenderInternalComponents } from './features';\n\nexport const DYNAMIC_COMPONENTS_MODULE_PROVIDERS = [\n DynamicComponentsStore,\n\n PreviewGroupService,\n\n RenderDynamicComponent,\n\n RenderExternalComponent,\n\n RenderInternalComponents,\n];\n","export class ActivateTocByHashRequest {\n public static readonly requestToken = Symbol('ActivateTocByHashRequest');\n\n constructor(\n public hash: string | undefined,\n ) {\n }\n}\n","import { ActivateTocByHashRequest } from './activate-toc-by-hash-request';\nimport { inject, Injectable } from '@angular/core';\nimport { IExecution, MExecution } from '../../../../../mediatr';\nimport { DocumentationStore } from '../../../../services';\n\n@Injectable()\n@MExecution(ActivateTocByHashRequest)\nexport class ActivateTocByHash implements IExecution<ActivateTocByHashRequest, void>{\n\n private readonly _dataProvider = inject(DocumentationStore);\n\n public handle(payload: ActivateTocByHashRequest): void {\n this._dataProvider.tocData.update((data) => ({\n ...data,\n flat: data.flat.map((x) => ({\n ...x,\n isActive: x.hash === payload.hash,\n })),\n }));\n }\n}\n","export class CalculateTableOfContentRequest {\n public static readonly requestToken = Symbol('CalculateTableOfContentRequest');\n\n constructor(\n public readonly hostElement: HTMLElement,\n ) {\n }\n}\n","import { ITableOfContentItem } from './i-table-of-content-item';\n\nexport class TableOfContentData {\n constructor(\n public flat: ITableOfContentItem[],\n public tree: ITableOfContentItem[],\n ) {\n }\n}\n","export class CalculateAbsoluteTopToContainerRequest {\n public static readonly requestToken = Symbol('CalculateAbsoluteTopToContainerRequest');\n\n constructor(\n public element: HTMLElement,\n ) {\n }\n}\n","import { CalculateAbsoluteTopToContainerRequest } from './calculate-absolute-top-to-container-request';\nimport { inject, Injectable } from '@angular/core';\nimport { SCROLLABLE_CONTAINER } from '../../../index';\nimport { IExecution, MExecution } from '../../../../../mediatr';\n\n@Injectable()\n@MExecution(CalculateAbsoluteTopToContainerRequest)\nexport class CalculateAbsoluteTopToContainer\n implements IExecution<CalculateAbsoluteTopToContainerRequest, number> {\n\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER);\n\n public handle(request: CalculateAbsoluteTopToContainerRequest): number {\n let element = request.element;\n let result = 0;\n\n while (element !== this._scrollableContainer.htmlElement) {\n if (!element) return NaN;\n result += element.offsetTop;\n element = element.offsetParent as HTMLElement;\n }\n\n return result;\n }\n}\n","import { CalculateAbsoluteTopToContainerRequest } from '../calculate-absolute-top-to-container';\nimport { inject, Injectable } from '@angular/core';\nimport {\n ActivateTocByHashRequest,\n SCROLLABLE_CONTAINER,\n} from '../../../index';\nimport { DocumentationStore } from '../../../../services';\nimport { DOCUMENT_ELEMENT, WINDOW } from '../../../../../common';\nimport { IExecution, Mediatr } from '../../../../../mediatr';\n\n@Injectable()\nexport class CalculateHashFromScrollPosition\n implements IExecution<void, void> {\n\n private readonly _docElement = inject(DOCUMENT_ELEMENT);\n private readonly _window = inject(WINDOW);\n private readonly _provider = inject(DocumentationStore);\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER);\n private readonly _mediatr = inject(Mediatr);\n\n public handle(): void {\n let result: string | undefined;\n const containerScrollTop = this._getContainerScrollTop();\n\n const elementsWithTopPosition = this._calculateElementsTopPositions();\n\n if (elementsWithTopPosition.length) {\n if (this._isScrollAtBottom(containerScrollTop)) {\n result = elementsWithTopPosition[elementsWithTopPosition.length - 1].hash;\n } else {\n result = this._findTargetHashByPosition(containerScrollTop, elementsWithTopPosition);\n }\n }\n this._mediatr.execute(new ActivateTocByHashRequest(result));\n }\n\n private _getContainerScrollTop(): number {\n return this._scrollableContainer.htmlElement.scrollTop + this._getHeaderHeight();\n }\n\n private _getHeaderHeight(): number {\n return parseInt(this._window\n .getComputedStyle(this._docElement)\n .getPropertyValue('--header-height'), 10,\n );\n }\n\n private _calculateElementsTopPositions(): IHasTopItem[] {\n return this._provider.tocData().flat.map((x) => {\n return {\n hash: x.hash,\n top: this._calculateAbsoluteTopToContainer(x.element),\n };\n }).filter((x) => !Number.isNaN(x.top));\n }\n\n private _calculateAbsoluteTopToContainer(element: HTMLElement): number {\n return this._mediatr.execute(new CalculateAbsoluteTopToContainerRequest(element));\n }\n\n private _isScrollAtBottom(containerScrollTop: number): boolean {\n return Math.abs(containerScrollTop - this._getHeaderHeight() + this._scrollableContainer.htmlElement.clientHeight - this._scrollableContainer.htmlElement.scrollHeight) < 1;\n }\n\n private _findTargetHashByPosition(containerScrollTop: number, elementsWithTopPosition: IHasTopItem[]): string {\n let result: string = elementsWithTopPosition[0].hash;\n for (const { hash, top } of elementsWithTopPosition) {\n if (top > containerScrollTop) break;\n result = hash;\n }\n return result;\n }\n}\n\ninterface IHasTopItem {\n hash: string;\n top: number;\n}\n","import { CalculateTableOfContentRequest } from './calculate-table-of-content-request';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { DocumentationStore } from '../../../../services';\nimport { ITableOfContentItem, TableOfContentData } from '../../models';\nimport { IExecution, MExecution } from '../../../../../mediatr';\nimport {\n CalculateHashFromScrollPosition,\n} from '../calculate-hash-from-scroll-position';\n\n@Injectable()\n@MExecution(CalculateTableOfContentRequest)\nexport class CalculateTableOfContent implements IExecution<CalculateTableOfContentRequest, void>{\n\n private readonly _dataProvider = inject(DocumentationStore);\n private readonly _injector = inject(Injector);\n\n public handle(request: CalculateTableOfContentRequest): void {\n const flat: ITableOfContentItem[] = [];\n const tree: ITableOfContentItem[] = [];\n const stack: ITableOfContentItem[] = [];\n\n this._getNavigationSelectors(request.hostElement, this._dataProvider.getTableOfContent()?.range).forEach((element) => {\n const tocItem = this._createItem(element);\n this._insertItemIntoTree(tocItem, tree, stack);\n flat.push(tocItem);\n });\n\n this._dataProvider.tocData.set(new TableOfContentData(flat, tree));\n this._injector.get(CalculateHashFromScrollPosition).handle();\n }\n\n private _getNavigationSelectors(fMarkdownPage: HTMLElement, tocRange?: {\n start: number,\n end: number\n }): HTMLElement[] {\n if (!tocRange || tocRange.start < 1 || tocRange.end > 6) {\n tocRange = { start: 2, end: 6 };\n }\n const selectors: string[] = [];\n for (let i = tocRange.start; i <= tocRange.end; i++) {\n selectors.push(`h${i}`);\n }\n return Array.from(fMarkdownPage.querySelectorAll(selectors.join(', ')));\n }\n\n private _createItem(element: HTMLElement): ITableOfContentItem {\n element.id = this._createNavigationId(element);\n return {\n hash: `#${CSS.escape(element.id)}`,\n title: element.innerHTML,\n element,\n children: [],\n };\n }\n\n private _createNavigationId(element: HTMLElement): string {\n return element.innerHTML.toLowerCase().replaceAll(' ', '-');\n }\n\n private _getLevel(element: HTMLElement): number {\n return parseInt(element.tagName.substring(1));\n }\n\n private _insertItemIntoTree(tocItem: ITableOfContentItem, tree: ITableOfContentItem[], stack: ITableOfContentItem[]): void {\n while (stack.length > 0 && this._getLevel(stack[stack.length - 1].element) >= this._getLevel(tocItem.element)) {\n stack.pop();\n }\n\n if (stack.length === 0) {\n tree.push(tocItem);\n } else {\n stack[stack.length - 1].children.push(tocItem);\n }\n\n stack.push(tocItem);\n }\n}\n","export class ScrollToElementInContainerRequest {\n public static readonly requestToken = Symbol('ScrollToElementInContainerRequest');\n\n constructor(public hash: string) {\n }\n}\n","import { ScrollToElementInContainerRequest } from './scroll-to-element-in-container-request';\nimport { inject, Injectable } from '@angular/core';\nimport { SCROLLABLE_CONTAINER } from '../../../index';\nimport { IExecution, MExecution } from '../../../../../mediatr';\nimport { DOCUMENT_ELEMENT, WINDOW } from '../../../../../common';\n\n@Injectable()\n@MExecution(ScrollToElementInContainerRequest)\nexport class ScrollToElementInContainer implements IExecution<ScrollToElementInContainerRequest, void> {\n\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER);\n private readonly _window = inject(WINDOW);\n private readonly _docElement = inject(DOCUMENT_ELEMENT);\n\n public handle(payload: ScrollToElementInContainerRequest): void {\n const container = this._scrollableContainer.htmlElement;\n container._ignoreProgrammatic = true;\n\n this._scrollableContainer.htmlElement.scrollTo({\n top: this._getScrollTo(this._getScrollToElement(payload.hash)) - this._getHeaderHeight(),\n behavior: 'smooth',\n });\n }\n\n private _getHeaderHeight(): number {\n return parseInt(this._window\n .getComputedStyle(this._docElement)\n .getPropertyValue('--header-height'), 10,\n );\n }\n\n private _getScrollToElement(hash: string): HTMLElement {\n const element = this._scrollableContainer.htmlElement?.querySelector(hash) as HTMLElement;\n if (!element) {\n throw new Error(`Element ${ hash } not found`);\n }\n return element;\n }\n\n private _getScrollTo(element: HTMLElement): number {\n return this._isFirstElementInContainer(element) ? 0 : this._calculateScrollTo(element);\n }\n\n private _isFirstElementInContainer(element: HTMLElement): boolean {\n return element.parentElement!.children[ 0 ] === element;\n }\n\n private _calculateScrollTo(element: HTMLElement): number {\n return this._getElementTop(element) - this._getContainerTop() + this._scrollableContainer.htmlElement.scrollTop;\n }\n\n private _getElementTop(element: HTMLElement): number {\n return element.getBoundingClientRect().top;\n }\n\n private _getContainerTop(): number {\n return this._scrollableContainer.htmlElement.getBoundingClientRect().top;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, input,\n} from '@angular/core';\nimport { ITableOfContentItem } from '../models';\n\n@Component({\n selector: 'ul[f-table-of-content-items]',\n styleUrls: [ './table-of-content-items.component.scss' ],\n templateUrl: './table-of-content-items.component.html',\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n})\nexport class TableOfContentItemsComponent {\n public readonly items = input.required<ITableOfContentItem[]>();\n}\n","@for (item of items(); track item.hash) {\n <li [class.active]=\"item.isActive\"><a class=\"text-ellipsis\" [href]=\"item.hash\">{{ item.title }}</a></li>\n @if (item.children) {\n <ul f-table-of-content-items [items]=\"item.children\"></ul>\n }\n}\n","import {\n ActivateTocByHash,\n CalculateAbsoluteTopToContainer,\n CalculateHashFromScrollPosition,\n CalculateTableOfContent,\n ScrollToElementInContainer,\n} from './features';\n\nexport const TABLE_OF_CONTENT_MODULE_PROVIDERS = [\n ActivateTocByHash,\n CalculateTableOfContent,\n ScrollToElementInContainer,\n CalculateAbsoluteTopToContainer,\n CalculateHashFromScrollPosition,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n untracked,\n} from '@angular/core';\nimport { TableOfContentItemsComponent } from './table-of-content-items';\nimport { DocumentationStore } from '../../services';\nimport { WINDOW } from '../../../common';\nimport { Mediatr } from '../../../mediatr';\nimport { ActivateTocByHashRequest, ScrollToElementInContainerRequest } from './features';\n\n@Component({\n selector: 'table-of-content',\n styleUrls: ['./table-of-content.scss'],\n templateUrl: './table-of-content.html',\n standalone: true,\n imports: [TableOfContentItemsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableOfContent {\n\n private readonly _hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n private readonly _dataProvider = inject(DocumentationStore);\n private readonly _window = inject(WINDOW);\n private readonly _mediatr = inject(Mediatr);\n\n protected readonly tocData = computed(() => this._dataProvider.tocData());\n\n protected readonly activeMarkerPosition = computed(() => {\n const index = this.tocData()?.flat.findIndex((x) => x.isActive) || 0;\n return untracked(() => this._getActiveMarkerPosition(index));\n });\n protected readonly title = inject(DocumentationStore).getTableOfContent()!.title;\n\n private _getActiveMarkerPosition(activeIndex: number): number {\n const itemHeight = this._getToCItemHeight(this._hostElement);\n return (activeIndex + 1) * itemHeight + itemHeight / 4;\n }\n\n private _getToCItemHeight(element: HTMLElement): number {\n return parseInt(this._window.getComputedStyle(element).getPropertyValue('--on-page-navigation-item-height'));\n }\n\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (target.tagName === 'A') {\n event.preventDefault();\n this._scrollTo(target.getAttribute('href')!);\n }\n }\n\n private _scrollTo(hash: string): void {\n this._mediatr.execute(new ActivateTocByHashRequest(hash));\n this._mediatr.execute(new ScrollToElementInContainerRequest(hash));\n }\n}\n","@let data = tocData();\n@if (data) {\n <div class=\"title\">{{ title || 'In this article' }}</div>\n <ul f-table-of-content-items [items]=\"data.tree\"></ul>\n <div class=\"active-marker\" [style.top]=\"activeMarkerPosition() + 'px'\"></div>\n}\n\n","import { InjectionToken } from '@angular/core';\n\nexport const SCROLLABLE_CONTAINER = new InjectionToken<IScrollableContainer>('SCROLLABLE_CONTAINER');\n\nexport interface IScrollableContainer {\n\n htmlElement: HTMLElement & { _ignoreProgrammatic?: boolean };\n}\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { IScrollableContainer, SCROLLABLE_CONTAINER } from './models';\nimport { debounceTime, fromEvent, startWith } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n CalculateHashFromScrollPosition,\n TABLE_OF_CONTENT_MODULE_PROVIDERS,\n TableOfContent,\n} from '../table-of-content';\nimport { Mediatr } from '../../../mediatr';\nimport { DYNAMIC_COMPONENTS_MODULE_PROVIDERS } from '../../../dynamic-components';\nimport { MarkdownService } from '../markdown-renderer';\nimport { filter } from 'rxjs/operators';\nimport { DOCUMENTATION_CONFIGURATION } from '../../domain';\n\n@Component({\n selector: 'scrollable-container',\n templateUrl: './scrollable-container.html',\n styleUrls: ['./scrollable-container.scss'],\n standalone: true,\n providers: [\n {\n provide: SCROLLABLE_CONTAINER,\n useExisting: forwardRef(() => ScrollableContainer),\n },\n Mediatr,\n ...DYNAMIC_COMPONENTS_MODULE_PROVIDERS,\n ...TABLE_OF_CONTENT_MODULE_PROVIDERS,\n MarkdownService,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TableOfContent,\n ],\n})\nexport class ScrollableContainer implements OnInit, IScrollableContainer {\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _injector = inject(Injector);\n private readonly _markdown = inject(MarkdownService);\n protected readonly tableOfContent = inject(DOCUMENTATION_CONFIGURATION).tableOfContent;\n protected readonly canShowTableOfContent = computed(() => {\n return !!this.tableOfContent && !this._markdown.pageLayout().hideTableOfContent;\n });\n\n public readonly htmlElement = inject(ElementRef<HTMLElement>).nativeElement;\n\n public ngOnInit(): void {\n fromEvent<Event>(this.htmlElement, 'scroll', { passive: true })\n .pipe(\n debounceTime(100),\n startWith<Event | null>(null),\n filter((event: Event | null) => {\n const target = event?.target as IScrollableTarget | null;\n const ignoreProgrammatic = target?._ignoreProgrammatic ?? false;\n (this.htmlElement as IScrollableTarget)._ignoreProgrammatic = false;\n return !ignoreProgrammatic;\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => this._calculateHashAndActivate());\n }\n\n private _calculateHashAndActivate(): void {\n this._injector.get(CalculateHashFromScrollPosition).handle();\n }\n}\n\ninterface IScrollableTarget extends EventTarget {\n _ignoreProgrammatic?: boolean;\n}\n","<ng-content></ng-content>\n@if (canShowTableOfContent()) {\n <table-of-content />\n}\n\n\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { DynamicComponentsStore } from '../../services';\nimport { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../domain';\nimport { IS_BROWSER_PLATFORM, WINDOW } from '../../../common';\nimport { MarkdownFooter } from './markdown-footer';\nimport { Mediatr } from '../../../mediatr';\nimport { RenderInternalComponentsRequest } from '../../../dynamic-components';\nimport { CalculateTableOfContentRequest } from '../table-of-content';\nimport { SCROLLABLE_CONTAINER } from '../scrollable-container';\n\n@Component({\n selector: 'markdown-renderer',\n templateUrl: './markdown-renderer.html',\n styleUrls: ['./markdown-renderer.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MarkdownFooter],\n host: {\n class: 'm-render',\n },\n})\nexport class MarkdownRenderer implements OnInit, OnDestroy {\n public readonly value = input.required<SafeHtml | undefined>();\n\n private readonly _hostElement = inject(ElementRef).nativeElement;\n private readonly _router = inject(Router);\n private readonly _injector = inject(Injector);\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n private readonly _window = inject(WINDOW)\n private readonly _dynamicComponents = inject(DynamicComponentsStore);\n private readonly _mediatr = inject(Mediatr);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER, { optional: true });\n\n public ngOnInit(): void {\n this._setupValueEffect();\n }\n\n private _setupValueEffect(): void {\n effect(\n onCleanup => {\n const html = this.value();\n if (!this._isBrowser || html == null) return;\n\n this._resetScroll();\n\n const ref = this._schedulePostRenderWork();\n onCleanup(() => ref.destroy());\n },\n { injector: this._injector },\n );\n }\n\n private _resetScroll(): void {\n this._scrollableContainer?.htmlElement?.scrollTo({ top: 0, left: 0 });\n }\n\n private _schedulePostRenderWork() {\n return afterNextRender(() => {\n return untracked(() => {\n this._renderDynamicComponents();\n this._recalculateToc();\n });\n }, { injector: this._injector });\n }\n\n private _renderDynamicComponents(): void {\n this._mediatr.execute(\n new RenderInternalComponentsRequest(this._hostElement, this._viewContainerRef),\n );\n }\n\n private _recalculateToc(): void {\n this._mediatr.execute(\n new CalculateTableOfContentRequest(this._hostElement),\n );\n }\n\n @HostListener('click', ['$event'])\n protected _onDocumentClick(event: MouseEvent): void {\n new HandleNavigationLinksHandler().handle(\n new HandleNavigationLinksRequest(event, this._window, this._router),\n );\n }\n\n public ngOnDestroy(): void {\n this._dynamicComponents.dispose();\n }\n}\n","<div [innerHTML]=\"value()\"></div>\n@if (value()) {\n <markdown-footer />\n}\n\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { distinctUntilChanged, map, of, startWith, switchMap } from 'rxjs';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { catchError, filter, tap } from 'rxjs/operators';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { DocumentationStore } from '../../services';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MarkdownRenderer, MarkdownService } from '../markdown-renderer';\nimport { FMetaService } from '../../analytics';\n\n@Component({\n selector: 'markdown-router',\n templateUrl: './markdown-router.html',\n styleUrls: ['./markdown-router.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'ngSkipHydration': '',\n '[class.empty-navigation]': 'emptyNavigation',\n },\n imports: [\n MarkdownRenderer,\n ],\n})\nexport class MarkdownRouter {\n private readonly _router = inject(Router);\n private readonly _activatedRoute = inject(ActivatedRoute);\n private readonly _markdown = inject(MarkdownService);\n private readonly _dataProvider = inject(DocumentationStore);\n private readonly _metaService = inject(FMetaService, { optional: true });\n\n protected readonly emptyNavigation = !this._dataProvider.getNavigation().length;\n protected readonly shouldExpandContent = computed(() => {\n const layout = this._markdown.pageLayout();\n return layout.hideTableOfContent && layout.expandContentWithoutTableOfContent;\n });\n\n private readonly _path$ = this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._activatedRoute.snapshot.url.map(u => u.path).join('/')),\n distinctUntilChanged(),\n );\n\n protected readonly html = toSignal<SafeHtml | undefined>(\n this._path$.pipe(\n switchMap(path => {\n const url = this._dataProvider.getMarkdownUrl(path);\n return this._markdown.parseUrl(url).pipe(\n catchError(err => {\n console.error('[MarkdownRouter] parse error:', err, { path, url });\n return of<SafeHtml | undefined>(undefined); // или return EMPTY;\n }),\n tap(() => this._metaService?.applyMarkdownSeo(this._markdown.pageSeo())),\n );\n }),\n ),\n { initialValue: undefined },\n );\n}\n","<markdown-renderer [value]=\"html()\"\n [class.empty-navigation]=\"emptyNavigation\"\n [class.expand-no-toc]=\"shouldExpandContent()\"/>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport {\n F_PREVIEW_NAVIGATION_PROVIDER,\n HeaderComponent,\n IToggleNavigationComponent, MEDIA_LINKS_PROVIDER,\n NavigationPanelComponent,\n ScrollableContainer,\n TOGGLE_NAVIGATION_COMPONENT,\n} from './components';\nimport { DocumentationStore } from './services';\nimport {\n HEADER_CONFIGURATION_PROVIDER, IS_BROWSER_PLATFORM,\n PopoverService,\n ThemeService,\n} from '../common';\nimport { FMetaService } from './analytics';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CookiePopup } from '../analytics/cookie-popup/cookie-popup';\nimport { GTagService } from '../analytics';\nimport { EXTERNAL_COMPONENT_PROVIDER, SHOWCASE_DATA } from '../dynamic-components';\n\n@Component({\n selector: 'documentation',\n templateUrl: './documentation.html',\n styleUrls: ['./documentation.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DocumentationStore,\n FMetaService,\n {\n provide: F_PREVIEW_NAVIGATION_PROVIDER,\n useExisting: DocumentationStore,\n },\n {\n provide: MEDIA_LINKS_PROVIDER,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getMediaLinks(),\n },\n {\n provide: HEADER_CONFIGURATION_PROVIDER,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getHeader(),\n },\n {\n provide: TOGGLE_NAVIGATION_COMPONENT,\n useExisting: Documentation,\n },\n {\n provide: EXTERNAL_COMPONENT_PROVIDER,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getComponents(),\n },\n {\n provide: SHOWCASE_DATA,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getShowcaseItems(),\n },\n ],\n imports: [\n NavigationPanelComponent,\n ScrollableContainer,\n RouterOutlet,\n HeaderComponent,\n CookiePopup,\n ],\n})\nexport class Documentation implements IToggleNavigationComponent, OnInit, OnDestroy {\n protected readonly isNavigationVisible = signal<boolean>(false);\n protected readonly popover = inject(PopoverService).message;\n\n private readonly _metaService = inject(FMetaService);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _gTagService = inject(GTagService, { optional: true });\n private readonly _themeService = inject(ThemeService, { optional: true });\n\n protected readonly emptyNavigation = !inject(DocumentationStore).getNavigation().length;\n\n protected readonly isBrowser = inject(IS_BROWSER_PLATFORM);\n\n public ngOnInit() {\n if (!this.isBrowser) {\n return;\n }\n this._themeService?.initialize();\n this._gTagService?.initialize();\n this._metaService.changes().pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n\n public onToggleNavigation(value: boolean): void {\n this.isNavigationVisible.set(value);\n }\n\n public ngOnDestroy(): void {\n this._metaService.dispose();\n // Cleanup logic if needed\n }\n}\n","@if (!emptyNavigation) {\n <f-navigation-panel [class.visible]=\"isNavigationVisible()\"/>\n <div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n}\n\n<scrollable-container>\n <f-header [class.empty-navigation]=\"emptyNavigation\"/>\n <router-outlet/>\n</scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n","import { Routes } from '@angular/router';\n\nexport const DOCUMENTATION_ROUTES: Routes = [\n {\n path: '',\n loadComponent: () => import('./index').then(m => m.Documentation),\n children: [\n {\n path: '**',\n loadComponent: () => import('./components/markdown-router').then(m => m.MarkdownRouter),\n },\n ],\n },\n];\n","import { Type } from '@angular/core';\nimport { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideBackground(background: Type<any>): Partial<IHomePageConfiguration> {\n return {\n background,\n };\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHero(hero: IHomePageHero): Partial<IHomePageConfiguration> {\n return {\n hero,\n };\n}\n\nexport interface IHomePageHero {\n headline?: string;\n tagline1?: string;\n tagline2?: string;\n subDescription?: string;\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomeButtons(buttons: IHomePageLink[]): Partial<IHomePageConfiguration> {\n return {\n buttons,\n };\n}\n\nexport interface IHomePageLink {\n\n primary?: boolean;\n\n routerLink?: string;\n\n href?: string;\n\n text: string;\n\n icon?: string;\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomeFeatures(features: IHomePageFeature[]): Partial<IHomePageConfiguration> {\n return {\n features,\n };\n}\n\nexport interface IHomePageFeature {\n\n headline: string;\n\n description: string;\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomeFooter(footer: IHomePageFooter): Partial<IHomePageConfiguration> {\n return {\n footer,\n };\n}\n\nexport interface IHomePageFooter {\n\n text: string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomePage(configuration: IProviderInstance) {\n const merged = Object.assign({}, ...configuration.providers);\n return [{\n provide: HOME_PAGE_CONFIGURATION, useValue: merged,\n }];\n}\n\nexport const HOME_PAGE_CONFIGURATION = new InjectionToken<IHomePageConfiguration>('HOME_PAGE_CONFIGURATION');\n\ninterface IProviderInstance {\n providers: Partial<IHomePageConfiguration>[];\n}\n","import { Type } from '@angular/core';\nimport { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideImage(image: Type<any>): Partial<IHomePageConfiguration> {\n return {\n image,\n };\n}\n","import { inject, Injectable, Type } from '@angular/core';\nimport {\n HOME_PAGE_CONFIGURATION,\n IHomePageFeature,\n IHomePageFooter,\n IHomePageHero,\n IHomePageLink,\n IHomePageMembership,\n} from '../domain';\n\n@Injectable()\nexport class HomeStore {\n private readonly _configuration = inject(HOME_PAGE_CONFIGURATION);\n\n public getLogo(): string {\n return this._configuration.logo;\n }\n\n public getTitle(): string {\n return this._configuration.title;\n }\n\n public getHero(): IHomePageHero {\n return this._configuration.hero;\n }\n\n public getButtons(): IHomePageLink[] {\n return this._configuration.buttons || [];\n }\n\n public getFeatures(): IHomePageFeature[] {\n return this._configuration.features || [];\n }\n\n public getMemberships(): IHomePageMembership[] {\n return [];\n }\n\n public getFooter(): IHomePageFooter {\n return this._configuration.footer;\n }\n\n public getBackgroundComponent(): Type<any> | undefined {\n return this._configuration.background;\n }\n\n public getImageComponent(): Type<any> | undefined {\n return this._configuration.image;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-buttons-row',\n templateUrl: './f-home-page-buttons-row.component.html',\n styleUrl: './f-home-page-buttons-row.component.scss',\n standalone: true,\n imports: [\n RouterLink,\n ],\n host: {\n '[class.display-none]': '!viewModel.length',\n },\n})\nexport class FHomePageButtonsRowComponent {\n protected viewModel = inject(HomeStore).getButtons();\n}\n","@for (button of viewModel; track button.text) {\n @if (button.routerLink) {\n <a class=\"f-button\" [class.primary]=\"button.primary\" routerLink=\"{{ button.routerLink }}\">\n @if (button.icon) {\n <span class=\"f-icon {{ button.icon }}\"></span>\n }\n {{ button.text }}\n </a>\n } @else if(button.href) {\n <a class=\"f-button\" [class.primary]=\"button.primary\" href=\"{{ button.href }}\" target=\"_blank\" rel=\"noopener noreferrer\">\n @if (button.icon) {\n <span class=\"f-icon {{ button.icon }}\"></span>\n }\n {{ button.text }}\n </a>\n }\n}\n\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-features',\n templateUrl: './f-home-page-features.component.html',\n styleUrl: './f-home-page-features.component.scss',\n standalone: true,\n host: {\n '[class.display-none]': '!viewModel.length',\n },\n})\nexport class FHomePageFeaturesComponent {\n protected viewModel = inject(HomeStore).getFeatures();\n}\n","<div class=\"feature-list\">\n @for (feature of viewModel; track feature.headline) {\n <div class=\"feature\">\n <h2>{{ feature.headline }}</h2>\n <p>{{ feature.description }}</p>\n </div>\n }\n</div>\n\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'footer[f-home-page-footer]',\n templateUrl: './f-home-page-footer.component.html',\n styleUrl: './f-home-page-footer.component.scss',\n standalone: true,\n})\nexport class FHomePageFooterComponent {\n protected viewModel = inject(HomeStore).getFooter();\n}\n","<div class=\"content\">\n <div class=\"flex-space\"></div>\n <div>\n <div class=\"item\">Created with Foblex <a href=\"https://m-render.foblex.com/\" target=\"_blank\">MRender</a></div>\n <div class=\"item\">{{ viewModel.text }}</div>\n </div>\n</div>\n\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\nimport { ThemeButtonComponent } from '../../../theme';\nimport { FBrandLinkComponent } from '../../../shared';\n\n@Component({\n selector: 'header[f-home-page-header]',\n templateUrl: './f-home-page-header.component.html',\n styleUrl: './f-home-page-header.component.scss',\n standalone: true,\n imports: [\n FBrandLinkComponent,\n ThemeButtonComponent,\n ],\n})\nexport class FHomePageHeaderComponent {\n protected logo = inject(HomeStore).getLogo();\n protected title = inject(HomeStore).getTitle();\n}\n","<div class=\"content\">\n <f-brand-link class=\"logo-link\" [title]=\"title\" [logo]=\"logo\" [logoAlt]=\"title + ' Logo'\" />\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { FHomePageButtonsRowComponent } from '../f-home-page-buttons-row';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-hero',\n templateUrl: './f-home-page-hero.component.html',\n styleUrl: './f-home-page-hero.component.scss',\n standalone: true,\n imports: [\n FHomePageButtonsRowComponent,\n ],\n})\nexport class FHomePageHeroComponent {\n\n protected viewModel = inject(HomeStore).getHero();\n}\n","<h1>{{ viewModel.headline }}</h1>\n<p class=\"powered\">{{ viewModel.tagline1 }}</p>\n<p class=\"powered\">{{ viewModel.tagline2 }}</p>\n<p class=\"second-description\">{{ viewModel.subDescription }}</p>\n<f-home-page-buttons-row></f-home-page-buttons-row>\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-memberships',\n templateUrl: './f-home-page-memberships.component.html',\n styleUrl: './f-home-page-memberships.component.scss',\n standalone: true,\n host: {\n '[class.display-none]': '!viewModel.length',\n },\n})\nexport class FHomePageMembershipsComponent {\n protected viewModel = inject(HomeStore).getMemberships();\n}\n","<div class=\"membership-list\">\n @for (membership of viewModel; track membership.id) {\n <div class=\"membership\">\n <h2>{{ membership.name }}</h2>\n <p>{{ membership.description }}</p>\n <div class=\"benefit-list\">\n @for (benefit of membership.benefits; track benefit) {\n <p class=\"benefit\">✅ {{ benefit }}</p>\n }\n </div>\n <a class=\"f-button\" [href]=\"membership.buttonRef\">{{ membership.buttonText }}</a>\n </div>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n inject,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { HomeStore } from './services';\nimport {\n FHomePageFeaturesComponent,\n FHomePageFooterComponent,\n FHomePageHeaderComponent,\n FHomePageHeroComponent,\n FHomePageMembershipsComponent,\n} from './components';\nimport { IS_BROWSER_PLATFORM, ThemeService } from '../common';\nimport { CookiePopup } from '../analytics/cookie-popup/cookie-popup';\nimport { GTagService } from '../analytics';\n\n@Component({\n selector: 'home-root',\n templateUrl: './home-root.component.html',\n styleUrls: ['./home-root.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n HomeStore,\n ],\n imports: [\n FHomePageFooterComponent,\n FHomePageHeaderComponent,\n FHomePageFeaturesComponent,\n FHomePageHeroComponent,\n FHomePageMembershipsComponent,\n CookiePopup,\n ],\n})\nexport class HomeRootComponent implements AfterViewInit, OnInit {\n private readonly _environment = inject(HomeStore);\n private readonly _gTagService = inject(GTagService, { optional: true });\n private readonly _themeService = inject(ThemeService, { optional: true });\n\n protected readonly isBrowser = inject(IS_BROWSER_PLATFORM);\n\n @ViewChild('backgroundContainer', { read: ViewContainerRef })\n private _backgroundContainer: ViewContainerRef | undefined;\n\n @ViewChild('heroImageContainer', { read: ViewContainerRef })\n private _heroImageContainer: ViewContainerRef | undefined;\n\n public ngOnInit(): void {\n if (!this.isBrowser) {\n return;\n }\n this._themeService?.initialize();\n this._gTagService?.initialize();\n }\n\n public ngAfterViewInit(): void {\n this._renderImageComponent(this._environment.getImageComponent());\n this._renderBackgroundComponent(this._environment.getBackgroundComponent());\n }\n\n private _renderImageComponent<T>(component?: Type<T>): void {\n if (component) {\n this._requestComponentRedraw(this._getImageComponentReference(component));\n }\n }\n\n private _renderBackgroundComponent<T>(component?: Type<T>): void {\n if (component) {\n this._requestComponentRedraw(this._getBackgroundComponentReference(component));\n }\n }\n\n private _getBackgroundComponentReference<T>(component: Type<T>): ComponentRef<T> {\n return this._backgroundContainer!.createComponent(component);\n }\n\n private _getImageComponentReference<T>(component: Type<T>): ComponentRef<T> {\n return this._heroImageContainer!.createComponent(component);\n }\n\n private _requestComponentRedraw(componentRef: ComponentRef<unknown>): void {\n componentRef.changeDetectorRef.markForCheck();\n }\n}\n","<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","import { Routes } from '@angular/router';\n\nexport const HOME_ROUTES: Routes = [\n {\n path: '',\n loadComponent: () => import('./index').then(m => m.HomeRootComponent),\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["filter","uniqueId","coerceComponentHeight"],"mappings":"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"}
1
+ {"version":3,"file":"foblex-m-render.mjs","sources":["../../../../libs/m-render/src/lib/analytics/g-tag.service.ts","../../../../libs/m-render/src/lib/analytics/provide-g-tag.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header-search.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header-media-links.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-header-navigation.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-language.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-logo.ts","../../../../libs/m-render/src/lib/common/domain/configuration-providers/provide-title.ts","../../../../libs/m-render/src/lib/common/domain/providers.ts","../../../../libs/m-render/src/lib/common/services/popover.service.ts","../../../../libs/m-render/src/lib/theme/theme.service.ts","../../../../libs/m-render/src/lib/common/utils/copy-to-clipboard.ts","../../../../libs/m-render/src/lib/common/utils/document-element.ts","../../../../libs/m-render/src/lib/common/utils/window.ts","../../../../libs/m-render/src/lib/common/utils/local-storage.ts","../../../../libs/m-render/src/lib/common/utils/location.ts","../../../../libs/m-render/src/lib/common/utils/platform.ts","../../../../libs/m-render/src/lib/documentation-page/analytics/common-services/f-head-tag.service.ts","../../../../libs/m-render/src/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.handler.ts","../../../../libs/m-render/src/lib/documentation-page/domain/handle-navigation-links/handle-navigation-links.request.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-404-markdown.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-components.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-directory.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-documentation.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-meta.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-footer-navigation.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-navigation.ts","../../../../libs/m-render/src/lib/documentation-page/domain/configuration-providers/provide-table-of-content.ts","../../../../libs/m-render/src/lib/documentation-page/analytics/common-services/f-meta.service.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/hamburger-button/domain/i-toggle-navigation-component.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/hamburger-button/hamburger-button.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/hamburger-button/hamburger-button.html","../../../../libs/m-render/src/lib/documentation-page/components/header/models/header-menu-base.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/inline-menu/inline-menu.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/inline-menu/inline-menu.html","../../../../libs/m-render/src/lib/theme/theme-button/theme-button.component.ts","../../../../libs/m-render/src/lib/theme/theme-button/theme-button.component.html","../../../../libs/m-render/src/lib/theme/provide-theme.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/media-links/domain/i-media-links-provider.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/media-links/media-links.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/media-links/media-links.html","../../../../libs/m-render/src/lib/documentation-page/components/header/components/dropdown-menu/dropdown-menu.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/components/dropdown-menu/dropdown-menu.html","../../../../libs/m-render/src/lib/documentation-page/utils/calculate-markdown-url.ts","../../../../libs/m-render/src/lib/documentation-page/services/documentation.store.ts","../../../../libs/m-render/src/lib/dynamic-components/dynamic-components.store.ts","../../../../libs/m-render/src/lib/shared/components/f-brand-link/f-brand-link.component.ts","../../../../libs/m-render/src/lib/shared/components/f-brand-link/f-brand-link.component.html","../../../../libs/m-render/src/lib/shared/components/f-search-button/f-search-button.component.ts","../../../../libs/m-render/src/lib/shared/components/f-search-button/f-search-button.component.html","../../../../libs/m-render/src/lib/shared/components/f-checkbox/f-checkbox.component.ts","../../../../libs/m-render/src/lib/shared/components/f-checkbox/f-checkbox.component.html","../../../../libs/m-render/src/lib/shared/components/f-radio-button/f-radio-button.component.ts","../../../../libs/m-render/src/lib/shared/components/f-radio-button/f-radio-button.component.html","../../../../libs/m-render/src/lib/documentation-page/components/header/header.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/header/header.component.html","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-group/navigation-group.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-group/navigation-group.component.html","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/f-navigation-item/f-navigation-item.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/f-navigation-item/f-navigation-item.component.html","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-panel.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/navigation-panel/navigation-panel.component.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.response.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.handler.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/domain/get-previous-next-page-navigation/get-previous-next-page-navigation.request.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/footer-navigation-button/footer-navigation-button.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/footer-navigation-button/footer-navigation-button.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/markdown-footer.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-footer/markdown-footer.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/e-markdown-container-type.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/e-parsed-container-type.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/i-preview-navigation-service.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/domain/i-markdown-frontmatter.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/markdown.service.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/utils.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-alerts.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-grouped-code-items.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-single-code-item.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-angular-example-with-code-links.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-preview-group.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/utils/parse-showcase.ts","../../../../libs/m-render/src/lib/mediatr/mediatr.ts","../../../../libs/m-render/src/lib/mediatr/m-execution.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/utils/coerce-component-height.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/utils/parse-iframe-url.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/utils/parse-component-tag.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-dynamic-component/render-dynamic-component-request.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-dynamic-component/render-dynamic-component.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-external-component/render-external-component-request.ts","../../../../libs/m-render/src/lib/dynamic-components/providers/external-component.provider.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-external-component/render-external-component.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-internal-components/render-internal-components-request.ts","../../../../libs/m-render/src/lib/dynamic-components/features/render-internal-components/render-internal-components.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/external-component.ts","../../../../libs/m-render/src/lib/dynamic-components/components/external-component/external-component.html","../../../../libs/m-render/src/lib/highlight/code-view/highlight.ts","../../../../libs/m-render/src/lib/highlight/code-view/code-view.ts","../../../../libs/m-render/src/lib/highlight/code-view/code-view.html","../../../../libs/m-render/src/lib/highlight/mark-code-focused-blocks.post-processor.ts","../../../../libs/m-render/src/lib/highlight/theme.ts","../../../../libs/m-render/src/lib/highlight/languages.ts","../../../../libs/m-render/src/lib/highlight/highlight.service.ts","../../../../libs/m-render/src/lib/dynamic-components/components/code-group/code-group.ts","../../../../libs/m-render/src/lib/dynamic-components/components/code-group/code-group.html","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-card/preview-card-base.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/preview-group.service.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-card/preview-card.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-card/preview-card.html","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-action-bar/preview-action-bar.ts","../../../../libs/m-render/src/lib/dynamic-components/components/preview-group/components/preview-action-bar/preview-action-bar.html","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/components/showcase-item/showcase-item.ts","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/components/showcase-item/showcase-item.html","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/showcase-token.ts","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/showcase.ts","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/showcase.html","../../../../libs/m-render/src/lib/dynamic-components/components/showcase/provide-showcase.ts","../../../../libs/m-render/src/lib/dynamic-components/module-providers.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/activate-toc-by-hash/activate-toc-by-hash-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/activate-toc-by-hash/activate-toc-by-hash.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-table-of-content/calculate-table-of-content-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/models/table-of-content-data.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-absolute-top-to-container/calculate-absolute-top-to-container-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-absolute-top-to-container/calculate-absolute-top-to-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-hash-from-scroll-position/calculate-hash-from-scroll-position.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/calculate-table-of-content/calculate-table-of-content.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/scroll-to-element-in-container/scroll-to-element-in-container-request.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/features/scroll-to-element-in-container/scroll-to-element-in-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content-items/table-of-content-items.component.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content-items/table-of-content-items.component.html","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/module-providers.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content.ts","../../../../libs/m-render/src/lib/documentation-page/components/table-of-content/table-of-content.html","../../../../libs/m-render/src/lib/documentation-page/components/scrollable-container/models/i-scrollable-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/scrollable-container/scrollable-container.ts","../../../../libs/m-render/src/lib/documentation-page/components/scrollable-container/scrollable-container.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-renderer.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-renderer/markdown-renderer.html","../../../../libs/m-render/src/lib/documentation-page/components/markdown-router/markdown-router.ts","../../../../libs/m-render/src/lib/documentation-page/components/markdown-router/markdown-router.html","../../../../libs/m-render/src/lib/documentation-page/documentation.ts","../../../../libs/m-render/src/lib/documentation-page/documentation.html","../../../../libs/m-render/src/lib/documentation-page/routes.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-background.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-hero.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-buttons.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-features.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-footer.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-home-page.ts","../../../../libs/m-render/src/lib/home-page/domain/configuration-providers/provide-image.ts","../../../../libs/m-render/src/lib/home-page/services/home.store.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-buttons-row/f-home-page-buttons-row.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-buttons-row/f-home-page-buttons-row.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-features/f-home-page-features.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-features/f-home-page-features.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-footer/f-home-page-footer.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-footer/f-home-page-footer.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-header/f-home-page-header.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-header/f-home-page-header.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-hero/f-home-page-hero.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-hero/f-home-page-hero.component.html","../../../../libs/m-render/src/lib/home-page/components/f-home-page-memberships/f-home-page-memberships.component.ts","../../../../libs/m-render/src/lib/home-page/components/f-home-page-memberships/f-home-page-memberships.component.html","../../../../libs/m-render/src/lib/home-page/home-root.component.ts","../../../../libs/m-render/src/lib/home-page/home-root.component.html","../../../../libs/m-render/src/lib/home-page/router.ts","../../../../libs/m-render/src/foblex-m-render.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ConsentState, GTAG_CONFIG, GTagConfig } from './provide-g-tag';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable()\nexport class GTagService {\n private readonly _config = inject<GTagConfig>(GTAG_CONFIG);\n private readonly _document = inject(DOCUMENT);\n private readonly _router = inject(Router, { optional: true });\n private _initialized = false;\n private _configuredIds = new Set<string>();\n\n public initialize(): void {\n if (this._initialized) return;\n\n const win = this._document.defaultView as (Window & {\n dataLayer?: unknown[];\n gtag?: (...args: unknown[]) => void;\n __gtagLoaded__?: boolean;\n }) | null;\n\n if (!win) {\n return;\n }\n\n win.dataLayer = win.dataLayer || [];\n win.gtag = win.gtag || ((...args: unknown[]) => win.dataLayer!.push(args));\n\n const initialConsent: ConsentState = this._config.initialConsent ?? 'denied';\n this._setConsent(initialConsent);\n\n if (!win.__gtagLoaded__) {\n this._appendScript(this._config.id);\n win.__gtagLoaded__ = true;\n }\n\n win.gtag('js', new Date());\n\n this._configAll([this._config.id, ...(this._config.extraIds ?? [])]);\n\n if (this._config.autoPageview && this._router) {\n this._router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe(() => {\n this.pageview();\n });\n }\n\n this._initialized = true;\n }\n\n public updateConsent(granted: boolean): void {\n this._setConsent(granted ? 'granted' : 'denied');\n }\n\n public event(action: string, params?: Record<string, unknown>): void {\n const win = this._document.defaultView as any;\n win?.gtag?.('event', action, params || {});\n }\n\n public pageview(path?: string): void {\n const win = this._document.defaultView as any;\n const p = path ?? this._document.location?.pathname ?? '/';\n for (const id of this._getConfiguredIds()) {\n win?.gtag?.('config', id, { page_path: p });\n }\n }\n\n public adsConversion(sendTo: string, params?: Record<string, unknown>): void {\n this.event('conversion', { send_to: sendTo, ...params });\n }\n\n private _setConsent(state: ConsentState): void {\n const win = this._document.defaultView as any;\n const base = {\n ad_user_data: state,\n ad_personalization: state,\n ad_storage: state,\n analytics_storage: state,\n };\n if (state === 'denied') {\n win?.gtag?.('consent', 'default', { ...base, wait_for_update: 500 });\n } else {\n win?.gtag?.('consent', 'update', base);\n }\n }\n\n private _appendScript(id: string): void {\n if (this._document.querySelector('#gtag-script')) return;\n const s = this._document.createElement('script');\n s.id = 'gtag-script';\n s.async = true;\n s.src = `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(id)}`;\n this._document.head.appendChild(s);\n }\n\n private _configAll(ids: string[]): void {\n const win = this._document.defaultView as any;\n ids.filter(Boolean).forEach(id => {\n if (this._configuredIds.has(id)) return;\n win?.gtag?.('config', id);\n this._configuredIds.add(id);\n });\n }\n\n private _getConfiguredIds(): string[] {\n return Array.from(this._configuredIds.values());\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { GTagService } from './g-tag.service';\n\nexport function provideGTag(config: GTagConfig): Provider[] {\n return [\n {\n provide: GTAG_CONFIG,\n useValue: config,\n },\n {\n provide: GTagService,\n useClass: GTagService,\n },\n ];\n}\n\nexport interface GTagConfig {\n id: string;\n extraIds?: string[];\n autoPageview?: boolean;\n initialConsent?: ConsentState;\n}\n\nexport const GTAG_CONFIG = new InjectionToken<GTagConfig>('GTAG_CONFIG');\n\nexport type ConsentState = 'granted' | 'denied';\n","import { IHeaderMenuLink, IMediaLink } from '../../../documentation-page';\n\nexport function provideHeader(\n ...configuration: Partial<IHeaderConfiguration>[]\n): Partial<IHasHeaderConfiguration> {\n return {\n header: Object.assign({}, ...configuration),\n };\n}\n\nexport interface IHeaderConfiguration {\n\n search?: boolean;\n\n navigation?: IHeaderMenuLink[];\n\n mediaLinks?: IMediaLink[];\n}\n\nexport interface IHasHeaderConfiguration {\n\n header?: IHeaderConfiguration;\n}\n","import { IHeaderConfiguration } from './provide-header';\n\nexport function provideHeaderSearch(search?: boolean): Partial<IHeaderConfiguration> {\n return {\n search,\n };\n}\n","import { IHeaderConfiguration } from './provide-header';\nimport { IMediaLink } from '../../../documentation-page';\n\nexport function provideHeaderMediaLinks(mediaLinks: IMediaLink[]): Partial<IHeaderConfiguration> {\n return {\n mediaLinks,\n };\n}\n\n","import { IHeaderConfiguration } from './provide-header';\nimport { IHeaderMenuLink } from '../../../documentation-page';\n\nexport function provideHeaderNavigation(navigation: IHeaderMenuLink[]): Partial<IHeaderConfiguration> {\n return {\n navigation,\n };\n}\n\n","export function provideLanguage(lang: string): ILanguageConfiguration {\n return {\n lang,\n };\n}\n\nexport interface ILanguageConfiguration {\n lang: string;\n}\n","export function provideLogo(logo: string): ILogoConfiguration {\n return {\n logo,\n };\n}\n\nexport interface ILogoConfiguration {\n logo: string;\n}\n","export function provideTitle(title: string): ITitleConfiguration {\n return {\n title,\n };\n}\n\nexport interface ITitleConfiguration {\n title: string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { IHeaderConfiguration } from './configuration-providers';\n\nexport const HEADER_CONFIGURATION_PROVIDER = new InjectionToken<IHeaderConfiguration>('HEADER_CONFIGURATION_PROVIDER');\n\nexport interface IHeaderConfigurationStore {\n getHeader(): IHeaderConfiguration | undefined;\n}\n","import { Injectable, Signal, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopoverService {\n private readonly _message = signal<string | null>(null);\n\n public get message(): Signal<string | null> {\n return this._message.asReadonly();\n }\n\n public show(message: string, timeout = 2000): void {\n this._message.set(message);\n setTimeout(() => this._message.set(null), timeout);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DOCUMENT_ELEMENT, LOCAL_STORAGE, WINDOW } from '../common';\n\n@Injectable()\nexport class ThemeService {\n private readonly _localStorage = inject(LOCAL_STORAGE, { optional: true });\n private readonly _window = inject(WINDOW, { optional: true });\n private readonly _theme = new Subject<void>();\n private readonly _docElement = inject(DOCUMENT_ELEMENT);\n\n public get theme$(): Observable<void> {\n return this._theme.asObservable();\n }\n\n public initialize(): void {\n if (this.getPreferredTheme() === 'dark' && !this._isDocumentContainsDarkTheme()) {\n this._docElement.classList.add('dark');\n this._localStorage?.setItem('preferred-theme', 'dark');\n }\n }\n\n public updateTheme(): void {\n this._theme.next();\n }\n\n public getPreferredTheme(): string {\n return this._getItem('preferred-theme')\n || (this._matchMedia('(prefers-color-scheme: dark)')?.matches ? 'dark' : 'light');\n }\n\n private _getItem(key: string): string | null {\n return this._localStorage?.getItem?.(key) || null;\n }\n\n private _matchMedia(query: string): MediaQueryList {\n return this._window?.matchMedia?.(query) || { matches: false } as MediaQueryList;\n }\n\n private _isDocumentContainsDarkTheme(): boolean {\n return this._docElement.classList.contains('dark');\n }\n}\n","import { from, map, Observable, of, switchMap } from 'rxjs';\n\nexport function copyToClipboard(value: string): Observable<any | undefined> {\n const blob = new Blob([ value ], { type: 'text/plain' });\n const data = [ new ClipboardItem({ [ blob.type ]: blob }) ];\n\n // @ts-ignore\n return from(window?.navigator.permissions.query({ name: 'clipboard-write' })).pipe(\n map((permission: PermissionStatus) => permission.state !== 'denied'),\n switchMap((isGranted: boolean) => {\n if (isGranted) {\n return from(navigator.clipboard.write(data));\n }\n return of(undefined);\n }),\n );\n}\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { DOCUMENT } from '@angular/common';\n\nexport const DOCUMENT_ELEMENT = new InjectionToken<HTMLElement>('DOCUMENT_ELEMENT', {\n factory: () => inject(DOCUMENT).documentElement,\n});\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\nexport const WINDOW = new InjectionToken<Window>('F_WINDOW', {\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n },\n});\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { WINDOW } from './window';\n\nexport const LOCAL_STORAGE = new InjectionToken<Storage>('F_LOCAL_STORAGE', {\n factory: () => inject(WINDOW).localStorage,\n});\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { WINDOW } from './window';\n\nexport const LOCATION = new InjectionToken<Location>('F_LOCATION', {\n factory: () => inject(WINDOW).location,\n});\n","import { inject, InjectionToken, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const IS_BROWSER_PLATFORM = new InjectionToken<boolean>('IS_BROWSER_PLATFORM', {\n factory() {\n return isPlatformBrowser(inject(PLATFORM_ID));\n },\n});\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FHeadTagService {\n\n private readonly _document = inject(DOCUMENT);\n\n public setTitle(title: string): void {\n this._document.title = title || '';\n }\n\n public setDescription(description?: string | null): void {\n this.updateNameTag({ name: 'description', content: description || '' });\n }\n\n public setCanonical(url?: string | null): void {\n const normalizedUrl = (url || '').trim();\n const link = this._getCanonical();\n if (!normalizedUrl) {\n if (link) {\n link.remove();\n }\n return;\n }\n\n const canonicalLink: HTMLLinkElement = link || this._createElement<HTMLLinkElement>('link');\n canonicalLink.setAttribute('rel', 'canonical');\n canonicalLink.setAttribute('href', normalizedUrl);\n }\n\n private _getCanonical(): HTMLLinkElement | null {\n return this._document.querySelector(`link[rel=\"canonical\"]`) || null;\n }\n\n public updateTag(tag: IMetaTag): void {\n this.updatePropertyTag(tag);\n }\n\n public updatePropertyTag(tag: IMetaTag): void {\n const normalizedContent = tag.content?.trim() || '';\n const meta = this._getPropertyTag(tag.property);\n if (!normalizedContent) {\n if (meta) {\n meta.remove();\n }\n return;\n }\n\n const targetMeta = meta || this._createElement<HTMLMetaElement>('meta');\n targetMeta.setAttribute('property', tag.property);\n targetMeta.setAttribute('content', normalizedContent);\n }\n\n public updateNameTag(tag: INameMetaTag): void {\n const normalizedContent = tag.content?.trim() || '';\n const meta = this._getNameTag(tag.name);\n if (!normalizedContent) {\n if (meta) {\n meta.remove();\n }\n return;\n }\n\n const targetMeta = meta || this._createElement<HTMLMetaElement>('meta');\n targetMeta.setAttribute('name', tag.name);\n targetMeta.setAttribute('content', normalizedContent);\n }\n\n private _getPropertyTag(property: string): HTMLMetaElement | null {\n return this._document.querySelector(`meta[property=\"${ property }\"]`) || null;\n }\n\n private _getNameTag(name: string): HTMLMetaElement | null {\n return this._document.querySelector(`meta[name=\"${ name }\"]`) || null;\n }\n\n private _createElement<TElement extends Node>(tag: string): TElement {\n const element = this._document.createElement(tag) as Node;\n const head = this._document.getElementsByTagName('head')[ 0 ];\n head.appendChild(element);\n\n return element as TElement;\n }\n}\n\nexport interface IMetaTag {\n\n property: string;\n\n content: string;\n}\n\nexport interface INameMetaTag {\n name: string;\n content: string;\n}\n","import { HandleNavigationLinksRequest } from './handle-navigation-links.request';\nimport { Router } from '@angular/router';\n\nexport class HandleNavigationLinksHandler {\n\n public handle(request: HandleNavigationLinksRequest): void {\n const target = this._getClosestAnchorTag(this._getTargetElement(request.event));\n\n if (target && this._hasHref(target)) {\n request.event.preventDefault();\n\n const href = target.getAttribute('href')!;\n if (!this._isExternalLink(href)) {\n this._navigateInternalLink(href, request.router);\n } else {\n window.open(href, '_blank')\n }\n }\n }\n\n private _getTargetElement(event: Event): HTMLElement | null {\n return event?.target as HTMLElement;\n }\n\n private _getClosestAnchorTag(element: HTMLElement | null): HTMLElement | undefined | null {\n return element?.closest('a');\n }\n\n private _hasHref(element: HTMLElement): boolean {\n return element.hasAttribute('href');\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n private _navigateInternalLink(href: string, router: Router): void {\n if (href.startsWith('/')) {\n href = href.substring(1);\n }\n router.navigate([href]).then();\n }\n}\n","import { Router } from '@angular/router';\n\nexport class HandleNavigationLinksRequest {\n constructor(\n public event: MouseEvent,\n public window: Window,\n public router: Router,\n ) {\n }\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provide404Markdown(notFoundMarkdown: string): Partial<IDocumentationConfiguration> {\n return {\n notFoundMarkdown,\n };\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\nimport { Type } from '@angular/core';\nimport { IDynamicComponentItem } from '../../../dynamic-components';\n\nexport function defineLazyComponent(\n selector: string,\n loader: () => Promise<Record<string, unknown>>,\n): IDynamicComponentItem {\n return {\n selector,\n component: extractComponent(loader),\n };\n}\n\nexport function provideComponents(components: IDynamicComponentItem[]): Partial<IDocumentationConfiguration> {\n return {\n components,\n };\n}\n\nexport function extractComponent(loader: () => Promise<Record<string, unknown>>): Promise<Type<any>> {\n return loader().then(module => {\n const component = Object.values(module).find(\n (v): v is Type<any> => typeof v === 'function' && Object.prototype.hasOwnProperty.call(v, 'ɵcmp'),\n );\n if (!component) {\n throw new Error('Component not found');\n }\n return component;\n });\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provideDirectory(docsDir: string): Partial<IDocumentationConfiguration> {\n return {\n docsDir,\n };\n}\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\nimport { InjectionToken } from '@angular/core';\n\nexport function provideDocumentation(configuration: IProviderInstance) {\n const merged = Object.assign({}, ...configuration.providers);\n return {\n provide: DOCUMENTATION_CONFIGURATION, useValue: merged,\n };\n}\n\nexport const DOCUMENTATION_CONFIGURATION = new InjectionToken<IDocumentationConfiguration>('DOCUMENTATION_CONFIGURATION');\n\ninterface IProviderInstance {\n providers: Partial<IDocumentationConfiguration>[];\n}\n","import { IMetaData } from '../../analytics';\nimport { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provideMeta(meta: IMetaData): Partial<IDocumentationConfiguration> {\n return {\n meta,\n };\n}\n","import { IDocumentationConfiguration, IMarkdownFooterNavigation } from '../../index';\n\nexport function provideFooterNavigation(\n navigation: IMarkdownFooterNavigation,\n): Partial<IDocumentationConfiguration> {\n return {\n footer: {\n navigation,\n },\n };\n}\n\n","import { IDocumentationConfiguration } from '../i-documentation-configuration';\nimport { INavigationGroup, INavigationItem } from '../../components';\n\nexport function provideNavigation(...navigation: INavigationGroup[]): Partial<IDocumentationConfiguration> {\n return {\n navigation,\n };\n}\n\nexport function defineNavigationGroup(name: string | undefined, items: INavigationItem[]): INavigationGroup {\n return {\n text: name,\n items,\n };\n}\n","import { ITableOfContent } from '../../components';\nimport { IDocumentationConfiguration } from '../i-documentation-configuration';\n\nexport function provideTableOfContent(tableOfContent: ITableOfContent | null = {\n title: 'In this article',\n range: { start: 2, end: 6 },\n}): Partial<IDocumentationConfiguration> {\n return {\n tableOfContent,\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, map, Observable, startWith } from 'rxjs';\nimport { IMetaData } from './i-meta-data';\nimport { FHeadTagService } from './f-head-tag.service';\nimport { tap } from 'rxjs/operators';\nimport { DOCUMENTATION_CONFIGURATION } from '../../domain';\nimport { INavigationGroup, INavigationItem } from '../../components';\nimport { LOCATION } from '../../../common';\nimport { ISeoOverrides } from './i-seo-overrides';\n\n@Injectable()\nexport class FMetaService {\n private readonly _location = inject(LOCATION);\n private readonly _router = inject(Router);\n private readonly _headTag = inject(FHeadTagService);\n private readonly _configuration = inject(DOCUMENTATION_CONFIGURATION);\n private _seoOverrides: ISeoOverrides | null = null;\n private _lastPath = '';\n\n public changes(): Observable<string> {\n return this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._normalizeCurrentPath(this._router.url)),\n tap((currentUrl) => {\n if (this._lastPath !== currentUrl) {\n this._seoOverrides = null;\n this._lastPath = currentUrl;\n }\n this._updateMetaByUrl(currentUrl);\n }),\n );\n }\n\n public applyMarkdownSeo(overrides: ISeoOverrides | null | undefined): void {\n this._seoOverrides = overrides ? { ...overrides } : null;\n this._updateMetaByUrl(this._normalizeCurrentPath(this._router.url));\n }\n\n public dispose(): void {\n this._seoOverrides = null;\n this._lastPath = '';\n\n if (!this._configuration.meta) {\n return;\n }\n this._updateMetaTags(this._configuration.meta);\n }\n\n private _updateMetaByUrl(currentUrl: string): void {\n const defaultData = this._configuration.meta;\n if (!defaultData) {\n return;\n }\n\n const data = { ...defaultData };\n const item = this._findDocItemByUrl(this._findDocGroupByUrl(currentUrl), currentUrl);\n\n if (item) {\n data.title = `${item.pageTitle || item.text} | ${defaultData.app_name}`;\n data.url = this._buildAbsoluteUrl(currentUrl);\n data.canonical = item.canonical;\n data.description = item.description || defaultData.description;\n data.image = item.image || defaultData.image;\n data.image_width = item.image_width || defaultData.image_width;\n data.image_height = item.image_height || defaultData.image_height;\n data.image_type = item.image_type || defaultData.image_type;\n }\n\n if (!data.url) {\n data.url = this._buildAbsoluteUrl(currentUrl);\n }\n\n data.url = this._toAbsoluteUrl(data.url);\n if (data.image) {\n data.image = this._toAbsoluteUrl(data.image);\n }\n\n this._updateMetaTags(data);\n }\n\n private _findDocGroupByUrl(url: string): INavigationGroup | undefined {\n return (this._configuration.navigation || []).find((g: INavigationGroup) => g.items.find((i: INavigationItem) => url.endsWith(i.link)));\n }\n\n private _findDocItemByUrl(group: INavigationGroup | undefined, url: string): INavigationItem | undefined {\n return (group?.items || []).find((i: INavigationItem) => url.endsWith(i.link));\n }\n\n private _buildAbsoluteUrl(url: string): string {\n try {\n return new URL(url, this._location.origin).toString();\n } catch {\n return this._location.origin + url;\n }\n }\n\n private _toAbsoluteUrl(maybeRelative: string): string {\n try {\n return new URL(maybeRelative, this._location.origin).toString();\n } catch {\n return maybeRelative;\n }\n }\n\n private _updateMetaTags(item: IMetaData): void {\n const seo = this._seoOverrides || null;\n const title = seo?.title || item.title;\n const description = seo?.description || item.description;\n const url = this._toAbsoluteUrl(seo?.url || item.url);\n const canonical = this._toAbsoluteUrl(seo?.canonical || item.canonical || url);\n const type = seo?.og_type || seo?.type || item.type;\n const siteName = seo?.app_name || item.app_name;\n const locale = seo?.locale || item.locale;\n const image = this._toAbsoluteUrl(seo?.og_image || seo?.image || item.image);\n const imageType = seo?.image_type || item.image_type;\n const imageWidth = seo?.image_width || item.image_width;\n const imageHeight = seo?.image_height || item.image_height;\n const keywords = seo?.keywords || item.keywords || '';\n const robots = this._resolveRobots(item.robots, seo);\n\n const twitterCard = seo?.twitter_card || item.twitter_card || 'summary_large_image';\n const twitterSite = item.twitter_site || '';\n const twitterCreator = item.twitter_creator || '';\n const twitterTitle = seo?.twitter_title || seo?.og_title || title;\n const twitterDescription = seo?.twitter_description || seo?.og_description || description;\n const twitterImage = this._toAbsoluteUrl(seo?.twitter_image || image);\n\n this._headTag.setTitle(title);\n this._headTag.setDescription(description);\n this._headTag.setCanonical(canonical);\n\n this._headTag.updateTag({ property: 'og:url', content: url });\n this._headTag.updateTag({ property: 'og:type', content: type });\n this._headTag.updateTag({ property: 'og:title', content: seo?.og_title || title });\n this._headTag.updateTag({ property: 'og:site_name', content: siteName });\n this._headTag.updateTag({ property: 'og:locale', content: locale });\n this._headTag.updateTag({ property: 'og:description', content: seo?.og_description || description });\n this._headTag.updateTag({ property: 'og:image', content: image });\n this._headTag.updateTag({ property: 'og:image:secure_url', content: image });\n this._headTag.updateTag({ property: 'og:image:type', content: imageType });\n this._headTag.updateTag({ property: 'og:image:width', content: imageWidth ? imageWidth.toString() : '' });\n this._headTag.updateTag({ property: 'og:image:height', content: imageHeight ? imageHeight.toString() : '' });\n\n this._headTag.updateNameTag({ name: 'keywords', content: keywords });\n this._headTag.updateNameTag({ name: 'robots', content: robots });\n this._headTag.updateNameTag({ name: 'twitter:card', content: twitterCard });\n this._headTag.updateNameTag({ name: 'twitter:site', content: twitterSite });\n this._headTag.updateNameTag({ name: 'twitter:creator', content: twitterCreator });\n this._headTag.updateNameTag({ name: 'twitter:title', content: twitterTitle });\n this._headTag.updateNameTag({ name: 'twitter:description', content: twitterDescription });\n this._headTag.updateNameTag({ name: 'twitter:image', content: twitterImage });\n }\n\n private _resolveRobots(defaultRobots: string | undefined, seo: ISeoOverrides | null): string {\n if (seo?.robots) {\n return seo.robots;\n }\n\n const hasDirectiveOverride = typeof seo?.noindex === 'boolean' || typeof seo?.nofollow === 'boolean';\n if (!hasDirectiveOverride) {\n return defaultRobots || '';\n }\n\n const indexValue = seo?.noindex ? 'noindex' : 'index';\n const followValue = seo?.nofollow ? 'nofollow' : 'follow';\n const defaultTokens = (defaultRobots || '')\n .split(',')\n .map((x) => x.trim())\n .filter((x) => x && ![ 'index', 'noindex', 'follow', 'nofollow' ].includes(x.toLowerCase()));\n\n return [ indexValue, followValue, ...defaultTokens ].join(', ');\n }\n\n private _normalizeCurrentPath(url: string): string {\n return (url || '').split('#')[0].split('?')[0];\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface IToggleNavigationComponent {\n\n onToggleNavigation(value: boolean): void;\n}\n\nexport const TOGGLE_NAVIGATION_COMPONENT = new InjectionToken<IToggleNavigationComponent>('TOGGLE_NAVIGATION_COMPONENT');\n","import {\n ChangeDetectionStrategy,\n Component, inject,\n} from '@angular/core';\nimport { TOGGLE_NAVIGATION_COMPONENT } from './domain';\n\n@Component({\n selector: 'button[hamburger-button]',\n templateUrl: './hamburger-button.html',\n styleUrls: [ './hamburger-button.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(click)': '_onShowNavigation()',\n },\n})\nexport class HamburgerButton {\n private readonly _parent = inject(TOGGLE_NAVIGATION_COMPONENT, {\n optional: true,\n });\n\n protected _onShowNavigation(): void {\n this._parent?.onToggleNavigation(true);\n }\n}\n","<span class=\"f-icon hamburger\"></span>\n\n","import { computed, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { HEADER_CONFIGURATION_PROVIDER } from '../../../../common';\n\nexport class HeaderMenuBase {\n private readonly _router = inject(Router);\n private readonly _baseNav = inject(HEADER_CONFIGURATION_PROVIDER)?.navigation ?? [];\n\n private readonly _url = toSignal(\n this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._router.url),\n distinctUntilChanged(),\n ),\n { initialValue: this._router.url },\n );\n\n public readonly navigation = computed(() => {\n const url = this._cleanPath(this._url());\n return this._baseNav.map(item => ({\n ...item,\n isActive: this._isActive(url, this._cleanPath(item.active ?? '')),\n }));\n });\n\n private _cleanPath(url: string): string {\n return url.split('#')[0].split('?')[0].replace(/\\/{2,}/g, '/').replace(/\\/$/, '');\n }\n\n private _isActive(currentPath: string, itemLink: string): boolean {\n if (!itemLink) return false;\n return currentPath === itemLink || currentPath.startsWith(itemLink + '/');\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HeaderMenuBase } from '../../models';\n\n@Component({\n selector: 'inline-menu',\n templateUrl: './inline-menu.html',\n styleUrls: [ './inline-menu.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n ],\n})\nexport class InlineMenu extends HeaderMenuBase {\n}\n\n","@for (item of navigation(); track item.link) {\n <a [routerLink]=\"item.link\" [class.active]=\"item.isActive\">\n <span>{{ item.text }}</span>\n </a>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener, inject, OnInit,\n Renderer2,\n} from '@angular/core';\nimport { ThemeService } from '../theme.service';\nimport { DOCUMENT_ELEMENT, IS_BROWSER_PLATFORM, LOCAL_STORAGE } from '../../common';\n\n@Component({\n selector: 'button[theme-button]',\n templateUrl: './theme-button.component.html',\n styleUrls: [ './theme-button.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ThemeButtonComponent implements OnInit {\n private readonly _renderer = inject(Renderer2);\n private readonly _themeService = inject(ThemeService, { optional: true });\n private readonly _localStorage = inject(LOCAL_STORAGE);\n private readonly _documentElement = inject(DOCUMENT_ELEMENT);\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n\n public ngOnInit(): void {\n if(!this._themeService && this._isBrowser) {\n throw new Error('Theme is not provided. Please provide it using provideTheme() provider in your application config.');\n }\n }\n private _isDocumentContainsDarkTheme(): boolean {\n return this._documentElement.classList.contains('dark');\n }\n\n @HostListener('click')\n protected _onClick(): void {\n if (this._themeService?.getPreferredTheme() === 'light' && !this._isDocumentContainsDarkTheme()) {\n this._renderer.addClass(this._documentElement, 'dark');\n this._localStorage.setItem('preferred-theme', 'dark');\n } else {\n this._renderer.removeClass(this._documentElement, 'dark');\n this._localStorage.setItem('preferred-theme', 'light');\n }\n this._themeService?.updateTheme();\n }\n}\n","<div class=\"f-icon-container\">\n <div class=\"f-icon moon\"></div>\n <div class=\"f-icon sun\"></div>\n</div>\n","import { Provider } from '@angular/core';\nimport { ThemeService } from './theme.service';\n\nexport function provideTheme(): Provider[] {\n return [\n {\n provide: ThemeService,\n useClass: ThemeService,\n },\n ];\n}\n","import { InjectionToken } from '@angular/core';\nimport { IMediaLink } from './i-media-link';\n\nexport interface IMediaLinksProvider {\n\n getMediaLinks(): IMediaLink[];\n}\n\nexport const MEDIA_LINKS_PROVIDER = new InjectionToken<IMediaLink[]>('MEDIA_LINKS_PROVIDER');\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MEDIA_LINKS_PROVIDER } from './domain';\n\n@Component({\n selector: 'media-links',\n templateUrl: './media-links.html',\n styleUrls: [ './media-links.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MediaLinks {\n\n protected links = inject(MEDIA_LINKS_PROVIDER, { optional: true });\n}\n","@for (link of links; track link.link) {\n <a href=\"{{ link.link }}\" class=\"header-link\">\n <div class=\"f-icon {{ link.icon }}\"></div>\n </a>\n}\n","import { ChangeDetectionStrategy, Component, inject, OnDestroy, signal } from '@angular/core';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { ThemeButtonComponent } from '../../../../../theme';\nimport { HeaderMenuBase } from '../../models';\nimport { RouterLink } from '@angular/router';\nimport { MediaLinks } from '../media-links';\n\n@Component({\n selector: 'dropdown-menu',\n templateUrl: './dropdown-menu.html',\n styleUrls: ['./dropdown-menu.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ThemeButtonComponent,\n RouterLink,\n MediaLinks,\n ],\n})\nexport class DropdownMenu extends HeaderMenuBase implements OnDestroy {\n protected readonly isOpen = signal(false);\n protected readonly scrollStrategy = inject(Overlay).scrollStrategies.block();\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ];\n\n private _hoverTimeout: any | undefined;\n\n protected mouseEnter(): void {\n clearTimeout(this._hoverTimeout);\n this.open();\n }\n\n protected mouseLeave(): void {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = setTimeout(() => this.close(), 200);\n }\n\n protected toggle(): void {\n this.isOpen.update(x => !x);\n }\n\n protected open(): void {\n if (!this.isOpen()) {\n this.isOpen.set(true);\n }\n }\n\n protected close(): void {\n this.isOpen.set(false);\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this._hoverTimeout);\n }\n}\n","<span class=\"label\" cdk-overlay-origin\n (click)=\"toggle()\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\"\n #overlayOrigin=\"cdkOverlayOrigin\">\n <span class=\"f-icon more-horizontal\"></span>\n</span>\n\n<ng-template\n cdk-connected-overlay\n [cdkConnectedOverlayLockPosition]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayOffsetY]=\"-10\"\n (backdropClick)=\"close()\"\n>\n <div class=\"dropdown-panel\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\">\n @if (navigation().length) {\n <div class=\"navigation-wrapper\">\n @for (item of navigation(); track item.link) {\n <a [routerLink]=\"item.link\" [class.active]=\"item.isActive\"><span>{{ item.text }}</span></a>\n }\n </div>\n }\n <div class=\"appearance\">\n <span>Appearance</span>\n <button theme-button></button>\n </div>\n <div class=\"social-links\">\n <media-links/>\n </div>\n\n </div>\n</ng-template>\n\n","import { INavigationGroup } from '../components';\n\nexport function calculateMarkdownUrl(markdown: string, navigation: INavigationGroup[], docsDir: string, notFoundMd = ''): string {\n if (!markdown || !_isMarkdownExist(markdown, navigation) && navigation.length) {\n return notFoundMd;\n }\n let url = docsDir + markdown;\n\n url = url.replace(/(\\/en\\/guides)+/g, '/en/guides');\n url = url.replace(/(\\/en\\/examples)+/g, '/en/examples');\n\n if (!url.endsWith('.md')) {\n url += '.md';\n }\n\n return url;\n}\n\nfunction _isMarkdownExist(id: string, navigation: INavigationGroup[]): boolean {\n return !!navigation.find((x) =>\n x.items.some((i: { link: string; }) => i.link === id),\n );\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport {\n IHeaderMenuLink,\n IMarkdownFooterNavigation,\n IMediaLink,\n IMediaLinksProvider,\n INavigationGroup,\n ITableOfContent,\n TableOfContentData,\n} from '../components';\nimport { IHeaderConfiguration, IHeaderConfigurationStore } from '../../common';\nimport { DOCUMENTATION_CONFIGURATION } from '../domain';\nimport { IDynamicComponentItem, IShowcaseItem } from '../../dynamic-components';\nimport { calculateMarkdownUrl } from '../utils';\n\n@Injectable()\nexport class DocumentationStore\n implements IMediaLinksProvider, IHeaderConfigurationStore {\n private readonly _configuration = inject(DOCUMENTATION_CONFIGURATION);\n\n public readonly tocData = signal<TableOfContentData>(new TableOfContentData([], []));\n\n public getMarkdownUrl(markdown: string): string {\n return calculateMarkdownUrl(\n markdown,\n (this._configuration.navigation || []),\n this._configuration.docsDir,\n this._configuration.notFoundMarkdown,\n );\n }\n\n public getLogo(): string {\n return this._configuration.logo;\n }\n\n public getTitle(): string {\n return this._configuration.title;\n }\n\n public getHeaderNavigation(): IHeaderMenuLink[] {\n return this._configuration.header?.navigation || [];\n }\n\n public getComponents(): IDynamicComponentItem[] {\n return this._configuration.components || [];\n }\n\n public getNavigation(): INavigationGroup[] {\n return this._configuration.navigation || [];\n }\n\n public getFooterNavigation(): IMarkdownFooterNavigation {\n return this._configuration.footer?.navigation || {};\n }\n\n public getMediaLinks(): IMediaLink[] {\n return this._configuration.header?.mediaLinks || [];\n }\n\n public getTableOfContent(): ITableOfContent | null {\n return this._configuration.tableOfContent;\n }\n\n public getHeader(): IHeaderConfiguration | undefined {\n return this._configuration.header;\n }\n\n public getShowcaseItems(): IShowcaseItem[] {\n return this._configuration.showcaseItems || [];\n }\n}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport { IDynamicComponentInstance } from './models';\n\n@Injectable()\nexport class DynamicComponentsStore {\n private _components: ComponentRef<IDynamicComponentInstance>[] = [];\n\n public dispose(): void {\n this._components.forEach((ref) => ref.destroy());\n this._components = [];\n }\n\n public addComponent(reference: ComponentRef<IDynamicComponentInstance>, element?: HTMLElement): void {\n this._components.push(reference);\n\n this._assignInputs(reference, element);\n reference.instance?.initialize?.();\n }\n\n private _assignInputs(componentRef: ComponentRef<IDynamicComponentInstance>, element?: HTMLElement): void {\n const dataset = element?.dataset;\n if (!dataset) return;\n\n Object.entries(dataset).forEach(([key, rawValue]) => {\n const value = this._parseDatasetValue(rawValue);\n const member = componentRef.instance[key];\n\n if (member && typeof (member as any).set === 'function') {\n (member as { set(v: unknown): void }).set(value);\n } else {\n (componentRef.instance as any)[key] = value;\n }\n });\n }\n\n private _parseDatasetValue(rawValue?: string): string | undefined {\n let result: string | undefined = rawValue;\n if (result?.startsWith?.('{') || result?.startsWith?.('[')) {\n try {\n result = JSON.parse(result);\n // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars\n } catch (e) { /* empty */\n }\n }\n return result;\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'f-brand-link',\n templateUrl: './f-brand-link.component.html',\n styleUrls: [ './f-brand-link.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ RouterLink ],\n})\nexport class FBrandLinkComponent {\n public readonly title = input.required<string>();\n public readonly logo = input.required<string>();\n public readonly ariaLabel = input<string>('Home');\n public readonly logoAlt = input<string>('logo');\n public readonly href = input<string>('');\n public readonly routerLink = input<string | readonly unknown[] | null>(null);\n}\n","@if (routerLink() !== null) {\n <a [routerLink]=\"routerLink()!\" class=\"brand-link\" [attr.aria-label]=\"ariaLabel()\">\n <img [src]=\"logo()\" class=\"logo\" [alt]=\"logoAlt()\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title() }}</span>\n </a>\n} @else {\n <a [href]=\"href()\" class=\"brand-link\" [attr.aria-label]=\"ariaLabel()\">\n <img [src]=\"logo()\" class=\"logo\" [alt]=\"logoAlt()\" width=\"24\" height=\"24\"/>\n <span class=\"title\">{{ title() }}</span>\n </a>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'f-search-button',\n templateUrl: './f-search-button.component.html',\n styleUrls: ['./f-search-button.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n ],\n})\nexport class FSearchButtonComponent {\n}\n","<a class=\"f-icon search\" [routerLink]=\"[]\" fragment=\"search\"></a>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild,\n} from '@angular/core';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'f-checkbox',\n templateUrl: './f-checkbox.component.html',\n styleUrls: [ './f-checkbox.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.f-checkbox-checked]': 'checked',\n },\n})\nexport class FCheckboxComponent {\n\n @Input()\n public id = `f-checkbox-${ uniqueId++ }`;\n\n @Output()\n public change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('input')\n private inputElement?: ElementRef<HTMLInputElement>;\n\n @ViewChild('label')\n public labelElement?: ElementRef<HTMLLabelElement>;\n\n @Input({ transform: booleanAttribute })\n public get checked(): boolean {\n return this.isChecked;\n }\n\n public set checked(value: boolean) {\n if (value != this.checked) {\n this.isChecked = value;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private isChecked = false;\n\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n }\n\n public onInputClick(): void {\n this.handleInputClick();\n }\n\n public onTouchTargetClick(): void {\n this.handleInputClick();\n this.inputElement?.nativeElement.focus();\n }\n\n private handleInputClick(): void {\n this.isChecked = !this.isChecked;\n this.emitChangeEvent();\n }\n\n private emitChangeEvent(): void {\n this.change.emit(this.isChecked);\n if (this.inputElement) {\n this.inputElement.nativeElement.checked = this.isChecked;\n }\n }\n\n public onInteractionEvent(event: Event): void {\n event.stopPropagation();\n }\n\n @HostListener('click', [ '$event' ])\n public preventBubblingFromLabel(event: MouseEvent): void {\n if (!!event.target && this.labelElement?.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n}\n","<input #input\n [id]=\"id\"\n type=\"checkbox\"\n [checked]=\"checked\"\n (click)=\"onInputClick()\"\n (change)=\"onInteractionEvent($event)\"/>\n<div class=\"f-checkbox-container\" (click)=\"onTouchTargetClick()\">\n <svg class=\"f-checkbox-checkmark\" focusable=\"false\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path class=\"f-checkbox-checkmark-path\" fill=\"none\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n</div>\n<label [for]=\"id\" #label>\n <ng-content></ng-content>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, HostListener, input, output, viewChild,\n} from '@angular/core';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'f-radio-button',\n templateUrl: './f-radio-button.component.html',\n styleUrls: [ './f-radio-button.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.f-radio-button-checked]': 'checked()',\n },\n})\nexport class FRadioButtonComponent {\n\n public id = input<string>(`f-radio-button-${ uniqueId++ }`);\n\n public change = output<boolean>();\n public checked = input<boolean>(false);\n\n protected labelElement = viewChild<ElementRef>('label');\n\n public onInputClick(): void {\n this._handleInputClick();\n }\n\n public onTouchTargetClick(): void {\n this._handleInputClick();\n }\n\n private _handleInputClick(): void {\n this._emitChangeEvent();\n }\n\n private _emitChangeEvent(): void {\n this.change.emit(true);\n }\n\n protected onInteractionEvent(event: Event): void {\n event.stopPropagation();\n }\n\n @HostListener('click', [ '$event' ])\n protected preventBubblingFromLabel(event: MouseEvent): void {\n if (!!event.target && this.labelElement()?.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n}\n","<input [id]=\"id()\"\n type=\"radio\"\n [checked]=\"checked()\"\n (click)=\"onInputClick()\"\n (change)=\"onInteractionEvent($event)\"/>\n<div class=\"f-radio-button-container\" (click)=\"onTouchTargetClick()\">\n <div class=\"f-radio-button-inner-circle\"></div>\n</div>\n<label [for]=\"id()\" #label>\n <ng-content></ng-content>\n</label>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n NgZone,\n OnDestroy,\n signal,\n viewChild,\n} from '@angular/core';\nimport { HamburgerButton } from './components/hamburger-button';\nimport { DocumentationStore } from '../../services';\nimport { ThemeButtonComponent } from '../../../theme';\nimport { InlineMenu } from './components/inline-menu';\nimport { MediaLinks } from './components/media-links';\nimport { DropdownMenu } from './components/dropdown-menu';\nimport { HEADER_CONFIGURATION_PROVIDER } from '../../../common';\nimport { FBrandLinkComponent } from '../../../shared';\n\n@Component({\n selector: 'f-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n HamburgerButton,\n FBrandLinkComponent,\n ThemeButtonComponent,\n InlineMenu,\n DropdownMenu,\n MediaLinks,\n ],\n})\nexport class HeaderComponent implements AfterViewInit, OnDestroy {\n protected title = inject(DocumentationStore).getTitle();\n protected image = inject(DocumentationStore).getLogo();\n protected config = inject(HEADER_CONFIGURATION_PROVIDER);\n\n protected readonly emptyNavigation = !inject(DocumentationStore).getNavigation().length;\n\n private readonly _zone = inject(NgZone);\n\n private readonly _containerRef = viewChild.required<ElementRef<HTMLElement>>('container');\n private readonly _targetRef = viewChild.required<ElementRef<HTMLElement>>('target');\n\n protected readonly overflowed = signal(false);\n protected readonly initialized = signal(false);\n\n private _rafId: number | null = null;\n private _roContainer?: ResizeObserver;\n private _roTarget?: ResizeObserver;\n\n public ngAfterViewInit(): void {\n if (typeof ResizeObserver === 'undefined') {\n this._checkOverflow(true);\n return;\n }\n this._initObservers();\n this._checkOverflow(true); // первый замер синхронно\n }\n\n private _initObservers(): void {\n const container = this._containerRef().nativeElement;\n const target = this._targetRef().nativeElement;\n\n this._zone.runOutsideAngular(() => {\n const cb = () => this._scheduleCheck();\n this._roContainer = new ResizeObserver(cb);\n this._roTarget = new ResizeObserver(cb);\n\n this._roContainer.observe(container);\n this._roTarget.observe(target);\n });\n }\n\n private _scheduleCheck(): void {\n if (this._rafId != null) return;\n this._rafId = requestAnimationFrame(() => {\n this._rafId = null;\n this._checkOverflow(false);\n });\n }\n\n private _checkOverflow(isFirst: boolean): void {\n const container = this._containerRef().nativeElement;\n const target = this._targetRef().nativeElement;\n if (!container || !target) return;\n\n const next = target.scrollWidth >= container.clientWidth;\n\n if (next !== this.overflowed() || !this.initialized()) {\n this._zone.run(() => {\n this.overflowed.set(next);\n if (isFirst) this.initialized.set(true);\n });\n }\n }\n\n public ngOnDestroy(): void {\n this._roContainer?.disconnect();\n this._roTarget?.disconnect();\n if (this._rafId != null) cancelAnimationFrame(this._rafId);\n }\n}\n","@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","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\n\n@Component({\n selector: 'f-navigation-group',\n templateUrl: './navigation-group.component.html',\n styleUrls: [ './navigation-group.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.collapsed]': 'isCollapsed()',\n '[class.no-title]': '!title()',\n },\n})\nexport class NavigationGroupComponent {\n public readonly title = input<string | undefined>(undefined);\n\n protected readonly isCollapsed = signal(false);\n\n protected toggle(): void {\n this.isCollapsed.set(!this.isCollapsed());\n }\n}\n","@if (title()) {\n <header (click)=\"toggle()\">\n <span>{{ title() }}</span>\n <div class=\"flex-space\"></div>\n <div class=\"caret\">\n <span class=\"chevron-right caret-icon\"></span>\n </div>\n </header>\n}\n@if (!isCollapsed()) {\n <ng-content></ng-content>\n}\n\n\n\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'a[f-navigation-item]',\n templateUrl: './f-navigation-item.component.html',\n styleUrls: [ './f-navigation-item.component.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FNavigationItemComponent {\n\n}\n","<ng-content></ng-content>\n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n HostListener,\n inject,\n OnInit,\n} from '@angular/core';\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\nimport { startWith } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { FNavigationItemComponent } from './f-navigation-item/f-navigation-item.component';\nimport { NavigationGroupComponent } from './navigation-group/navigation-group.component';\nimport { INavigationItem } from './domain';\nimport { TOGGLE_NAVIGATION_COMPONENT } from '../header';\nimport { DocumentationStore } from '../../services';\nimport { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../domain';\nimport { WINDOW } from '../../../common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'f-navigation-panel',\n templateUrl: './navigation-panel.component.html',\n styleUrls: ['./navigation-panel.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FNavigationItemComponent,\n NavigationGroupComponent,\n RouterLink,\n ],\n})\nexport class NavigationPanelComponent implements OnInit, AfterViewInit {\n private readonly _provider = inject(DocumentationStore);\n private readonly _parent = inject(TOGGLE_NAVIGATION_COMPONENT, {\n optional: true,\n });\n private readonly _router = inject(Router);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _window = inject(WINDOW);\n\n protected value: string | undefined;\n protected navigation = this._provider.getNavigation();\n protected title = this._provider.getTitle();\n protected image = this._provider.getLogo();\n\n public ngOnInit(): void {\n const currentPath = this._router.url;\n const prefix = currentPath.substring(0, currentPath.lastIndexOf('/'));\n const navigation = this._deepClone(this._provider.getNavigation());\n navigation.forEach((group) => {\n group.items.forEach((item) => this._normalizeLink(item, prefix));\n });\n this.navigation = navigation;\n }\n\n private _deepClone<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n }\n\n private _normalizeLink(item: INavigationItem, prefix: string): void {\n if (item.link && !this._isExternalLink(item.link)) {\n item.link = item.link.startsWith('/')\n ? `${prefix}${item.link}`\n : `${prefix}/${item.link}`;\n }\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n public ngAfterViewInit(): void {\n this._subscribeOnRouteChanges();\n }\n\n private _subscribeOnRouteChanges(): void {\n this._router.events\n .pipe(\n startWith(new NavigationEnd(1, '', '')),\n filter((event) => event instanceof NavigationEnd),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n this._highlightLink(this._router.url);\n this._parent?.onToggleNavigation(false);\n this._changeDetectorRef.detectChanges();\n });\n }\n\n private _highlightLink(url: string): void {\n this.value = undefined;\n this.navigation.forEach((group) => {\n this.value =\n group.items.find((x) => {\n return url.endsWith(x.link);\n })?.link || this.value;\n });\n }\n\n @HostListener('click', ['$event'])\n protected _onDocumentClick(event: MouseEvent): void {\n new HandleNavigationLinksHandler().handle(\n new HandleNavigationLinksRequest(event, this._window, this._router),\n );\n }\n}\n","<a routerLink class=\"navigation-header\">\n <img [src]=\"image\" width=\"24\" height=\"24\" alt=\"logo\" class=\"logo\"/> {{ title }}\n</a>\n\n@for (group of navigation; track group) {\n <f-navigation-group [title]=\"group.text\">\n @for (item of group.items; track item.link) {\n <a f-navigation-item [href]=\"item.link\" [class.active]=\"item.link === value\">\n <div class=\"text-ellipsis\">{{ item.text }}</div>\n @if (item.badge) {\n <span class=\"f-badge {{ item.badge.type }}\">{{ item.badge.text }}</span>\n }\n </a>\n }\n </f-navigation-group>\n}\n\n","import { IMarkdownFooterLink } from '../i-markdown-footer-link';\n\nexport class GetPreviousNextPageNavigationResponse {\n\n constructor(\n public previousLink: IMarkdownFooterLink | undefined,\n public nextLink: IMarkdownFooterLink | undefined,\n ) {\n\n }\n}\n","import { GetPreviousNextPageNavigationRequest } from './get-previous-next-page-navigation.request';\nimport { GetPreviousNextPageNavigationResponse } from './get-previous-next-page-navigation.response';\nimport { IMarkdownFooterLink } from '../i-markdown-footer-link';\nimport { DocumentationStore } from '../../../../../services';\n\nexport class GetPreviousNextPageNavigationHandler {\n\n constructor(\n private _provider: DocumentationStore,\n ) {\n }\n\n public handle(request: GetPreviousNextPageNavigationRequest): GetPreviousNextPageNavigationResponse {\n let previous: IMarkdownFooterLink | undefined = undefined;\n let next: IMarkdownFooterLink | undefined = undefined;\n\n this._provider.getNavigation().forEach((group, groupIndex: number) => {\n (group.items || []).forEach((item, index) => {\n if (item.link === request.currentLink) {\n if (index > 0) {\n previous = { ...group.items[ index - 1 ] };\n } else {\n if (groupIndex > 0) {\n const previousGroup = this._provider.getNavigation()[ groupIndex - 1 ];\n previous = { ...previousGroup.items[ previousGroup.items.length - 1 ] };\n }\n }\n if (index < group.items.length - 1) {\n next = { ...group.items[ index + 1 ] };\n } else {\n if (groupIndex < this._provider.getNavigation().length - 1) {\n const nextGroup = this._provider.getNavigation()[ groupIndex + 1 ];\n next = { ...nextGroup.items[ 0 ] };\n }\n }\n }\n });\n });\n return new GetPreviousNextPageNavigationResponse(previous, next);\n }\n}\n","export class GetPreviousNextPageNavigationRequest {\n\n constructor(\n public currentLink: string,\n ) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component, Input,\n} from '@angular/core';\nimport { IMarkdownFooterLink } from '../domain';\n\n@Component({\n selector: 'a[footer-navigation-button]',\n templateUrl: './footer-navigation-button.html',\n styleUrls: [ './footer-navigation-button.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FooterNavigationButton {\n\n @Input({ required: true })\n public description: string | undefined;\n\n @Input({ required: true })\n public link!: IMarkdownFooterLink;\n}\n","<span class=\"description\">{{ description }}</span>\n<span class=\"page-title\">{{ link.text }}</span>\n","import {\n ChangeDetectionStrategy,\n Component, computed,\n HostListener,\n inject,\n} from '@angular/core';\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport {\n GetPreviousNextPageNavigationHandler,\n GetPreviousNextPageNavigationRequest,\n IMarkdownFooterLink,\n} from './domain';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DocumentationStore } from '../../../services';\nimport { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../../domain';\nimport { WINDOW } from '../../../../common';\nimport { FooterNavigationButton } from './footer-navigation-button';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'markdown-footer',\n templateUrl: './markdown-footer.html',\n styleUrls: ['./markdown-footer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FooterNavigationButton,\n ],\n standalone: true,\n})\nexport class MarkdownFooter {\n\n private readonly _provider = inject(DocumentationStore);\n private readonly _router = inject(Router);\n private readonly _activatedRoute = inject(ActivatedRoute);\n private readonly _window = inject(WINDOW);\n\n protected readonly navigation = this._provider.getFooterNavigation();\n\n private readonly _url = toSignal(this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._router.url),\n distinctUntilChanged(),\n ), { initialValue: this._router.url });\n\n private readonly _currentLink = computed(() => {\n this._url();\n return this._activatedRoute.snapshot.url.map(s => s.path).join('/');\n });\n\n private readonly _prefix = computed(() => {\n const url = this._url();\n const idx = url.lastIndexOf('/');\n return idx > 0 ? url.substring(0, idx) : '';\n });\n\n protected readonly editLink = computed<string | undefined>(() => {\n const nav = this.navigation;\n if (!nav.editLink?.pattern) return undefined;\n return nav.editLink.pattern + this._currentLink() + '.md';\n });\n\n protected readonly previousLink = computed<IMarkdownFooterLink | undefined>(() => {\n const prevNext = new GetPreviousNextPageNavigationHandler(this._provider)\n .handle(new GetPreviousNextPageNavigationRequest(this._currentLink()));\n return this._normalizeLink(prevNext.previousLink);\n });\n\n protected readonly nextLink = computed<IMarkdownFooterLink | undefined>(() => {\n const prevNext = new GetPreviousNextPageNavigationHandler(this._provider)\n .handle(new GetPreviousNextPageNavigationRequest(this._currentLink()));\n return this._normalizeLink(prevNext.nextLink);\n });\n\n private _normalizeLink(item?: IMarkdownFooterLink): IMarkdownFooterLink | undefined {\n if (!item?.link) return item;\n if (this._isExternal(item.link)) return item;\n\n const prefix = this._prefix();\n const joined = (prefix ? `${prefix}/${item.link}` : item.link)\n .replace(/\\/{2,}/g, '/');\n\n return { ...item, link: joined.startsWith('/') ? joined : `/${joined}` };\n }\n\n private _isExternal(href: string): boolean {\n return /^(?:[a-z]+:)?\\/\\//i.test(href) || href.startsWith('www.');\n }\n\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n new HandleNavigationLinksHandler().handle(\n new HandleNavigationLinksRequest(event, this._window, this._router),\n );\n }\n}\n","@let eLink = editLink();\n@let pLink = previousLink();\n@let nLink = nextLink();\n\n@if (eLink) {\n <a class=\"footer-edit-link\" [href]=\"eLink\">\n <span class=\"edit-link-icon f-icon edit\"></span>\n {{ navigation.editLink?.text || 'Edit this page on GitHub' }}\n </a>\n}\n\n@if (pLink || nLink) {\n <nav class=\"footer-navigation\">\n @if (pLink) {\n <a footer-navigation-button\n [href]=\"pLink.link\"\n [description]=\"navigation.previous\"\n [link]=\"pLink\">\n </a>\n }\n @if (nLink) {\n <a footer-navigation-button class=\"next\"\n [href]=\"nLink.link\"\n [description]=\"navigation.next\"\n [link]=\"nLink\">\n </a>\n }\n </nav>\n}\n\n","export enum EMarkdownContainerType {\n\n CODE_GROUP = 'code-group',\n\n EXAMPLE_GROUP = 'ng-component',\n\n PREVIEW_GROUP = 'preview-group',\n\n SHOWCASE = 'showcase',\n\n ALERT_TIP = 'tip',\n\n ALERT_INFO = 'info',\n\n ALERT_WARNING = 'warning',\n\n ALERT_DANGER = 'danger',\n\n ALERT_SUCCESS = 'success'\n}\n","export enum EParsedContainerType {\n\n CODE = 'code',\n\n EXAMPLE = 'ng-component',\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { IPreviewNavigationGroup } from \"./i-preview-navigation-group\";\n\nexport interface IPreviewNavigationService<T extends IPreviewNavigationGroup> {\n getNavigation(): T[];\n}\n\nexport const F_PREVIEW_NAVIGATION_PROVIDER = new InjectionToken<IPreviewNavigationService<IPreviewNavigationGroup>>('F_PREVIEW_NAVIGATION_PROVIDER');\n","import { ISeoOverrides } from '../../../../analytics';\n\nexport interface IMarkdownPageLayoutOptions {\n hideTableOfContent: boolean;\n expandContentWithoutTableOfContent: boolean;\n}\n\nexport interface IMarkdownFrontMatterData {\n layout: IMarkdownPageLayoutOptions;\n seo: ISeoOverrides | null;\n}\n\nexport interface IMarkdownFrontMatterParseResult {\n markdown: string;\n data: IMarkdownFrontMatterData;\n}\n\nexport const DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS: IMarkdownPageLayoutOptions = {\n hideTableOfContent: false,\n expandContentWithoutTableOfContent: false,\n};\n","import { inject, Injectable, signal } from '@angular/core';\nimport { Observable, of, switchMap } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport MarkdownIt from 'markdown-it';\n\nimport {\n DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS,\n EMarkdownContainerType,\n IMarkdownFrontMatterData,\n IMarkdownFrontMatterParseResult,\n IMarkdownPageLayoutOptions,\n ParseAlerts,\n ParseAngularExampleWithCodeLinks,\n ParseGroupedCodeItems,\n ParsePreviewGroup, ParseShowcase,\n ParseSingleCodeItem,\n} from './index';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { catchError, take } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { F_PREVIEW_NAVIGATION_PROVIDER } from './domain';\nimport { ISeoOverrides } from '../../../analytics';\n\n@Injectable()\nexport class MarkdownService {\n\n private readonly _markdown = new MarkdownIt({ html: true, linkify: true });\n private readonly _httpClient = inject(HttpClient);\n private readonly _domSanitizer = inject(DomSanitizer);\n private readonly _router = inject(Router);\n private readonly _provider = inject(F_PREVIEW_NAVIGATION_PROVIDER, { optional: true });\n private readonly _pageLayout = signal<IMarkdownPageLayoutOptions>({ ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS });\n private readonly _pageSeo = signal<ISeoOverrides | null>(null);\n\n public readonly pageLayout = this._pageLayout.asReadonly();\n public readonly pageSeo = this._pageSeo.asReadonly();\n\n constructor() {\n this._markdown\n .use((x) => new ParseSingleCodeItem().render(x))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_TIP, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_INFO, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_WARNING, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_DANGER, this._markdown))\n .use(...new ParseAlerts().render(EMarkdownContainerType.ALERT_SUCCESS, this._markdown))\n .use(...new ParseGroupedCodeItems().render())\n .use(...new ParsePreviewGroup(this._provider?.getNavigation() || []).render())\n .use(...new ParseShowcase().render())\n .use(...new ParseAngularExampleWithCodeLinks().render());\n }\n\n public parseUrl(src: string): Observable<SafeHtml> {\n this._resetPageContext();\n\n return this._httpClient.get(src, { responseType: 'text' }).pipe(take(1), catchError(() => of(''))).pipe(\n switchMap((text) => of(this._renderMarkdownWithPageContext(text))),\n switchMap((x) => of(this._cleanupEmptyParagraphs(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromExampleView(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromPreviewGroup(x))),\n switchMap((x) => of(this._normalizeLinks(x))),\n switchMap((x) => of(this._domSanitizer.bypassSecurityTrustHtml(x))),\n );\n }\n\n public parseText(value: string): Observable<SafeHtml> {\n this._resetPageContext();\n\n return of(this._renderMarkdownWithPageContext(value)).pipe(\n switchMap((x) => of(this._cleanupEmptyParagraphs(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromExampleView(x))),\n switchMap((x) => of(this._cleanupWasteParagraphFromPreviewGroup(x))),\n switchMap((x) => of(this._normalizeLinks(x))),\n switchMap((x) => of(this._domSanitizer.bypassSecurityTrustHtml(x))),\n );\n }\n\n private _normalizeLinks(html: string): string {\n const currentPath = this._router.url;\n const prefix = currentPath.substring(0, currentPath.lastIndexOf('/'));\n\n return html.replace(/<a\\s+href=\"([^\"]*)\"/g, (match, href) => {\n if (!this._isExternalLink(href)) {\n let newHref = href.substring(0);\n if (!href.startsWith('./')) {\n newHref = href.startsWith('/') ? `${prefix}${href}` : `${prefix}/${href}`;\n }\n return `<a href=\"${newHref}\"`;\n }\n return match;\n });\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n private _cleanupEmptyParagraphs(html: string): string {\n return html.replace(/<p>\\s*<\\/p>/g, '');\n }\n\n private _cleanupWasteParagraphFromExampleView(html: string): string {\n return html.replace(/<div class=\"f-code-group-body\">\\s*<p>[^<]*<\\/p>/g, '<div class=\"f-code-group-body\">');\n }\n\n private _cleanupWasteParagraphFromPreviewGroup(html: string): string {\n return html.replace(/<p>(\\[[^\\]]+\\](\\s*\\[[^\\]]+\\])*)<\\/p>/g, '');\n }\n\n private _renderMarkdownWithPageContext(markdown: string): string {\n const result = this._parseFrontMatter(markdown);\n this._applyPageContext(result.data);\n\n return this._markdown.render(result.markdown);\n }\n\n private _parseFrontMatter(markdown: string): IMarkdownFrontMatterParseResult {\n const source = (markdown || '').replace(/^\\uFEFF/, '');\n const match = source.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---(?:\\r?\\n|$)/);\n\n const defaults = this._getDefaultFrontMatterData();\n if (!match || !match[1].includes(':')) {\n return {\n markdown: source,\n data: defaults,\n };\n }\n\n const rawFrontMatter = match[1];\n const parsedData = this._parseFrontMatterData(rawFrontMatter);\n\n return {\n markdown: source.slice(match[0].length),\n data: parsedData,\n };\n }\n\n private _parseFrontMatterData(rawFrontMatter: string): IMarkdownFrontMatterData {\n const layout: IMarkdownPageLayoutOptions = { ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS };\n const seo: ISeoOverrides = {};\n\n rawFrontMatter\n .split(/\\r?\\n/)\n .forEach((line) => this._parseFrontMatterLine(line, layout, seo));\n\n return {\n layout,\n seo: Object.keys(seo).length ? seo : null,\n };\n }\n\n private _parseFrontMatterLine(line: string, layout: IMarkdownPageLayoutOptions, seo: ISeoOverrides): void {\n const normalizedLine = line.trim();\n if (!normalizedLine || normalizedLine.startsWith('#')) {\n return;\n }\n\n const separatorIndex = normalizedLine.indexOf(':');\n if (separatorIndex < 0) {\n return;\n }\n\n const key = normalizedLine.slice(0, separatorIndex).trim().toLowerCase();\n const value = this._normalizeFrontMatterValue(normalizedLine.slice(separatorIndex + 1));\n if (!key || !value) {\n return;\n }\n\n const boolValue = this._parseBoolean(value);\n this._applyLayoutKey(key, boolValue, layout);\n this._applySeoKey(key, value, boolValue, seo);\n }\n\n private _normalizeFrontMatterValue(value: string): string {\n const trimmed = value.trim();\n if ((trimmed.startsWith('\"') && trimmed.endsWith('\"')) || (trimmed.startsWith('\\'') && trimmed.endsWith('\\''))) {\n return trimmed.slice(1, -1).trim();\n }\n return trimmed;\n }\n\n private _parseBoolean(value: string): boolean | null {\n const normalized = value.toLowerCase();\n if ([ 'true', '1', 'yes', 'on' ].includes(normalized)) {\n return true;\n }\n\n if ([ 'false', '0', 'no', 'off' ].includes(normalized)) {\n return false;\n }\n\n return null;\n }\n\n private _applyLayoutKey(key: string, boolValue: boolean | null, layout: IMarkdownPageLayoutOptions): void {\n if (boolValue === null) {\n return;\n }\n\n switch (key) {\n case 'toc':\n case 'showtoc':\n case 'tableofcontent':\n case 'table_of_content':\n layout.hideTableOfContent = !boolValue;\n return;\n case 'hidetoc':\n case 'hide_toc':\n layout.hideTableOfContent = boolValue;\n return;\n case 'widecontent':\n case 'expandcontent':\n case 'expandwithouttoc':\n case 'expand_no_toc':\n case 'widetableofcontentgap':\n layout.expandContentWithoutTableOfContent = boolValue;\n return;\n }\n }\n\n private _applySeoKey(key: string, value: string, boolValue: boolean | null, seo: ISeoOverrides): void {\n switch (key) {\n case 'title':\n case 'seotitle':\n seo.title = value;\n return;\n case 'description':\n case 'seodescription':\n seo.description = value;\n return;\n case 'canonical':\n case 'seocanonical':\n seo.canonical = value;\n return;\n case 'keywords':\n case 'seokeywords':\n seo.keywords = value;\n return;\n case 'robots':\n case 'seorobots':\n seo.robots = value;\n return;\n case 'image':\n case 'seoimage':\n seo.image = value;\n return;\n case 'imagetype':\n case 'image_type':\n seo.image_type = value;\n return;\n case 'imagewidth':\n case 'image_width':\n seo.image_width = this._parseNumberOrDefault(value, seo.image_width);\n return;\n case 'imageheight':\n case 'image_height':\n seo.image_height = this._parseNumberOrDefault(value, seo.image_height);\n return;\n case 'ogtype':\n case 'og_type':\n seo.og_type = value;\n return;\n case 'ogtitle':\n case 'og_title':\n seo.og_title = value;\n return;\n case 'ogdescription':\n case 'og_description':\n seo.og_description = value;\n return;\n case 'ogimage':\n case 'og_image':\n seo.og_image = value;\n return;\n case 'twittercard':\n case 'twitter_card':\n seo.twitter_card = value;\n return;\n case 'twittertitle':\n case 'twitter_title':\n seo.twitter_title = value;\n return;\n case 'twitterdescription':\n case 'twitter_description':\n seo.twitter_description = value;\n return;\n case 'twitterimage':\n case 'twitter_image':\n seo.twitter_image = value;\n return;\n case 'noindex':\n if (boolValue !== null) {\n seo.noindex = boolValue;\n }\n return;\n case 'nofollow':\n if (boolValue !== null) {\n seo.nofollow = boolValue;\n }\n return;\n }\n }\n\n private _parseNumberOrDefault(value: string, fallback: number | undefined): number | undefined {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue) || numericValue <= 0) {\n return fallback;\n }\n return numericValue;\n }\n\n private _applyPageContext(data: IMarkdownFrontMatterData): void {\n this._pageLayout.set({ ...data.layout });\n this._pageSeo.set(data.seo ? { ...data.seo } : null);\n }\n\n private _resetPageContext(): void {\n this._applyPageContext(this._getDefaultFrontMatterData());\n }\n\n private _getDefaultFrontMatterData(): IMarkdownFrontMatterData {\n return {\n layout: { ...DEFAULT_MARKDOWN_PAGE_LAYOUT_OPTIONS },\n seo: null,\n };\n }\n}\n","import { IMarkdownItToken } from './domain';\n\nexport function getContent(tokens: IMarkdownItToken[], index: number, eContainerType: string): string | undefined {\n let result: string | undefined;\n\n for (let i = index + 1; i < tokens.length; i++) {\n if (tokens[ i ].type === `container_${ eContainerType }_close`) {\n break;\n }\n if (isInlineToken(tokens[ i ])) {\n result = tokens[ i ].content;\n break;\n }\n }\n return result;\n}\n\nfunction isInlineToken(token: IMarkdownItToken): boolean {\n return token.type === 'inline' && !token.tag;\n}\n\nexport function encodeDataAttr(data: unknown): string {\n return JSON.stringify(data).replace(/\"/g, '&quot;');\n}\n\nexport function isOpeningToken(token: IMarkdownItToken): boolean {\n return token.nesting === 1;\n}\n\nexport function isClosingToken(token: IMarkdownItToken): boolean {\n return token.nesting === -1;\n}\n\nexport function parseFileLinkLine(line: string): { fileName: string, url: string } | null {\n const match = line.match(/\\[(.+?)\\]\\s*<<<\\s*(.+)/);\n if (!match) return null;\n\n const fileName = match[1].trim();\n let url = match[2].trim();\n\n const markdownLink = url.match(/^\\[[^\\]]+]\\((.+)\\)$/);\n if (markdownLink) {\n url = markdownLink[1].trim();\n }\n\n const angleWrapped = url.match(/^<(.+)>$/);\n if (angleWrapped) {\n url = angleWrapped[1].trim();\n }\n\n return url ? { fileName, url } : null;\n}\n\nexport function parseSingleBracketText(line: string): string | null {\n const match = line.match(/\\[(.+?)\\]/);\n return match ? match[1] : null;\n}\n","import MarkdownIt from 'markdown-it';\nimport container from 'markdown-it-container';\nimport { IMarkdownItToken } from './domain';\nimport { isOpeningToken } from './utils';\n\ntype ContainerArgs = [ typeof container, string, { render: any } ]\n\nexport class ParseAlerts {\n\n public render(type: string, markdown: MarkdownIt): ContainerArgs {\n return [ container, type, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n const token = tokens[ index ];\n const info = token.info.trim().slice(type.length).trim();\n if (isOpeningToken(token)) {\n const title = markdown.renderInline(info);\n return `<div class=\"f-alert ${ type }\"><p class=\"f-alert-title\">${ title }</p>\\n`;\n } else {\n return `</div>\\n`;\n }\n },\n } ];\n }\n}\n","import container from 'markdown-it-container';\nimport { EMarkdownContainerType } from './domain';\nimport { IMarkdownItToken } from './domain';\nimport { EParsedContainerType, IParsedContainerData } from \"./domain\";\nimport { encodeDataAttr, isClosingToken, isOpeningToken } from './utils';\n\ntype ContainerArgs = [typeof container, string, { render: any }]\nconst F_CONTAINER_CLOSE_TAG = 'container_code-group_close';\n\nexport class ParseGroupedCodeItems {\n\n public render(): ContainerArgs {\n return [container, EMarkdownContainerType.CODE_GROUP, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n if (isOpeningToken(tokens[index])) {\n return this._openingExampleGroupHTML(this._generateData(tokens, index));\n }\n return '</f-code-group>';\n },\n }];\n }\n\n private _generateData(tokens: IMarkdownItToken[], index: number): IParsedContainerData[] {\n const result: IParsedContainerData[] = [];\n\n for (let i = index + 1; !this._isClosingToken(tokens, i); i++) {\n if (this._isCodeFenceToken(tokens[i])) {\n result.push({\n tab: this._getCodeBlockTitle(tokens[i].info),\n value: tokens[i].content,\n type: EParsedContainerType.CODE,\n isLink: false,\n height: 'auto',\n language: this._getCodeLanguage(tokens[i].info),\n });\n }\n }\n\n return result;\n }\n\n private _isClosingToken(token: IMarkdownItToken[], index: number): boolean {\n return isClosingToken(token[index]) && token[index].type === F_CONTAINER_CLOSE_TAG;\n }\n\n private _isCodeFenceToken(token: IMarkdownItToken): boolean {\n return token.type === 'fence' && token.tag === 'code';\n }\n\n private _openingExampleGroupHTML(data: IParsedContainerData[]): string {\n return `<f-code-group data-data=\"${encodeDataAttr(data)}\">`;\n }\n\n private _getCodeBlockTitle(data: string): string {\n return data.match(/\\[(.*)\\]/)?.[1] || this._getCodeLanguage(data) || 'txt';\n }\n\n private _getCodeLanguage(data: string): string {\n const match = data.trim().match(/^([a-zA-Z0-9_-]+)/);\n return match ? match[1] : '';\n }\n}\n","import MarkdownIt from 'markdown-it';\nimport { IMarkdownItToken } from './domain';\nimport { EParsedContainerType, IParsedContainerData } from './domain';\nimport { encodeDataAttr } from './utils';\n\nexport class ParseSingleCodeItem {\n\n public render(markdown: MarkdownIt): void {\n const fence = markdown.renderer.rules.fence;\n if (!fence) {\n throw new Error('Markdown renderer does not have a fence rule.');\n }\n\n markdown.renderer.rules.fence = (tokens: IMarkdownItToken[], index: number) => {\n const data = this._getTokenData(tokens[index]);\n return (\n `<f-code-group data-data=\"${encodeDataAttr([this._createCodeData(data)])}\"></f-code-group>`\n );\n };\n }\n\n private _getTokenData(token: IMarkdownItToken): ITokenData {\n return { value: token.content, language: token.info };\n }\n\n private _createCodeData({ value, language }: ITokenData): IParsedContainerData {\n return {\n tab: '',\n value,\n language,\n type: EParsedContainerType.CODE,\n };\n }\n}\n\ninterface ITokenData {\n value: string;\n language: string;\n}\n","import { EMarkdownContainerType } from './domain';\nimport { IMarkdownItToken } from './domain';\n\nimport container from 'markdown-it-container';\nimport { EParsedContainerType, IMarkdownContainerData, IParsedContainerData } from './domain';\nimport { encodeDataAttr, getContent, isOpeningToken, parseFileLinkLine } from './utils';\n\ntype ContainerArgs = [typeof container, string, { render: any }];\n\nexport class ParseAngularExampleWithCodeLinks {\n\n public render(): ContainerArgs {\n return [container, EMarkdownContainerType.EXAMPLE_GROUP, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n return isOpeningToken(tokens[index]) ? this._opening(tokens, index) : '</f-code-group>';\n },\n }];\n }\n\n private _opening(tokens: IMarkdownItToken[], index: number): string {\n const data = this._collectData(tokens, index);\n return `<f-code-group data-data=\"${encodeDataAttr(data)}\">`;\n }\n\n private _collectData(tokens: IMarkdownItToken[], index: number): IParsedContainerData[] {\n const result: IParsedContainerData[] = [];\n\n const source = this._parseNgComponent(tokens[index]);\n const height = source?.height || 'auto';\n if (source) {\n result.push({\n tab: 'Example',\n value: source.value,\n type: EParsedContainerType.EXAMPLE,\n height,\n });\n }\n\n const content = getContent(tokens, index, EMarkdownContainerType.EXAMPLE_GROUP);\n const items = (content || '').split('\\n').map(parseFileLinkLine).filter(Boolean) as {\n fileName: string,\n url: string\n }[];\n items.forEach(({ fileName, url }) => result.push({\n tab: fileName,\n value: url,\n isLink: true,\n type: EParsedContainerType.CODE,\n height,\n }));\n\n return result;\n }\n\n private _parseNgComponent(token: IMarkdownItToken): IMarkdownContainerData | null {\n const cleanedInput = token.info.replace(/^ng-component\\s*/, '').trim();\n const height = this._parseHeight(cleanedInput);\n\n const componentTag = cleanedInput.match(/<([a-zA-Z][a-zA-Z0-9-]*)(\\s[^>]*)?>\\s*<\\/\\1>/s)?.[0]?.trim();\n if (componentTag) {\n return {\n value: componentTag,\n height,\n };\n }\n\n const explicitUrl = cleanedInput.match(/\\[url\\]=[\"']([^\"']+)[\"']/)?.[1]?.trim();\n if (explicitUrl) {\n return {\n value: explicitUrl,\n height,\n };\n }\n\n const implicitUrl = cleanedInput\n .replace(/\\[height\\]=[\"'][^\"']*[\"']/g, '')\n .trim()\n .replace(/^[\"']|[\"']$/g, '');\n\n if (!implicitUrl || implicitUrl.includes('<')) return null;\n\n return {\n value: implicitUrl,\n height,\n };\n }\n\n private _parseHeight(input: string): string | number | undefined {\n const rawHeight = input.match(/\\[height\\]=[\"']([^\"']+)[\"']/)?.[1]?.trim();\n if (!rawHeight) return undefined;\n\n const numericHeight = Number(rawHeight);\n return Number.isFinite(numericHeight) ? numericHeight : rawHeight;\n }\n}\n","import { EMarkdownContainerType, IMarkdownItToken, IPreviewNavigationGroup } from './domain';\n\nimport container from 'markdown-it-container';\nimport { getContent, isOpeningToken, parseSingleBracketText } from './utils';\n\ntype ContainerArgs = [ typeof container, string, { render: any } ]\n\nexport class ParsePreviewGroup {\n\n constructor(\n private _navigation: IPreviewNavigationGroup[],\n ) {\n }\n\n public render(): ContainerArgs {\n return [ container, EMarkdownContainerType.PREVIEW_GROUP, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n if (isOpeningToken(tokens[index])) {\n return this._getGroupsHTML(this._generateData(tokens, index));\n }\n return '';\n },\n } ];\n }\n\n private _generateData(tokens: IMarkdownItToken[], index: number): IPreviewNavigationGroup[] {\n const groups: IPreviewNavigationGroup[] = [];\n\n this._parseData(getContent(tokens, index, EMarkdownContainerType.PREVIEW_GROUP) || '').forEach((x: string) => {\n const group = this._navigation.find((g) => g.text === x || g.id === x);\n if (group) {\n groups.push(group)\n }\n });\n\n return groups;\n }\n\n private _parseData(data: string): string[] {\n return data.split('\\n').map(parseSingleBracketText).filter(Boolean) as string[];\n }\n\n private _getGroupsHTML(groups: IPreviewNavigationGroup[]): string {\n const result = (groups || []).map((x) => {\n return `<h2>${ x.text }</h2><div class=\"f-preview-group\">${ this._getItemsHTML(x) }</div>`;\n }).join('');\n\n return this._getGroupFiltersHTML() + result;\n }\n\n private _getGroupFiltersHTML(): string {\n return `<f-preview-group-filters></f-preview-group-filters>`;\n }\n\n private _getItemsHTML(group: IPreviewNavigationGroup): string {\n return group.items.map((item) => {\n return `<f-preview data-group=\"${ group.text }\" data-item=\"${ item.link }\"></f-preview>`\n }).join('');\n }\n}\n","import { EMarkdownContainerType, IMarkdownItToken } from './domain';\n\nimport container from 'markdown-it-container';\nimport { isOpeningToken } from './utils';\n\ntype ContainerArgs = [ typeof container, string, { render: any } ]\n\nexport class ParseShowcase {\n\n public render(): ContainerArgs {\n return [ container, EMarkdownContainerType.SHOWCASE, {\n render: (tokens: IMarkdownItToken[], index: number) => {\n if (isOpeningToken(tokens[index])) {\n return `<showcase></showcase>`;\n }\n return '';\n },\n } ];\n }\n}\n","import { inject, Injectable, Injector, Type } from '@angular/core';\nimport { IExecution } from './i-execution';\n\n@Injectable()\nexport class Mediatr {\n private readonly _injector = inject(Injector);\n\n private static _executions = new Map<symbol, Type<IExecution<any, any>>>();\n\n public static register<TRequest, TResponse>(\n type: any, handler: Type<IExecution<TRequest, TResponse>>,\n ): void {\n if (!type || !type.requestToken) {\n throw new Error('Type must have a requestToken static property');\n }\n Mediatr._executions.set(type.requestToken, handler);\n }\n\n public execute<TResponse>(request: any): TResponse {\n const token = request.constructor.requestToken;\n\n const handlerType = Mediatr._executions.get(token);\n if (!handlerType) {\n throw new Error(`No handler registered for token`, token);\n }\n\n const handler = this._injector.get(handlerType);\n return handler.handle(request);\n }\n}\n","import { IExecution } from './i-execution';\nimport { Mediatr } from './mediatr';\nimport { Type } from '@angular/core';\n\ntype Constructor<T = any> = new (...args: any[]) => T;\n\nexport function MExecution<TRequest, TResponse>(requestType: Type<TRequest>) {\n return function (constructor: Constructor<IExecution<TRequest, TResponse>>) {\n Mediatr.register(requestType, constructor);\n };\n}\n","export function coerceComponentHeight(value: string | number | undefined): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? `${ value }px` : undefined;\n }\n\n const normalizedValue = value.trim();\n if (!normalizedValue) return undefined;\n\n if (normalizedValue === 'auto') return 'auto';\n\n const numericValue = Number(normalizedValue);\n if (Number.isFinite(numericValue) && numericValue > 0) {\n return `${ numericValue }px`;\n }\n\n if (/^-?\\d+(\\.\\d+)?(px|%|vh|vw|vmin|vmax|rem|em|ch|ex|cm|mm|in|pt|pc)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n if (/^calc\\(.+\\)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n return undefined;\n}\n","const URL_PROTOCOL_REGEX = /^(https?:\\/\\/|\\/\\/|\\/(?!\\/)|\\.\\.?\\/)/i;\nconst BARE_DOMAIN_REGEX = /^(localhost(?::\\d+)?|([a-z0-9-]+\\.)+[a-z]{2,})(\\/.*)?$/i;\nconst UNSAFE_PROTOCOL_REGEX = /^(javascript|data|vbscript):/i;\n\nexport function parseIframeUrl(value: string): string | null {\n if (!value) return null;\n\n const normalizedValue = value.trim();\n const urlFromAttr = normalizedValue.match(/\\[url\\]=[\"']([^\"']+)[\"']/)?.[1]?.trim();\n const candidate = (urlFromAttr || normalizedValue).replace(/^[\"']|[\"']$/g, '').trim();\n\n if (!candidate || candidate.includes('<') || UNSAFE_PROTOCOL_REGEX.test(candidate)) {\n return null;\n }\n\n if (URL_PROTOCOL_REGEX.test(candidate)) {\n return candidate;\n }\n\n if (BARE_DOMAIN_REGEX.test(candidate)) {\n return `https://${ candidate }`;\n }\n\n return null;\n}\n","export function parseComponentTag(html: string): string | null {\n const regex = /^<([a-zA-Z][a-zA-Z0-9-]*)(\\s+[^>]+)?>\\s*<\\/\\1>$/s;\n const match = regex.exec(html.trim());\n return match ? match[1] : null;\n}\n","import { ViewContainerRef } from '@angular/core';\nimport { IDynamicComponentItem } from '../../models';\n\nexport class RenderDynamicComponentRequest {\n static readonly requestToken = Symbol('RenderDynamicComponentRequest');\n\n constructor(\n public readonly item: IDynamicComponentItem,\n public readonly viewContainerRef: ViewContainerRef,\n public readonly element?: HTMLElement,\n ) {\n }\n}\n","import { RenderDynamicComponentRequest } from './render-dynamic-component-request';\nimport { ComponentRef, inject, Injectable, ViewContainerRef } from '@angular/core';\nimport { DynamicComponentsStore } from '../../dynamic-components.store';\nimport { IExecution, MExecution } from '../../../mediatr';\nimport { IDynamicComponentItem } from '../../models';\n\n@Injectable()\n@MExecution(RenderDynamicComponentRequest)\nexport class RenderDynamicComponent implements IExecution<RenderDynamicComponentRequest, void>{\n\n private readonly _dynamicStore = inject(DynamicComponentsStore);\n\n public handle({ item, viewContainerRef, element }: RenderDynamicComponentRequest): void {\n try {\n this._renderComponent(item, viewContainerRef, element);\n } catch (error) {\n this._logError(item.selector, error);\n }\n }\n\n private _renderComponent({ selector, component }: IDynamicComponentItem, viewContainerRef: ViewContainerRef, element?: HTMLElement): void {\n component.then(extracted => {\n if (!extracted) {\n this._logComponentResolutionError(selector);\n return;\n }\n\n const componentRef = viewContainerRef.createComponent(extracted);\n this._dynamicStore.addComponent(componentRef, element);\n\n element?.replaceWith(this._extractComponentRoot(componentRef));\n }).catch(error => this._logComponentLoadingError(selector, error));\n }\n\n private _extractComponentRoot(componentRef: ComponentRef<any>): HTMLElement {\n componentRef.changeDetectorRef.markForCheck();\n return (componentRef.hostView as any).rootNodes[0] as HTMLElement;\n }\n\n private _logComponentResolutionError(tag: string): void {\n console.error(`Component for tag \"${tag}\" could not be resolved.`);\n }\n\n private _logComponentLoadingError(tag: string, error: object): void {\n console.error(`Error while loading component for tag \"${tag}\":`, error);\n }\n\n private _logError(tag: string, error: any): void {\n console.error(`Error inserting component for <${tag}>:`, error);\n }\n}\n","import { ViewContainerRef } from '@angular/core';\n\nexport class RenderExternalComponentRequest {\n public static readonly requestToken = Symbol('RenderExternalComponentRequest');\n\n constructor(\n public readonly selector: string,\n public readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IDynamicComponentItem } from '../models';\n\nexport const EXTERNAL_COMPONENT_PROVIDER = new InjectionToken<IDynamicComponentItem[]>('EXTERNAL_COMPONENT_PROVIDER');\n","import { RenderExternalComponentRequest } from './render-external-component-request';\nimport { inject, Injectable } from '@angular/core';\nimport { IExecution, Mediatr, MExecution } from '../../../mediatr';\nimport { RenderDynamicComponentRequest } from '../render-dynamic-component';\nimport { EXTERNAL_COMPONENT_PROVIDER } from '../../providers';\n\n@Injectable()\n@MExecution(RenderExternalComponentRequest)\nexport class RenderExternalComponent implements IExecution<RenderExternalComponentRequest, void> {\n\n private readonly _mediatr = inject(Mediatr);\n private readonly _componentsMap = inject(EXTERNAL_COMPONENT_PROVIDER, { optional: true }) ?? [];\n\n public handle({ selector, viewContainerRef }: RenderExternalComponentRequest): void {\n if (!selector) {\n console.warn('Empty selector passed to RenderExternalComponentRequest.');\n return;\n }\n\n const item = this._componentsMap.find((x) => {\n return x.selector === selector;\n });\n\n if (!item) {\n console.error(`Component for tag \"${selector}\" could not be found in external components map.`);\n return;\n }\n\n this._mediatr.execute(\n new RenderDynamicComponentRequest(item, viewContainerRef),\n );\n }\n}\n","import { ViewContainerRef } from '@angular/core';\n\nexport class RenderInternalComponentsRequest {\n public static readonly requestToken = Symbol('RenderInternalComponentsRequest');\n\n constructor(\n public readonly hostElement: HTMLElement,\n public readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n}\n","import { RenderInternalComponentsRequest } from './render-internal-components-request';\nimport { inject, Injectable } from '@angular/core';\nimport { IExecution, Mediatr, MExecution } from '../../../mediatr';\nimport { IDynamicComponentItem } from '../../models';\nimport { DynamicComponentsStore, extractComponent } from '../../../documentation-page';\nimport { RenderDynamicComponentRequest } from '../render-dynamic-component';\n\n@Injectable()\n@MExecution(RenderInternalComponentsRequest)\nexport class RenderInternalComponents implements IExecution<RenderInternalComponentsRequest, void> {\n private readonly _dynamicStore = inject(DynamicComponentsStore);\n private readonly _mediatr = inject(Mediatr);\n\n private readonly _componentsMap: IDynamicComponentItem[] = [\n {\n selector: 'f-code-group',\n component: extractComponent(() => import('../../components/code-group/code-group')),\n },\n {\n selector: 'f-preview',\n component: extractComponent(() => import('../../components/preview-group/components/preview-card/preview-card')),\n },\n {\n selector: 'f-preview-group-filters',\n component: extractComponent(() => import('../../components/preview-group/components/preview-action-bar/preview-action-bar')),\n },\n {\n selector: 'showcase',\n component: extractComponent(() => import('../../components/showcase/showcase')),\n },\n ];\n\n public handle({ hostElement, viewContainerRef }: RenderInternalComponentsRequest): void {\n this._dynamicStore.dispose();\n\n this._componentsMap.forEach(({ selector, component }) => {\n this._queryElements(hostElement, selector).forEach((x) => {\n this._mediatr.execute(\n new RenderDynamicComponentRequest({ selector, component }, viewContainerRef, x),\n );\n });\n });\n }\n\n private _queryElements(hostElement: HTMLElement, selector: string): HTMLElement[] {\n return Array.from(hostElement.querySelectorAll(selector));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n OnInit,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { coerceComponentHeight } from './utils/coerce-component-height';\nimport { parseComponentTag } from './utils/parse-component-tag';\nimport { IExampleViewData } from './domain/i-example-view-data';\nimport { IParsedContainerData } from '../../../documentation-page';\nimport { Mediatr } from '../../../mediatr';\nimport { RenderExternalComponentRequest } from '../../features';\nimport { parseIframeUrl } from './utils/parse-iframe-url';\nimport { DOCUMENT } from '@angular/common';\nimport { IS_BROWSER_PLATFORM } from '../../../common';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n@Component({\n selector: 'external-component',\n templateUrl: './external-component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'f-example-view',\n '[style.height]': 'data().height',\n '[class.f-example-view-fullscreen]': 'isFullscreen()',\n },\n})\nexport class ExternalComponent implements OnInit {\n public readonly data = input.required<IExampleViewData, IParsedContainerData>({\n transform: (x) => {\n const value = x.value?.trim() || '';\n\n return {\n height: coerceComponentHeight(x.height),\n selector: parseComponentTag(value) || undefined,\n iframeUrl: parseIframeUrl(value) || undefined,\n };\n },\n });\n\n protected readonly iframeUrl = computed(() => this.data().iframeUrl);\n protected readonly iframeResourceUrl = computed<SafeResourceUrl | undefined>(() => {\n const url = this.iframeUrl();\n if (!url) {\n return undefined;\n }\n return this._sanitizer.bypassSecurityTrustResourceUrl(url);\n });\n protected readonly hasContent = computed(() => !!this.data().selector || !!this.data().iframeUrl);\n protected readonly canToggleFullscreen = computed(() => {\n return this._isBrowser\n && this.hasContent()\n && typeof this._hostElement.nativeElement.requestFullscreen === 'function'\n && typeof this._document.exitFullscreen === 'function';\n });\n protected readonly fullscreenLabel = computed(() => this.isFullscreen() ? 'Exit full screen' : 'Full screen');\n protected readonly isFullscreen = signal(false);\n\n private readonly _document = inject(DOCUMENT);\n private readonly _hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n private readonly _mediatr = inject(Mediatr);\n private readonly _viewContainerRef = viewChild.required('container', { read: ViewContainerRef });\n private readonly _sanitizer = inject(DomSanitizer);\n\n public ngOnInit(): void {\n const selector = this.data().selector;\n if (selector) {\n this._mediatr.execute(new RenderExternalComponentRequest(selector, this._viewContainerRef()));\n return;\n }\n\n if (!this.data().iframeUrl) {\n console.error('Unsupported example source. Provide either component tag or [url].');\n }\n }\n\n protected async toggleFullscreen(): Promise<void> {\n if (!this.canToggleFullscreen()) return;\n\n try {\n if (this._isCurrentElementInFullscreen()) {\n await this._document.exitFullscreen?.();\n } else {\n await this._hostElement.nativeElement.requestFullscreen?.();\n }\n } catch (error) {\n console.error('Unable to toggle full-screen mode for example preview:', error);\n }\n }\n\n @HostListener('document:fullscreenchange')\n protected onFullscreenChange(): void {\n this.isFullscreen.set(this._isCurrentElementInFullscreen());\n }\n\n private _isCurrentElementInFullscreen(): boolean {\n return this._document.fullscreenElement === this._hostElement.nativeElement;\n }\n}\n","@if (canToggleFullscreen()) {\n <button class=\"f-fullscreen-button\"\n type=\"button\"\n [class.exit]=\"isFullscreen()\"\n [attr.aria-label]=\"fullscreenLabel()\"\n [attr.title]=\"fullscreenLabel()\"\n (click)=\"toggleFullscreen()\"></button>\n}\n\n@if (iframeResourceUrl()) {\n <iframe class=\"f-example-iframe\"\n [src]=\"iframeResourceUrl()\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer\"\n allow=\"fullscreen\"\n allowfullscreen></iframe>\n}\n\n<ng-container #container />\n","import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, input, OnInit } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HighlightService } from '../index';\n\n@Component({\n selector: 'highlight',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Highlight implements OnInit {\n\n private readonly _highlightService = inject(HighlightService);\n private readonly _elementRef = inject(ElementRef);\n private readonly _destroyRef = inject(DestroyRef);\n\n public content = input.required<string>();\n public language = input.required<string>();\n\n public ngOnInit() {\n queueMicrotask(() => {\n this._highlightService.highlight(this._elementRef.nativeElement, this.language(), this.content())\n .pipe(\n take(1), takeUntilDestroyed(this._destroyRef),\n ).subscribe();\n })\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, OnInit, signal } from '@angular/core';\nimport { catchError, take } from 'rxjs/operators';\nimport { EMPTY } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Highlight, resolveHighlightLanguage } from '../index';\nimport { copyToClipboard, PopoverService } from '../../common';\n\ninterface ContainerData {\n height?: string | number;\n value: string;\n isLink?: boolean;\n language?: string;\n}\n\n@Component({\n selector: 'code-view',\n templateUrl: './code-view.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'f-code-view',\n '[style.height]': 'height()',\n },\n imports: [\n Highlight,\n ],\n})\nexport class CodeView implements OnInit {\n private readonly _httpClient = inject(HttpClient);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _popoverService = inject(PopoverService);\n\n public readonly data = input<ContainerData>();\n\n protected readonly height = computed(() => {\n return coerceComponentHeight(this.data()?.height);\n });\n\n protected readonly content = signal<string>('');\n protected readonly visibleLanguage = signal<string>('');\n protected readonly syntaxLanguage = signal<string>('');\n\n public ngOnInit(): void {\n this._updateLanguage();\n this._updateNotExistingData(this.data());\n this._updateExistingData(this.data());\n }\n\n private _updateLanguage(): void {\n const data = this.data();\n const language = data?.language || parseLanguageFromFileExtension(data?.value || '');\n this.syntaxLanguage.set(parseSyntaxLanguage(language));\n this.visibleLanguage.set(language);\n }\n\n private _updateNotExistingData(data?: ContainerData): void {\n if (data?.isLink) {\n this._loadCodeByLink(data.value);\n }\n }\n\n private _updateExistingData(data?: ContainerData): void {\n if (!data?.isLink) {\n this.content.set(data?.value || '');\n }\n }\n\n private _loadCodeByLink(link: string): void {\n if (!link) return;\n\n this._httpClient.get(link, { responseType: 'text' }).pipe(\n take(1),\n takeUntilDestroyed(this._destroyRef),\n catchError(() => EMPTY),\n ).subscribe((content) => this.content.set(content));\n }\n\n protected onCopyClick(): void {\n this._copyContentToClipboard(this.content());\n }\n\n private _copyContentToClipboard(content: string): void {\n copyToClipboard(content).pipe(\n take(1),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._popoverService.show('Copied!'));\n }\n}\n\nfunction coerceComponentHeight(value: string | number | undefined): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? `${ value }px` : undefined;\n }\n\n const normalizedValue = value.trim();\n if (!normalizedValue) return undefined;\n\n if (normalizedValue === 'auto') return 'auto';\n\n const numericValue = Number(normalizedValue);\n if (Number.isFinite(numericValue) && numericValue > 0) {\n return `${ numericValue }px`;\n }\n\n if (/^-?\\d+(\\.\\d+)?(px|%|vh|vw|vmin|vmax|rem|em|ch|ex|cm|mm|in|pt|pc)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n if (/^calc\\(.+\\)$/i.test(normalizedValue)) {\n return normalizedValue;\n }\n\n return undefined;\n}\n\n\nfunction parseLanguageFromFileExtension(url: string): string {\n const match = url.match(/\\.([0-9a-z]+)(?:[?#]|$)/i);\n\n if (match) {\n let extension = match[1];\n if (extension === 'css') {\n extension = 'scss';\n }\n return extension;\n }\n return '';\n}\n\nfunction parseSyntaxLanguage(language: string): string {\n let result: string;\n switch (language) {\n case 'js':\n case 'javascript':\n result = 'javascript';\n break;\n case 'ts':\n case 'typescript':\n case 'angular-ts':\n result = 'angular-ts';\n break;\n case 'html':\n case 'angular-html':\n result = 'angular-html';\n break;\n default:\n result = extractLanguage(language);\n }\n return resolveHighlightLanguage(result);\n}\n\nfunction extractLanguage(language: string): string {\n const match = language.match(/^([^\\s[]+)/);\n return match ? match[1].toLowerCase() : language;\n}\n","<span class=\"f-code-language\">{{ visibleLanguage() }}</span>\n<button class=\"f-copy-button\" (click)=\"onCopyClick()\"></button>\n@if (content()) {\n <highlight [content]=\"content()\" [language]=\"syntaxLanguage()\"/>\n}\n\n","import { Observable, of } from 'rxjs';\n\nexport class MarkCodeFocusedBlocksPostProcessor {\n\n constructor(\n private _window: Window,\n ) {\n }\n\n public handle(element: HTMLElement): Observable<HTMLElement> {\n const html = element.innerHTML;\n if (!FOCUS_TEST_REGEX.test(html)) {\n return of(element);\n }\n\n element.innerHTML = html.replace(FOCUS_REPLACE_REGEX, (_match, content) => {\n return `<focus class=\"focused\"><div class=\"inline-focus\">${content}</div></focus>`;\n });\n\n const focused = element.querySelector('.focused');\n const hostElement = element.parentElement;\n if (focused && hostElement) {\n this._applyOpacity(hostElement);\n }\n\n return of(element);\n }\n\n private _applyOpacity(element: HTMLElement) {\n if (!element.classList.contains('focused')) {\n element.style.color = this._createRgbaString(this._getElementColor(element), 0.5);\n element.childNodes.forEach((child) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n this._applyOpacity(child as HTMLElement);\n }\n });\n } else {\n element.style.color = this._createRgbaString(this._getElementColor(element), 1, true);\n }\n }\n\n private _getElementColor(element: HTMLElement): string {\n return this._window.getComputedStyle(element).color;\n }\n\n private _createRgbaString(color: string, opacity: number, isRgb = false): string {\n const [r, g, b, a] = this._getRgbValues(color);\n const alpha = Number(a) || 1;\n return isRgb ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${opacity * alpha})`;\n }\n\n private _getRgbValues(color: string): [string, string, string, string] {\n const matches = color.match(/-?\\d*\\.?\\d+/g) || [];\n const [r = '0', g = '0', b = '0', a = '1'] = matches;\n return [r, g, b, a];\n }\n}\n\nconst FOCUS_TEST_REGEX = /ƒƒƒ([\\s\\S]*?)¢¢¢/;\nconst FOCUS_REPLACE_REGEX = /ƒƒƒ([\\s\\S]*?)¢¢¢/g;\n","import { ThemeInput } from '@shikijs/types'\n\nexport const UNIVERSAL_THEME: ThemeInput = {\n name: 'universal',\n colors: {\n 'editor.background': 'transparent',\n 'editor.foreground': 'var(--code-view-text-color)',\n },\n settings: [\n {\n scope: ['comment', 'punctuation.definition.comment', 'string.comment'],\n settings: {\n foreground: 'var(--token-comment)',\n },\n },\n {\n scope: ['constant', 'entity.name.constant', 'variable.other.constant', 'variable.other.enummember', 'variable.language'],\n settings: {\n foreground: 'var(--token-number)',\n },\n },\n {\n scope: ['entity', 'entity.name'],\n settings: {\n foreground: 'var(--token-tag)',\n },\n },\n {\n scope: 'variable.parameter.function',\n settings: {\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: 'entity.name.tag',\n settings: {\n foreground: 'var(--token-tag)',\n },\n },\n {\n scope: 'keyword',\n settings: {\n foreground: 'var(--token-keyword)',\n },\n },\n {\n scope: ['storage', 'storage.type'],\n settings: {\n foreground: 'var(--token-keyword)',\n },\n },\n {\n scope: ['storage.modifier.package', 'storage.modifier.import', 'storage.type.java'],\n settings: {\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: ['string', 'punctuation.definition.string', 'string punctuation.section.embedded source'],\n settings: {\n foreground: 'var(--token-string)',\n },\n },\n {\n scope: 'support',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'meta.property-name',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'variable',\n settings: {\n foreground: 'var(--token-variable)',\n },\n },\n {\n scope: 'variable.other',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: [\n 'invalid.broken',\n 'invalid.deprecated',\n 'invalid.illegal',\n 'invalid.unimplemented',\n ],\n settings: {\n fontStyle: 'italic',\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: 'carriage-return',\n settings: {\n fontStyle: 'italic underline',\n foreground: 'var(--background-color)',\n background: 'var(--token-keyword)',\n },\n },\n {\n scope: 'message.error',\n settings: {\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: 'string variable',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: ['source.regexp', 'string.regexp'],\n settings: {\n foreground: 'var(--token-interpolation)',\n },\n },\n {\n scope: [\n 'string.regexp.character-class',\n 'string.regexp constant.character.escape',\n 'string.regexp source.ruby.embedded',\n 'string.regexp string.regexp.arbitrary-repitition',\n ],\n settings: {\n foreground: 'var(--token-interpolation)',\n },\n },\n {\n scope: 'string.regexp constant.character.escape',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-attr-value)',\n },\n },\n {\n scope: ['support.constant', 'support.variable', 'meta.module-reference'],\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'punctuation.definition.list.begin.markdown',\n settings: {\n foreground: 'var(--token-variable)',\n },\n },\n {\n scope: ['markup.heading', 'markup.heading entity.name'],\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'markup.quote',\n settings: {\n foreground: 'var(--token-attr-value)',\n },\n },\n {\n scope: 'markup.italic',\n settings: {\n fontStyle: 'italic',\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: 'markup.bold',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--primary-text)',\n },\n },\n {\n scope: 'markup.underline',\n settings: {\n fontStyle: 'underline',\n },\n },\n {\n scope: 'markup.strikethrough',\n settings: {\n fontStyle: 'strikethrough',\n },\n },\n {\n scope: 'markup.inline.raw',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: ['markup.deleted', 'meta.diff.header.from-file', 'punctuation.definition.deleted'],\n settings: {\n background: 'var(--danger-3)',\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: ['markup.inserted', 'meta.diff.header.to-file', 'punctuation.definition.inserted'],\n settings: {\n background: 'var(--success-3)',\n foreground: 'var(--token-attr-value)',\n },\n },\n {\n scope: ['markup.changed', 'punctuation.definition.changed'],\n settings: {\n background: 'var(--warning-3)',\n foreground: 'var(--token-variable)',\n },\n },\n {\n scope: ['markup.ignored', 'markup.untracked'],\n settings: {\n background: 'var(--token-function)',\n foreground: 'var(--alt-background)',\n },\n },\n {\n scope: 'meta.diff.range',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-attr-name)',\n },\n },\n {\n scope: 'meta.diff.header',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'meta.separator',\n settings: {\n fontStyle: 'bold',\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: 'meta.output',\n settings: {\n foreground: 'var(--token-function)',\n },\n },\n {\n scope: [\n 'brackethighlighter.tag',\n 'brackethighlighter.curly',\n 'brackethighlighter.round',\n 'brackethighlighter.square',\n 'brackethighlighter.angle',\n 'brackethighlighter.quote',\n ],\n settings: {\n foreground: 'var(--gray-1)',\n },\n },\n {\n scope: 'brackethighlighter.unmatched',\n settings: {\n foreground: 'var(--danger-2)',\n },\n },\n {\n scope: ['constant.other.reference.link', 'string.other.link'],\n settings: {\n fontStyle: 'underline',\n foreground: 'var(--token-interpolation)',\n },\n },\n ],\n}\n","import type { LanguageInput, PlainTextLanguage } from '@shikijs/types';\n\ntype ShikiLanguage =\n | 'javascript'\n | 'typescript'\n | 'angular-html'\n | 'angular-ts'\n | 'shell'\n | 'html'\n | 'bash'\n | 'css'\n | 'scss'\n | 'markdown';\n\nexport type HighlightLanguage = ShikiLanguage | PlainTextLanguage;\n\nconst LANGUAGE_ALIASES: Record<string, HighlightLanguage> = {\n js: 'javascript',\n javascript: 'javascript',\n ts: 'typescript',\n typescript: 'typescript',\n md: 'markdown',\n sh: 'shell',\n zsh: 'shell',\n shell: 'shell',\n shellscript: 'shell',\n txt: 'text',\n plain: 'text',\n plaintext: 'text',\n};\n\nconst LANGUAGE_LOADERS = new Map<ShikiLanguage, LanguageInput>([\n [ 'javascript', () => import('@shikijs/langs/javascript') ],\n [ 'typescript', () => import('@shikijs/langs/typescript') ],\n [ 'angular-html', () => import('@shikijs/langs/angular-html') ],\n [ 'angular-ts', () => import('@shikijs/langs/angular-ts') ],\n [ 'shell', () => import('@shikijs/langs/shell') ],\n [ 'html', () => import('@shikijs/langs/html') ],\n [ 'bash', () => import('@shikijs/langs/bash') ],\n [ 'css', () => import('@shikijs/langs/css') ],\n [ 'scss', () => import('@shikijs/langs/scss') ],\n [ 'markdown', () => import('@shikijs/langs/markdown') ],\n]);\n\nexport const AVAILABLE_LANGUAGES: readonly HighlightLanguage[] = [\n 'javascript',\n 'typescript',\n 'angular-html',\n 'angular-ts',\n 'shell',\n 'html',\n 'bash',\n 'css',\n 'scss',\n 'markdown',\n 'text',\n];\n\nexport function resolveHighlightLanguage(lang?: string): HighlightLanguage {\n const normalized = (lang || '').trim().toLowerCase();\n if (!normalized) {\n return 'text';\n }\n\n const alias = LANGUAGE_ALIASES[normalized];\n if (alias) {\n return alias;\n }\n\n if (isAvailableLanguage(normalized)) {\n return normalized;\n }\n\n return 'text';\n}\n\nexport function getLanguageLoader(lang: HighlightLanguage): LanguageInput | null {\n if (isPlainTextLanguage(lang)) {\n return null;\n }\n return LANGUAGE_LOADERS.get(lang) || null;\n}\n\nfunction isAvailableLanguage(lang: string): lang is HighlightLanguage {\n return AVAILABLE_LANGUAGES.includes(lang as HighlightLanguage);\n}\n\nfunction isPlainTextLanguage(lang: HighlightLanguage): lang is PlainTextLanguage {\n return lang === 'text' || lang === 'txt' || lang === 'plain' || lang === 'plaintext';\n}\n","import { inject, Injectable } from '@angular/core';\nimport { defer, from, map, Observable, of, switchMap } from 'rxjs';\nimport { MarkCodeFocusedBlocksPostProcessor } from './mark-code-focused-blocks.post-processor';\nimport { UNIVERSAL_THEME } from './theme';\nimport { catchError, finalize, shareReplay } from 'rxjs/operators';\nimport { getLanguageLoader, HighlightLanguage, resolveHighlightLanguage } from './languages';\nimport { IS_BROWSER_PLATFORM, WINDOW } from '../common';\nimport { createHighlighterCore, HighlighterCore, isSpecialLang } from '@shikijs/core';\nimport { createOnigurumaEngine } from '@shikijs/engine-oniguruma';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HighlightService {\n /**\n * Service for highlighting code blocks using Shiki.\n * It supports syntax highlighting and post-processing for focused blocks.\n */\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n private readonly _window = inject(WINDOW, { optional: true });\n private readonly _languageLoadingTasks = new Map<HighlightLanguage, Observable<void>>();\n private readonly _highlighter$: Observable<HighlighterCore> = defer(() =>\n from(this._createHighlighter()),\n ).pipe(\n shareReplay(1),\n );\n\n public highlight(\n element: HTMLElement, lang: string, content: string,\n ): Observable<HTMLElement> {\n if (!this._isBrowser) {\n console.warn('[HighlightService] Skipping highlight on server.');\n return of(element);\n }\n\n const resolvedLanguage = resolveHighlightLanguage(lang);\n\n return this._ensureLanguageLoaded(resolvedLanguage).pipe(\n switchMap(() => this._highlightCodeBlock(element, resolvedLanguage, content)),\n switchMap((x) => this._postProcess(x)),\n catchError((err) => {\n console.error('[HighlightService] Failed to highlight:', err);\n return of(element);\n }),\n );\n }\n\n private _highlightCodeBlock(\n element: HTMLElement, lang: string, content: string,\n ): Observable<HTMLElement> {\n return this._highlighter$.pipe(\n switchMap((highlighter) => this._renderCode(element, highlighter, lang, content)),\n );\n }\n\n private _renderCode(\n element: HTMLElement, highlighter: HighlighterCore, lang: string, content: string,\n ): Observable<HTMLElement> {\n return new Observable<HTMLElement>((observer) => {\n const processedContent = this._preprocessFocus(content);\n element.innerHTML = highlighter.codeToHtml(processedContent, { lang, theme: 'universal', defaultColor: false });\n this._scheduleRender(() => {\n observer.next(element);\n observer.complete();\n });\n });\n }\n\n private _preprocessFocus(code: string): string {\n return code.replace(/\\|:\\|([\\s\\S]*?)\\|:\\|/g, (_, p1) => `ƒƒƒ${p1}¢¢¢`);\n }\n\n private _createHighlighter(): Promise<HighlighterCore> {\n return createHighlighterCore({\n engine: createOnigurumaEngine(() => import('shiki/wasm').then((x) => x.default)),\n themes: [ UNIVERSAL_THEME ],\n langs: [],\n });\n }\n\n private _ensureLanguageLoaded(lang: HighlightLanguage): Observable<void> {\n if (isSpecialLang(lang)) {\n return of(void 0);\n }\n\n return this._highlighter$.pipe(\n switchMap((highlighter) => {\n if (highlighter.getLoadedLanguages().includes(lang)) {\n return of(void 0);\n }\n\n const cachedTask = this._languageLoadingTasks.get(lang);\n if (cachedTask) {\n return cachedTask;\n }\n\n const loader = getLanguageLoader(lang);\n if (!loader) {\n return of(void 0);\n }\n\n const loadingTask = from(highlighter.loadLanguage(loader)).pipe(\n map(() => void 0),\n catchError((error) => {\n console.error(`[HighlightService] Failed to load language \"${lang}\"`, error);\n return of(void 0);\n }),\n finalize(() => {\n this._languageLoadingTasks.delete(lang);\n }),\n shareReplay(1),\n );\n\n this._languageLoadingTasks.set(lang, loadingTask);\n return loadingTask;\n }),\n );\n }\n\n private _scheduleRender(callback: () => void): void {\n const raf = this._window?.requestAnimationFrame?.bind(this._window);\n if (raf) {\n raf(callback);\n return;\n }\n queueMicrotask(callback);\n }\n\n private _postProcess(element: HTMLElement): Observable<HTMLElement> {\n const windowRef = this._window;\n if (!windowRef) {\n return of(element);\n }\n\n return of(element).pipe(\n switchMap((x) => new MarkCodeFocusedBlocksPostProcessor(windowRef).handle(x)),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { EParsedContainerType, IParsedContainerData } from '../../../documentation-page';\nimport { ExternalComponent } from '../external-component';\nimport { CodeView } from '../../../highlight';\n\n@Component({\n selector: 'code-group',\n templateUrl: './code-group.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'f-code-group',\n },\n imports: [\n ExternalComponent,\n CodeView,\n ],\n})\nexport class CodeGroup {\n public readonly data = signal<IParsedContainerData[]>([]);\n\n protected readonly index = signal<number>(0);\n protected readonly containerType = EParsedContainerType;\n\n protected tabClick(index: number): void {\n this.index.set(index);\n }\n}\n","@let views = data();\n\n@if (views.length > 1) {\n <div class=\"f-code-group-tabs\">\n @for (data of views; track data) {\n <button class=\"f-tab-button\" [class.active]=\"$index === index()\" (click)=\"tabClick($index)\">\n {{ data.tab }}\n </button>\n }\n </div>\n}\n\n<div class=\"f-code-group-body\">\n @for (data of views; track data) {\n\n @let isExampleView = data.type === containerType.EXAMPLE;\n @let display = $index === index() ? 'block' : 'none';\n\n @if (isExampleView) {\n <external-component [style.display]=\"display\" [data]=\"data\" />\n } @else {\n <code-view [style.display]=\"display\" [data]=\"data\" />\n }\n }\n</div>\n","export abstract class PreviewCardBase {\n\n public abstract date?: Date;\n\n public abstract filterKey?: string;\n\n public abstract hostElement: HTMLElement;\n}\n","import { Injectable } from '@angular/core';\nimport { PreviewCardBase } from './components/preview-card';\n\n@Injectable()\nexport class PreviewGroupService {\n\n private _cards: PreviewCardBase[] = [];\n private _originalOrder: Map<HTMLElement, Node[]> | null = null;\n\n public add(card: PreviewCardBase): void {\n this._cards.push(card);\n }\n\n public remove(card: PreviewCardBase): void {\n this._cards = this._cards.filter(preview => preview !== card);\n }\n\n public sortByDate(sort: boolean): void {\n if (sort) {\n this._applyByDateOrder();\n } else {\n this._applyOriginalOrder();\n }\n }\n\n private _setOriginalOrder(): void {\n this._originalOrder = new Map();\n this._cards.forEach((x) => {\n const parentElement = x.hostElement.parentElement;\n if (parentElement) {\n const childrenArray = Array.from(parentElement.children);\n this._originalOrder!.set(parentElement, childrenArray);\n }\n });\n }\n\n private _getOrderByDate(): PreviewCardBase[] {\n return this._cards\n .slice()\n .sort((a, b) => {\n const dateA = a.date ? a.date.getTime() : Number.MIN_SAFE_INTEGER;\n const dateB = b.date ? b.date.getTime() : Number.MIN_SAFE_INTEGER;\n return dateB - dateA;\n });\n }\n\n private _applyByDateOrder(): void {\n this._setOriginalOrder();\n this._getOrderByDate().forEach((x) => {\n const parent = x.hostElement.parentElement;\n parent?.appendChild(x.hostElement);\n });\n }\n\n private _applyOriginalOrder(): void {\n this._originalOrder!.forEach((originalChildren, parentElement) => {\n originalChildren.forEach(child => parentElement.appendChild(child));\n });\n }\n\n public filterBy(filterKey: string, _allKey: string): void {\n this._resetLastActiveFilter();\n\n if (filterKey === _allKey) {\n return;\n }\n this._cards.forEach((x) => {\n if (x.filterKey !== filterKey) {\n x.hostElement.style.display = 'none';\n }\n });\n }\n\n private _resetLastActiveFilter(): void {\n this._cards.forEach((x) => {\n x.hostElement.style.display = 'block';\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { startWith } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { PreviewCardBase } from './preview-card-base';\nimport { ThemeService } from '../../../../../theme';\nimport { DocumentationStore, INavigationGroup, INavigationItem } from '../../../../../documentation-page';\nimport { PreviewGroupService } from '../../preview-group.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'a[preview-card]',\n templateUrl: './preview-card.html',\n styleUrls: [ './preview-card.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.href]': 'url',\n '[attr.title]': 'viewModel?.text',\n },\n})\nexport class PreviewCard extends PreviewCardBase implements OnInit, OnDestroy {\n private readonly _elementReference = inject(ElementRef);\n private readonly _fEnvironment = inject(DocumentationStore);\n private readonly _fPreviewGroupService = inject(PreviewGroupService);\n private readonly _themeService = inject(ThemeService, { optional: true });\n private readonly _router = inject(Router);\n private readonly _destroyRef = inject(DestroyRef);\n\n public item: string | undefined;\n public group: string | undefined;\n\n protected viewModel: INavigationItem | undefined;\n protected src = signal<string | undefined>(undefined);\n protected url: string | undefined;\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public get filterKey(): string | undefined {\n return this.viewModel?.badge?.text.toLowerCase();\n }\n\n public get date(): Date | undefined {\n return this.viewModel?.date;\n }\n\n public initialize(): void {\n this.viewModel = this._getNavigationItem(this._getNavigationGroup()!);\n this.url = this._normalizeLink(this.viewModel!.link, this._getUrlPrefix());\n this._subscribeToThemeChanges();\n }\n\n private _subscribeToThemeChanges(): void {\n this._themeService?.theme$.pipe(\n startWith(null), takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._updateTheme());\n }\n\n public ngOnInit(): void {\n this._fPreviewGroupService.add(this);\n }\n\n private _getNavigationGroup(): INavigationGroup | undefined {\n return this._fEnvironment.getNavigation().find((x) => x.text === this.group);\n }\n\n private _getNavigationItem(group: INavigationGroup): INavigationItem | undefined {\n return group.items.find((x) => x.link === this.item);\n }\n\n private _updateTheme(): void {\n this.src.set(this._themeService?.getPreferredTheme() === 'dark' ? this.viewModel?.image_dark : this.viewModel?.image);\n if (!this.src()) {\n this.src.set(this.viewModel?.image);\n }\n }\n\n private _normalizeLink(link: string, prefix: string): string {\n if (!this._isExternalLink(link)) {\n return link.startsWith('/') ? `${ prefix }${ link }` : `${ prefix }/${ link }`;\n }\n return link;\n }\n\n private _getUrlPrefix(): string {\n return this._router.url.substring(0, this._router.url.lastIndexOf('/'));\n }\n\n private _isExternalLink(href: string): boolean {\n return href.startsWith('www') || href.startsWith('http');\n }\n\n public ngOnDestroy(): void {\n this._fPreviewGroupService.remove(this);\n }\n}\n","@if (viewModel) {\n <img [src]=\"src()\" [alt]=\"viewModel.description\" [title]=\"viewModel.text\">\n <div class=\"title\">\n {{ viewModel.text }}\n @if (viewModel.badge) {\n <span class=\"f-badge {{viewModel.badge.type}}\">{{ viewModel.badge.text }}</span>\n }\n </div>\n <div class=\"description\">{{ viewModel.description }}</div>\n}\n\n\n\n","import { AfterViewInit, ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { DocumentationStore } from '../../../../../documentation-page';\nimport { TitleCasePipe } from '@angular/common';\nimport { FCheckboxComponent, FRadioButtonComponent } from '../../../../../shared';\nimport { PreviewGroupService } from '../../preview-group.service';\n\n@Component({\n selector: 'div[preview-action-bar]',\n templateUrl: './preview-action-bar.html',\n styleUrls: [ './preview-action-bar.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FCheckboxComponent,\n FRadioButtonComponent,\n TitleCasePipe,\n ],\n})\nexport class PreviewActionBar implements AfterViewInit {\n\n private readonly _allKey = 'all';\n\n private _fEnvironment = inject(DocumentationStore);\n private _fPreviewGroupService = inject(PreviewGroupService);\n\n protected filters = signal<string[]>([]);\n protected activeFilter = signal<string>(this._allKey);\n\n protected isSortByDateChecked = signal<boolean>(false);\n\n public initialize(): void {\n this.filters.set(this._calculateFiltersMap());\n }\n\n public ngAfterViewInit(): void {\n this.onFilterChange(this._allKey);\n }\n\n private _calculateFiltersMap(): string[] {\n const filters: string[] = [];\n this._fEnvironment.getNavigation().forEach((group) => {\n group.items.forEach((item) => {\n if (item.badge && !filters.includes(item.badge.text.toLowerCase())) {\n filters.push(item.badge.text.toLowerCase());\n }\n });\n });\n if (filters.length > 0) {\n filters.unshift(this._allKey);\n }\n return filters;\n }\n\n protected onFilterChange(key: string): void {\n this.activeFilter.set(key);\n this._fPreviewGroupService.filterBy(key, this._allKey);\n }\n\n protected onSortByDateChange(event: boolean): void {\n this.isSortByDateChecked.set(event);\n this._fPreviewGroupService.sortByDate(event);\n }\n}\n","@if (filters().length) {\n <div class=\"filters-row\">\n @for (filter of filters(); track filter) {\n <f-radio-button [checked]=\"activeFilter() === filter\"\n (change)=\"onFilterChange(filter)\">{{ filter | titlecase }}\n </f-radio-button>\n }\n <div class=\"flex-space\"></div>\n <f-checkbox [checked]=\"isSortByDateChecked()\" (change)=\"onSortByDateChange($event)\">Sort by Newness</f-checkbox>\n </div>\n}\n\n\n\n","import {\n ChangeDetectionStrategy,\n Component, computed,\n inject, input,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs';\nimport { IShowcaseItem } from '../../models';\nimport { ThemeService } from '../../../../../theme';\n\n@Component({\n selector: 'showcase-item',\n templateUrl: './showcase-item.html',\n styleUrls: [ './showcase-item.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShowcaseItem {\n private readonly _themeService = inject(ThemeService);\n\n private readonly _themeChanges = toSignal(this._themeService.theme$.pipe(startWith(null), map(() => this._themeService.getPreferredTheme())));\n public readonly model = input.required<IShowcaseItem>();\n\n protected readonly src = computed(() => {\n const theme = this._themeChanges();\n const model = this.model();\n return theme === 'dark' ? (model.imageUrlDark || model.imageUrl) : model.imageUrl;\n });\n}\n","@let data = model();\n\n@if (data) {\n <img [src]=\"src()\" [alt]=\"data.description\" [title]=\"data.name\">\n <div class=\"title\">{{ data.name }}</div>\n <div class=\"description\">{{ data.description }}</div>\n <div class=\"links\">\n @for (link of (data.links || []); track link.text) {\n <a href=\"{{ link.url }}\" target=\"_blank\" rel=\"noopener\">{{ link.text }}</a>\n }\n </div>\n <div class=\"tags\">\n @for (tag of (data.tags || []); track tag) {\n <span class=\"f-badge tip\">{{ tag }}</span>\n }\n </div>\n}\n\n\n\n","import { IShowcaseItem } from './models';\nimport { InjectionToken } from '@angular/core';\n\nexport const SHOWCASE_DATA = new InjectionToken<IShowcaseItem[]>('SHOWCASE_DATA');\n\n","import { ChangeDetectionStrategy, Component, computed, inject, signal, } from '@angular/core';\nimport { ShowcaseItem } from './components';\nimport { SHOWCASE_DATA } from './showcase-token';\nimport { IShowcaseItem } from './models';\n\n@Component({\n selector: 'showcase',\n templateUrl: './showcase.html',\n styleUrls: [ './showcase.scss' ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ShowcaseItem,\n ],\n})\nexport class Showcase{\n private readonly _data = signal<IShowcaseItem[]>(inject(SHOWCASE_DATA));\n\n protected readonly items = computed(() => {\n const items = this._data();\n const activeTag = this.activeTag();\n return activeTag ? items.filter(item => item.tags?.includes(activeTag)) : items;\n });\n\n protected readonly tags = computed(() => {\n return this._data().reduce((result, item) => {\n item.tags?.forEach(tag => result.add(tag));\n return result;\n }, new Set<string>());\n });\n\n protected readonly activeTag = signal<string | null>(null);\n\n protected tagClick(tag: string | null): void {\n this.activeTag.update((x) => x === tag ? null : tag);\n }\n}\n","<div class=\"filters-panel\">\n @for (tag of tags(); track tag) {\n <span class=\"f-badge tip\" (click)=\"tagClick(tag)\" [class.info]=\"activeTag() === tag\">{{ tag }}</span>\n }\n</div>\n<div class=\"showcase-list\">\n @for (item of items(); track item.imageUrl) {\n <showcase-item [model]=\"item\"/>\n }\n</div>\n\n","import { IDocumentationConfiguration } from '../../../documentation-page';\nimport { IShowcaseItem } from './models';\n\nexport function provideShowcase(showcaseItems: IShowcaseItem[]): Partial<IDocumentationConfiguration> {\n return {\n showcaseItems,\n };\n}\n\n","import { DynamicComponentsStore } from './dynamic-components.store';\nimport { PreviewGroupService } from './components';\nimport { RenderDynamicComponent, RenderExternalComponent, RenderInternalComponents } from './features';\n\nexport const DYNAMIC_COMPONENTS_MODULE_PROVIDERS = [\n DynamicComponentsStore,\n\n PreviewGroupService,\n\n RenderDynamicComponent,\n\n RenderExternalComponent,\n\n RenderInternalComponents,\n];\n","export class ActivateTocByHashRequest {\n public static readonly requestToken = Symbol('ActivateTocByHashRequest');\n\n constructor(\n public hash: string | undefined,\n ) {\n }\n}\n","import { ActivateTocByHashRequest } from './activate-toc-by-hash-request';\nimport { inject, Injectable } from '@angular/core';\nimport { IExecution, MExecution } from '../../../../../mediatr';\nimport { DocumentationStore } from '../../../../services';\n\n@Injectable()\n@MExecution(ActivateTocByHashRequest)\nexport class ActivateTocByHash implements IExecution<ActivateTocByHashRequest, void>{\n\n private readonly _dataProvider = inject(DocumentationStore);\n\n public handle(payload: ActivateTocByHashRequest): void {\n this._dataProvider.tocData.update((data) => ({\n ...data,\n flat: data.flat.map((x) => ({\n ...x,\n isActive: x.hash === payload.hash,\n })),\n }));\n }\n}\n","export class CalculateTableOfContentRequest {\n public static readonly requestToken = Symbol('CalculateTableOfContentRequest');\n\n constructor(\n public readonly hostElement: HTMLElement,\n ) {\n }\n}\n","import { ITableOfContentItem } from './i-table-of-content-item';\n\nexport class TableOfContentData {\n constructor(\n public flat: ITableOfContentItem[],\n public tree: ITableOfContentItem[],\n ) {\n }\n}\n","export class CalculateAbsoluteTopToContainerRequest {\n public static readonly requestToken = Symbol('CalculateAbsoluteTopToContainerRequest');\n\n constructor(\n public element: HTMLElement,\n ) {\n }\n}\n","import { CalculateAbsoluteTopToContainerRequest } from './calculate-absolute-top-to-container-request';\nimport { inject, Injectable } from '@angular/core';\nimport { SCROLLABLE_CONTAINER } from '../../../index';\nimport { IExecution, MExecution } from '../../../../../mediatr';\n\n@Injectable()\n@MExecution(CalculateAbsoluteTopToContainerRequest)\nexport class CalculateAbsoluteTopToContainer\n implements IExecution<CalculateAbsoluteTopToContainerRequest, number> {\n\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER);\n\n public handle(request: CalculateAbsoluteTopToContainerRequest): number {\n let element = request.element;\n let result = 0;\n\n while (element !== this._scrollableContainer.htmlElement) {\n if (!element) return NaN;\n result += element.offsetTop;\n element = element.offsetParent as HTMLElement;\n }\n\n return result;\n }\n}\n","import { CalculateAbsoluteTopToContainerRequest } from '../calculate-absolute-top-to-container';\nimport { inject, Injectable } from '@angular/core';\nimport {\n ActivateTocByHashRequest,\n SCROLLABLE_CONTAINER,\n} from '../../../index';\nimport { DocumentationStore } from '../../../../services';\nimport { DOCUMENT_ELEMENT, WINDOW } from '../../../../../common';\nimport { IExecution, Mediatr } from '../../../../../mediatr';\n\n@Injectable()\nexport class CalculateHashFromScrollPosition\n implements IExecution<void, void> {\n\n private readonly _docElement = inject(DOCUMENT_ELEMENT);\n private readonly _window = inject(WINDOW);\n private readonly _provider = inject(DocumentationStore);\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER);\n private readonly _mediatr = inject(Mediatr);\n\n public handle(): void {\n let result: string | undefined;\n const containerScrollTop = this._getContainerScrollTop();\n\n const elementsWithTopPosition = this._calculateElementsTopPositions();\n\n if (elementsWithTopPosition.length) {\n if (this._isScrollAtBottom(containerScrollTop)) {\n result = elementsWithTopPosition[elementsWithTopPosition.length - 1].hash;\n } else {\n result = this._findTargetHashByPosition(containerScrollTop, elementsWithTopPosition);\n }\n }\n this._mediatr.execute(new ActivateTocByHashRequest(result));\n }\n\n private _getContainerScrollTop(): number {\n return this._scrollableContainer.htmlElement.scrollTop + this._getHeaderHeight();\n }\n\n private _getHeaderHeight(): number {\n return parseInt(this._window\n .getComputedStyle(this._docElement)\n .getPropertyValue('--header-height'), 10,\n );\n }\n\n private _calculateElementsTopPositions(): IHasTopItem[] {\n return this._provider.tocData().flat.map((x) => {\n return {\n hash: x.hash,\n top: this._calculateAbsoluteTopToContainer(x.element),\n };\n }).filter((x) => !Number.isNaN(x.top));\n }\n\n private _calculateAbsoluteTopToContainer(element: HTMLElement): number {\n return this._mediatr.execute(new CalculateAbsoluteTopToContainerRequest(element));\n }\n\n private _isScrollAtBottom(containerScrollTop: number): boolean {\n return Math.abs(containerScrollTop - this._getHeaderHeight() + this._scrollableContainer.htmlElement.clientHeight - this._scrollableContainer.htmlElement.scrollHeight) < 1;\n }\n\n private _findTargetHashByPosition(containerScrollTop: number, elementsWithTopPosition: IHasTopItem[]): string {\n let result: string = elementsWithTopPosition[0].hash;\n for (const { hash, top } of elementsWithTopPosition) {\n if (top > containerScrollTop) break;\n result = hash;\n }\n return result;\n }\n}\n\ninterface IHasTopItem {\n hash: string;\n top: number;\n}\n","import { CalculateTableOfContentRequest } from './calculate-table-of-content-request';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { DocumentationStore } from '../../../../services';\nimport { ITableOfContentItem, TableOfContentData } from '../../models';\nimport { IExecution, MExecution } from '../../../../../mediatr';\nimport {\n CalculateHashFromScrollPosition,\n} from '../calculate-hash-from-scroll-position';\n\n@Injectable()\n@MExecution(CalculateTableOfContentRequest)\nexport class CalculateTableOfContent implements IExecution<CalculateTableOfContentRequest, void>{\n\n private readonly _dataProvider = inject(DocumentationStore);\n private readonly _injector = inject(Injector);\n\n public handle(request: CalculateTableOfContentRequest): void {\n const flat: ITableOfContentItem[] = [];\n const tree: ITableOfContentItem[] = [];\n const stack: ITableOfContentItem[] = [];\n\n this._getNavigationSelectors(request.hostElement, this._dataProvider.getTableOfContent()?.range).forEach((element) => {\n const tocItem = this._createItem(element);\n this._insertItemIntoTree(tocItem, tree, stack);\n flat.push(tocItem);\n });\n\n this._dataProvider.tocData.set(new TableOfContentData(flat, tree));\n this._injector.get(CalculateHashFromScrollPosition).handle();\n }\n\n private _getNavigationSelectors(fMarkdownPage: HTMLElement, tocRange?: {\n start: number,\n end: number\n }): HTMLElement[] {\n if (!tocRange || tocRange.start < 1 || tocRange.end > 6) {\n tocRange = { start: 2, end: 6 };\n }\n const selectors: string[] = [];\n for (let i = tocRange.start; i <= tocRange.end; i++) {\n selectors.push(`h${i}`);\n }\n return Array.from(fMarkdownPage.querySelectorAll(selectors.join(', ')));\n }\n\n private _createItem(element: HTMLElement): ITableOfContentItem {\n element.id = this._createNavigationId(element);\n return {\n hash: `#${CSS.escape(element.id)}`,\n title: element.innerHTML,\n element,\n children: [],\n };\n }\n\n private _createNavigationId(element: HTMLElement): string {\n return element.innerHTML.toLowerCase().replaceAll(' ', '-');\n }\n\n private _getLevel(element: HTMLElement): number {\n return parseInt(element.tagName.substring(1));\n }\n\n private _insertItemIntoTree(tocItem: ITableOfContentItem, tree: ITableOfContentItem[], stack: ITableOfContentItem[]): void {\n while (stack.length > 0 && this._getLevel(stack[stack.length - 1].element) >= this._getLevel(tocItem.element)) {\n stack.pop();\n }\n\n if (stack.length === 0) {\n tree.push(tocItem);\n } else {\n stack[stack.length - 1].children.push(tocItem);\n }\n\n stack.push(tocItem);\n }\n}\n","export class ScrollToElementInContainerRequest {\n public static readonly requestToken = Symbol('ScrollToElementInContainerRequest');\n\n constructor(public hash: string) {\n }\n}\n","import { ScrollToElementInContainerRequest } from './scroll-to-element-in-container-request';\nimport { inject, Injectable } from '@angular/core';\nimport { SCROLLABLE_CONTAINER } from '../../../index';\nimport { IExecution, MExecution } from '../../../../../mediatr';\nimport { DOCUMENT_ELEMENT, WINDOW } from '../../../../../common';\n\n@Injectable()\n@MExecution(ScrollToElementInContainerRequest)\nexport class ScrollToElementInContainer implements IExecution<ScrollToElementInContainerRequest, void> {\n\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER);\n private readonly _window = inject(WINDOW);\n private readonly _docElement = inject(DOCUMENT_ELEMENT);\n\n public handle(payload: ScrollToElementInContainerRequest): void {\n const container = this._scrollableContainer.htmlElement;\n container._ignoreProgrammatic = true;\n\n this._scrollableContainer.htmlElement.scrollTo({\n top: this._getScrollTo(this._getScrollToElement(payload.hash)) - this._getHeaderHeight(),\n behavior: 'smooth',\n });\n }\n\n private _getHeaderHeight(): number {\n return parseInt(this._window\n .getComputedStyle(this._docElement)\n .getPropertyValue('--header-height'), 10,\n );\n }\n\n private _getScrollToElement(hash: string): HTMLElement {\n const element = this._scrollableContainer.htmlElement?.querySelector(hash) as HTMLElement;\n if (!element) {\n throw new Error(`Element ${ hash } not found`);\n }\n return element;\n }\n\n private _getScrollTo(element: HTMLElement): number {\n return this._isFirstElementInContainer(element) ? 0 : this._calculateScrollTo(element);\n }\n\n private _isFirstElementInContainer(element: HTMLElement): boolean {\n return element.parentElement!.children[ 0 ] === element;\n }\n\n private _calculateScrollTo(element: HTMLElement): number {\n return this._getElementTop(element) - this._getContainerTop() + this._scrollableContainer.htmlElement.scrollTop;\n }\n\n private _getElementTop(element: HTMLElement): number {\n return element.getBoundingClientRect().top;\n }\n\n private _getContainerTop(): number {\n return this._scrollableContainer.htmlElement.getBoundingClientRect().top;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, input,\n} from '@angular/core';\nimport { ITableOfContentItem } from '../models';\n\n@Component({\n selector: 'ul[f-table-of-content-items]',\n styleUrls: [ './table-of-content-items.component.scss' ],\n templateUrl: './table-of-content-items.component.html',\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n})\nexport class TableOfContentItemsComponent {\n public readonly items = input.required<ITableOfContentItem[]>();\n}\n","@for (item of items(); track item.hash) {\n <li [class.active]=\"item.isActive\"><a class=\"text-ellipsis\" [href]=\"item.hash\">{{ item.title }}</a></li>\n @if (item.children) {\n <ul f-table-of-content-items [items]=\"item.children\"></ul>\n }\n}\n","import {\n ActivateTocByHash,\n CalculateAbsoluteTopToContainer,\n CalculateHashFromScrollPosition,\n CalculateTableOfContent,\n ScrollToElementInContainer,\n} from './features';\n\nexport const TABLE_OF_CONTENT_MODULE_PROVIDERS = [\n ActivateTocByHash,\n CalculateTableOfContent,\n ScrollToElementInContainer,\n CalculateAbsoluteTopToContainer,\n CalculateHashFromScrollPosition,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n untracked,\n} from '@angular/core';\nimport { TableOfContentItemsComponent } from './table-of-content-items';\nimport { DocumentationStore } from '../../services';\nimport { WINDOW } from '../../../common';\nimport { Mediatr } from '../../../mediatr';\nimport { ActivateTocByHashRequest, ScrollToElementInContainerRequest } from './features';\n\n@Component({\n selector: 'table-of-content',\n styleUrls: ['./table-of-content.scss'],\n templateUrl: './table-of-content.html',\n standalone: true,\n imports: [TableOfContentItemsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableOfContent {\n\n private readonly _hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n private readonly _dataProvider = inject(DocumentationStore);\n private readonly _window = inject(WINDOW);\n private readonly _mediatr = inject(Mediatr);\n\n protected readonly tocData = computed(() => this._dataProvider.tocData());\n\n protected readonly activeMarkerPosition = computed(() => {\n const index = this.tocData()?.flat.findIndex((x) => x.isActive) || 0;\n return untracked(() => this._getActiveMarkerPosition(index));\n });\n protected readonly title = inject(DocumentationStore).getTableOfContent()!.title;\n\n private _getActiveMarkerPosition(activeIndex: number): number {\n const itemHeight = this._getToCItemHeight(this._hostElement);\n return (activeIndex + 1) * itemHeight + itemHeight / 4;\n }\n\n private _getToCItemHeight(element: HTMLElement): number {\n return parseInt(this._window.getComputedStyle(element).getPropertyValue('--on-page-navigation-item-height'));\n }\n\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (target.tagName === 'A') {\n event.preventDefault();\n this._scrollTo(target.getAttribute('href')!);\n }\n }\n\n private _scrollTo(hash: string): void {\n this._mediatr.execute(new ActivateTocByHashRequest(hash));\n this._mediatr.execute(new ScrollToElementInContainerRequest(hash));\n }\n}\n","@let data = tocData();\n@if (data) {\n <div class=\"title\">{{ title || 'In this article' }}</div>\n <ul f-table-of-content-items [items]=\"data.tree\"></ul>\n <div class=\"active-marker\" [style.top]=\"activeMarkerPosition() + 'px'\"></div>\n}\n\n","import { InjectionToken } from '@angular/core';\n\nexport const SCROLLABLE_CONTAINER = new InjectionToken<IScrollableContainer>('SCROLLABLE_CONTAINER');\n\nexport interface IScrollableContainer {\n\n htmlElement: HTMLElement & { _ignoreProgrammatic?: boolean };\n}\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { IScrollableContainer, SCROLLABLE_CONTAINER } from './models';\nimport { debounceTime, fromEvent, startWith } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n CalculateHashFromScrollPosition,\n TABLE_OF_CONTENT_MODULE_PROVIDERS,\n TableOfContent,\n} from '../table-of-content';\nimport { Mediatr } from '../../../mediatr';\nimport { DYNAMIC_COMPONENTS_MODULE_PROVIDERS } from '../../../dynamic-components';\nimport { MarkdownService } from '../markdown-renderer';\nimport { filter } from 'rxjs/operators';\nimport { DOCUMENTATION_CONFIGURATION } from '../../domain';\n\n@Component({\n selector: 'scrollable-container',\n templateUrl: './scrollable-container.html',\n styleUrls: ['./scrollable-container.scss'],\n standalone: true,\n providers: [\n {\n provide: SCROLLABLE_CONTAINER,\n useExisting: forwardRef(() => ScrollableContainer),\n },\n Mediatr,\n ...DYNAMIC_COMPONENTS_MODULE_PROVIDERS,\n ...TABLE_OF_CONTENT_MODULE_PROVIDERS,\n MarkdownService,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TableOfContent,\n ],\n})\nexport class ScrollableContainer implements OnInit, IScrollableContainer {\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _injector = inject(Injector);\n private readonly _markdown = inject(MarkdownService);\n protected readonly tableOfContent = inject(DOCUMENTATION_CONFIGURATION).tableOfContent;\n protected readonly canShowTableOfContent = computed(() => {\n return !!this.tableOfContent && !this._markdown.pageLayout().hideTableOfContent;\n });\n\n public readonly htmlElement = inject(ElementRef<HTMLElement>).nativeElement;\n\n public ngOnInit(): void {\n fromEvent<Event>(this.htmlElement, 'scroll', { passive: true })\n .pipe(\n debounceTime(100),\n startWith<Event | null>(null),\n filter((event: Event | null) => {\n const target = event?.target as IScrollableTarget | null;\n const ignoreProgrammatic = target?._ignoreProgrammatic ?? false;\n (this.htmlElement as IScrollableTarget)._ignoreProgrammatic = false;\n return !ignoreProgrammatic;\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => this._calculateHashAndActivate());\n }\n\n private _calculateHashAndActivate(): void {\n this._injector.get(CalculateHashFromScrollPosition).handle();\n }\n}\n\ninterface IScrollableTarget extends EventTarget {\n _ignoreProgrammatic?: boolean;\n}\n","<ng-content></ng-content>\n@if (canShowTableOfContent()) {\n <table-of-content />\n}\n\n\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { DynamicComponentsStore } from '../../services';\nimport { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../domain';\nimport { IS_BROWSER_PLATFORM, WINDOW } from '../../../common';\nimport { MarkdownFooter } from './markdown-footer';\nimport { Mediatr } from '../../../mediatr';\nimport { RenderInternalComponentsRequest } from '../../../dynamic-components';\nimport { CalculateTableOfContentRequest } from '../table-of-content';\nimport { SCROLLABLE_CONTAINER } from '../scrollable-container';\n\n@Component({\n selector: 'markdown-renderer',\n templateUrl: './markdown-renderer.html',\n styleUrls: ['./markdown-renderer.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MarkdownFooter],\n host: {\n class: 'm-render',\n },\n})\nexport class MarkdownRenderer implements OnInit, OnDestroy {\n public readonly value = input.required<SafeHtml | undefined>();\n\n private readonly _hostElement = inject(ElementRef).nativeElement;\n private readonly _router = inject(Router);\n private readonly _injector = inject(Injector);\n private readonly _isBrowser = inject(IS_BROWSER_PLATFORM);\n private readonly _window = inject(WINDOW)\n private readonly _dynamicComponents = inject(DynamicComponentsStore);\n private readonly _mediatr = inject(Mediatr);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _scrollableContainer = inject(SCROLLABLE_CONTAINER, { optional: true });\n\n public ngOnInit(): void {\n this._setupValueEffect();\n }\n\n private _setupValueEffect(): void {\n effect(\n onCleanup => {\n const html = this.value();\n if (!this._isBrowser || html == null) return;\n\n this._resetScroll();\n\n const ref = this._schedulePostRenderWork();\n onCleanup(() => ref.destroy());\n },\n { injector: this._injector },\n );\n }\n\n private _resetScroll(): void {\n this._scrollableContainer?.htmlElement?.scrollTo({ top: 0, left: 0 });\n }\n\n private _schedulePostRenderWork() {\n return afterNextRender(() => {\n return untracked(() => {\n this._renderDynamicComponents();\n this._recalculateToc();\n });\n }, { injector: this._injector });\n }\n\n private _renderDynamicComponents(): void {\n this._mediatr.execute(\n new RenderInternalComponentsRequest(this._hostElement, this._viewContainerRef),\n );\n }\n\n private _recalculateToc(): void {\n this._mediatr.execute(\n new CalculateTableOfContentRequest(this._hostElement),\n );\n }\n\n @HostListener('click', ['$event'])\n protected _onDocumentClick(event: MouseEvent): void {\n new HandleNavigationLinksHandler().handle(\n new HandleNavigationLinksRequest(event, this._window, this._router),\n );\n }\n\n public ngOnDestroy(): void {\n this._dynamicComponents.dispose();\n }\n}\n","<div [innerHTML]=\"value()\"></div>\n@if (value()) {\n <markdown-footer />\n}\n\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { distinctUntilChanged, map, of, startWith, switchMap } from 'rxjs';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { catchError, filter, tap } from 'rxjs/operators';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { DocumentationStore } from '../../services';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MarkdownRenderer, MarkdownService } from '../markdown-renderer';\nimport { FMetaService } from '../../analytics';\n\n@Component({\n selector: 'markdown-router',\n templateUrl: './markdown-router.html',\n styleUrls: ['./markdown-router.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'ngSkipHydration': '',\n '[class.empty-navigation]': 'emptyNavigation',\n },\n imports: [\n MarkdownRenderer,\n ],\n})\nexport class MarkdownRouter {\n private readonly _router = inject(Router);\n private readonly _activatedRoute = inject(ActivatedRoute);\n private readonly _markdown = inject(MarkdownService);\n private readonly _dataProvider = inject(DocumentationStore);\n private readonly _metaService = inject(FMetaService, { optional: true });\n\n protected readonly emptyNavigation = !this._dataProvider.getNavigation().length;\n protected readonly shouldExpandContent = computed(() => {\n const layout = this._markdown.pageLayout();\n return layout.hideTableOfContent && layout.expandContentWithoutTableOfContent;\n });\n\n private readonly _path$ = this._router.events.pipe(\n startWith(null),\n filter((e): e is NavigationEnd | null => e === null || e instanceof NavigationEnd),\n map(() => this._activatedRoute.snapshot.url.map(u => u.path).join('/')),\n distinctUntilChanged(),\n );\n\n protected readonly html = toSignal<SafeHtml | undefined>(\n this._path$.pipe(\n switchMap(path => {\n const url = this._dataProvider.getMarkdownUrl(path);\n return this._markdown.parseUrl(url).pipe(\n catchError(err => {\n console.error('[MarkdownRouter] parse error:', err, { path, url });\n return of<SafeHtml | undefined>(undefined); // или return EMPTY;\n }),\n tap(() => this._metaService?.applyMarkdownSeo(this._markdown.pageSeo())),\n );\n }),\n ),\n { initialValue: undefined },\n );\n}\n","<markdown-renderer [value]=\"html()\"\n [class.empty-navigation]=\"emptyNavigation\"\n [class.expand-no-toc]=\"shouldExpandContent()\"/>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport {\n F_PREVIEW_NAVIGATION_PROVIDER,\n HeaderComponent,\n IToggleNavigationComponent, MEDIA_LINKS_PROVIDER,\n NavigationPanelComponent,\n ScrollableContainer,\n TOGGLE_NAVIGATION_COMPONENT,\n} from './components';\nimport { DocumentationStore } from './services';\nimport {\n HEADER_CONFIGURATION_PROVIDER, IS_BROWSER_PLATFORM,\n PopoverService,\n ThemeService,\n} from '../common';\nimport { FMetaService } from './analytics';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CookiePopup } from '../analytics/cookie-popup/cookie-popup';\nimport { GTagService } from '../analytics';\nimport { EXTERNAL_COMPONENT_PROVIDER, SHOWCASE_DATA } from '../dynamic-components';\n\n@Component({\n selector: 'documentation',\n templateUrl: './documentation.html',\n styleUrls: ['./documentation.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DocumentationStore,\n FMetaService,\n {\n provide: F_PREVIEW_NAVIGATION_PROVIDER,\n useExisting: DocumentationStore,\n },\n {\n provide: MEDIA_LINKS_PROVIDER,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getMediaLinks(),\n },\n {\n provide: HEADER_CONFIGURATION_PROVIDER,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getHeader(),\n },\n {\n provide: TOGGLE_NAVIGATION_COMPONENT,\n useExisting: Documentation,\n },\n {\n provide: EXTERNAL_COMPONENT_PROVIDER,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getComponents(),\n },\n {\n provide: SHOWCASE_DATA,\n deps: [DocumentationStore],\n useFactory: (store: DocumentationStore) => store.getShowcaseItems(),\n },\n ],\n imports: [\n NavigationPanelComponent,\n ScrollableContainer,\n RouterOutlet,\n HeaderComponent,\n CookiePopup,\n ],\n})\nexport class Documentation implements IToggleNavigationComponent, OnInit, OnDestroy {\n protected readonly isNavigationVisible = signal<boolean>(false);\n protected readonly popover = inject(PopoverService).message;\n\n private readonly _metaService = inject(FMetaService);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _gTagService = inject(GTagService, { optional: true });\n private readonly _themeService = inject(ThemeService, { optional: true });\n\n protected readonly emptyNavigation = !inject(DocumentationStore).getNavigation().length;\n\n protected readonly isBrowser = inject(IS_BROWSER_PLATFORM);\n\n public ngOnInit() {\n if (!this.isBrowser) {\n return;\n }\n this._themeService?.initialize();\n this._gTagService?.initialize();\n this._metaService.changes().pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n\n public onToggleNavigation(value: boolean): void {\n this.isNavigationVisible.set(value);\n }\n\n public ngOnDestroy(): void {\n this._metaService.dispose();\n // Cleanup logic if needed\n }\n}\n","@if (!emptyNavigation) {\n <f-navigation-panel [class.visible]=\"isNavigationVisible()\"/>\n <div class=\"f-backdrop\" [class.visible]=\"isNavigationVisible()\" (click)=\"onToggleNavigation(false)\"></div>\n}\n\n<scrollable-container>\n <f-header [class.empty-navigation]=\"emptyNavigation\"/>\n <router-outlet/>\n</scrollable-container>\n\n@if (popover()) {\n <div class=\"popover\">{{ popover() }}</div>\n}\n@defer (when isBrowser) {\n <cookie-popup/>\n}\n","import { Routes } from '@angular/router';\n\nexport const DOCUMENTATION_ROUTES: Routes = [\n {\n path: '',\n loadComponent: () => import('./index').then(m => m.Documentation),\n children: [\n {\n path: '**',\n loadComponent: () => import('./components/markdown-router').then(m => m.MarkdownRouter),\n },\n ],\n },\n];\n","import { Type } from '@angular/core';\nimport { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideBackground(background: Type<any>): Partial<IHomePageConfiguration> {\n return {\n background,\n };\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHero(hero: IHomePageHero): Partial<IHomePageConfiguration> {\n return {\n hero,\n };\n}\n\nexport interface IHomePageHero {\n headline?: string;\n tagline1?: string;\n tagline2?: string;\n subDescription?: string;\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomeButtons(buttons: IHomePageLink[]): Partial<IHomePageConfiguration> {\n return {\n buttons,\n };\n}\n\nexport interface IHomePageLink {\n\n primary?: boolean;\n\n routerLink?: string;\n\n href?: string;\n\n text: string;\n\n icon?: string;\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomeFeatures(features: IHomePageFeature[]): Partial<IHomePageConfiguration> {\n return {\n features,\n };\n}\n\nexport interface IHomePageFeature {\n\n headline: string;\n\n description: string;\n}\n","import { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomeFooter(footer: IHomePageFooter): Partial<IHomePageConfiguration> {\n return {\n footer,\n };\n}\n\nexport interface IHomePageFooter {\n\n text: string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideHomePage(configuration: IProviderInstance) {\n const merged = Object.assign({}, ...configuration.providers);\n return [{\n provide: HOME_PAGE_CONFIGURATION, useValue: merged,\n }];\n}\n\nexport const HOME_PAGE_CONFIGURATION = new InjectionToken<IHomePageConfiguration>('HOME_PAGE_CONFIGURATION');\n\ninterface IProviderInstance {\n providers: Partial<IHomePageConfiguration>[];\n}\n","import { Type } from '@angular/core';\nimport { IHomePageConfiguration } from '../i-home-page-configuration';\n\nexport function provideImage(image: Type<any>): Partial<IHomePageConfiguration> {\n return {\n image,\n };\n}\n","import { inject, Injectable, Type } from '@angular/core';\nimport {\n HOME_PAGE_CONFIGURATION,\n IHomePageFeature,\n IHomePageFooter,\n IHomePageHero,\n IHomePageLink,\n IHomePageMembership,\n} from '../domain';\n\n@Injectable()\nexport class HomeStore {\n private readonly _configuration = inject(HOME_PAGE_CONFIGURATION);\n\n public getLogo(): string {\n return this._configuration.logo;\n }\n\n public getTitle(): string {\n return this._configuration.title;\n }\n\n public getHero(): IHomePageHero {\n return this._configuration.hero;\n }\n\n public getButtons(): IHomePageLink[] {\n return this._configuration.buttons || [];\n }\n\n public getFeatures(): IHomePageFeature[] {\n return this._configuration.features || [];\n }\n\n public getMemberships(): IHomePageMembership[] {\n return [];\n }\n\n public getFooter(): IHomePageFooter {\n return this._configuration.footer;\n }\n\n public getBackgroundComponent(): Type<any> | undefined {\n return this._configuration.background;\n }\n\n public getImageComponent(): Type<any> | undefined {\n return this._configuration.image;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-buttons-row',\n templateUrl: './f-home-page-buttons-row.component.html',\n styleUrl: './f-home-page-buttons-row.component.scss',\n standalone: true,\n imports: [\n RouterLink,\n ],\n host: {\n '[class.display-none]': '!viewModel.length',\n },\n})\nexport class FHomePageButtonsRowComponent {\n protected viewModel = inject(HomeStore).getButtons();\n}\n","@for (button of viewModel; track button.text) {\n @if (button.routerLink) {\n <a class=\"f-button\" [class.primary]=\"button.primary\" routerLink=\"{{ button.routerLink }}\">\n @if (button.icon) {\n <span class=\"f-icon {{ button.icon }}\"></span>\n }\n {{ button.text }}\n </a>\n } @else if(button.href) {\n <a class=\"f-button\" [class.primary]=\"button.primary\" href=\"{{ button.href }}\" target=\"_blank\" rel=\"noopener noreferrer\">\n @if (button.icon) {\n <span class=\"f-icon {{ button.icon }}\"></span>\n }\n {{ button.text }}\n </a>\n }\n}\n\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-features',\n templateUrl: './f-home-page-features.component.html',\n styleUrl: './f-home-page-features.component.scss',\n standalone: true,\n host: {\n '[class.display-none]': '!viewModel.length',\n },\n})\nexport class FHomePageFeaturesComponent {\n protected viewModel = inject(HomeStore).getFeatures();\n}\n","<div class=\"feature-list\">\n @for (feature of viewModel; track feature.headline) {\n <div class=\"feature\">\n <h2>{{ feature.headline }}</h2>\n <p>{{ feature.description }}</p>\n </div>\n }\n</div>\n\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'footer[f-home-page-footer]',\n templateUrl: './f-home-page-footer.component.html',\n styleUrl: './f-home-page-footer.component.scss',\n standalone: true,\n})\nexport class FHomePageFooterComponent {\n protected viewModel = inject(HomeStore).getFooter();\n}\n","<div class=\"content\">\n <div class=\"flex-space\"></div>\n <div>\n <div class=\"item\">Created with Foblex <a href=\"https://m-render.foblex.com/\" target=\"_blank\">MRender</a></div>\n <div class=\"item\">{{ viewModel.text }}</div>\n </div>\n</div>\n\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\nimport { ThemeButtonComponent } from '../../../theme';\nimport { FBrandLinkComponent } from '../../../shared';\n\n@Component({\n selector: 'header[f-home-page-header]',\n templateUrl: './f-home-page-header.component.html',\n styleUrl: './f-home-page-header.component.scss',\n standalone: true,\n imports: [\n FBrandLinkComponent,\n ThemeButtonComponent,\n ],\n})\nexport class FHomePageHeaderComponent {\n protected logo = inject(HomeStore).getLogo();\n protected title = inject(HomeStore).getTitle();\n}\n","<div class=\"content\">\n <f-brand-link class=\"logo-link\" [title]=\"title\" [logo]=\"logo\" [logoAlt]=\"title + ' Logo'\" />\n\n <div class=\"flex-space\"></div>\n <button theme-button aria-label=\"Change theme\"></button>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { FHomePageButtonsRowComponent } from '../f-home-page-buttons-row';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-hero',\n templateUrl: './f-home-page-hero.component.html',\n styleUrl: './f-home-page-hero.component.scss',\n standalone: true,\n imports: [\n FHomePageButtonsRowComponent,\n ],\n})\nexport class FHomePageHeroComponent {\n\n protected viewModel = inject(HomeStore).getHero();\n}\n","<h1>{{ viewModel.headline }}</h1>\n<p class=\"powered\">{{ viewModel.tagline1 }}</p>\n<p class=\"powered\">{{ viewModel.tagline2 }}</p>\n<p class=\"second-description\">{{ viewModel.subDescription }}</p>\n<f-home-page-buttons-row></f-home-page-buttons-row>\n","import { Component, inject } from '@angular/core';\nimport { HomeStore } from '../../services';\n\n@Component({\n selector: 'f-home-page-memberships',\n templateUrl: './f-home-page-memberships.component.html',\n styleUrl: './f-home-page-memberships.component.scss',\n standalone: true,\n host: {\n '[class.display-none]': '!viewModel.length',\n },\n})\nexport class FHomePageMembershipsComponent {\n protected viewModel = inject(HomeStore).getMemberships();\n}\n","<div class=\"membership-list\">\n @for (membership of viewModel; track membership.id) {\n <div class=\"membership\">\n <h2>{{ membership.name }}</h2>\n <p>{{ membership.description }}</p>\n <div class=\"benefit-list\">\n @for (benefit of membership.benefits; track benefit) {\n <p class=\"benefit\">✅ {{ benefit }}</p>\n }\n </div>\n <a class=\"f-button\" [href]=\"membership.buttonRef\">{{ membership.buttonText }}</a>\n </div>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n inject,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { HomeStore } from './services';\nimport {\n FHomePageFeaturesComponent,\n FHomePageFooterComponent,\n FHomePageHeaderComponent,\n FHomePageHeroComponent,\n FHomePageMembershipsComponent,\n} from './components';\nimport { IS_BROWSER_PLATFORM, ThemeService } from '../common';\nimport { CookiePopup } from '../analytics/cookie-popup/cookie-popup';\nimport { GTagService } from '../analytics';\n\n@Component({\n selector: 'home-root',\n templateUrl: './home-root.component.html',\n styleUrls: ['./home-root.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n HomeStore,\n ],\n imports: [\n FHomePageFooterComponent,\n FHomePageHeaderComponent,\n FHomePageFeaturesComponent,\n FHomePageHeroComponent,\n FHomePageMembershipsComponent,\n CookiePopup,\n ],\n})\nexport class HomeRootComponent implements AfterViewInit, OnInit {\n private readonly _environment = inject(HomeStore);\n private readonly _gTagService = inject(GTagService, { optional: true });\n private readonly _themeService = inject(ThemeService, { optional: true });\n\n protected readonly isBrowser = inject(IS_BROWSER_PLATFORM);\n\n @ViewChild('backgroundContainer', { read: ViewContainerRef })\n private _backgroundContainer: ViewContainerRef | undefined;\n\n @ViewChild('heroImageContainer', { read: ViewContainerRef })\n private _heroImageContainer: ViewContainerRef | undefined;\n\n public ngOnInit(): void {\n if (!this.isBrowser) {\n return;\n }\n this._themeService?.initialize();\n this._gTagService?.initialize();\n }\n\n public ngAfterViewInit(): void {\n this._renderImageComponent(this._environment.getImageComponent());\n this._renderBackgroundComponent(this._environment.getBackgroundComponent());\n }\n\n private _renderImageComponent<T>(component?: Type<T>): void {\n if (component) {\n this._requestComponentRedraw(this._getImageComponentReference(component));\n }\n }\n\n private _renderBackgroundComponent<T>(component?: Type<T>): void {\n if (component) {\n this._requestComponentRedraw(this._getBackgroundComponentReference(component));\n }\n }\n\n private _getBackgroundComponentReference<T>(component: Type<T>): ComponentRef<T> {\n return this._backgroundContainer!.createComponent(component);\n }\n\n private _getImageComponentReference<T>(component: Type<T>): ComponentRef<T> {\n return this._heroImageContainer!.createComponent(component);\n }\n\n private _requestComponentRedraw(componentRef: ComponentRef<unknown>): void {\n componentRef.changeDetectorRef.markForCheck();\n }\n}\n","<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","import { Routes } from '@angular/router';\n\nexport const HOME_ROUTES: Routes = [\n {\n path: '',\n loadComponent: () => import('./index').then(m => m.HomeRootComponent),\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["filter","uniqueId","coerceComponentHeight"],"mappings":"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"}