@ng-doc/app 19.1.0 → 19.3.0

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.
Files changed (44) hide show
  1. package/components/playground/playground-demo/playground-demo.component.d.ts +2 -1
  2. package/components/toc/toc.component.d.ts +2 -1
  3. package/directives/route-active/route-active.directive.d.ts +2 -6
  4. package/fesm2022/ng-doc-app-classes-search-engine.mjs.map +1 -1
  5. package/fesm2022/ng-doc-app-components-breadcrumb.mjs +2 -4
  6. package/fesm2022/ng-doc-app-components-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/ng-doc-app-components-code.mjs +1 -4
  8. package/fesm2022/ng-doc-app-components-code.mjs.map +1 -1
  9. package/fesm2022/ng-doc-app-components-heading-anchor.mjs +2 -2
  10. package/fesm2022/ng-doc-app-components-heading-anchor.mjs.map +1 -1
  11. package/fesm2022/ng-doc-app-components-image-viewer.mjs +1 -2
  12. package/fesm2022/ng-doc-app-components-image-viewer.mjs.map +1 -1
  13. package/fesm2022/ng-doc-app-components-navbar.mjs +8 -25
  14. package/fesm2022/ng-doc-app-components-navbar.mjs.map +1 -1
  15. package/fesm2022/ng-doc-app-components-page.mjs +4 -17
  16. package/fesm2022/ng-doc-app-components-page.mjs.map +1 -1
  17. package/fesm2022/ng-doc-app-components-playground.mjs +9 -12
  18. package/fesm2022/ng-doc-app-components-playground.mjs.map +1 -1
  19. package/fesm2022/ng-doc-app-components-root.mjs +4 -9
  20. package/fesm2022/ng-doc-app-components-root.mjs.map +1 -1
  21. package/fesm2022/ng-doc-app-components-search-dialog.mjs +1 -4
  22. package/fesm2022/ng-doc-app-components-search-dialog.mjs.map +1 -1
  23. package/fesm2022/ng-doc-app-components-search.mjs +5 -28
  24. package/fesm2022/ng-doc-app-components-search.mjs.map +1 -1
  25. package/fesm2022/ng-doc-app-components-sidebar.mjs +3 -10
  26. package/fesm2022/ng-doc-app-components-sidebar.mjs.map +1 -1
  27. package/fesm2022/ng-doc-app-components-tabs.mjs +1 -4
  28. package/fesm2022/ng-doc-app-components-tabs.mjs.map +1 -1
  29. package/fesm2022/ng-doc-app-components-theme-toggle.mjs +1 -2
  30. package/fesm2022/ng-doc-app-components-theme-toggle.mjs.map +1 -1
  31. package/fesm2022/ng-doc-app-components-toc.mjs +8 -12
  32. package/fesm2022/ng-doc-app-components-toc.mjs.map +1 -1
  33. package/fesm2022/ng-doc-app-defaults-default-skeleton.mjs.map +1 -1
  34. package/fesm2022/ng-doc-app-directives-route-active.mjs +15 -23
  35. package/fesm2022/ng-doc-app-directives-route-active.mjs.map +1 -1
  36. package/fesm2022/ng-doc-app-helpers.mjs.map +1 -1
  37. package/fesm2022/ng-doc-app-services-sidebar.mjs +2 -8
  38. package/fesm2022/ng-doc-app-services-sidebar.mjs.map +1 -1
  39. package/fesm2022/ng-doc-app-services-theme.mjs +2 -7
  40. package/fesm2022/ng-doc-app-services-theme.mjs.map +1 -1
  41. package/package.json +7 -7
  42. package/styles/global.css +3 -0
  43. package/styles/main.css +3 -0
  44. package/styles/themes/dark.css +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-sidebar.mjs","sources":["../../../../libs/app/components/sidebar/sidebar-category/sidebar-category.component.ts","../../../../libs/app/components/sidebar/sidebar-category/sidebar-category.component.html","../../../../libs/app/components/sidebar/sidebar-item/sidebar-item.component.ts","../../../../libs/app/components/sidebar/sidebar-item/sidebar-item.component.html","../../../../libs/app/components/sidebar/sidebar.component.ts","../../../../libs/app/components/sidebar/sidebar.component.html","../../../../libs/app/components/sidebar/ng-doc-app-components-sidebar.ts"],"sourcesContent":["import { Location, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n inject,\n Input,\n} from '@angular/core';\nimport { NgDocRouteActiveDirective } from '@ng-doc/app/directives/route-active';\nimport { NgDocNavigation } from '@ng-doc/app/interfaces';\nimport {\n NgDocContent,\n NgDocDotComponent,\n NgDocExpanderComponent,\n NgDocIconComponent,\n NgDocRotatorDirective,\n NgDocTextComponent,\n NgDocTextLeftDirective,\n} from '@ng-doc/ui-kit';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n@Component({\n selector: 'ng-doc-sidebar-category',\n templateUrl: './sidebar-category.component.html',\n styleUrls: ['./sidebar-category.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocRouteActiveDirective,\n NgIf,\n NgDocDotComponent,\n NgDocTextComponent,\n NgDocIconComponent,\n NgDocTextLeftDirective,\n NgDocRotatorDirective,\n NgDocExpanderComponent,\n PolymorpheusModule,\n NgTemplateOutlet,\n ],\n})\n@UntilDestroy()\nexport class NgDocSidebarCategoryComponent {\n @Input({ required: true })\n category!: NgDocNavigation;\n\n @Input()\n @HostBinding('attr.data-ng-doc-is-root')\n isRoot: boolean = false;\n\n @Input()\n content: NgDocContent = '';\n\n @Input()\n @HostBinding('attr.data-ng-doc-expandable')\n expandable: boolean = true;\n\n @Input()\n expanded: boolean = true;\n\n protected readonly location = inject(Location);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n constructor() {\n this.location.onUrlChange(() => {\n if (this.location.path().includes(this.category.route ?? '', 0)) {\n this.expand();\n }\n });\n }\n\n toggle(): void {\n this.expanded ? this.collapse() : this.expand();\n }\n\n expand(): void {\n if (this.category?.expandable) {\n this.expanded = true;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n collapse(): void {\n if (this.category?.expandable) {\n this.expanded = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","<div class=\"ng-doc-sidebar-category-wrapper\">\n <div class=\"ng-doc-sidebar-category-button\" (click)=\"toggle()\">\n <div class=\"ng-doc-sidebar-category\" [ngDocRouteActive]=\"category.route\" activeClass=\"active\">\n <ng-doc-dot *ngIf=\"!expandable\"></ng-doc-dot>\n <span ng-doc-text>\n <ng-doc-icon\n icon=\"chevron-right\"\n *ngIf=\"category.expandable\"\n [ngDocRotator]=\"expanded\"\n ngDocTextLeft>\n </ng-doc-icon>\n {{ category.title }}\n </span>\n </div>\n <!--\t\t<div ng-doc-text color=\"muted\" size=\"small\">Some description</div>-->\n </div>\n <ng-doc-expander [expanded]=\"expanded\" [content]=\"contentTemplate\" collapseMod=\"hide\" />\n <ng-template #contentTemplate>\n <div class=\"ng-doc-sidebar-category-children\">\n <!--We wrap content via ng-template to save state of the child components -->\n <ng-content></ng-content>\n <ng-container *polymorpheusOutlet=\"content as text\">{{ text }}</ng-container>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgDocNavigation } from '@ng-doc/app/interfaces';\nimport {\n NgDocColor,\n NgDocDotComponent,\n NgDocTagComponent,\n NgDocTextComponent,\n} from '@ng-doc/ui-kit';\n\n@Component({\n selector: 'ng-doc-sidebar-item',\n templateUrl: './sidebar-item.component.html',\n styleUrls: ['./sidebar-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLinkActive, RouterLink, NgDocDotComponent, NgDocTextComponent, NgDocTagComponent],\n})\nexport class NgDocSidebarItemComponent {\n item = input.required<NgDocNavigation>();\n statuses = computed(() => {\n const statuses = this.item().metadata?.tags['status'] ?? [];\n\n return statuses.map((status) => {\n const [type, text] = status.split(/\\s+(.+)/);\n\n return { type: type.replace(/^:/, '') as NgDocColor, text };\n });\n });\n}\n","<a class=\"ng-doc-sidebar-link\" [routerLink]=\"[item().route]\" routerLinkActive=\"active\">\n <ng-doc-dot></ng-doc-dot>\n <span ng-doc-text [absoluteContent]=\"true\">\n {{ item().title }}\n @for (status of statuses(); track status) {\n <ng-doc-tag size=\"small\" [color]=\"status.type || 'success'\" mod=\"light\">{{\n status.text\n }}</ng-doc-tag>\n }\n </span>\n</a>\n","import { Location, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { NgDocNavigation } from '@ng-doc/app/interfaces';\nimport { NG_DOC_CONTEXT } from '@ng-doc/app/tokens';\nimport { NgDocBindPipe, NgDocExecutePipe } from '@ng-doc/ui-kit';\n\nimport { NgDocSidebarCategoryComponent } from './sidebar-category/sidebar-category.component';\nimport { NgDocSidebarItemComponent } from './sidebar-item/sidebar-item.component';\n\n@Component({\n selector: 'ng-doc-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgFor,\n NgTemplateOutlet,\n NgIf,\n NgDocSidebarCategoryComponent,\n NgDocSidebarItemComponent,\n NgDocExecutePipe,\n NgDocBindPipe,\n ],\n})\nexport class NgDocSidebarComponent {\n protected readonly location = inject(Location);\n protected readonly context = inject(NG_DOC_CONTEXT);\n\n getNavigation(nav?: NgDocNavigation): NgDocNavigation[] {\n return nav ? nav.children ?? [] : this.context.navigation;\n }\n\n matchRoute(route: string): boolean {\n return this.location.path().includes(route ?? '', 0);\n }\n}\n","<div class=\"ng-doc-side-bar-wrapper\">\n <ng-container *ngFor=\"let item of getNavigation | bind: this | execute\">\n <ng-container\n *ngTemplateOutlet=\"sidebarTemplate; context: { item: item, root: true }\"></ng-container>\n </ng-container>\n\n <ng-template let-item=\"item\" let-root=\"root\" #sidebarTemplate>\n <ng-container *ngIf=\"item.children?.length; else itemTemplate\">\n <ng-doc-sidebar-category\n *ngIf=\"!item.hidden\"\n [category]=\"item\"\n [expandable]=\"!!item?.expandable\"\n [expanded]=\"\n !!item?.expanded || !item?.expandable || (matchRoute | bind: this | execute: item.route)\n \"\n [isRoot]=\"!!root\"\n [content]=\"categoryContent\">\n </ng-doc-sidebar-category>\n <ng-template #categoryContent>\n <ng-container *ngFor=\"let child of getNavigation | bind: this | execute: item\">\n <ng-container\n *ngTemplateOutlet=\"\n sidebarTemplate;\n context: { item: child, root: false }\n \"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-template #itemTemplate>\n <ng-doc-sidebar-item [item]=\"item\" *ngIf=\"!item.hidden\"></ng-doc-sidebar-item>\n </ng-template>\n </ng-template>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-doc-app-components-sidebar.mjs","sources":["../../../../libs/app/components/sidebar/sidebar-category/sidebar-category.component.ts","../../../../libs/app/components/sidebar/sidebar-category/sidebar-category.component.html","../../../../libs/app/components/sidebar/sidebar-item/sidebar-item.component.ts","../../../../libs/app/components/sidebar/sidebar-item/sidebar-item.component.html","../../../../libs/app/components/sidebar/sidebar.component.ts","../../../../libs/app/components/sidebar/sidebar.component.html","../../../../libs/app/components/sidebar/ng-doc-app-components-sidebar.ts"],"sourcesContent":["import { Location, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n inject,\n Input,\n} from '@angular/core';\nimport { NgDocRouteActiveDirective } from '@ng-doc/app/directives/route-active';\nimport { NgDocNavigation } from '@ng-doc/app/interfaces';\nimport {\n NgDocContent,\n NgDocDotComponent,\n NgDocExpanderComponent,\n NgDocIconComponent,\n NgDocRotatorDirective,\n NgDocTextComponent,\n NgDocTextLeftDirective,\n} from '@ng-doc/ui-kit';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n@Component({\n selector: 'ng-doc-sidebar-category',\n templateUrl: './sidebar-category.component.html',\n styleUrls: ['./sidebar-category.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocRouteActiveDirective,\n NgIf,\n NgDocDotComponent,\n NgDocTextComponent,\n NgDocIconComponent,\n NgDocTextLeftDirective,\n NgDocRotatorDirective,\n NgDocExpanderComponent,\n PolymorpheusModule,\n ],\n})\nexport class NgDocSidebarCategoryComponent {\n @Input({ required: true })\n category!: NgDocNavigation;\n\n @Input()\n @HostBinding('attr.data-ng-doc-is-root')\n isRoot: boolean = false;\n\n @Input()\n content: NgDocContent = '';\n\n @Input()\n @HostBinding('attr.data-ng-doc-expandable')\n expandable: boolean = true;\n\n @Input()\n expanded: boolean = true;\n\n protected readonly location = inject(Location);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n constructor() {\n this.location.onUrlChange(() => {\n if (this.location.path().includes(this.category.route ?? '', 0)) {\n this.expand();\n }\n });\n }\n\n toggle(): void {\n this.expanded ? this.collapse() : this.expand();\n }\n\n expand(): void {\n if (this.category?.expandable) {\n this.expanded = true;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n collapse(): void {\n if (this.category?.expandable) {\n this.expanded = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","<div class=\"ng-doc-sidebar-category-wrapper\">\n <div class=\"ng-doc-sidebar-category-button\" (click)=\"toggle()\">\n <div class=\"ng-doc-sidebar-category\" [ngDocRouteActive]=\"category.route\" activeClass=\"active\">\n <ng-doc-dot *ngIf=\"!expandable\"></ng-doc-dot>\n <span ng-doc-text>\n <ng-doc-icon\n icon=\"chevron-right\"\n *ngIf=\"category.expandable\"\n [ngDocRotator]=\"expanded\"\n ngDocTextLeft>\n </ng-doc-icon>\n {{ category.title }}\n </span>\n </div>\n <!--\t\t<div ng-doc-text color=\"muted\" size=\"small\">Some description</div>-->\n </div>\n <ng-doc-expander [expanded]=\"expanded\" [content]=\"contentTemplate\" collapseMod=\"hide\" />\n <ng-template #contentTemplate>\n <div class=\"ng-doc-sidebar-category-children\">\n <!--We wrap content via ng-template to save state of the child components -->\n <ng-content></ng-content>\n <ng-container *polymorpheusOutlet=\"content as text\">{{ text }}</ng-container>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgDocNavigation } from '@ng-doc/app/interfaces';\nimport {\n NgDocColor,\n NgDocDotComponent,\n NgDocTagComponent,\n NgDocTextComponent,\n} from '@ng-doc/ui-kit';\n\n@Component({\n selector: 'ng-doc-sidebar-item',\n templateUrl: './sidebar-item.component.html',\n styleUrls: ['./sidebar-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLinkActive, RouterLink, NgDocDotComponent, NgDocTextComponent, NgDocTagComponent],\n})\nexport class NgDocSidebarItemComponent {\n item = input.required<NgDocNavigation>();\n statuses = computed(() => {\n const statuses = this.item().metadata?.tags['status'] ?? [];\n\n return statuses.map((status) => {\n const [type, text] = status.split(/\\s+(.+)/);\n\n return { type: type.replace(/^:/, '') as NgDocColor, text };\n });\n });\n}\n","<a class=\"ng-doc-sidebar-link\" [routerLink]=\"[item().route]\" routerLinkActive=\"active\">\n <ng-doc-dot></ng-doc-dot>\n <span ng-doc-text [absoluteContent]=\"true\">\n {{ item().title }}\n @for (status of statuses(); track status) {\n <ng-doc-tag size=\"small\" [color]=\"status.type || 'success'\" mod=\"light\">{{\n status.text\n }}</ng-doc-tag>\n }\n </span>\n</a>\n","import { Location, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { NgDocNavigation } from '@ng-doc/app/interfaces';\nimport { NG_DOC_CONTEXT } from '@ng-doc/app/tokens';\nimport { NgDocBindPipe, NgDocExecutePipe } from '@ng-doc/ui-kit';\n\nimport { NgDocSidebarCategoryComponent } from './sidebar-category/sidebar-category.component';\nimport { NgDocSidebarItemComponent } from './sidebar-item/sidebar-item.component';\n\n@Component({\n selector: 'ng-doc-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgFor,\n NgTemplateOutlet,\n NgIf,\n NgDocSidebarCategoryComponent,\n NgDocSidebarItemComponent,\n NgDocExecutePipe,\n NgDocBindPipe,\n ],\n})\nexport class NgDocSidebarComponent {\n protected readonly location = inject(Location);\n protected readonly context = inject(NG_DOC_CONTEXT);\n\n getNavigation(nav?: NgDocNavigation): NgDocNavigation[] {\n return nav ? nav.children ?? [] : this.context.navigation;\n }\n\n matchRoute(route: string): boolean {\n return this.location.path().includes(route ?? '', 0);\n }\n}\n","<div class=\"ng-doc-side-bar-wrapper\">\n <ng-container *ngFor=\"let item of getNavigation | bind: this | execute\">\n <ng-container\n *ngTemplateOutlet=\"sidebarTemplate; context: { item: item, root: true }\"></ng-container>\n </ng-container>\n\n <ng-template let-item=\"item\" let-root=\"root\" #sidebarTemplate>\n <ng-container *ngIf=\"item.children?.length; else itemTemplate\">\n <ng-doc-sidebar-category\n *ngIf=\"!item.hidden\"\n [category]=\"item\"\n [expandable]=\"!!item?.expandable\"\n [expanded]=\"\n !!item?.expanded || !item?.expandable || (matchRoute | bind: this | execute: item.route)\n \"\n [isRoot]=\"!!root\"\n [content]=\"categoryContent\">\n </ng-doc-sidebar-category>\n <ng-template #categoryContent>\n <ng-container *ngFor=\"let child of getNavigation | bind: this | execute: item\">\n <ng-container\n *ngTemplateOutlet=\"\n sidebarTemplate;\n context: { item: child, root: false }\n \"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-template #itemTemplate>\n <ng-doc-sidebar-item [item]=\"item\" *ngIf=\"!item.hidden\"></ng-doc-sidebar-item>\n </ng-template>\n </ng-template>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,8 +2,7 @@ import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
5
- import { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';
6
- import { NgDocTabGroupComponent, NgDocTabComponent, NgDocExecutePipe, NgDocIconComponent, NgDocBindPipe } from '@ng-doc/ui-kit';
5
+ import { NgDocTabGroupComponent, NgDocTabComponent, NgDocExecutePipe, NgDocIconComponent } from '@ng-doc/ui-kit';
7
6
 
8
7
  class NgDocTabsComponent {
9
8
  constructor() {
@@ -24,9 +23,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
24
23
  CommonModule,
25
24
  NgDocTabGroupComponent,
26
25
  NgDocTabComponent,
27
- NgDocSanitizeHtmlPipe,
28
26
  NgDocExecutePipe,
29
- NgDocBindPipe,
30
27
  NgDocIconComponent,
31
28
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-doc-tab-group [openedTab]=\"getActiveIndex | execute: tabs\">\n\t<ng-doc-tab *ngFor=\"let tab of tabs; let i = index\" [label]=\"label\" [content]=\"content\" [id]=\"i\">\n\t\t<ng-template #label>\n\t\t\t<ng-doc-icon [customIcon]=\"tab.icon\" *ngIf=\"tab.icon\"></ng-doc-icon>\n\t\t\t{{ tab.title }}\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t<div #element>\n\t\t\t\t{{ appendElement | execute: tab.content:element }}\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-doc-tab>\n</ng-doc-tab-group>\n", styles: [":host{display:block;border-radius:var(--ng-doc-tabs-border-radius);border:var(--ng-doc-tabs-border);margin:var(--ng-doc-tabs-margin);overflow:hidden;--ng-doc-code-margin: 0;--ng-doc-code-border-radius: 0;--ng-doc-code-border: none;--ng-doc-tab-group-header-background: var(--ng-doc-base-2)}:host ng-doc-icon{margin-right:calc(var(--ng-doc-base-gutter) / 2)}\n"] }]
32
29
  }], propDecorators: { tabs: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-tabs.mjs","sources":["../../../../libs/app/components/tabs/tabs.component.ts","../../../../libs/app/components/tabs/tabs.component.html","../../../../libs/app/components/tabs/ng-doc-app-components-tabs.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgDocTab } from '@ng-doc/app/interfaces';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport {\n NgDocBindPipe,\n NgDocExecutePipe,\n NgDocIconComponent,\n NgDocTabComponent,\n NgDocTabGroupComponent,\n} from '@ng-doc/ui-kit';\n\n@Component({\n selector: 'ng-doc-tabs',\n imports: [\n CommonModule,\n NgDocTabGroupComponent,\n NgDocTabComponent,\n NgDocSanitizeHtmlPipe,\n NgDocExecutePipe,\n NgDocBindPipe,\n NgDocIconComponent,\n ],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgDocTabsComponent {\n @Input()\n tabs: NgDocTab[] = [];\n\n getActiveIndex(tabs: NgDocTab[]): number {\n return Math.max(\n tabs.findIndex((tab: NgDocTab) => tab.active),\n 0,\n );\n }\n\n appendElement(element: Element, parent: Element): void {\n parent.appendChild(element);\n }\n}\n","<ng-doc-tab-group [openedTab]=\"getActiveIndex | execute: tabs\">\n\t<ng-doc-tab *ngFor=\"let tab of tabs; let i = index\" [label]=\"label\" [content]=\"content\" [id]=\"i\">\n\t\t<ng-template #label>\n\t\t\t<ng-doc-icon [customIcon]=\"tab.icon\" *ngIf=\"tab.icon\"></ng-doc-icon>\n\t\t\t{{ tab.title }}\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t<div #element>\n\t\t\t\t{{ appendElement | execute: tab.content:element }}\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-doc-tab>\n</ng-doc-tab-group>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA2Ba,kBAAkB,CAAA;AAf/B,IAAA,WAAA,GAAA;QAiBE,IAAI,CAAA,IAAA,GAAe,EAAE;AAYtB;AAVC,IAAA,cAAc,CAAC,IAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,SAAS,CAAC,CAAC,GAAa,KAAK,GAAG,CAAC,MAAM,CAAC,EAC7C,CAAC,CACF;;IAGH,aAAa,CAAC,OAAgB,EAAE,MAAe,EAAA;AAC7C,QAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;;8GAZlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B/B,6fAaA,EAAA,MAAA,EAAA,CAAA,yWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,sBAAsB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,iBAAiB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEjB,gBAAgB,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMT,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACd,OAAA,EAAA;wBACP,YAAY;wBACZ,sBAAsB;wBACtB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,aAAa;wBACb,kBAAkB;qBACnB,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6fAAA,EAAA,MAAA,EAAA,CAAA,yWAAA,CAAA,EAAA;8BAI/C,IAAI,EAAA,CAAA;sBADH;;;AE5BH;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-components-tabs.mjs","sources":["../../../../libs/app/components/tabs/tabs.component.ts","../../../../libs/app/components/tabs/tabs.component.html","../../../../libs/app/components/tabs/ng-doc-app-components-tabs.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgDocTab } from '@ng-doc/app/interfaces';\nimport {\n NgDocExecutePipe,\n NgDocIconComponent,\n NgDocTabComponent,\n NgDocTabGroupComponent,\n} from '@ng-doc/ui-kit';\n\n@Component({\n selector: 'ng-doc-tabs',\n imports: [\n CommonModule,\n NgDocTabGroupComponent,\n NgDocTabComponent,\n NgDocExecutePipe,\n NgDocIconComponent,\n ],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgDocTabsComponent {\n @Input()\n tabs: NgDocTab[] = [];\n\n getActiveIndex(tabs: NgDocTab[]): number {\n return Math.max(\n tabs.findIndex((tab: NgDocTab) => tab.active),\n 0,\n );\n }\n\n appendElement(element: Element, parent: Element): void {\n parent.appendChild(element);\n }\n}\n","<ng-doc-tab-group [openedTab]=\"getActiveIndex | execute: tabs\">\n\t<ng-doc-tab *ngFor=\"let tab of tabs; let i = index\" [label]=\"label\" [content]=\"content\" [id]=\"i\">\n\t\t<ng-template #label>\n\t\t\t<ng-doc-icon [customIcon]=\"tab.icon\" *ngIf=\"tab.icon\"></ng-doc-icon>\n\t\t\t{{ tab.title }}\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t<div #element>\n\t\t\t\t{{ appendElement | execute: tab.content:element }}\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-doc-tab>\n</ng-doc-tab-group>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAuBa,kBAAkB,CAAA;AAb/B,IAAA,WAAA,GAAA;QAeE,IAAI,CAAA,IAAA,GAAe,EAAE;AAYtB;AAVC,IAAA,cAAc,CAAC,IAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,SAAS,CAAC,CAAC,GAAa,KAAK,GAAG,CAAC,MAAM,CAAC,EAC7C,CAAC,CACF;;IAGH,aAAa,CAAC,OAAgB,EAAE,MAAe,EAAA;AAC7C,QAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;;8GAZlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB/B,6fAaA,EAAA,MAAA,EAAA,CAAA,yWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,sBAAsB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,iBAAiB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMT,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACd,OAAA,EAAA;wBACP,YAAY;wBACZ,sBAAsB;wBACtB,iBAAiB;wBACjB,gBAAgB;wBAChB,kBAAkB;qBACnB,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6fAAA,EAAA,MAAA,EAAA,CAAA,yWAAA,CAAA,EAAA;8BAI/C,IAAI,EAAA,CAAA;sBADH;;;AExBH;;AAEG;;;;"}
@@ -1,4 +1,4 @@
1
- import { DOCUMENT, NgIf } from '@angular/common';
1
+ import { DOCUMENT } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
4
4
  import { NgDocThemeService } from '@ng-doc/app/services/theme';
@@ -34,7 +34,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
34
34
  args: [{ selector: 'ng-doc-theme-toggle', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
35
35
  NgDocButtonIconComponent,
36
36
  NgDocTooltipDirective,
37
- NgIf,
38
37
  NgDocIconComponent,
39
38
  NgDocSmoothResizeComponent,
40
39
  ], template: "<button ng-doc-button-icon size=\"large\" (click)=\"toggleTheme()\" [ngDocTooltip]=\"tooltipContent\">\n <ng-template #tooltipContent>\n <ng-doc-smooth-resize [trigger]=\"currentTheme.name\">\n \"{{ currentTheme.name }}\" theme\n </ng-doc-smooth-resize>\n </ng-template>\n\n @if (currentTheme === themes[0]) {\n <div class=\"letter\">A</div>\n } @else if (currentTheme === themes[1]) {\n <ng-doc-icon icon=\"sun\" size=\"24\"></ng-doc-icon>\n } @else {\n <ng-doc-icon icon=\"moon\" size=\"24\"></ng-doc-icon>\n }\n</button>\n", styles: [":host{display:inline-block;height:40px;width:40px}:host .letter{font-family:var(--ng-doc-font-family);font-variant:no-contextual;color:var(--ng-doc-text);line-height:var(--ng-doc-line-height);font-size:var(--ng-doc-font-size);font-weight:var(--ng-doc-font-weight);--ng-doc-font-size: 26px;--ng-doc-font-weight: 600}\n"] }]
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-theme-toggle.mjs","sources":["../../../../libs/app/components/theme-toggle/theme-toggle.component.ts","../../../../libs/app/components/theme-toggle/theme-toggle.component.html","../../../../libs/app/components/theme-toggle/ng-doc-app-components-theme-toggle.ts"],"sourcesContent":["import { DOCUMENT, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { NgDocThemeService } from '@ng-doc/app/services/theme';\nimport {\n NgDocButtonIconComponent,\n NgDocIconComponent,\n NgDocSmoothResizeComponent,\n NgDocTooltipDirective,\n} from '@ng-doc/ui-kit';\n\ninterface ToggleTheme {\n name: string;\n theme: string | null;\n}\n\n@Component({\n selector: 'ng-doc-theme-toggle',\n templateUrl: './theme-toggle.component.html',\n styleUrls: ['./theme-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocButtonIconComponent,\n NgDocTooltipDirective,\n NgIf,\n NgDocIconComponent,\n NgDocSmoothResizeComponent,\n ],\n})\nexport class NgDocThemeToggleComponent {\n protected readonly themes: ToggleTheme[] = [\n { name: 'Auto', theme: 'auto' },\n { name: 'Light', theme: null },\n { name: 'Dark', theme: 'dark' },\n ];\n protected readonly documentElement = inject(DOCUMENT).documentElement;\n protected readonly themeService = inject(NgDocThemeService);\n\n get currentTheme(): ToggleTheme {\n const theme = this.documentElement.getAttribute('data-theme');\n\n return this.themes.find(({ theme: t }) => t === theme) ?? this.themes[0];\n }\n\n get nextTheme(): ToggleTheme {\n const index = this.themes.findIndex(({ theme }) => theme === this.currentTheme.theme);\n\n return this.themes[(index + 1) % this.themes.length];\n }\n\n toggleTheme(): void {\n const { theme } = this.nextTheme;\n\n this.themeService.set(theme ?? undefined);\n }\n}\n","<button ng-doc-button-icon size=\"large\" (click)=\"toggleTheme()\" [ngDocTooltip]=\"tooltipContent\">\n <ng-template #tooltipContent>\n <ng-doc-smooth-resize [trigger]=\"currentTheme.name\">\n \"{{ currentTheme.name }}\" theme\n </ng-doc-smooth-resize>\n </ng-template>\n\n @if (currentTheme === themes[0]) {\n <div class=\"letter\">A</div>\n } @else if (currentTheme === themes[1]) {\n <ng-doc-icon icon=\"sun\" size=\"24\"></ng-doc-icon>\n } @else {\n <ng-doc-icon icon=\"moon\" size=\"24\"></ng-doc-icon>\n }\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-doc-app-components-theme-toggle.mjs","sources":["../../../../libs/app/components/theme-toggle/theme-toggle.component.ts","../../../../libs/app/components/theme-toggle/theme-toggle.component.html","../../../../libs/app/components/theme-toggle/ng-doc-app-components-theme-toggle.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { NgDocThemeService } from '@ng-doc/app/services/theme';\nimport {\n NgDocButtonIconComponent,\n NgDocIconComponent,\n NgDocSmoothResizeComponent,\n NgDocTooltipDirective,\n} from '@ng-doc/ui-kit';\n\ninterface ToggleTheme {\n name: string;\n theme: string | null;\n}\n\n@Component({\n selector: 'ng-doc-theme-toggle',\n templateUrl: './theme-toggle.component.html',\n styleUrls: ['./theme-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocButtonIconComponent,\n NgDocTooltipDirective,\n NgDocIconComponent,\n NgDocSmoothResizeComponent,\n ],\n})\nexport class NgDocThemeToggleComponent {\n protected readonly themes: ToggleTheme[] = [\n { name: 'Auto', theme: 'auto' },\n { name: 'Light', theme: null },\n { name: 'Dark', theme: 'dark' },\n ];\n protected readonly documentElement = inject(DOCUMENT).documentElement;\n protected readonly themeService = inject(NgDocThemeService);\n\n get currentTheme(): ToggleTheme {\n const theme = this.documentElement.getAttribute('data-theme');\n\n return this.themes.find(({ theme: t }) => t === theme) ?? this.themes[0];\n }\n\n get nextTheme(): ToggleTheme {\n const index = this.themes.findIndex(({ theme }) => theme === this.currentTheme.theme);\n\n return this.themes[(index + 1) % this.themes.length];\n }\n\n toggleTheme(): void {\n const { theme } = this.nextTheme;\n\n this.themeService.set(theme ?? undefined);\n }\n}\n","<button ng-doc-button-icon size=\"large\" (click)=\"toggleTheme()\" [ngDocTooltip]=\"tooltipContent\">\n <ng-template #tooltipContent>\n <ng-doc-smooth-resize [trigger]=\"currentTheme.name\">\n \"{{ currentTheme.name }}\" theme\n </ng-doc-smooth-resize>\n </ng-template>\n\n @if (currentTheme === themes[0]) {\n <div class=\"letter\">A</div>\n } @else if (currentTheme === themes[1]) {\n <ng-doc-icon icon=\"sun\" size=\"24\"></ng-doc-icon>\n } @else {\n <ng-doc-icon icon=\"moon\" size=\"24\"></ng-doc-icon>\n }\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { __decorate, __metadata } from 'tslib';
2
- import { DOCUMENT, NgFor } from '@angular/common';
1
+ import { DOCUMENT } from '@angular/common';
3
2
  import * as i0 from '@angular/core';
4
- import { inject, ElementRef, Component, ChangeDetectionStrategy, Input, HostBinding, QueryList, signal, NgZone, ChangeDetectorRef, Renderer2, afterNextRender, ViewChild, ViewChildren } from '@angular/core';
3
+ import { inject, ElementRef, Component, ChangeDetectionStrategy, Input, HostBinding, QueryList, signal, NgZone, ChangeDetectorRef, Renderer2, DestroyRef, afterNextRender, ViewChild, ViewChildren } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { RouterLink, Router, Scroll } from '@angular/router';
6
6
  import { isPresent } from '@ng-doc/core/helpers/is-present';
7
7
  import { ngDocZoneOptimize } from '@ng-doc/ui-kit';
8
- import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
9
8
  import { fromEvent, merge } from 'rxjs';
10
9
  import { filter, map, startWith, debounceTime, distinctUntilChanged } from 'rxjs/operators';
11
10
  import { NgDocDecodeUriComponentPipe } from '@ng-doc/app/pipes/decode-uri-component';
@@ -40,7 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
40
39
  args: ['attr.data-ng-doc-level']
41
40
  }] } });
