{"version":3,"file":"cisstech-nge-doc.mjs","sources":["../../../projects/nge/doc/src/nge-doc.ts","../../../projects/nge/doc/src/nge-doc.service.ts","../../../projects/nge/doc/src/renderer/renderer.component.ts","../../../projects/nge/doc/src/renderer/renderer.component.html","../../../projects/nge/doc/src/renderer/toc.directive.ts","../../../projects/nge/doc/src/layouts/default/footer/footer.component.ts","../../../projects/nge/doc/src/layouts/default/footer/footer.component.html","../../../projects/nge/doc/src/layouts/default/header/header.component.ts","../../../projects/nge/doc/src/layouts/default/header/header.component.html","../../../projects/nge/doc/src/layouts/default/sidenav/sidenav.component.ts","../../../projects/nge/doc/src/layouts/default/sidenav/sidenav.component.html","../../../projects/nge/doc/src/layouts/default/default-layout.component.ts","../../../projects/nge/doc/src/layouts/default/default-layout.component.html","../../../projects/nge/doc/src/nge-doc.component.ts","../../../projects/nge/doc/src/nge-doc.component.html","../../../projects/nge/doc/src/renderer/renderer.module.ts","../../../projects/nge/doc/src/layouts/default/default-layout.module.ts","../../../projects/nge/doc/src/nge-doc.module.ts","../../../projects/nge/doc/cisstech-nge-doc.ts"],"sourcesContent":["import { InjectionToken, Injector, Type } from '@angular/core'\n\nexport declare type StaticPage = NgeDocLink\nexport declare type DynamicPage = (\n  injector: Injector\n) => NgeDocLink | Promise<NgeDocLink> | NgeDocLink[] | Promise<NgeDocLink[]>\n\nexport declare type StaticMeta = NgeDocMeta\nexport declare type DynamicMeta = (injector: Injector) => NgeDocMeta | Promise<NgeDocMeta>\n\nexport declare type NgeDocRenderer = string | Promise<string> | (() => Type<any> | Promise<Type<any>>)\n\nexport declare type NgeDocRenderers = {\n  /** Markdown renderer. */\n  markdown: {\n    /**\n     * Reference to a component that can render markdown content.\n     *\n     * The component should expose a `file` property to render a markdown from an url\n     * and a `data` property to render markdown from a string.\n     */\n    component: () => Type<any> | Promise<Type<any>>\n    /** Inputs objects to pass to the component instance. */\n    inputs?: Record<string, any> | ((injector: Injector) => Record<string, any> | Promise<Record<string, any>>)\n  }\n}\n\nexport declare type NgeDocLinkActionHandler = string | ((injector: Injector) => void | Promise<void>)\n\n/** Documentation site config. */\nexport interface NgeDocSettings {\n  /** Metadata informations about a documentation site. */\n  meta: StaticMeta | DynamicMeta\n  /** Pages of the documentation site. */\n  pages: (StaticPage | DynamicPage)[]\n}\n\n/** Metadata informations about a documentation site. */\nexport interface NgeDocMeta {\n  /** Name of the documentation site. */\n  name: string\n  /** Root url of the documentation site. (absolute url starting with `/`)  */\n  root: string\n  /** Url to the logo to the documentation logo. */\n  logo?: string\n  /** Optional back url (use of Angular [routerLink]) */\n  backUrl?: string\n\n  /** Optional url for the back button icon */\n  backIconUrl?: string\n\n  /** Optional back href */\n  backUrlHref?: string\n\n  /** Optional informations about a github repository linked to the site */\n  repo?: {\n    /** Url of the repository */\n    url: string\n    /** Name of the repository. */\n    name: string\n  }\n  /** social links to show insides the footer */\n  links?: {\n    href: string\n    icon: string\n  }[]\n}\n\nexport interface NgeDocLinAction {\n  /** Url to an icon to render. */\n  icon?: string\n  /** Title of the action. */\n  title?: string\n  /** Action tooltip */\n  tooltip?: string\n  /** Action handler. (A string value here means that the action is an url to open in a new tab) */\n  run: NgeDocLinkActionHandler\n}\n\n/**\n * Representation of a link in the documentation navigation.\n */\nexport interface NgeDocLink {\n  /** Url to display in the browser navigation bar. */\n  href: string\n  /** Title of the link */\n  title: string\n  /**\n   * Content to render once the link is displayed.\n   *\n   * - A one line string value means that the renderer is an url to a markdown file to render.\n   *\n   * Remarks:\n   * Not required if `children` is defined.\n   *\n   * Example:\n   *\n   * `renderer: assets/my-file.md`\n   *\n   * - A multiline string value means that the renderer is a markdown string to render.\n   *\n   * Example:\n   *\n   * `renderer: \"# My Title \\n my paragraph \\n ....\"\n   *\n   * - A reference to a Component type means that the renderer is a dynamic component to render.\n   *\n   *  Example:\n   *\n   *  `renderer: () => MyComponent` // direct reference to a component\n   *\n   *  `renderer: () => import(....).then(m => m.MyComponent)` // reference to a lazy loaded component.\n   *\n   * - A reference to a Module type means that the renderer is a dynamic component to render.\n   *\n   *  `renderer: () => MyModule` // direct reference to a module\n   *\n   *  `renderer: () => import(....).then(m => m.MyModule)` // reference to a lazy loaded module.\n   *\n   * The difference between referencing a module and referencing a component is the following:\n   *  - If you reference a module the dependencies (CommonModule, SharedModule...) of the component\n   *    that you want to render will be resolved.\n   *  - If you reference a component the dependencies will not be loaded.\n   *\n   * If you choose to reference a module, the module must contains a public field `component` that indicates\n   * the component that you want to render.\n   */\n  renderer?: NgeDocRenderer\n  /** Sub links */\n  children?: NgeDocLink[]\n  /** A value indicating whether the link is expanded or not. */\n  expanded?: boolean\n  /** Inputs to pass to the dynamic renderered component if `renderer` is a dynamic component. */\n  inputs?: Record<string, any>\n  /** Optional icon */\n  icon?: string\n  /** Custom actions */\n  actions?: NgeDocLinAction[]\n}\n\n/** Representation of the documentation state. */\nexport interface NgeDocState {\n  /**  Metadata informations about the documentation. */\n  meta: NgeDocMeta\n  /** Root links of the site. */\n  links: NgeDocLink[]\n  /** Current active link. */\n  currLink?: NgeDocLink\n  /** Previous link of the current link. */\n  prevLink?: NgeDocLink\n  /** Next link of the current link. */\n  nextLink?: NgeDocLink\n}\n\n/** Custom renderers components */\nexport const NGE_DOC_RENDERERS = new InjectionToken<NgeDocRenderers>('NGE_DOC_RENDERERS')\n\nexport const isNgeDocSettings = (v: any): v is NgeDocSettings =>\n  !!v && typeof v === 'object' && !Array.isArray(v) && !!v.meta && !!v.pages\n\nexport const extractNgeDocSettings = (v: any): NgeDocSettings[] => {\n  let settings: NgeDocSettings[] = []\n\n  if (isNgeDocSettings(v)) {\n    settings.push(v)\n  } else if (typeof v === 'object') {\n    settings.push(\n      ...Object.values(v)\n        .map((v) => extractNgeDocSettings(v))\n        .flat()\n    )\n  }\n\n  return settings\n}\n","import { Location } from '@angular/common'\nimport { Injectable, Injector, OnDestroy } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { BehaviorSubject, Subscription } from 'rxjs'\nimport { filter } from 'rxjs/operators'\nimport { NgeDocLink, NgeDocMeta, NgeDocState, extractNgeDocSettings } from './nge-doc'\n\n@Injectable()\nexport class NgeDocService implements OnDestroy {\n  private readonly state = new BehaviorSubject<NgeDocState>({\n    meta: {\n      root: '',\n      name: '',\n    },\n    links: [],\n    prevLink: undefined,\n    nextLink: undefined,\n    currLink: undefined,\n  })\n\n  private readonly pages = new Map<\n    string,\n    {\n      meta: NgeDocMeta\n      links: NgeDocLink[]\n    }\n  >()\n\n  private readonly links: NgeDocLink[] = []\n\n  private readonly subscriptions: Subscription[] = []\n\n  /** documentation state */\n  get stateChanges() {\n    return this.state.pipe(filter((state) => !!state.currLink))\n  }\n\n  constructor(\n    private readonly router: Router,\n    private readonly injector: Injector,\n    private readonly location: Location,\n    private readonly activatedRoute: ActivatedRoute\n  ) {}\n\n  ngOnDestroy(): void {\n    this.reset()\n  }\n\n  /**\n   * Loads navigation from the router configuration.\n   */\n  async setup(): Promise<void> {\n    this.reset()\n\n    const { data } = this.activatedRoute.snapshot\n    const settings = extractNgeDocSettings(data)\n\n    for (const setting of settings) {\n      const links: NgeDocLink[] = []\n\n      let meta: NgeDocMeta | undefined\n      if (typeof setting.meta === 'function') {\n        meta = await setting.meta(this.injector)\n      } else {\n        meta = setting.meta\n      }\n\n      if (!meta) {\n        throw new Error('[nge-doc]: Missing setting.meta')\n      }\n\n      for (const item of setting.pages) {\n        const pages: NgeDocLink[] = []\n\n        let object: any\n        if (typeof item === 'function') {\n          object = await item(this.injector)\n        } else {\n          object = item\n        }\n\n        if (Array.isArray(object)) {\n          pages.push(...object)\n        } else {\n          pages.push(object)\n        }\n\n        pages.forEach((page) => {\n          links.push(page)\n          this.resolvePageLinks(meta!, page)\n        })\n\n        this.pages.set(meta.root, {\n          meta,\n          links: links,\n        })\n      }\n    }\n\n    this.subscriptions.push(\n      this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe(this.onChangeRoute.bind(this))\n    )\n\n    this.onChangeRoute()\n  }\n\n  /**\n   * Checks whether the given `link` is active.\n   * @param link The link to test.\n   */\n  isActive(link: NgeDocLink): boolean {\n    const tree = this.location.path().split('/')\n    for (let i = 0; i < tree.length; i++) {\n      const path = tree.slice(0, tree.length - i).join('/')\n      if (path && path.endsWith(link.href)) {\n        return true\n      }\n    }\n    return false\n  }\n\n  /**\n   * Checks whether the given `link` includes sub links.\n   * @param link The link to test.\n   */\n  isExpandable(link: NgeDocLink): boolean {\n    return !!link.children?.length\n  }\n\n  private join(a: string, b: string): string {\n    if (a.endsWith('/')) {\n      a = a.slice(0, a.length - 1)\n    }\n    if (b.startsWith('/')) {\n      b = b.slice(1)\n    }\n    return a + '/' + b\n  }\n\n  private resolvePageLinks(meta: NgeDocMeta, page: NgeDocLink) {\n    const createLink = (link: NgeDocLink, parent: string) => {\n      link.href = this.join(parent, link.href)\n      this.links.push(link)\n      link.children?.forEach((child) => {\n        createLink(child, link.href)\n      })\n    }\n    createLink(page, meta.root)\n  }\n\n  private async onChangeRoute(): Promise<void> {\n    if (!this.pages.size) {\n      return\n    }\n\n    const path = this.location.path()\n    const paths = [path, path + '/']\n\n    let meta: NgeDocMeta | undefined\n    let links: NgeDocLink[] = []\n\n    for (const [k, v] of this.pages) {\n      if (paths.some((path) => path.includes(k))) {\n        meta = v.meta\n        links = v.links\n        break\n      }\n    }\n\n    if (!meta) {\n      throw new Error('[nge-doc]: Unregisted page ' + path)\n    }\n\n    let { currLink, prevLink, nextLink } = this.state.value\n\n    // ignore same page navigation (fragment navigation)\n    if (currLink && paths.some((p) => p.endsWith(currLink!.href))) {\n      return\n    }\n\n    // calculate current, previous and next links\n\n    // https://stackoverflow.com/questions/4467539/javascript-modulo-gives-a-negative-result-for-negative-numbers\n    const modulo = (a: number, n: number) => {\n      return ((a % n) + n) % n\n    }\n\n    for (let i = 0; i < this.links.length; i++) {\n      const link = this.links[i]\n      if (paths.some((path) => path.endsWith(link.href))) {\n        const prevIndex = modulo(i - 1, this.links.length)\n        const nextIndex = modulo(i + 1, this.links.length)\n        currLink = link\n        nextLink = this.links[nextIndex]\n        prevLink = this.links[prevIndex]\n        break\n      }\n    }\n\n    // navigate to first page if currLink is not defined\n    if (!currLink) {\n      this.router.navigateByUrl(links[0].href, {\n        replaceUrl: true,\n      })\n      return\n    }\n\n    // navigate to first children if currLink doesn't have a renderer\n    if (!currLink.renderer && currLink.children?.length) {\n      this.router.navigateByUrl(currLink.children[0].href, {\n        replaceUrl: true,\n      })\n      return\n    }\n\n    // expand visible links\n\n    this.links.forEach((link) => {\n      if (paths.some((path) => path.endsWith(link.href))) {\n        link.expanded = true\n      }\n    })\n\n    // notify state change\n\n    this.state.next({\n      meta,\n      links,\n      prevLink,\n      currLink,\n      nextLink,\n    })\n  }\n\n  private reset(): void {\n    this.subscriptions.forEach((s) => s.unsubscribe())\n    this.subscriptions.splice(0, this.subscriptions.length)\n    this.pages.clear()\n    this.links.splice(0, this.links.length)\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  Injector,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n  inject,\n} from '@angular/core'\nimport { CompilerService } from '@cisstech/nge/services'\nimport { Subscription, firstValueFrom } from 'rxjs'\nimport { NGE_DOC_RENDERERS, NgeDocState } from '../nge-doc'\nimport { NgeDocService } from '../nge-doc.service'\n\n@Component({\n  selector: 'nge-doc-renderer',\n  templateUrl: 'renderer.component.html',\n  styleUrls: ['renderer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgeDocRendererComponent implements OnInit, OnDestroy {\n  private readonly injector = inject(Injector)\n  private readonly renderers = inject(NGE_DOC_RENDERERS)\n  private readonly docService = inject(NgeDocService)\n  private readonly compilerService = inject(CompilerService)\n  private readonly changeDetectorRef = inject(ChangeDetectorRef)\n\n  private subscriptions: Subscription[] = []\n  protected loading = false\n  protected noFound = false\n  protected componentRefByTypes = new Map<Type<any>, ComponentRef<any>>()\n\n  componentRef?: ComponentRef<any>\n\n  @ViewChild('container', { read: ViewContainerRef, static: true })\n  container!: ViewContainerRef\n\n  ngOnInit(): void {\n    this.subscriptions.push(this.docService.stateChanges.subscribe(this.onChangeState.bind(this)))\n  }\n\n  ngOnDestroy(): void {\n    this.clearViewContainer()\n    this.subscriptions.forEach((s) => s.unsubscribe())\n  }\n\n  private showLoading(): void {\n    this.loading = true\n\n    // if loading is still true after 1s then we force change detection\n    // This is useful to show the loading indicator only if the loading is not too fast\n    // so that the loading indicator does not blink.\n    setTimeout(() => {\n      if (this.loading) {\n        this.changeDetectorRef.markForCheck()\n      }\n    }, 1000)\n  }\n\n  private clearViewContainer(): void {\n    const componentRefs = Array.from(this.componentRefByTypes.values())\n    if (this.componentRef && componentRefs.includes(this.componentRef)) {\n      while (this.container.length > 0) {\n        this.container.detach()\n      }\n    } else {\n      this.componentRef?.destroy()\n      this.componentRef = undefined\n      this.container.clear()\n    }\n  }\n\n  private async onChangeState(state: NgeDocState): Promise<void> {\n    try {\n      this.showLoading()\n      this.clearViewContainer()\n\n      if (state.currLink) {\n        const renderer = await state.currLink.renderer\n        switch (typeof renderer) {\n          case 'string':\n            await this.renderMarkdown(renderer)\n            break\n          case 'function':\n            this.componentRef = await this.compilerService.render({\n              type: await renderer(),\n              inputs: state.currLink.inputs,\n              container: this.container,\n            })\n            break\n        }\n      }\n    } catch (error) {\n      console.error(error)\n    } finally {\n      this.loading = false\n      this.noFound = !this.componentRef\n      this.changeDetectorRef.markForCheck()\n    }\n  }\n\n  private async renderMarkdown(data: string): Promise<void> {\n    if (!this.renderers?.markdown) {\n      throw new Error('[nge-doc]: missing markdown renderer.')\n    }\n\n    const renderer = this.renderers.markdown\n    const type = await renderer.component()\n\n    const createInputs = async (): Promise<Record<string, any>> => {\n      let inputs: Record<string, any> = {\n        data, // we assume that data is a markdown content.\n      }\n\n      if (!data.includes('\\n')) {\n        // if data does not include at least two lines then it's an url\n        const http = this.injector.get(HttpClient, null)\n        if (!http) {\n          throw new Error(\n            '[nge-doc] When using the `file` renderer you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information'\n          )\n        }\n\n        inputs = {\n          data: await firstValueFrom(http.get(data, { responseType: 'text' })),\n        }\n      }\n\n      let customInputs: Record<string, any> = {}\n      if (typeof renderer.inputs === 'function') {\n        customInputs = await renderer.inputs(this.injector)\n      } else if (typeof renderer.inputs === 'object') {\n        customInputs = renderer.inputs\n      }\n\n      return { ...customInputs, ...inputs }\n    }\n\n    const markdownComponent = this.componentRefByTypes.get(type)\n    if (markdownComponent) {\n      this.attachComponent(markdownComponent, await createInputs())\n      return\n    }\n\n    const componentRef = await this.compilerService.render({\n      type,\n      inputs: await createInputs(),\n      container: this.container,\n    })\n\n    this.componentRef = componentRef\n    this.componentRefByTypes.set(type, componentRef)\n  }\n\n  private async attachComponent(componentRef: ComponentRef<any>, inputs: Record<string, any>): Promise<void> {\n    this.container.insert(componentRef.hostView)\n    this.componentRef = componentRef\n\n    // compute changes\n    const changes: SimpleChanges = {}\n    const { instance, changeDetectorRef } = componentRef\n    Object.keys(inputs).forEach((key) => {\n      changes[key] = {\n        currentValue: inputs[key],\n        previousValue: instance[key],\n        firstChange: false,\n        isFirstChange: () => false,\n      }\n      instance[key] = inputs[key]\n    })\n\n    // call ngOnChanges\n    if (instance.ngOnChanges) {\n      await instance.ngOnChanges(changes)\n    }\n\n    changeDetectorRef.markForCheck()\n  }\n}\n","<div class=\"loading-container\" *ngIf=\"loading\">\n  <div class=\"loading-spinner\"></div>\n  <div class=\"loading-text\">Loading...</div>\n</div>\n<div *ngIf=\"noFound\">\n  <h1>Ooops!</h1>\n  <hr />\n  <p>It looks like this page doesn't exist.</p>\n</div>\n<div #container></div>\n","import { Location } from '@angular/common'\nimport { ComponentRef, Directive, ElementRef, Input, OnChanges, OnDestroy } from '@angular/core'\nimport { ActivatedRoute, Router, Scroll } from '@angular/router'\nimport { Subscription } from 'rxjs'\n\n@Directive({ selector: '[ngeDocToc]' })\nexport class NgeDocTocDirective implements OnDestroy, OnChanges {\n  private readonly subscriptions: Subscription[] = []\n  private readonly observer = new MutationObserver(() => {\n    this.observer?.disconnect()\n    this.build()\n  })\n\n  private intersection?: IntersectionObserver\n  private anchors: HTMLElement[] = []\n\n  @Input('ngeDocToc')\n  component?: ComponentRef<any>\n\n  constructor(\n    private readonly router: Router,\n    private readonly location: Location,\n    private readonly elementRef: ElementRef<HTMLElement>,\n    private readonly activatedRoute: ActivatedRoute\n  ) {\n    this.subscriptions.push(\n      this.router.events.subscribe((event) => {\n        if (event instanceof Scroll && event.anchor) {\n          this.scroll(event.anchor)\n        }\n      })\n    )\n  }\n\n  ngOnDestroy(): void {\n    this.intersection?.disconnect()\n    this.subscriptions.forEach((s) => s.unsubscribe())\n  }\n\n  ngOnChanges(): void {\n    this.build()\n  }\n\n  private build(): void {\n    this.clear()\n\n    if (!this.component) {\n      return\n    }\n\n    const componentNode = this.component.injector.get(ElementRef).nativeElement as HTMLElement\n\n    const tocContainer = this.elementRef.nativeElement\n\n    const h2Nodes = Array.from(componentNode.children).filter((node) => {\n      return node.tagName === 'H2' && node.parentNode?.isSameNode(componentNode)\n    })\n\n    this.detectIntersection()\n\n    const ul = document.createElement('ul')\n    h2Nodes.forEach((h2) => {\n      const id = this.dashify(h2.textContent || '')\n      const target = document.createElement('span')\n      target.id = id\n      h2.insertAdjacentElement('afterend', target)\n\n      const li = document.createElement('li')\n      const anchor = document.createElement('a')\n      anchor.innerHTML = h2.innerHTML\n      // .substring(1) will remove the leading / (prevent errors when baseHref is defined in index.html)\n      anchor.href = this.location.path().substring(1) + '#' + id\n\n      li.appendChild(anchor)\n      ul.appendChild(li)\n\n      h2.setAttribute('data-toc-id', id)\n      li.setAttribute('data-toc-id', id)\n\n      this.anchors.push(li)\n\n      this.intersection?.observe(h2)\n    })\n\n    tocContainer.appendChild(ul)\n\n    const { fragment } = this.activatedRoute.snapshot\n    if (fragment) {\n      this.scroll(fragment)\n    }\n\n    this.observer.observe(componentNode, {\n      childList: true,\n      subtree: true,\n    })\n  }\n\n  private dashify(input: string): string {\n    return input\n      .trim()\n      .replace(/([a-z])([A-Z])/g, '$1-$2')\n      .replace(/\\W/g, (m) => (/[À-ž]/.test(m) ? m : '-'))\n      .replace(/^-+|-+$/g, '')\n      .replace(/-{2,}/g, (m) => '-') // Condense multiple consecutive dashes to one.\n      .toLowerCase()\n  }\n\n  private detectIntersection(): void {\n    const tocContainer = this.elementRef.nativeElement\n    const rect = tocContainer.getBoundingClientRect()\n    const bottom = -window.innerHeight + rect.y + 200\n\n    this.intersection?.disconnect()\n    this.intersection = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting) {\n            this.anchors.forEach((anchor) => {\n              anchor.classList.remove('active')\n              const a = anchor.getAttribute('data-toc-id')\n              const b = entry.target.getAttribute('data-toc-id')\n              if (a === b) {\n                anchor.classList.add('active')\n              }\n            })\n          }\n        })\n      },\n      {\n        // A BOX OF 200px STARTING AT THE POSITION OF THE TOC ELEMENT\n        rootMargin: `0px 0px ${bottom}px 0px`,\n      }\n    )\n  }\n\n  private clear(): void {\n    const tocContainer = this.elementRef.nativeElement\n    tocContainer.innerHTML = ''\n    this.observer.disconnect()\n    this.intersection?.disconnect()\n    this.anchors = []\n  }\n\n  private scroll(query: string): void {\n    const targetElement = document.querySelector(`h2[data-toc-id=\"${query}\"]`)\n    if (!targetElement) {\n      window.scrollTo(0, 0)\n    } else if (!this.isInViewport(targetElement)) {\n      targetElement.scrollIntoView()\n    }\n  }\n\n  private isInViewport(elem: any): boolean {\n    const bounding = elem.getBoundingClientRect()\n    return (\n      bounding.top >= 0 &&\n      bounding.left >= 0 &&\n      bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n      bounding.right <= (window.innerWidth || document.documentElement.clientWidth)\n    )\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { NgeDocService } from '../../../nge-doc.service'\n\n@Component({\n  selector: 'nge-doc-footer',\n  templateUrl: './footer.component.html',\n  styleUrls: ['./footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterComponent {\n  readonly state$ = this.docService.stateChanges\n\n  constructor(private readonly docService: NgeDocService) {}\n}\n","<footer *ngIf=\"state$|async as state\">\n  <div>\n    <ng-container *ngIf=\"state.prevLink\">\n      <a class=\"icon-button\" [routerLink]=\"state.prevLink.href\">\n        <img src=\"https://icongr.am/octicons/chevron-left.svg?size=36&color=FFFFFF\" alt=\"Previous page\">\n        {{ state.prevLink.title }}\n      </a>\n    </ng-container>\n    <div class=\"spacer\"></div>\n    <ng-container *ngIf=\"state.nextLink\">\n      <a class=\"icon-button\" [routerLink]=\"state.nextLink.href\">\n        {{ state.nextLink.title }}\n        <img src=\"https://icongr.am/octicons/chevron-right.svg?size=36&color=FFFFFF\" alt=\"Next page\">\n      </a>\n    </ng-container>\n  </div>\n  <div>\n    <div class=\"powered-by\">\n      Powered by\n      <a href=\"https://cisstech.github.io/nge/docs/nge-doc/\" target=\"_blank\">Ngedoc</a>\n    </div>\n    <div class=\"spacer\"></div>\n    <ng-container *ngIf=\"state.meta.links\">\n      <ng-container *ngFor=\"let item of state.meta.links\">\n        <a class=\"icon-button\" [href]=\"item.href\" target=\"_blank\">\n          <img [src]=\"item.icon\">\n        </a>\n      </ng-container>\n    </ng-container>\n    <ng-container *ngIf=\"state.meta.repo\">\n      <a class=\"icon-button\" [href]=\"state.meta.repo.url\" target=\"_blank\" title=\"GitHub's repository\">\n        <img src=\"https://icongr.am/octicons/mark-github.svg?size=24&color=FFFFFF\" >\n      </a>\n    </ng-container>\n  </div>\n</footer>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Injector, Output } from '@angular/core'\nimport { NgeDocLinkActionHandler } from '../../../nge-doc'\nimport { NgeDocService } from '../../../nge-doc.service'\n\n@Component({\n  selector: 'nge-doc-header',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent {\n  @Output() toggle = new EventEmitter()\n  state$ = this.docService.stateChanges\n\n  constructor(\n    readonly injector: Injector,\n    readonly docService: NgeDocService\n  ) {}\n\n  async invoke(handler: NgeDocLinkActionHandler) {\n    if (typeof handler === 'string') {\n      window.open(handler, '_blank')\n    } else {\n      await handler(this.injector)\n    }\n  }\n}\n","<header *ngIf=\"state$|async as state\">\n  <div class=\"action\" aria-label=\"Menu\" (click)=\"toggle.emit()\">\n    <img src=\"https://icongr.am/octicons/three-bars.svg?size=24&color=currentColor\">\n  </div>\n  <ng-container *ngIf=\"state.meta.backUrl\">\n    <a class=\"action\" aria-label=\"Back\" [routerLink]=\"state.meta.backUrl\">\n      <img [src]=\"state.meta.backIconUrl ?? 'https://icongr.am/octicons/home.svg?size=24&color=currentColor'\">\n    </a>\n  </ng-container>\n  <ng-container *ngIf=\"state.meta.backUrlHref\">\n    <a class=\"action\" aria-label=\"Back\" [href]=\"state.meta.backUrlHref\">\n      <img [src]=\"state.meta.backIconUrl ?? 'https://icongr.am/octicons/home.svg?size=24&color=currentColor'\">\n    </a>\n  </ng-container>\n  <div class=\"spacer\"></div>\n  <ng-container *ngIf=\"state.currLink?.actions\">\n    <ng-container *ngFor=\"let action of state.currLink?.actions || []\">\n      <div class=\"action\" [attr.aria-label]=\"action.title\" [title]=\"action.tooltip\" (click)=\"invoke(action.run)\">\n        <ng-container *ngIf=\"action.title\">\n          <span>{{action.title}}</span>\n        </ng-container>\n        <ng-container *ngIf=\"action.icon\">\n          <img [src]=\"action.icon\">\n        </ng-container>\n      </div>\n    </ng-container>\n  </ng-container>\n</header>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { NgeDocLink } from '../../../nge-doc'\nimport { NgeDocService } from '../../../nge-doc.service'\n\n@Component({\n  selector: 'nge-doc-sidenav',\n  templateUrl: './sidenav.component.html',\n  styleUrls: ['./sidenav.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidenavComponent {\n  state$ = this.docService.stateChanges\n\n  constructor(readonly docService: NgeDocService) {}\n\n  trackBy(_: number, item: NgeDocLink) {\n    return item.href\n  }\n}\n","<ng-container *ngIf=\"state$|async as state\">\n  <header>\n    <ng-container *ngIf=\"state.meta.logo; else: nologo\">\n      <img [src]=\"state.meta.logo\" alt=\"Documentation Logo\">\n    </ng-container>\n    <ng-template #nologo>\n      <img src=\"https://icongr.am/octicons/book.svg?size=48&color=34495e\">\n    </ng-template>\n    <h1>{{ state.meta.name }}</h1>\n  </header>\n  <nav *ngIf=\"state.links.length\">\n    <ng-container *ngTemplateOutlet=\"template; context: { $implicit: state.links }\"></ng-container>\n  </nav>\n</ng-container>\n<ng-template #template let-links>\n  <ul>\n    <ng-container *ngFor=\"let link of links; trackBy: trackBy\">\n      <li [class.caption]=\"docService.isExpandable(link)\">\n        <a [routerLink]=\"link.href\" [class.active]=\"docService.isActive(link)\">\n          <img *ngIf=\"link.icon\" [src]=\"link.icon\">\n          {{ link.title }}\n        </a>\n      </li>\n      <ng-container *ngIf=\"docService.isExpandable(link)\">\n        <ng-container\n          *ngTemplateOutlet=\"template; context: { $implicit: link.children }\">\n        </ng-container>\n      </ng-container>\n    </ng-container>\n  </ul>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core'\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'\nimport { Subscription } from 'rxjs'\nimport { ChangeDetectorRef } from '@angular/core'\n\n@Component({\n  selector: 'nge-doc-default-layout',\n  templateUrl: './default-layout.component.html',\n  styleUrls: ['./default-layout.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultLayoutComponent implements OnInit, OnDestroy {\n  private subscription?: Subscription\n  sidebarOpened = true\n  showTableOfContents = true\n\n  constructor(\n    private readonly observer: BreakpointObserver,\n    private readonly changeDetectorRef: ChangeDetectorRef\n  ) {}\n\n  ngOnInit(): void {\n    this.observer.observe([Breakpoints.XSmall, Breakpoints.Small]).subscribe((result) => {\n      this.sidebarOpened = true\n      this.showTableOfContents = true\n      if (result.matches) {\n        this.sidebarOpened = false\n        this.showTableOfContents = false\n      }\n      this.changeDetectorRef.markForCheck()\n    })\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe()\n  }\n}\n","<main>\n  <aside class=\"sidebar\" [class.opened]=\"sidebarOpened\">\n    <nge-doc-sidenav />\n  </aside>\n  <section>\n    <nge-doc-header (toggle)=\"sidebarOpened = !sidebarOpened\" />\n    <article>\n      <nge-doc-renderer #renderer />\n      <aside\n        *ngIf=\"showTableOfContents\"\n        [ngeDocToc]=\"renderer.componentRef\">\n      </aside>\n    </article>\n  </section>\n</main>\n<nge-doc-footer />\n","import { Component, OnInit } from '@angular/core'\nimport { NgeDocService } from './nge-doc.service'\n\n@Component({\n  selector: 'nge-doc',\n  templateUrl: './nge-doc.component.html',\n  providers: [NgeDocService],\n  styleUrls: ['nge-doc.component.scss'],\n})\nexport class NgeDocComponent implements OnInit {\n  constructor(private readonly docService: NgeDocService) {}\n\n  async ngOnInit() {\n    await this.docService.setup()\n  }\n}\n","<nge-doc-default-layout />\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { NgeDocRendererComponent } from './renderer.component'\nimport { NgeDocTocDirective } from './toc.directive'\n\nconst declarations = [NgeDocRendererComponent, NgeDocTocDirective]\n\n@NgModule({\n  imports: [CommonModule],\n  exports: declarations,\n  declarations,\n})\nexport class NgeDocRendererModule {}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\n\nimport { NgeDocRendererModule } from '../../renderer/renderer.module'\n\nimport { FooterComponent } from './footer/footer.component'\nimport { HeaderComponent } from './header/header.component'\nimport { SidenavComponent } from './sidenav/sidenav.component'\nimport { DefaultLayoutComponent } from './default-layout.component'\n\n@NgModule({\n  declarations: [FooterComponent, HeaderComponent, SidenavComponent, DefaultLayoutComponent],\n  exports: [DefaultLayoutComponent],\n  imports: [CommonModule, RouterModule, NgeDocRendererModule],\n})\nexport class DefaultLayoutModule {}\n","// ANGULAR\nimport { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\n\n// MODULE\nimport { NgeDocComponent } from './nge-doc.component'\nimport { DefaultLayoutModule } from './layouts/default/default-layout.module'\n\n@NgModule({\n  declarations: [NgeDocComponent],\n  imports: [\n    CommonModule,\n    RouterModule.forChild([{ path: '**', pathMatch: 'full', component: NgeDocComponent }]),\n    DefaultLayoutModule,\n  ],\n})\nexport class NgeDocModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.NgeDocService","i3","i3.NgeDocRendererComponent","i4.NgeDocTocDirective","i5.FooterComponent","i6.HeaderComponent","i7.SidenavComponent","i2.DefaultLayoutComponent"],"mappings":"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"}