42
41
 
43
- let NgDocTocComponent = class NgDocTocComponent {
42
+ class NgDocTocComponent {
44
43
  constructor() {
45
44
  this.tableOfContent = [];
46
45
  this.elements = new QueryList();
@@ -50,6 +49,7 @@ let NgDocTocComponent = class NgDocTocComponent {
50
49
  this.changeDetectorRef = inject(ChangeDetectorRef);
51
50
  this.renderer = inject(Renderer2);
52
51
  this.router = inject(Router);
52
+ this.destroyRef = inject(DestroyRef);
53
53
  afterNextRender({
54
54
  write: () => {
55
55
  const scrollSelection = fromEvent(this.document, 'scroll').pipe(filter(() => !!this.tableOfContent.length), map((event) => event.target.scrollingElement), startWith(this.document.scrollingElement), map((target) => {
@@ -77,7 +77,7 @@ let NgDocTocComponent = class NgDocTocComponent {
77
77
  }), filter(isPresent), debounceTime(20));
78
78
  const elementsChanges = this.elements.changes.pipe(map(() => this.activeItem()), filter(isPresent));
79
79
  merge(merge(scrollSelection, routerSelection).pipe(distinctUntilChanged()), elementsChanges)
80
- .pipe(debounceTime(0), ngDocZoneOptimize(this.ngZone), untilDestroyed(this))
80
+ .pipe(debounceTime(0), ngDocZoneOptimize(this.ngZone), takeUntilDestroyed(this.destroyRef))
81
81
  .subscribe(this.select.bind(this));
82
82
  },
83
83
  });
@@ -103,14 +103,10 @@ let NgDocTocComponent = class NgDocTocComponent {
103
103
  }
104
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocTocComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
105
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: NgDocTocComponent, isStandalone: true, selector: "ng-doc-toc", inputs: { tableOfContent: "tableOfContent" }, viewQueries: [{ propertyName: "selection", first: true, predicate: ["selection"], descendants: true, read: ElementRef }, { propertyName: "elements", predicate: NgDocTocElementComponent, descendants: true }], ngImport: i0, template: "<div class=\"ng-doc-toc-wrapper\">\n <div class=\"ng-doc-toc-container\">\n <div class=\"ng-doc-toc-selection\" #selection></div>\n <ul class=\"ng-doc-toc\">\n @for (item of tableOfContent; track item) {\n <li\n ng-doc-toc-element\n [path]=\"item.path\"\n [hash]=\"item.hash\"\n [level]=\"item.level\"\n [selected]=\"item === activeItem()\">\n {{ item.title }}\n </li>\n }\n </ul>\n </div>\n</div>\n", styles: [":host .ng-doc-toc-wrapper{position:relative;width:var(--ng-doc-toc-width)}:host .ng-doc-toc-wrapper .ng-doc-toc-container{position:fixed;top:calc(var(--ng-doc-navbar-height) + var(--ng-doc-toc-top-padding));overflow-y:auto;height:calc(100% - var(--ng-doc-navbar-height) - var(--ng-doc-base-gutter) * 5);width:var(--ng-doc-toc-width)}:host .ng-doc-toc-wrapper .ng-doc-toc-selection{position:absolute;transform:translate(-50%);width:3px;border-radius:calc(var(--ng-doc-base-gutter) / 2);background-color:var(--ng-doc-primary);left:calc(var(--ng-doc-toc-margin) + 1px);transition:var(--ng-doc-transition)}:host .ng-doc-toc-wrapper .ng-doc-toc{list-style:none;margin:0 0 0 var(--ng-doc-toc-margin);border-left:1px solid var(--ng-doc-base-3);padding:0 0 0 var(--ng-doc-base-gutter)}@media (max-width: 1200px){:host .ng-doc-toc-wrapper{display:none}}\n"], dependencies: [{ kind: "component", type: NgDocTocElementComponent, selector: "li[ng-doc-toc-element]", inputs: ["path", "hash", "selected", "level"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
- };
107
- NgDocTocComponent = __decorate([
108
- UntilDestroy(),
109
- __metadata("design:paramtypes", [])
110
- ], NgDocTocComponent);
106
+ }
111
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocTocComponent, decorators: [{
112
108
  type: Component,
113
- args: [{ selector: 'ng-doc-toc', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgFor, NgDocTocElementComponent], template: "<div class=\"ng-doc-toc-wrapper\">\n <div class=\"ng-doc-toc-container\">\n <div class=\"ng-doc-toc-selection\" #selection></div>\n <ul class=\"ng-doc-toc\">\n @for (item of tableOfContent; track item) {\n <li\n ng-doc-toc-element\n [path]=\"item.path\"\n [hash]=\"item.hash\"\n [level]=\"item.level\"\n [selected]=\"item === activeItem()\">\n {{ item.title }}\n </li>\n }\n </ul>\n </div>\n</div>\n", styles: [":host .ng-doc-toc-wrapper{position:relative;width:var(--ng-doc-toc-width)}:host .ng-doc-toc-wrapper .ng-doc-toc-container{position:fixed;top:calc(var(--ng-doc-navbar-height) + var(--ng-doc-toc-top-padding));overflow-y:auto;height:calc(100% - var(--ng-doc-navbar-height) - var(--ng-doc-base-gutter) * 5);width:var(--ng-doc-toc-width)}:host .ng-doc-toc-wrapper .ng-doc-toc-selection{position:absolute;transform:translate(-50%);width:3px;border-radius:calc(var(--ng-doc-base-gutter) / 2);background-color:var(--ng-doc-primary);left:calc(var(--ng-doc-toc-margin) + 1px);transition:var(--ng-doc-transition)}:host .ng-doc-toc-wrapper .ng-doc-toc{list-style:none;margin:0 0 0 var(--ng-doc-toc-margin);border-left:1px solid var(--ng-doc-base-3);padding:0 0 0 var(--ng-doc-base-gutter)}@media (max-width: 1200px){:host .ng-doc-toc-wrapper{display:none}}\n"] }]
109
+ args: [{ selector: 'ng-doc-toc', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocTocElementComponent], template: "<div class=\"ng-doc-toc-wrapper\">\n <div class=\"ng-doc-toc-container\">\n <div class=\"ng-doc-toc-selection\" #selection></div>\n <ul class=\"ng-doc-toc\">\n @for (item of tableOfContent; track item) {\n <li\n ng-doc-toc-element\n [path]=\"item.path\"\n [hash]=\"item.hash\"\n [level]=\"item.level\"\n [selected]=\"item === activeItem()\">\n {{ item.title }}\n </li>\n }\n </ul>\n </div>\n</div>\n", styles: [":host .ng-doc-toc-wrapper{position:relative;width:var(--ng-doc-toc-width)}:host .ng-doc-toc-wrapper .ng-doc-toc-container{position:fixed;top:calc(var(--ng-doc-navbar-height) + var(--ng-doc-toc-top-padding));overflow-y:auto;height:calc(100% - var(--ng-doc-navbar-height) - var(--ng-doc-base-gutter) * 5);width:var(--ng-doc-toc-width)}:host .ng-doc-toc-wrapper .ng-doc-toc-selection{position:absolute;transform:translate(-50%);width:3px;border-radius:calc(var(--ng-doc-base-gutter) / 2);background-color:var(--ng-doc-primary);left:calc(var(--ng-doc-toc-margin) + 1px);transition:var(--ng-doc-transition)}:host .ng-doc-toc-wrapper .ng-doc-toc{list-style:none;margin:0 0 0 var(--ng-doc-toc-margin);border-left:1px solid var(--ng-doc-base-3);padding:0 0 0 var(--ng-doc-base-gutter)}@media (max-width: 1200px){:host .ng-doc-toc-wrapper{display:none}}\n"] }]
114
110
  }], ctorParameters: () => [], propDecorators: { tableOfContent: [{
115
111
  type: Input
116
112
  }], selection: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-toc.mjs","sources":["../../../../libs/app/components/toc/toc-element/toc-element.component.ts","../../../../libs/app/components/toc/toc-element/toc-element.component.html","../../../../libs/app/components/toc/toc.component.ts","../../../../libs/app/components/toc/toc.component.html","../../../../libs/app/components/toc/ng-doc-app-components-toc.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Input,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { NgDocDecodeUriComponentPipe } from '@ng-doc/app/pipes/decode-uri-component';\n\n@Component({\n selector: 'li[ng-doc-toc-element]',\n templateUrl: './toc-element.component.html',\n styleUrls: ['./toc-element.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, NgDocDecodeUriComponentPipe],\n})\nexport class NgDocTocElementComponent {\n @Input()\n path: string = '';\n\n @Input()\n hash: string = '';\n\n @Input()\n @HostBinding('attr.data-ng-doc-selected')\n selected: boolean = false;\n\n @Input()\n @HostBinding('attr.data-ng-doc-level')\n level: number = 1;\n\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","<a\n [routerLink]=\"[]\"\n [fragment]=\"hash | decodeUriComponent\"\n [style.padding-left]=\"'calc(var(--ng-doc-toc-indent) * ' + level + ')'\">\n <ng-content></ng-content>\n</a>\n","import { DOCUMENT, NgFor } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnInit,\n QueryList,\n Renderer2,\n signal,\n ViewChild,\n ViewChildren,\n WritableSignal,\n} from '@angular/core';\nimport { Event as REvent, Router, Scroll } from '@angular/router';\nimport { NgDocPageToc, NgDocTocItem } from '@ng-doc/app/interfaces';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\n\nimport { NgDocTocElementComponent } from './toc-element/toc-element.component';\n\n@Component({\n selector: 'ng-doc-toc',\n templateUrl: './toc.component.html',\n styleUrls: ['./toc.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgFor, NgDocTocElementComponent],\n})\n@UntilDestroy()\nexport class NgDocTocComponent implements NgDocPageToc, OnInit {\n @Input()\n tableOfContent: NgDocTocItem[] = [];\n\n @ViewChild('selection', { read: ElementRef })\n selection?: ElementRef<HTMLElement>;\n\n @ViewChildren(NgDocTocElementComponent)\n elements: QueryList<NgDocTocElementComponent> = new QueryList<NgDocTocElementComponent>();\n\n activeItem: WritableSignal<NgDocTocItem | undefined> = signal(undefined);\n\n protected readonly document: Document = inject(DOCUMENT);\n protected readonly ngZone: NgZone = inject(NgZone);\n protected readonly changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n protected readonly renderer: Renderer2 = inject(Renderer2);\n protected readonly router: Router = inject(Router);\n\n constructor() {\n afterNextRender({\n write: () => {\n const scrollSelection: Observable<NgDocTocItem> = fromEvent(this.document, 'scroll').pipe(\n filter(() => !!this.tableOfContent.length),\n map((event: Event) => (event.target as Document).scrollingElement as HTMLElement),\n startWith(this.document.scrollingElement as HTMLElement),\n map((target: HTMLElement) => {\n const percentage: number =\n (target.scrollTop * 100) / (target.scrollHeight - target.offsetHeight);\n const selectionLine: number =\n target.scrollTop + (target.offsetHeight * percentage) / 100;\n if (!this.tableOfContent.length) {\n return null;\n }\n return this.tableOfContent.reduce((pTarget: NgDocTocItem, cTarget: NgDocTocItem) => {\n const pTop: number = pTarget.element.getBoundingClientRect().top + target.scrollTop;\n const cTop: number = cTarget.element.getBoundingClientRect().top + target.scrollTop;\n return Math.abs(cTop - selectionLine) < Math.abs(pTop - selectionLine)\n ? cTarget\n : pTarget;\n });\n }),\n filter(isPresent),\n );\n const routerSelection: Observable<NgDocTocItem> = this.router.events.pipe(\n map((event: REvent) => {\n if (event instanceof Scroll) {\n const item: NgDocTocItem | undefined = this.tableOfContent.find(\n (item: NgDocTocItem) => item.path.includes(event.routerEvent.url),\n );\n if (item) {\n return item;\n }\n }\n return null;\n }),\n filter(isPresent),\n debounceTime(20),\n );\n const elementsChanges = this.elements.changes.pipe(\n map(() => this.activeItem()),\n filter(isPresent),\n );\n merge(merge(scrollSelection, routerSelection).pipe(distinctUntilChanged()), elementsChanges)\n .pipe(debounceTime(0), ngDocZoneOptimize(this.ngZone), untilDestroyed(this))\n .subscribe(this.select.bind(this));\n },\n });\n }\n\n ngOnInit(): void {\n this.activeItem.set(this.tableOfContent[0]);\n }\n\n /**\n * Selects the item in the table of content.\n * @param item - Item to select.\n */\n protected select(item: NgDocTocItem): void {\n const index: number = this.tableOfContent.indexOf(item);\n\n if (this.selection) {\n const element: HTMLElement | undefined =\n this.elements.toArray()[index]?.elementRef.nativeElement;\n\n if (element) {\n this.renderer.setStyle(this.selection.nativeElement, 'top', `${element.offsetTop}px`);\n this.renderer.setStyle(this.selection.nativeElement, 'height', `${element.offsetHeight}px`);\n\n element.scrollIntoView({ block: 'nearest' });\n }\n }\n\n this.activeItem.set(item);\n }\n}\n","<div class=\"ng-doc-toc-wrapper\">\n <div class=\"ng-doc-toc-container\">\n <div class=\"ng-doc-toc-selection\" #selection></div>\n <ul class=\"ng-doc-toc\">\n @for (item of tableOfContent; track item) {\n <li\n ng-doc-toc-element\n [path]=\"item.path\"\n [hash]=\"item.hash\"\n [level]=\"item.level\"\n [selected]=\"item === activeItem()\">\n {{ item.title }}\n </li>\n }\n </ul>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-doc-app-components-toc.mjs","sources":["../../../../libs/app/components/toc/toc-element/toc-element.component.ts","../../../../libs/app/components/toc/toc-element/toc-element.component.html","../../../../libs/app/components/toc/toc.component.ts","../../../../libs/app/components/toc/toc.component.html","../../../../libs/app/components/toc/ng-doc-app-components-toc.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Input,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { NgDocDecodeUriComponentPipe } from '@ng-doc/app/pipes/decode-uri-component';\n\n@Component({\n selector: 'li[ng-doc-toc-element]',\n templateUrl: './toc-element.component.html',\n styleUrls: ['./toc-element.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, NgDocDecodeUriComponentPipe],\n})\nexport class NgDocTocElementComponent {\n @Input()\n path: string = '';\n\n @Input()\n hash: string = '';\n\n @Input()\n @HostBinding('attr.data-ng-doc-selected')\n selected: boolean = false;\n\n @Input()\n @HostBinding('attr.data-ng-doc-level')\n level: number = 1;\n\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","<a\n [routerLink]=\"[]\"\n [fragment]=\"hash | decodeUriComponent\"\n [style.padding-left]=\"'calc(var(--ng-doc-toc-indent) * ' + level + ')'\">\n <ng-content></ng-content>\n</a>\n","import { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnInit,\n QueryList,\n Renderer2,\n signal,\n ViewChild,\n ViewChildren,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Event as REvent, Router, Scroll } from '@angular/router';\nimport { NgDocPageToc, NgDocTocItem } from '@ng-doc/app/interfaces';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\n\nimport { NgDocTocElementComponent } from './toc-element/toc-element.component';\n\n@Component({\n selector: 'ng-doc-toc',\n templateUrl: './toc.component.html',\n styleUrls: ['./toc.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocTocElementComponent],\n})\nexport class NgDocTocComponent implements NgDocPageToc, OnInit {\n @Input()\n tableOfContent: NgDocTocItem[] = [];\n\n @ViewChild('selection', { read: ElementRef })\n selection?: ElementRef<HTMLElement>;\n\n @ViewChildren(NgDocTocElementComponent)\n elements: QueryList<NgDocTocElementComponent> = new QueryList<NgDocTocElementComponent>();\n\n activeItem: WritableSignal<NgDocTocItem | undefined> = signal(undefined);\n\n protected readonly document: Document = inject(DOCUMENT);\n protected readonly ngZone: NgZone = inject(NgZone);\n protected readonly changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n protected readonly renderer: Renderer2 = inject(Renderer2);\n protected readonly router: Router = inject(Router);\n protected readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender({\n write: () => {\n const scrollSelection: Observable<NgDocTocItem> = fromEvent(this.document, 'scroll').pipe(\n filter(() => !!this.tableOfContent.length),\n map((event: Event) => (event.target as Document).scrollingElement as HTMLElement),\n startWith(this.document.scrollingElement as HTMLElement),\n map((target: HTMLElement) => {\n const percentage: number =\n (target.scrollTop * 100) / (target.scrollHeight - target.offsetHeight);\n const selectionLine: number =\n target.scrollTop + (target.offsetHeight * percentage) / 100;\n if (!this.tableOfContent.length) {\n return null;\n }\n return this.tableOfContent.reduce((pTarget: NgDocTocItem, cTarget: NgDocTocItem) => {\n const pTop: number = pTarget.element.getBoundingClientRect().top + target.scrollTop;\n const cTop: number = cTarget.element.getBoundingClientRect().top + target.scrollTop;\n return Math.abs(cTop - selectionLine) < Math.abs(pTop - selectionLine)\n ? cTarget\n : pTarget;\n });\n }),\n filter(isPresent),\n );\n const routerSelection: Observable<NgDocTocItem> = this.router.events.pipe(\n map((event: REvent) => {\n if (event instanceof Scroll) {\n const item: NgDocTocItem | undefined = this.tableOfContent.find(\n (item: NgDocTocItem) => item.path.includes(event.routerEvent.url),\n );\n if (item) {\n return item;\n }\n }\n return null;\n }),\n filter(isPresent),\n debounceTime(20),\n );\n const elementsChanges = this.elements.changes.pipe(\n map(() => this.activeItem()),\n filter(isPresent),\n );\n merge(merge(scrollSelection, routerSelection).pipe(distinctUntilChanged()), elementsChanges)\n .pipe(\n debounceTime(0),\n ngDocZoneOptimize(this.ngZone),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(this.select.bind(this));\n },\n });\n }\n\n ngOnInit(): void {\n this.activeItem.set(this.tableOfContent[0]);\n }\n\n /**\n * Selects the item in the table of content.\n * @param item - Item to select.\n */\n protected select(item: NgDocTocItem): void {\n const index: number = this.tableOfContent.indexOf(item);\n\n if (this.selection) {\n const element: HTMLElement | undefined =\n this.elements.toArray()[index]?.elementRef.nativeElement;\n\n if (element) {\n this.renderer.setStyle(this.selection.nativeElement, 'top', `${element.offsetTop}px`);\n this.renderer.setStyle(this.selection.nativeElement, 'height', `${element.offsetHeight}px`);\n\n element.scrollIntoView({ block: 'nearest' });\n }\n }\n\n this.activeItem.set(item);\n }\n}\n","<div class=\"ng-doc-toc-wrapper\">\n <div class=\"ng-doc-toc-container\">\n <div class=\"ng-doc-toc-selection\" #selection></div>\n <ul class=\"ng-doc-toc\">\n @for (item of tableOfContent; track item) {\n <li\n ng-doc-toc-element\n [path]=\"item.path\"\n [hash]=\"item.hash\"\n [level]=\"item.level\"\n [selected]=\"item === activeItem()\">\n {{ item.title }}\n </li>\n }\n </ul>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-defaults-default-skeleton.mjs","sources":["../../../../libs/app/defaults/default-skeleton/default-skeleton.ts","../../../../libs/app/defaults/default-skeleton/ng-doc-app-defaults-default-skeleton.ts"],"sourcesContent":["import {\n\tNgDocBreadcrumbComponent,\n\tNgDocPageNavigationComponent,\n\tNgDocTocComponent,\n} from '@ng-doc/app/components';\nimport { NgDocPageSkeleton } from '@ng-doc/app/interfaces';\n\nexport const NG_DOC_DEFAULT_PAGE_SKELETON: NgDocPageSkeleton = {\n\tbreadcrumbs: NgDocBreadcrumbComponent,\n\tnavigation: NgDocPageNavigationComponent,\n\ttoc: NgDocTocComponent,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAOa,MAAA,4BAA4B,GAAsB;AAC9D,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,UAAU,EAAE,4BAA4B;AACxC,IAAA,GAAG,EAAE,iBAAiB;;;ACVvB;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-defaults-default-skeleton.mjs","sources":["../../../../libs/app/defaults/default-skeleton/default-skeleton.ts","../../../../libs/app/defaults/default-skeleton/ng-doc-app-defaults-default-skeleton.ts"],"sourcesContent":["import {\n NgDocBreadcrumbComponent,\n NgDocPageNavigationComponent,\n NgDocTocComponent,\n} from '@ng-doc/app/components';\nimport { NgDocPageSkeleton } from '@ng-doc/app/interfaces';\n\nexport const NG_DOC_DEFAULT_PAGE_SKELETON: NgDocPageSkeleton = {\n breadcrumbs: NgDocBreadcrumbComponent,\n navigation: NgDocPageNavigationComponent,\n toc: NgDocTocComponent,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAOa,MAAA,4BAA4B,GAAsB;AAC7D,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,UAAU,EAAE,4BAA4B;AACxC,IAAA,GAAG,EAAE,iBAAiB;;;ACVxB;;AAEG;;;;"}
@@ -1,17 +1,12 @@
1
- import { __decorate, __metadata } from 'tslib';
2
1
  import * as i0 from '@angular/core';
3
- import { ElementRef, Renderer2, Directive, Input } from '@angular/core';
4
- import * as i1 from '@angular/router';
5
- import { NavigationEnd, Router } from '@angular/router';
2
+ import { inject, ElementRef, Renderer2, Directive, Input } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { Router, NavigationEnd } from '@angular/router';
6
5
  import { asArray } from '@ng-doc/core/helpers/as-array';
7
- import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
8
6
  import { filter, map, distinctUntilChanged } from 'rxjs/operators';
9
7
 
10
- let NgDocRouteActiveDirective = class NgDocRouteActiveDirective {
11
- constructor(elementRef, router, renderer) {
12
- this.elementRef = elementRef;
13
- this.router = router;
14
- this.renderer = renderer;
8
+ class NgDocRouteActiveDirective {
9
+ constructor() {
15
10
  this.link = '';
16
11
  this.activeClass = [];
17
12
  this.matchOptions = {
@@ -20,30 +15,27 @@ let NgDocRouteActiveDirective = class NgDocRouteActiveDirective {
20
15
  queryParams: 'exact',
21
16
  matrixParams: 'exact',
22
17
  };
23
- this.router.events
24
- .pipe(filter((event) => event instanceof NavigationEnd), map(() => this.router.isActive(this.link, this.matchOptions)), distinctUntilChanged(), untilDestroyed(this))
18
+ const elementRef = inject(ElementRef);
19
+ const router = inject(Router);
20
+ const renderer = inject(Renderer2);
21
+ router.events
22
+ .pipe(filter((event) => event instanceof NavigationEnd), map(() => router.isActive(this.link, this.matchOptions)), distinctUntilChanged(), takeUntilDestroyed())
25
23
  .subscribe((isActive) => {
26
24
  isActive
27
- ? asArray(this.activeClass).forEach((cls) => this.renderer.addClass(this.elementRef.nativeElement, cls))
28
- : asArray(this.activeClass).forEach((cls) => this.renderer.removeClass(this.elementRef.nativeElement, cls));
25
+ ? asArray(this.activeClass).forEach((cls) => renderer.addClass(elementRef.nativeElement, cls))
26
+ : asArray(this.activeClass).forEach((cls) => renderer.removeClass(elementRef.nativeElement, cls));
29
27
  });
30
28
  }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRouteActiveDirective, deps: [{ token: i0.ElementRef }, { token: i1.Router }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
30
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.3", type: NgDocRouteActiveDirective, isStandalone: true, selector: "[ngDocRouteActive]", inputs: { link: ["ngDocRouteActive", "link"], activeClass: "activeClass", matchOptions: "matchOptions" }, ngImport: i0 }); }
33
- };
34
- NgDocRouteActiveDirective = __decorate([
35
- UntilDestroy(),
36
- __metadata("design:paramtypes", [ElementRef,
37
- Router,
38
- Renderer2])
39
- ], NgDocRouteActiveDirective);
31
+ }
40
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRouteActiveDirective, decorators: [{
41
33
  type: Directive,
42
34
  args: [{
43
35
  selector: '[ngDocRouteActive]',
44
36
  standalone: true,
45
37
  }]
46
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Router }, { type: i0.Renderer2 }], propDecorators: { link: [{
38
+ }], ctorParameters: () => [], propDecorators: { link: [{
47
39
  type: Input,
48
40
  args: ['ngDocRouteActive']
49
41
  }], activeClass: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-directives-route-active.mjs","sources":["../../../../libs/app/directives/route-active/route-active.directive.ts","../../../../libs/app/directives/route-active/ng-doc-app-directives-route-active.ts"],"sourcesContent":["import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { Event, IsActiveMatchOptions, NavigationEnd, Router } from '@angular/router';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\n\n@Directive({\n\tselector: '[ngDocRouteActive]',\n\tstandalone: true,\n})\n@UntilDestroy()\nexport class NgDocRouteActiveDirective {\n\t@Input('ngDocRouteActive')\n\tlink: string = '';\n\n\t@Input()\n\tactiveClass: string | string[] = [];\n\n\t@Input()\n\tmatchOptions: IsActiveMatchOptions = {\n\t\tfragment: 'exact',\n\t\tpaths: 'subset',\n\t\tqueryParams: 'exact',\n\t\tmatrixParams: 'exact',\n\t};\n\n\tconstructor(\n\t\tprivate readonly elementRef: ElementRef<HTMLElement>,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly renderer: Renderer2,\n\t) {\n\t\tthis.router.events\n\t\t\t.pipe(\n\t\t\t\tfilter((event: Event) => event instanceof NavigationEnd),\n\t\t\t\tmap(() => this.router.isActive(this.link, this.matchOptions)),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tuntilDestroyed(this),\n\t\t\t)\n\t\t\t.subscribe((isActive: boolean) => {\n\t\t\t\tisActive\n\t\t\t\t\t? asArray(this.activeClass).forEach((cls: string) =>\n\t\t\t\t\t\t\tthis.renderer.addClass(this.elementRef.nativeElement, cls),\n\t\t\t\t\t )\n\t\t\t\t\t: asArray(this.activeClass).forEach((cls: string) =>\n\t\t\t\t\t\t\tthis.renderer.removeClass(this.elementRef.nativeElement, cls),\n\t\t\t\t\t );\n\t\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAWa,IAAA,yBAAyB,GAA/B,MAAM,yBAAyB,CAAA;AAerC,IAAA,WAAA,CACkB,UAAmC,EACnC,MAAc,EACd,QAAmB,EAAA;QAFnB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAhB1B,IAAI,CAAA,IAAA,GAAW,EAAE;QAGjB,IAAW,CAAA,WAAA,GAAsB,EAAE;AAGnC,QAAA,IAAA,CAAA,YAAY,GAAyB;AACpC,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,YAAY,EAAE,OAAO;SACrB;QAOA,IAAI,CAAC,MAAM,CAAC;AACV,aAAA,IAAI,CACJ,MAAM,CAAC,CAAC,KAAY,KAAK,KAAK,YAAY,aAAa,CAAC,EACxD,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAC7D,oBAAoB,EAAE,EACtB,cAAc,CAAC,IAAI,CAAC;AAEpB,aAAA,SAAS,CAAC,CAAC,QAAiB,KAAI;YAChC;AACC,kBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;AAE5D,kBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAC9C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,CAC5D;AACL,SAAC,CAAC;;8GAnCQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAAzB,yBAAyB,GAAA,UAAA,CAAA;AADrC,IAAA,YAAY,EAAE;qCAiBgB,UAAU;QACd,MAAM;QACJ,SAAS,CAAA;AAlBzB,CAAA,EAAA,yBAAyB,CAqCrC;2FArCY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA;4HAIA,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,kBAAkB;gBAIzB,WAAW,EAAA,CAAA;sBADV;gBAID,YAAY,EAAA,CAAA;sBADX;;;AClBF;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-directives-route-active.mjs","sources":["../../../../libs/app/directives/route-active/route-active.directive.ts","../../../../libs/app/directives/route-active/ng-doc-app-directives-route-active.ts"],"sourcesContent":["import { Directive, ElementRef, inject, Input, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Event, IsActiveMatchOptions, NavigationEnd, Router } from '@angular/router';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\n\n@Directive({\n selector: '[ngDocRouteActive]',\n standalone: true,\n})\nexport class NgDocRouteActiveDirective {\n @Input('ngDocRouteActive')\n link: string = '';\n\n @Input()\n activeClass: string | string[] = [];\n\n @Input()\n matchOptions: IsActiveMatchOptions = {\n fragment: 'exact',\n paths: 'subset',\n queryParams: 'exact',\n matrixParams: 'exact',\n };\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const router = inject(Router);\n const renderer = inject(Renderer2);\n\n router.events\n .pipe(\n filter((event: Event) => event instanceof NavigationEnd),\n map(() => router.isActive(this.link, this.matchOptions)),\n distinctUntilChanged(),\n takeUntilDestroyed(),\n )\n .subscribe((isActive: boolean) => {\n isActive\n ? asArray(this.activeClass).forEach((cls: string) =>\n renderer.addClass(elementRef.nativeElement, cls),\n )\n : asArray(this.activeClass).forEach((cls: string) =>\n renderer.removeClass(elementRef.nativeElement, cls),\n );\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAUa,yBAAyB,CAAA;AAepC,IAAA,WAAA,GAAA;QAbA,IAAI,CAAA,IAAA,GAAW,EAAE;QAGjB,IAAW,CAAA,WAAA,GAAsB,EAAE;AAGnC,QAAA,IAAA,CAAA,YAAY,GAAyB;AACnC,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,YAAY,EAAE,OAAO;SACtB;AAGC,QAAA,MAAM,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAC9D,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAElC,QAAA,MAAM,CAAC;AACJ,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAY,KAAK,KAAK,YAAY,aAAa,CAAC,EACxD,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EACxD,oBAAoB,EAAE,EACtB,kBAAkB,EAAE;AAErB,aAAA,SAAS,CAAC,CAAC,QAAiB,KAAI;YAC/B;kBACI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAC5C,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;kBAElD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAC5C,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,CACpD;AACP,SAAC,CAAC;;8GAnCK,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;wDAGC,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,kBAAkB;gBAIzB,WAAW,EAAA,CAAA;sBADV;gBAID,YAAY,EAAA,CAAA;sBADX;;;ACjBH;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-helpers.mjs","sources":["../../../../libs/app/helpers/as-boolean.ts","../../../../libs/app/helpers/create-component.ts","../../../../libs/app/helpers/format-html.ts","../../../../libs/app/helpers/generate-toc.ts","../../../../libs/app/helpers/is-dark-os-theme.ts","../../../../libs/app/helpers/is-external-link.ts","../../../../libs/app/helpers/is-playground-property.ts","../../../../libs/app/helpers/ng-doc-app-helpers.ts"],"sourcesContent":["/**\n *\n * @param value\n */\nexport function asBoolean(value: unknown): boolean {\n if (typeof value === 'string') {\n return value.toLowerCase() === 'true'\n ? true\n : value.toLowerCase() === 'false'\n ? false\n : !!value;\n }\n return !!value;\n}\n","import { Type, ViewContainerRef } from '@angular/core';\n\n/**\n *\n * @param viewContainer\n * @param component\n * @param inputs\n */\nexport function createComponent<T>(\n viewContainer: ViewContainerRef,\n component: Type<T>,\n inputs?: object,\n): void {\n viewContainer.clear();\n\n const componentRef = viewContainer.createComponent(component);\n\n if (inputs) {\n Object.entries(inputs).forEach(([key, value]) => {\n componentRef.setInput(key, value);\n });\n }\n}\n","/**\n *\n * @param html\n */\nexport async function formatHtml(html: string): Promise<string> {\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tconst formatter = await import('esthetic');\n\n\treturn formatter.default.html(html.trim(), {\n\t\twrap: 50,\n\t\tmarkup: {\n\t\t\tforceIndent: true,\n\t\t},\n\t});\n}\n","import { NgDocTocItem } from '@ng-doc/app/interfaces';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { NgDocHeading } from '@ng-doc/core/types';\n\n/**\n * Generate table of contents, only for headings with id\n * @param container\n * @param headings\n */\nexport function generateToc(container: HTMLElement): NgDocTocItem[] {\n const headings: NgDocHeading[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n const headingElements: HTMLHeadingElement[] = Array.from(\n container.querySelectorAll<HTMLHeadingElement>(headings.join(', ')),\n ).filter((heading: HTMLHeadingElement) => heading.id);\n\n const levels: number[] = asArray(new Set(headingElements.map(levelFromTagName).sort()));\n\n return headingElements.reduce((map: NgDocTocItem[], heading: HTMLHeadingElement) => {\n const headingLevel: number = levelFromTagName(heading);\n const isHeadingLink = heading.getAttribute('headingLink') === 'true';\n\n if (isHeadingLink) {\n map.push({\n title: heading.textContent?.trim() ?? '',\n element: heading,\n path: heading.getAttribute('href') ?? '',\n hash: heading.id,\n level: levels.indexOf(headingLevel) + 1,\n });\n }\n\n return map;\n }, []);\n}\n\n/**\n *\n * @param heading\n */\nfunction levelFromTagName(heading: HTMLHeadingElement): number {\n return Number(heading.tagName.toLowerCase().replace(/[a-z]*/g, '') || 1);\n}\n","/**\n * Check if the OS theme is dark\n */\nexport function isDarkOsTheme(): boolean {\n\treturn window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n","/**\n *\n * @param url\n */\nexport function isExternalLink(url: string): boolean {\n\tconst anchorElement: HTMLAnchorElement = document.createElement('a');\n\n\tanchorElement.href = url;\n\n\treturn anchorElement.host !== window.location.host;\n}\n","import {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\n\n/**\n *\n * @param obj\n */\nexport function isPlaygroundProperty(obj: Record<string, any>): obj is NgDocPlaygroundProperty {\n\treturn objectKeys(obj).includes('type');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;AAGG;AACG,SAAU,SAAS,CAAC,KAAc,EAAA;AACtC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK;AAC7B,cAAE;AACF,cAAE,KAAK,CAAC,WAAW,EAAE,KAAK;AACxB,kBAAE;AACF,kBAAE,CAAC,CAAC,KAAK;;IAEf,OAAO,CAAC,CAAC,KAAK;AAChB;;ACXA;;;;;AAKG;SACa,eAAe,CAC7B,aAA+B,EAC/B,SAAkB,EAClB,MAAe,EAAA;IAEf,aAAa,CAAC,KAAK,EAAE;IAErB,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC;IAE7D,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9C,YAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;AACnC,SAAC,CAAC;;AAEN;;ACtBA;;;AAGG;AACI,eAAe,UAAU,CAAC,IAAY,EAAA;;;AAG5C,IAAA,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAC;IAE1C,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAC1C,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,MAAM,EAAE;AACP,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA;AACD,KAAA,CAAC;AACH;;ACXA;;;;AAIG;AACG,SAAU,WAAW,CAAC,SAAsB,EAAA;AAChD,IAAA,MAAM,QAAQ,GAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAErE,IAAA,MAAM,eAAe,GAAyB,KAAK,CAAC,IAAI,CACtD,SAAS,CAAC,gBAAgB,CAAqB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC,MAAM,CAAC,CAAC,OAA2B,KAAK,OAAO,CAAC,EAAE,CAAC;AAErD,IAAA,MAAM,MAAM,GAAa,OAAO,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEvF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,OAA2B,KAAI;AACjF,QAAA,MAAM,YAAY,GAAW,gBAAgB,CAAC,OAAO,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;QAEpE,IAAI,aAAa,EAAE;YACjB,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AACxC,gBAAA,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;gBACxC,IAAI,EAAE,OAAO,CAAC,EAAE;gBAChB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;AACxC,aAAA,CAAC;;AAGJ,QAAA,OAAO,GAAG;KACX,EAAE,EAAE,CAAC;AACR;AAEA;;;AAGG;AACH,SAAS,gBAAgB,CAAC,OAA2B,EAAA;AACnD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1E;;AC1CA;;AAEG;SACa,aAAa,GAAA;IAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO;AACjE;;ACLA;;;AAGG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;IACzC,MAAM,aAAa,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAEpE,IAAA,aAAa,CAAC,IAAI,GAAG,GAAG;IAExB,OAAO,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI;AACnD;;ACPA;;;AAGG;AACG,SAAU,oBAAoB,CAAC,GAAwB,EAAA;IAC5D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxC;;ACTA;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-helpers.mjs","sources":["../../../../libs/app/helpers/as-boolean.ts","../../../../libs/app/helpers/create-component.ts","../../../../libs/app/helpers/format-html.ts","../../../../libs/app/helpers/generate-toc.ts","../../../../libs/app/helpers/is-dark-os-theme.ts","../../../../libs/app/helpers/is-external-link.ts","../../../../libs/app/helpers/is-playground-property.ts","../../../../libs/app/helpers/ng-doc-app-helpers.ts"],"sourcesContent":["/**\n *\n * @param value\n */\nexport function asBoolean(value: unknown): boolean {\n if (typeof value === 'string') {\n return value.toLowerCase() === 'true'\n ? true\n : value.toLowerCase() === 'false'\n ? false\n : !!value;\n }\n return !!value;\n}\n","import { Type, ViewContainerRef } from '@angular/core';\n\n/**\n *\n * @param viewContainer\n * @param component\n * @param inputs\n */\nexport function createComponent<T>(\n viewContainer: ViewContainerRef,\n component: Type<T>,\n inputs?: object,\n): void {\n viewContainer.clear();\n\n const componentRef = viewContainer.createComponent(component);\n\n if (inputs) {\n Object.entries(inputs).forEach(([key, value]) => {\n componentRef.setInput(key, value);\n });\n }\n}\n","/**\n *\n * @param html\n */\nexport async function formatHtml(html: string): Promise<string> {\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tconst formatter = await import('esthetic');\n\n\treturn formatter.default.html(html.trim(), {\n\t\twrap: 50,\n\t\tmarkup: {\n\t\t\tforceIndent: true,\n\t\t},\n\t});\n}\n","import { NgDocTocItem } from '@ng-doc/app/interfaces';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { NgDocHeading } from '@ng-doc/core/types';\n\n/**\n * Generate table of contents, only for headings with id\n * @param container\n * @param headings\n */\nexport function generateToc(container: HTMLElement): NgDocTocItem[] {\n const headings: NgDocHeading[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n const headingElements: HTMLHeadingElement[] = Array.from(\n container.querySelectorAll<HTMLHeadingElement>(headings.join(', ')),\n ).filter((heading: HTMLHeadingElement) => heading.id);\n\n const levels: number[] = asArray(new Set(headingElements.map(levelFromTagName).sort()));\n\n return headingElements.reduce((map: NgDocTocItem[], heading: HTMLHeadingElement) => {\n const headingLevel: number = levelFromTagName(heading);\n const isHeadingLink = heading.getAttribute('headingLink') === 'true';\n\n if (isHeadingLink) {\n map.push({\n title: heading.textContent?.trim() ?? '',\n element: heading,\n path: heading.getAttribute('href') ?? '',\n hash: heading.id,\n level: levels.indexOf(headingLevel) + 1,\n });\n }\n\n return map;\n }, []);\n}\n\n/**\n *\n * @param heading\n */\nfunction levelFromTagName(heading: HTMLHeadingElement): number {\n return Number(heading.tagName.toLowerCase().replace(/[a-z]*/g, '') || 1);\n}\n","/**\n * Check if the OS theme is dark\n */\nexport function isDarkOsTheme(): boolean {\n\treturn window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n","/**\n *\n * @param url\n */\nexport function isExternalLink(url: string): boolean {\n\tconst anchorElement: HTMLAnchorElement = document.createElement('a');\n\n\tanchorElement.href = url;\n\n\treturn anchorElement.host !== window.location.host;\n}\n","import { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { NgDocPlaygroundProperty } from '@ng-doc/core/interfaces';\n\n/**\n *\n * @param obj\n */\nexport function isPlaygroundProperty(obj: Record<string, any>): obj is NgDocPlaygroundProperty {\n return objectKeys(obj).includes('type');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { __decorate, __metadata } from 'tslib';
2
1
  import { DOCUMENT } from '@angular/common';
3
2
  import * as i0 from '@angular/core';
4
3
  import { inject, Injectable } from '@angular/core';
@@ -7,14 +6,13 @@ import { Router, NavigationEnd } from '@angular/router';
7
6
  import { ngDocZoneOptimize } from '@ng-doc/ui-kit';
8
7
  import { NgDocScrollService } from '@ng-doc/ui-kit/services/scroll';
9
8
  import { WINDOW } from '@ng-web-apis/common';
10
- import { UntilDestroy } from '@ngneat/until-destroy';
11
9
  import { BehaviorSubject, fromEvent, share } from 'rxjs';
12
10
  import { startWith, filter } from 'rxjs/operators';
13
11
 
14
12
  /**
15
13
  * Service for sidebar, it can be used to hide/show sidebar or to check if sidebar is collapsable.
16
14
  */
17
- let NgDocSidebarService = class NgDocSidebarService {
15
+ class NgDocSidebarService {
18
16
  constructor() {
19
17
  this.expanded = new BehaviorSubject(false);
20
18
  this.document = inject(DOCUMENT);
@@ -70,11 +68,7 @@ let NgDocSidebarService = class NgDocSidebarService {
70
68
  }
71
69
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
72
70
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSidebarService, providedIn: 'root' }); }
73
- };
74
- NgDocSidebarService = __decorate([
75
- UntilDestroy(),
76
- __metadata("design:paramtypes", [])
77
- ], NgDocSidebarService);
71
+ }
78
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSidebarService, decorators: [{
79
73
  type: Injectable,
80
74
  args: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-services-sidebar.mjs","sources":["../../../../libs/app/services/sidebar/sidebar.service.ts","../../../../libs/app/services/sidebar/ng-doc-app-services-sidebar.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit';\nimport { NgDocScrollService } from '@ng-doc/ui-kit/services/scroll';\nimport { WINDOW } from '@ng-web-apis/common';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { BehaviorSubject, fromEvent, Observable, share } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\n/**\n * Service for sidebar, it can be used to hide/show sidebar or to check if sidebar is collapsable.\n */\n@Injectable({\n providedIn: 'root',\n})\n@UntilDestroy()\nexport class NgDocSidebarService {\n protected readonly expanded = new BehaviorSubject<boolean>(false);\n protected readonly document = inject(DOCUMENT);\n protected readonly window = inject(WINDOW);\n protected readonly router = inject(Router);\n protected readonly scroll = inject(NgDocScrollService);\n\n constructor() {\n const windowResize = fromEvent(this.window, 'resize').pipe(\n takeUntilDestroyed(),\n startWith(null),\n share(),\n );\n\n windowResize\n .pipe(\n filter(() => this.expanded.value && this.isMobile),\n ngDocZoneOptimize(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.hide());\n\n windowResize\n .pipe(\n filter(() => !this.expanded.value && !this.isMobile),\n ngDocZoneOptimize(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.show());\n\n windowResize\n .pipe(\n filter(() => this.expanded.value && !this.isMobile),\n ngDocZoneOptimize(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.scroll.unblock());\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd && this.expanded.value && this.isMobile),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.hide());\n }\n\n get isMobile(): boolean {\n return this.window.innerWidth < 1024;\n }\n\n /**\n * Indicates if sidebar is visible, based on the show/hide methods.\n */\n isExpanded(): Observable<boolean> {\n return this.expanded.asObservable();\n }\n\n /**\n * Show sidebar, and block scrolling.\n */\n show(): void {\n if (!this.expanded.value) {\n this.expanded.next(true);\n this.isMobile && this.scroll.block();\n }\n }\n\n /**\n * Hide sidebar, and unblock scrolling.\n */\n hide(): void {\n if (this.expanded.value) {\n this.expanded.next(false);\n this.isMobile && this.scroll.unblock();\n }\n }\n\n /**\n * Toggle sidebar visibility.\n */\n toggle(): void {\n this.expanded.value ? this.hide() : this.show();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-doc-app-services-sidebar.mjs","sources":["../../../../libs/app/services/sidebar/sidebar.service.ts","../../../../libs/app/services/sidebar/ng-doc-app-services-sidebar.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit';\nimport { NgDocScrollService } from '@ng-doc/ui-kit/services/scroll';\nimport { WINDOW } from '@ng-web-apis/common';\nimport { BehaviorSubject, fromEvent, Observable, share } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\n/**\n * Service for sidebar, it can be used to hide/show sidebar or to check if sidebar is collapsable.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class NgDocSidebarService {\n protected readonly expanded = new BehaviorSubject<boolean>(false);\n protected readonly document = inject(DOCUMENT);\n protected readonly window = inject(WINDOW);\n protected readonly router = inject(Router);\n protected readonly scroll = inject(NgDocScrollService);\n\n constructor() {\n const windowResize = fromEvent(this.window, 'resize').pipe(\n takeUntilDestroyed(),\n startWith(null),\n share(),\n );\n\n windowResize\n .pipe(\n filter(() => this.expanded.value && this.isMobile),\n ngDocZoneOptimize(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.hide());\n\n windowResize\n .pipe(\n filter(() => !this.expanded.value && !this.isMobile),\n ngDocZoneOptimize(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.show());\n\n windowResize\n .pipe(\n filter(() => this.expanded.value && !this.isMobile),\n ngDocZoneOptimize(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.scroll.unblock());\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd && this.expanded.value && this.isMobile),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.hide());\n }\n\n get isMobile(): boolean {\n return this.window.innerWidth < 1024;\n }\n\n /**\n * Indicates if sidebar is visible, based on the show/hide methods.\n */\n isExpanded(): Observable<boolean> {\n return this.expanded.asObservable();\n }\n\n /**\n * Show sidebar, and block scrolling.\n */\n show(): void {\n if (!this.expanded.value) {\n this.expanded.next(true);\n this.isMobile && this.scroll.block();\n }\n }\n\n /**\n * Hide sidebar, and unblock scrolling.\n */\n hide(): void {\n if (this.expanded.value) {\n this.expanded.next(false);\n this.isMobile && this.scroll.unblock();\n }\n }\n\n /**\n * Toggle sidebar visibility.\n */\n toggle(): void {\n this.expanded.value ? this.hide() : this.show();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,16 +1,14 @@
1
- import { __decorate } from 'tslib';
2
1
  import { DOCUMENT } from '@angular/common';
3
2
  import * as i0 from '@angular/core';
4
3
  import { inject, Injectable } from '@angular/core';
5
4
  import { NG_DOC_STORE_THEME_KEY } from '@ng-doc/app/constants';
6
5
  import { NgDocStoreService } from '@ng-doc/app/services/store';
7
- import { UntilDestroy } from '@ngneat/until-destroy';
8
6
  import { Subject } from 'rxjs';
9
7
 
10
8
  /**
11
9
  * Service for managing themes.
12
10
  */
13
- let NgDocThemeService = class NgDocThemeService {
11
+ class NgDocThemeService {
14
12
  constructor() {
15
13
  this.document = inject(DOCUMENT);
16
14
  this.store = inject(NgDocStoreService);
@@ -39,10 +37,7 @@ let NgDocThemeService = class NgDocThemeService {
39
37
  }
40
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
41
39
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocThemeService, providedIn: 'root' }); }
42
- };
43
- NgDocThemeService = __decorate([
44
- UntilDestroy()
45
- ], NgDocThemeService);
40
+ }
46
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocThemeService, decorators: [{
47
42
  type: Injectable,
48
43
  args: [{ providedIn: 'root' }]
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-services-theme.mjs","sources":["../../../../libs/app/services/theme/theme.service.ts","../../../../libs/app/services/theme/ng-doc-app-services-theme.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NG_DOC_STORE_THEME_KEY } from '@ng-doc/app/constants';\nimport { NgDocStoreService } from '@ng-doc/app/services/store';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Service for managing themes.\n */\n@Injectable({ providedIn: 'root' })\n@UntilDestroy()\nexport class NgDocThemeService {\n protected readonly document = inject(DOCUMENT);\n protected readonly store = inject(NgDocStoreService);\n protected readonly change$ = new Subject<string | null>();\n protected readonly documentElement = this.document.documentElement;\n\n /**\n * Returns the current theme.\n */\n get currentTheme(): string | null {\n return document.documentElement.getAttribute('data-theme');\n }\n\n themeChanges(): Observable<string | null> {\n return this.change$.asObservable();\n }\n\n /**\n * Sets the theme by id.\n * @param id - Theme id. If not provided, the theme will be removed.\n */\n set(id?: string): void {\n id\n ? this.documentElement.setAttribute('data-theme', id)\n : this.documentElement.removeAttribute('data-theme');\n\n this.store.set(NG_DOC_STORE_THEME_KEY, id ?? '');\n this.change$.next(id ?? null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAOA;;AAEG;AAGU,IAAA,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AAAvB,IAAA,WAAA,GAAA;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAiB;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAyBnE;AAvBC;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC;;IAG5D,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;AAGpC;;;AAGG;AACH,IAAA,GAAG,CAAC,EAAW,EAAA;QACb;cACI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE;cAClD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;;8GA3BpB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFJ,MAAM,EAAA,CAAA,CAAA;;AAEnB,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,YAAY;AACA,CAAA,EAAA,iBAAiB,CA6B7B;2FA7BY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAF7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVlC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-services-theme.mjs","sources":["../../../../libs/app/services/theme/theme.service.ts","../../../../libs/app/services/theme/ng-doc-app-services-theme.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NG_DOC_STORE_THEME_KEY } from '@ng-doc/app/constants';\nimport { NgDocStoreService } from '@ng-doc/app/services/store';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Service for managing themes.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgDocThemeService {\n protected readonly document = inject(DOCUMENT);\n protected readonly store = inject(NgDocStoreService);\n protected readonly change$ = new Subject<string | null>();\n protected readonly documentElement = this.document.documentElement;\n\n /**\n * Returns the current theme.\n */\n get currentTheme(): string | null {\n return document.documentElement.getAttribute('data-theme');\n }\n\n themeChanges(): Observable<string | null> {\n return this.change$.asObservable();\n }\n\n /**\n * Sets the theme by id.\n * @param id - Theme id. If not provided, the theme will be removed.\n */\n set(id?: string): void {\n id\n ? this.documentElement.setAttribute('data-theme', id)\n : this.documentElement.removeAttribute('data-theme');\n\n this.store.set(NG_DOC_STORE_THEME_KEY, id ?? '');\n this.change$.next(id ?? null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAMA;;AAEG;MAEU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAiB;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAyBnE;AAvBC;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC;;IAG5D,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;AAGpC;;;AAGG;AACH,IAAA,GAAG,CAAC,EAAW,EAAA;QACb;cACI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE;cAClD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;;8GA3BpB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACTlC;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-doc/app",
3
- "version": "19.1.0",
3
+ "version": "19.3.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=19.0.0 < 20.0.0",
6
6
  "@angular/core": ">=19.0.0 < 20.0.0",
@@ -12,8 +12,8 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "tslib": "^2.6.2",
15
- "@ng-doc/core": "19.1.0",
16
- "@ng-doc/ui-kit": "19.1.0",
15
+ "@ng-doc/core": "19.3.0",
16
+ "@ng-doc/ui-kit": "19.3.0",
17
17
  "@orama/plugin-match-highlight": "2.0.17",
18
18
  "@orama/stemmers": "2.0.17",
19
19
  "mermaid": "10.9.3"
@@ -42,14 +42,14 @@
42
42
  "types": "./classes/index.d.ts",
43
43
  "default": "./fesm2022/ng-doc-app-classes.mjs"
44
44
  },
45
- "./constants": {
46
- "types": "./constants/index.d.ts",
47
- "default": "./fesm2022/ng-doc-app-constants.mjs"
48
- },
49
45
  "./components": {
50
46
  "types": "./components/index.d.ts",
51
47
  "default": "./fesm2022/ng-doc-app-components.mjs"
52
48
  },
49
+ "./constants": {
50
+ "types": "./constants/index.d.ts",
51
+ "default": "./fesm2022/ng-doc-app-constants.mjs"
52
+ },
53
53
  "./defaults": {
54
54
  "types": "./defaults/index.d.ts",
55
55
  "default": "./fesm2022/ng-doc-app-defaults.mjs"
package/styles/global.css CHANGED
@@ -734,6 +734,9 @@ table.ng-doc-api-table tr th.ng-doc-api-table-name {
734
734
  table.ng-doc-api-table tr th.ng-doc-api-table-type {
735
735
  width: 25%;
736
736
  }
737
+ table.ng-doc-api-table tr td.ng-doc-api-table-type code {
738
+ white-space: normal;
739
+ }
737
740
  table.ng-doc-api-table tr th.ng-doc-api-table-description {
738
741
  min-width: 300px;
739
742
  }