@ng-doc/builder 15.0.0-beta.30 → 15.0.0-beta.32

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 (103) hide show
  1. package/engine/.cache/libs/app/components/api-list/api-list.component.js +1 -1
  2. package/engine/.cache/libs/app/components/index.js +1 -1
  3. package/engine/.cache/libs/app/components/page/page.module.js +2 -2
  4. package/engine/.cache/libs/app/components/root/root.component.js +29 -16
  5. package/engine/.cache/libs/app/components/toc/index.js +6 -0
  6. package/engine/.cache/libs/app/components/{page-map/page-map-element/page-map-element.component.js → toc/toc-element/toc-element.component.js} +11 -11
  7. package/engine/.cache/libs/app/components/{page-map/page-map.component.js → toc/toc.component.js} +33 -19
  8. package/engine/.cache/libs/app/components/{page-map/page-map.module.js → toc/toc.module.js} +5 -5
  9. package/engine/.cache/libs/app/helpers/{generate-page-map/generate-page-map.js → generate-toc/generate-toc.js} +4 -5
  10. package/engine/.cache/libs/app/helpers/{generate-page-map → generate-toc}/index.js +1 -1
  11. package/engine/.cache/libs/app/helpers/index.js +1 -1
  12. package/engine/.cache/libs/app/interfaces/index.js +1 -1
  13. package/engine/.cache/libs/app/interfaces/{page-map.js → toc-item.js} +0 -0
  14. package/engine/.cache/libs/app/processors/tooltip-processor/tooltip-wrapper.component.js +24 -2
  15. package/engine/.cache/libs/builder/engine/entities/api.entity.js +1 -2
  16. package/engine/.cache/libs/builder/engine/entity-store.js +1 -0
  17. package/engine/.cache/libs/builder/engine/post-processors/html-plugins/keywords-processor.js +4 -3
  18. package/engine/.cache/libs/builder/engine/template-filters.js +5 -3
  19. package/engine/.cache/libs/builder/helpers/build-global-indexes.js +6 -34
  20. package/engine/.cache/libs/builder/helpers/filter-useless-members.js +13 -0
  21. package/engine/.cache/libs/builder/helpers/get-declaration-type.js +17 -0
  22. package/engine/.cache/libs/builder/helpers/get-keyword-type-from-entity.js +20 -0
  23. package/engine/.cache/libs/builder/helpers/get-kind-type.js +21 -0
  24. package/engine/.cache/libs/builder/helpers/index.js +4 -0
  25. package/engine/.cache/libs/builder/helpers/presentation.js +0 -1
  26. package/engine/.cache/libs/builder/helpers/typescript/member/find-member.js +1 -1
  27. package/engine/.cache/libs/builder/helpers/typescript/member/get-implemented-member.js +4 -3
  28. package/engine/.cache/libs/builder/helpers/typescript/member/get-inherited-parent.js +18 -0
  29. package/engine/.cache/libs/builder/helpers/typescript/member/get-member-parent.js +13 -0
  30. package/engine/.cache/libs/builder/helpers/typescript/member/get-overridden-member.js +4 -2
  31. package/engine/.cache/libs/builder/helpers/typescript/member/index.js +2 -0
  32. package/engine/.cache/libs/builder/types/index.js +1 -0
  33. package/engine/.cache/libs/builder/types/keyword-type.js +2 -0
  34. package/engine/.cache/libs/core/constants/angular-entities.js +4 -0
  35. package/engine/.cache/libs/core/constants/declarations.js +4 -0
  36. package/engine/.cache/libs/core/constants/index.js +2 -0
  37. package/engine/.cache/libs/core/helpers/index.js +0 -1
  38. package/engine/.cache/libs/core/types/entity-type.js +2 -0
  39. package/engine/.cache/libs/core/types/index.js +1 -0
  40. package/engine/.cache/libs/ui-kit/directives/input-string/input-string.directive.js +1 -1
  41. package/engine/entities/api.entity.js +3 -4
  42. package/engine/entities/api.entity.js.map +1 -1
  43. package/engine/entity-store.js +1 -0
  44. package/engine/entity-store.js.map +1 -1
  45. package/engine/post-processors/html-plugins/keywords-processor.js +4 -3
  46. package/engine/post-processors/html-plugins/keywords-processor.js.map +1 -1
  47. package/engine/template-filters.d.ts +1 -2
  48. package/engine/template-filters.js +5 -3
  49. package/engine/template-filters.js.map +1 -1
  50. package/helpers/build-global-indexes.js +6 -35
  51. package/helpers/build-global-indexes.js.map +1 -1
  52. package/helpers/filter-useless-members.d.ts +7 -0
  53. package/helpers/filter-useless-members.js +14 -0
  54. package/helpers/filter-useless-members.js.map +1 -0
  55. package/helpers/get-declaration-type.d.ts +7 -0
  56. package/helpers/get-declaration-type.js +18 -0
  57. package/helpers/get-declaration-type.js.map +1 -0
  58. package/helpers/get-keyword-type-from-entity.d.ts +7 -0
  59. package/helpers/get-keyword-type-from-entity.js +21 -0
  60. package/helpers/get-keyword-type-from-entity.js.map +1 -0
  61. package/helpers/get-kind-type.d.ts +7 -0
  62. package/helpers/get-kind-type.js +22 -0
  63. package/helpers/get-kind-type.js.map +1 -0
  64. package/helpers/index.d.ts +4 -0
  65. package/helpers/index.js +4 -0
  66. package/helpers/index.js.map +1 -1
  67. package/helpers/presentation.js +0 -1
  68. package/helpers/presentation.js.map +1 -1
  69. package/helpers/typescript/member/find-member.js +1 -1
  70. package/helpers/typescript/member/find-member.js.map +1 -1
  71. package/helpers/typescript/member/get-implemented-member.js +4 -3
  72. package/helpers/typescript/member/get-implemented-member.js.map +1 -1
  73. package/helpers/typescript/member/get-inherited-parent.d.ts +8 -0
  74. package/helpers/typescript/member/get-inherited-parent.js +19 -0
  75. package/helpers/typescript/member/get-inherited-parent.js.map +1 -0
  76. package/helpers/typescript/member/get-member-parent.d.ts +7 -0
  77. package/helpers/typescript/member/get-member-parent.js +14 -0
  78. package/helpers/typescript/member/get-member-parent.js.map +1 -0
  79. package/helpers/typescript/member/get-overridden-member.js +4 -2
  80. package/helpers/typescript/member/get-overridden-member.js.map +1 -1
  81. package/helpers/typescript/member/index.d.ts +2 -0
  82. package/helpers/typescript/member/index.js +2 -0
  83. package/helpers/typescript/member/index.js.map +1 -1
  84. package/helpers/typescript/member/member-type.d.ts +2 -2
  85. package/interfaces/keyword-map.d.ts +2 -0
  86. package/interfaces/page-index.d.ts +2 -2
  87. package/package.json +2 -2
  88. package/templates/api/class.html.nunj +6 -7
  89. package/templates/api/interface.html.nunj +4 -5
  90. package/templates/helpers/accessor.html.nunj +5 -5
  91. package/templates/helpers/declaration-modifiers.html.nunj +8 -8
  92. package/templates/helpers/method.html.nunj +5 -5
  93. package/templates/helpers/parameters.html.nunj +20 -1
  94. package/templates/helpers/properties.html.nunj +4 -4
  95. package/templates/parts/page-tags.html.nunj +2 -1
  96. package/types/index.d.ts +1 -0
  97. package/types/index.js +1 -0
  98. package/types/index.js.map +1 -1
  99. package/types/keyword-type.d.ts +2 -0
  100. package/types/keyword-type.js +3 -0
  101. package/types/keyword-type.js.map +1 -0
  102. package/engine/.cache/libs/app/components/page-map/index.js +0 -6
  103. package/engine/.cache/libs/core/helpers/humanize-declaration-name.js +0 -13
@@ -43,7 +43,7 @@ let NgDocApiListComponent = class NgDocApiListComponent {
43
43
  .sort((a, b) => a.title.localeCompare(b.title))), (0, until_destroy_1.untilDestroyed)(this));
44
44
  }
45
45
  get types() {
46
- return (0, core_2.asArray)(new Set(this.apiList.flatMap((api) => api.items).flatMap((item) => item.type)));
46
+ return (0, core_2.asArray)(new Set(this.apiList.flatMap((api) => api.items).flatMap((item) => item.type))).sort();
47
47
  }
48
48
  };
49
49
  tslib_1.__decorate([
@@ -9,9 +9,9 @@ tslib_1.__exportStar(require("@ng-doc/app/components/kind-icon"), exports);
9
9
  tslib_1.__exportStar(require("@ng-doc/app/components/link"), exports);
10
10
  tslib_1.__exportStar(require("@ng-doc/app/components/navbar"), exports);
11
11
  tslib_1.__exportStar(require("@ng-doc/app/components/page"), exports);
12
- tslib_1.__exportStar(require("@ng-doc/app/components/page-map"), exports);
13
12
  tslib_1.__exportStar(require("@ng-doc/app/components/root"), exports);
14
13
  tslib_1.__exportStar(require("@ng-doc/app/components/search"), exports);
15
14
  tslib_1.__exportStar(require("@ng-doc/app/components/search-result"), exports);
16
15
  tslib_1.__exportStar(require("@ng-doc/app/components/sidebar"), exports);
17
16
  tslib_1.__exportStar(require("@ng-doc/app/components/theme-toggle"), exports);
17
+ tslib_1.__exportStar(require("@ng-doc/app/components/toc"), exports);
@@ -4,7 +4,7 @@ exports.NgDocPageModule = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@angular/common");
6
6
  const core_1 = require("@angular/core");
7
- const page_map_1 = require("@ng-doc/app/components/page-map");
7
+ const toc_1 = require("@ng-doc/app/components/toc");
8
8
  const sanitize_html_1 = require("@ng-doc/app/pipes/sanitize-html");
9
9
  const processors_1 = require("@ng-doc/app/processors");
10
10
  const ui_kit_1 = require("@ng-doc/ui-kit");
@@ -21,7 +21,7 @@ NgDocPageModule = tslib_1.__decorate([
21
21
  processors_1.NgDocBlockquoteProcessorModule,
22
22
  sanitize_html_1.NgDocSanitizeHtmlModule,
23
23
  processors_1.NgDocIconProcessorModule,
24
- page_map_1.NgDocPageMapModule,
24
+ toc_1.NgDocPageMapModule,
25
25
  ui_kit_1.NgDocMediaQueryModule,
26
26
  processors_1.NgDocTooltipProcessorModule,
27
27
  ],
@@ -22,29 +22,41 @@ let NgDocRootComponent = class NgDocRootComponent {
22
22
  this.breakpointObserver = breakpointObserver;
23
23
  this.sidebarService = sidebarService;
24
24
  this.window = window;
25
- (0, rxjs_1.fromEvent)(this.elementRef.nativeElement, 'click').pipe((0, until_destroy_1.untilDestroyed)(this), (0, ui_kit_1.ngDocZoneOptimize)(this.ngZone), (0, operators_1.filter)((event) => event instanceof PointerEvent)).subscribe((event) => {
26
- const target = event.target;
27
- if (target instanceof HTMLAnchorElement) {
28
- if ((0, is_external_link_1.isExternalLink)(target.href)) {
29
- event.preventDefault();
30
- this.window.open(target.href, '_blank')?.focus();
25
+ (0, rxjs_1.fromEvent)(this.elementRef.nativeElement, 'click').pipe((0, operators_1.filter)(this.isPointerEvent), (0, until_destroy_1.untilDestroyed)(this), (0, ui_kit_1.ngDocZoneDetach)(this.ngZone)).subscribe((event) => {
26
+ if (event.target instanceof Node) {
27
+ let target = event.target;
28
+ while (target && !(target instanceof HTMLAnchorElement)) {
29
+ target = target.parentElement;
31
30
  }
32
- else {
33
- const hasModifier = event.button !== 0 || event.ctrlKey || event.metaKey;
34
- const isDownloadable = target.getAttribute('download') != null;
35
- const hasHash = !!target.hash;
36
- if (!hasModifier && !isDownloadable && !hasHash) {
37
- const { pathname, search } = target;
38
- const isInPageAnchor = target.getAttribute('href')?.startsWith('#') ?? false;
39
- const correctPathname = isInPageAnchor ? this.location.path() : pathname;
40
- const relativeUrl = correctPathname + search;
31
+ if (target instanceof HTMLAnchorElement) {
32
+ if ((0, is_external_link_1.isExternalLink)(target.href)) {
41
33
  event.preventDefault();
42
- this.router.navigate([relativeUrl]);
34
+ this.window.open(target.href, '_blank')?.focus();
35
+ }
36
+ else {
37
+ const hasModifier = event.button !== 0 || event.ctrlKey || event.metaKey;
38
+ const isDownloadable = target.getAttribute('download') != null;
39
+ if (!hasModifier && !isDownloadable) {
40
+ const { pathname, search } = target;
41
+ const isInPageAnchor = target.getAttribute('href')?.startsWith('#') ?? false;
42
+ const correctPathname = isInPageAnchor ? this.location.path() : pathname;
43
+ const relativeUrl = correctPathname + search;
44
+ const hash = target.hash;
45
+ event.preventDefault();
46
+ this.ngZone.run(() => {
47
+ this.router.navigate([relativeUrl], {
48
+ fragment: hash.replace(/^#/, '') || undefined,
49
+ });
50
+ });
51
+ }
43
52
  }
44
53
  }
45
54
  }
46
55
  });
47
56
  }
57
+ isPointerEvent(event) {
58
+ return event instanceof PointerEvent;
59
+ }
48
60
  };
49
61
  NgDocRootComponent = tslib_1.__decorate([
50
62
  (0, core_1.Component)({
@@ -52,6 +64,7 @@ NgDocRootComponent = tslib_1.__decorate([
52
64
  selector: 'ng-doc-root',
53
65
  templateUrl: './root.component.html',
54
66
  styleUrls: ['./root.component.scss'],
67
+ providers: [],
55
68
  changeDetection: core_1.ChangeDetectionStrategy.OnPush,
56
69
  }),
57
70
  (0, until_destroy_1.UntilDestroy)(),
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./toc.component"), exports);
5
+ tslib_1.__exportStar(require("./toc.module"), exports);
6
+ tslib_1.__exportStar(require("./toc-element/toc-element.component"), exports);
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NgDocPageMapElementComponent = void 0;
3
+ exports.NgDocTocElementComponent = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@angular/core");
6
- let NgDocPageMapElementComponent = class NgDocPageMapElementComponent {
6
+ let NgDocTocElementComponent = class NgDocTocElementComponent {
7
7
  constructor(elementRef) {
8
8
  this.elementRef = elementRef;
9
9
  this.href = '';
@@ -14,24 +14,24 @@ let NgDocPageMapElementComponent = class NgDocPageMapElementComponent {
14
14
  tslib_1.__decorate([
15
15
  (0, core_1.Input)(),
16
16
  tslib_1.__metadata("design:type", String)
17
- ], NgDocPageMapElementComponent.prototype, "href", void 0);
17
+ ], NgDocTocElementComponent.prototype, "href", void 0);
18
18
  tslib_1.__decorate([
19
19
  (0, core_1.Input)(),
20
20
  (0, core_1.HostBinding)('attr.data-ng-doc-selected'),
21
21
  tslib_1.__metadata("design:type", Boolean)
22
- ], NgDocPageMapElementComponent.prototype, "selected", void 0);
22
+ ], NgDocTocElementComponent.prototype, "selected", void 0);
23
23
  tslib_1.__decorate([
24
24
  (0, core_1.Input)(),
25
25
  (0, core_1.HostBinding)('attr.data-ng-doc-level'),
26
26
  tslib_1.__metadata("design:type", Number)
27
- ], NgDocPageMapElementComponent.prototype, "level", void 0);
28
- NgDocPageMapElementComponent = tslib_1.__decorate([
27
+ ], NgDocTocElementComponent.prototype, "level", void 0);
28
+ NgDocTocElementComponent = tslib_1.__decorate([
29
29
  (0, core_1.Component)({
30
- selector: 'li[ng-doc-page-map-element]',
31
- templateUrl: './page-map-element.component.html',
32
- styleUrls: ['./page-map-element.component.scss'],
30
+ selector: 'li[ng-doc-toc-element]',
31
+ templateUrl: './toc-element.component.html',
32
+ styleUrls: ['./toc-element.component.scss'],
33
33
  changeDetection: core_1.ChangeDetectionStrategy.OnPush,
34
34
  }),
35
35
  tslib_1.__metadata("design:paramtypes", [core_1.ElementRef])
36
- ], NgDocPageMapElementComponent);
37
- exports.NgDocPageMapElementComponent = NgDocPageMapElementComponent;
36
+ ], NgDocTocElementComponent);
37
+ exports.NgDocTocElementComponent = NgDocTocElementComponent;
@@ -1,32 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NgDocPageMapComponent = void 0;
3
+ exports.NgDocTocComponent = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@angular/common");
6
6
  const core_1 = require("@angular/core");
7
+ const router_1 = require("@angular/router");
7
8
  const helpers_1 = require("@ng-doc/app/helpers");
9
+ const core_2 = require("@ng-doc/core");
8
10
  const ui_kit_1 = require("@ng-doc/ui-kit");
9
11
  const until_destroy_1 = require("@ngneat/until-destroy");
10
12
  const rxjs_1 = require("rxjs");
11
13
  const operators_1 = require("rxjs/operators");
12
- const page_map_element_component_1 = require("./page-map-element/page-map-element.component");
13
- let NgDocPageMapComponent = class NgDocPageMapComponent {
14
- constructor(document, ngZone, changeDetectorRef, renderer) {
14
+ const toc_element_component_1 = require("./toc-element/toc-element.component");
15
+ let NgDocTocComponent = class NgDocTocComponent {
16
+ constructor(document, ngZone, changeDetectorRef, renderer, router) {
15
17
  this.document = document;
16
18
  this.ngZone = ngZone;
17
19
  this.changeDetectorRef = changeDetectorRef;
18
20
  this.renderer = renderer;
21
+ this.router = router;
19
22
  this.elements = new core_1.QueryList();
20
23
  this.map = [];
21
24
  }
22
25
  ngOnChanges() {
23
26
  if (this.pageContainer) {
24
- this.map = (0, helpers_1.generatePageMap)(this.pageContainer);
27
+ this.map = (0, helpers_1.generateToc)(this.pageContainer);
25
28
  }
26
29
  }
27
30
  ngAfterViewInit() {
28
- (0, rxjs_1.fromEvent)(this.document, 'scroll')
29
- .pipe((0, operators_1.map)((event) => event.target.scrollingElement), (0, operators_1.startWith)(this.document.scrollingElement), (0, operators_1.filter)(() => !!this.map.length), (0, operators_1.map)((target) => {
31
+ const scrollSelection = (0, rxjs_1.fromEvent)(this.document, 'scroll').pipe((0, operators_1.map)((event) => event.target.scrollingElement), (0, operators_1.startWith)(this.document.scrollingElement), (0, operators_1.filter)(() => !!this.map.length), (0, operators_1.map)((target) => {
30
32
  const percentage = (target.scrollTop * 100) / (target.scrollHeight - target.offsetHeight);
31
33
  const selectionLine = target.scrollTop + (target.offsetHeight * percentage) / 100;
32
34
  return this.map.reduce((pTarget, cTarget) => {
@@ -34,7 +36,18 @@ let NgDocPageMapComponent = class NgDocPageMapComponent {
34
36
  const cTop = cTarget.element.getBoundingClientRect().top + target.scrollTop;
35
37
  return Math.abs(cTop - selectionLine) < Math.abs(pTop - selectionLine) ? cTarget : pTarget;
36
38
  });
37
- }), (0, operators_1.distinctUntilChanged)(), (0, ui_kit_1.ngDocZoneOptimize)(this.ngZone), (0, until_destroy_1.untilDestroyed)(this))
39
+ }));
40
+ const routerSelection = this.router.events.pipe((0, operators_1.map)((event) => {
41
+ if (event instanceof router_1.Scroll) {
42
+ const item = this.map.find((item) => event.routerEvent.url === item.path);
43
+ if (item) {
44
+ return item;
45
+ }
46
+ }
47
+ return null;
48
+ }), (0, operators_1.filter)(core_2.isPresent), (0, operators_1.debounceTime)(20));
49
+ (0, rxjs_1.merge)(scrollSelection, routerSelection)
50
+ .pipe((0, operators_1.distinctUntilChanged)(), (0, ui_kit_1.ngDocZoneOptimize)(this.ngZone))
38
51
  .subscribe(this.select.bind(this));
39
52
  }
40
53
  select(item) {
@@ -54,20 +67,20 @@ let NgDocPageMapComponent = class NgDocPageMapComponent {
54
67
  tslib_1.__decorate([
55
68
  (0, core_1.Input)(),
56
69
  tslib_1.__metadata("design:type", HTMLElement)
57
- ], NgDocPageMapComponent.prototype, "pageContainer", void 0);
70
+ ], NgDocTocComponent.prototype, "pageContainer", void 0);
58
71
  tslib_1.__decorate([
59
72
  (0, core_1.ViewChild)('selection', { static: true, read: core_1.ElementRef }),
60
73
  tslib_1.__metadata("design:type", core_1.ElementRef)
61
- ], NgDocPageMapComponent.prototype, "selection", void 0);
74
+ ], NgDocTocComponent.prototype, "selection", void 0);
62
75
  tslib_1.__decorate([
63
- (0, core_1.ViewChildren)(page_map_element_component_1.NgDocPageMapElementComponent),
76
+ (0, core_1.ViewChildren)(toc_element_component_1.NgDocTocElementComponent),
64
77
  tslib_1.__metadata("design:type", core_1.QueryList)
65
- ], NgDocPageMapComponent.prototype, "elements", void 0);
66
- NgDocPageMapComponent = tslib_1.__decorate([
78
+ ], NgDocTocComponent.prototype, "elements", void 0);
79
+ NgDocTocComponent = tslib_1.__decorate([
67
80
  (0, core_1.Component)({
68
- selector: 'ng-doc-page-map',
69
- templateUrl: './page-map.component.html',
70
- styleUrls: ['./page-map.component.scss'],
81
+ selector: 'ng-doc-toc',
82
+ templateUrl: './toc.component.html',
83
+ styleUrls: ['./toc.component.scss'],
71
84
  changeDetection: core_1.ChangeDetectionStrategy.OnPush,
72
85
  }),
73
86
  (0, until_destroy_1.UntilDestroy)(),
@@ -75,6 +88,7 @@ NgDocPageMapComponent = tslib_1.__decorate([
75
88
  tslib_1.__metadata("design:paramtypes", [Document,
76
89
  core_1.NgZone,
77
90
  core_1.ChangeDetectorRef,
78
- core_1.Renderer2])
79
- ], NgDocPageMapComponent);
80
- exports.NgDocPageMapComponent = NgDocPageMapComponent;
91
+ core_1.Renderer2,
92
+ router_1.Router])
93
+ ], NgDocTocComponent);
94
+ exports.NgDocTocComponent = NgDocTocComponent;
@@ -6,15 +6,15 @@ const common_1 = require("@angular/common");
6
6
  const core_1 = require("@angular/core");
7
7
  const router_1 = require("@angular/router");
8
8
  const ui_kit_1 = require("@ng-doc/ui-kit");
9
- const page_map_component_1 = require("./page-map.component");
10
- const page_map_element_component_1 = require("./page-map-element/page-map-element.component");
9
+ const toc_component_1 = require("./toc.component");
10
+ const toc_element_component_1 = require("./toc-element/toc-element.component");
11
11
  let NgDocPageMapModule = class NgDocPageMapModule {
12
12
  };
13
13
  NgDocPageMapModule = tslib_1.__decorate([
14
14
  (0, core_1.NgModule)({
15
- declarations: [page_map_component_1.NgDocPageMapComponent, page_map_element_component_1.NgDocPageMapElementComponent],
16
- imports: [common_1.CommonModule, router_1.RouterLinkWithHref, ui_kit_1.NgDocDotModule],
17
- exports: [page_map_component_1.NgDocPageMapComponent, page_map_element_component_1.NgDocPageMapElementComponent],
15
+ declarations: [toc_component_1.NgDocTocComponent, toc_element_component_1.NgDocTocElementComponent],
16
+ imports: [common_1.CommonModule, router_1.RouterLinkWithHref, ui_kit_1.NgDocDotModule, router_1.RouterLink],
17
+ exports: [toc_component_1.NgDocTocComponent, toc_element_component_1.NgDocTocElementComponent],
18
18
  })
19
19
  ], NgDocPageMapModule);
20
20
  exports.NgDocPageMapModule = NgDocPageMapModule;
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generatePageMap = void 0;
3
+ exports.generateToc = void 0;
4
4
  /**
5
5
  *
6
6
  * @param container
7
7
  * @param headings
8
8
  */
9
- function generatePageMap(container, headings = ['h1', 'h2', 'h3', 'h4']) {
9
+ function generateToc(container, headings = ['h1', 'h2', 'h3', 'h4']) {
10
10
  const headingElements = Array.from(container.querySelectorAll(headings.join(', ')));
11
- return headingElements
12
- .reduce((map, heading, i) => {
11
+ return headingElements.reduce((map, heading, i) => {
13
12
  const headingLevel = levelFromTagName(heading);
14
13
  const previousItem = map[i - 1];
15
14
  const level = !previousItem
@@ -31,7 +30,7 @@ function generatePageMap(container, headings = ['h1', 'h2', 'h3', 'h4']) {
31
30
  return map;
32
31
  }, []);
33
32
  }
34
- exports.generatePageMap = generatePageMap;
33
+ exports.generateToc = generateToc;
35
34
  /**
36
35
  *
37
36
  * @param heading
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./generate-page-map"), exports);
4
+ tslib_1.__exportStar(require("./generate-toc"), exports);
@@ -4,7 +4,7 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("@ng-doc/app/helpers/as-boolean"), exports);
5
5
  tslib_1.__exportStar(require("@ng-doc/app/helpers/compile-template"), exports);
6
6
  tslib_1.__exportStar(require("@ng-doc/app/helpers/format-html"), exports);
7
- tslib_1.__exportStar(require("@ng-doc/app/helpers/generate-page-map"), exports);
7
+ tslib_1.__exportStar(require("@ng-doc/app/helpers/generate-toc"), exports);
8
8
  tslib_1.__exportStar(require("@ng-doc/app/helpers/is-external-link"), exports);
9
9
  tslib_1.__exportStar(require("@ng-doc/app/helpers/is-playground-property"), exports);
10
10
  tslib_1.__exportStar(require("@ng-doc/app/helpers/provide-type-control"), exports);
@@ -5,10 +5,10 @@ tslib_1.__exportStar(require("./application-config"), exports);
5
5
  tslib_1.__exportStar(require("./context"), exports);
6
6
  tslib_1.__exportStar(require("./demo-assets"), exports);
7
7
  tslib_1.__exportStar(require("./navigation"), exports);
8
- tslib_1.__exportStar(require("./page-map"), exports);
9
8
  tslib_1.__exportStar(require("./playground-form"), exports);
10
9
  tslib_1.__exportStar(require("./processor-options"), exports);
11
10
  tslib_1.__exportStar(require("./provided-type-control"), exports);
12
11
  tslib_1.__exportStar(require("./theme"), exports);
12
+ tslib_1.__exportStar(require("./toc-item"), exports);
13
13
  tslib_1.__exportStar(require("./type-control"), exports);
14
14
  tslib_1.__exportStar(require("./type-control-provider-options"), exports);
@@ -4,16 +4,37 @@ exports.NgDocTooltipWrapperComponent = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@angular/core");
6
6
  let NgDocTooltipWrapperComponent = class NgDocTooltipWrapperComponent {
7
+ constructor(changeDetectorRef) {
8
+ this.changeDetectorRef = changeDetectorRef;
9
+ this.tooltipElement = null;
10
+ }
11
+ ngAfterViewInit() {
12
+ if (this.contentProjection) {
13
+ const element = this.contentProjection.nativeElement.querySelector('[ngDocTooltip]');
14
+ this.tooltipElement = element instanceof HTMLElement ? element : null;
15
+ this.changeDetectorRef.detectChanges();
16
+ }
17
+ }
7
18
  };
8
19
  tslib_1.__decorate([
9
20
  (0, core_1.Input)(),
10
21
  tslib_1.__metadata("design:type", String)
11
22
  ], NgDocTooltipWrapperComponent.prototype, "content", void 0);
23
+ tslib_1.__decorate([
24
+ (0, core_1.ViewChild)('contentProjection', { read: core_1.ElementRef, static: true }),
25
+ tslib_1.__metadata("design:type", core_1.ElementRef)
26
+ ], NgDocTooltipWrapperComponent.prototype, "contentProjection", void 0);
12
27
  NgDocTooltipWrapperComponent = tslib_1.__decorate([
13
28
  (0, core_1.Component)({
14
29
  selector: 'ng-doc-tooltip-wrapper',
15
30
  template: `
16
- <div class="content-projection" [ngDocTooltip]="content">
31
+ <div
32
+ class="content-projection"
33
+ [ngDocTooltip]="content"
34
+ [displayOrigin]="tooltipElement ?? contentProjection"
35
+ [pointerOrigin]="tooltipElement ?? contentProjection"
36
+ #contentProjection
37
+ >
17
38
  <ng-content></ng-content>
18
39
  </div>
19
40
  `,
@@ -25,6 +46,7 @@ NgDocTooltipWrapperComponent = tslib_1.__decorate([
25
46
  `,
26
47
  ],
27
48
  changeDetection: core_1.ChangeDetectionStrategy.OnPush,
28
- })
49
+ }),
50
+ tslib_1.__metadata("design:paramtypes", [core_1.ChangeDetectorRef])
29
51
  ], NgDocTooltipWrapperComponent);
30
52
  exports.NgDocTooltipWrapperComponent = NgDocTooltipWrapperComponent;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NgDocApiEntity = void 0;
4
- const core_1 = require("@ng-doc/core");
5
4
  const path = require("path");
6
5
  const rxjs_1 = require("rxjs");
7
6
  const operators_1 = require("rxjs/operators");
@@ -79,7 +78,7 @@ class NgDocApiEntity extends navigation_entity_1.NgDocNavigationEntity {
79
78
  title: scope.title,
80
79
  items: scope.children.filter(helpers_1.isApiPageEntity).map((page) => ({
81
80
  route: (0, helpers_1.slash)(path.join(scope.route, page.route)),
82
- type: (0, core_1.humanizeDeclarationName)(page.declaration?.getKindName() ?? ''),
81
+ type: (page.declaration && (0, helpers_1.getKindType)(page.declaration)) ?? '',
83
82
  name: page.declaration?.getName() ?? '',
84
83
  })),
85
84
  }));
@@ -45,6 +45,7 @@ class NgDocEntityStore extends Map {
45
45
  entity.keywords.forEach((keyword) => this.addKeyword(keyword, {
46
46
  title: entity.title,
47
47
  path: entity.fullRoute,
48
+ type: (0, helpers_1.getKeywordTypeFromEntity)(entity),
48
49
  isCodeLink: (0, helpers_1.isApiPageEntity)(entity),
49
50
  }));
50
51
  }
@@ -86,7 +86,7 @@ function getNodes(node, parent, entityStore, inlineLink, e) {
86
86
  }
87
87
  // Add link inside the code if it's a link to the API entity
88
88
  return keyword
89
- ? createLinkNode(inlineLink ? keyword.title : word, keyword.path)
89
+ ? createLinkNode(inlineLink ? keyword.title : word, keyword.path, keyword.type)
90
90
  : { type: 'text', value: word };
91
91
  });
92
92
  }
@@ -94,12 +94,13 @@ function getNodes(node, parent, entityStore, inlineLink, e) {
94
94
  *
95
95
  * @param text
96
96
  * @param href
97
+ * @param type
97
98
  */
98
- function createLinkNode(text, href) {
99
+ function createLinkNode(text, href, type) {
99
100
  return {
100
101
  type: 'element',
101
102
  tagName: 'a',
102
- properties: { href: href, class: 'ng-doc-code-anchor' },
103
+ properties: { href: href, class: 'ng-doc-code-anchor', 'data-link-type': type },
103
104
  children: [{ type: 'text', value: text }],
104
105
  };
105
106
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /* Just export filters from this file, they will be included to the template renderer automatically */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.humanizeDeclarationName = exports.variablePresentation = exports.typeAliasPresentation = exports.sortByNodesName = exports.notEmptyAssets = exports.noLineBreaks = exports.noEmpty = exports.methodPresentation = exports.marked = exports.groupAccessors = exports.getPropertyChain = exports.getOverriddenMember = exports.getMethodChain = exports.getInterfaceProperties = exports.getInterfaceMethods = exports.getInterfaceAccessors = exports.getImplementedMember = exports.getClassProperties = exports.getClassMethods = exports.getClassAccessors = exports.getAccessorChain = exports.functionPresentation = exports.firstNodeWithComment = exports.filterByStatic = exports.filterByScope = exports.extractSelectors = exports.extractSeeDocs = exports.extractParameterDocs = exports.extractDocs = exports.displayType = exports.constructorPresentation = exports.accessorPresentation = void 0;
4
+ exports.variablePresentation = exports.typeAliasPresentation = exports.sortByNodesName = exports.notEmptyAssets = exports.noLineBreaks = exports.noEmpty = exports.methodPresentation = exports.marked = exports.groupAccessors = exports.getPropertyChain = exports.getOverriddenMember = exports.getMethodChain = exports.getMemberParent = exports.getInterfaceProperties = exports.getInterfaceMethods = exports.getInterfaceAccessors = exports.getInheritedParent = exports.getImplementedMember = exports.getDeclarationType = exports.getClassProperties = exports.getClassMethods = exports.getClassAccessors = exports.getAccessorChain = exports.functionPresentation = exports.firstNodeWithComment = exports.filterUselessMembers = exports.filterByStatic = exports.filterByScope = exports.extractSelectors = exports.extractSeeDocs = exports.extractParameterDocs = exports.extractDocs = exports.displayType = exports.constructorPresentation = exports.accessorPresentation = void 0;
5
5
  var helpers_1 = require("../helpers");
6
6
  Object.defineProperty(exports, "accessorPresentation", { enumerable: true, get: function () { return helpers_1.accessorPresentation; } });
7
7
  Object.defineProperty(exports, "constructorPresentation", { enumerable: true, get: function () { return helpers_1.constructorPresentation; } });
@@ -12,16 +12,20 @@ Object.defineProperty(exports, "extractSeeDocs", { enumerable: true, get: functi
12
12
  Object.defineProperty(exports, "extractSelectors", { enumerable: true, get: function () { return helpers_1.extractSelectors; } });
13
13
  Object.defineProperty(exports, "filterByScope", { enumerable: true, get: function () { return helpers_1.filterByScope; } });
14
14
  Object.defineProperty(exports, "filterByStatic", { enumerable: true, get: function () { return helpers_1.filterByStatic; } });
15
+ Object.defineProperty(exports, "filterUselessMembers", { enumerable: true, get: function () { return helpers_1.filterUselessMembers; } });
15
16
  Object.defineProperty(exports, "firstNodeWithComment", { enumerable: true, get: function () { return helpers_1.firstNodeWithComment; } });
16
17
  Object.defineProperty(exports, "functionPresentation", { enumerable: true, get: function () { return helpers_1.functionPresentation; } });
17
18
  Object.defineProperty(exports, "getAccessorChain", { enumerable: true, get: function () { return helpers_1.getAccessorChain; } });
18
19
  Object.defineProperty(exports, "getClassAccessors", { enumerable: true, get: function () { return helpers_1.getClassAccessors; } });
19
20
  Object.defineProperty(exports, "getClassMethods", { enumerable: true, get: function () { return helpers_1.getClassMethods; } });
20
21
  Object.defineProperty(exports, "getClassProperties", { enumerable: true, get: function () { return helpers_1.getClassProperties; } });
22
+ Object.defineProperty(exports, "getDeclarationType", { enumerable: true, get: function () { return helpers_1.getDeclarationType; } });
21
23
  Object.defineProperty(exports, "getImplementedMember", { enumerable: true, get: function () { return helpers_1.getImplementedMember; } });
24
+ Object.defineProperty(exports, "getInheritedParent", { enumerable: true, get: function () { return helpers_1.getInheritedParent; } });
22
25
  Object.defineProperty(exports, "getInterfaceAccessors", { enumerable: true, get: function () { return helpers_1.getInterfaceAccessors; } });
23
26
  Object.defineProperty(exports, "getInterfaceMethods", { enumerable: true, get: function () { return helpers_1.getInterfaceMethods; } });
24
27
  Object.defineProperty(exports, "getInterfaceProperties", { enumerable: true, get: function () { return helpers_1.getInterfaceProperties; } });
28
+ Object.defineProperty(exports, "getMemberParent", { enumerable: true, get: function () { return helpers_1.getMemberParent; } });
25
29
  Object.defineProperty(exports, "getMethodChain", { enumerable: true, get: function () { return helpers_1.getMethodChain; } });
26
30
  Object.defineProperty(exports, "getOverriddenMember", { enumerable: true, get: function () { return helpers_1.getOverriddenMember; } });
27
31
  Object.defineProperty(exports, "getPropertyChain", { enumerable: true, get: function () { return helpers_1.getPropertyChain; } });
@@ -34,5 +38,3 @@ Object.defineProperty(exports, "notEmptyAssets", { enumerable: true, get: functi
34
38
  Object.defineProperty(exports, "sortByNodesName", { enumerable: true, get: function () { return helpers_1.sortByNodesName; } });
35
39
  Object.defineProperty(exports, "typeAliasPresentation", { enumerable: true, get: function () { return helpers_1.typeAliasPresentation; } });
36
40
  Object.defineProperty(exports, "variablePresentation", { enumerable: true, get: function () { return helpers_1.variablePresentation; } });
37
- var core_1 = require("@ng-doc/core");
38
- Object.defineProperty(exports, "humanizeDeclarationName", { enumerable: true, get: function () { return core_1.humanizeDeclarationName; } });
@@ -7,6 +7,8 @@ const path = require("path");
7
7
  const posthtml_parser_1 = require("posthtml-parser");
8
8
  const entities_1 = require("../engine/entities");
9
9
  const route_entity_1 = require("../engine/entities/abstractions/route.entity");
10
+ const entity_type_1 = require("./entity-type");
11
+ const get_kind_type_1 = require("./get-kind-type");
10
12
  /**
11
13
  *
12
14
  * @param entities
@@ -67,7 +69,7 @@ function extractIndexes(entity, nodes, indexes = []) {
67
69
  title: entity.title,
68
70
  heading: entity.title,
69
71
  content: '',
70
- kind: getKindFromEntity(entity),
72
+ kind: ((0, entity_type_1.isApiPageEntity)(entity) && entity.declaration && (0, get_kind_type_1.getKindType)(entity.declaration)) || undefined,
71
73
  });
72
74
  }
73
75
  nodes.forEach((node) => {
@@ -80,7 +82,8 @@ function extractIndexes(entity, nodes, indexes = []) {
80
82
  title: entity.title,
81
83
  heading: extractText(node),
82
84
  content: '',
83
- kind: getKindFromEntity(entity),
85
+ kind: ((0, entity_type_1.isApiPageEntity)(entity) && entity.declaration && (0, get_kind_type_1.getKindType)(entity.declaration)) ||
86
+ undefined,
84
87
  });
85
88
  }
86
89
  else if (Array.isArray(node.content)) {
@@ -125,7 +128,7 @@ function getTypeFromEntity(entity) {
125
128
  if (entity instanceof entities_1.NgDocApiPageEntity) {
126
129
  return 'api';
127
130
  }
128
- return 'guide';
131
+ return 'guideline';
129
132
  }
130
133
  /**
131
134
  *
@@ -134,34 +137,3 @@ function getTypeFromEntity(entity) {
134
137
  function isHeadingTag(node) {
135
138
  return ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(String(node.tag));
136
139
  }
137
- /**
138
- *
139
- * @param node
140
- */
141
- function isHeaderTag(node) {
142
- return ['header'].includes(String(node.tag));
143
- }
144
- /**
145
- *
146
- * @param node
147
- */
148
- function isSectionTag(node) {
149
- return ['section'].includes(String(node.tag));
150
- }
151
- /**
152
- *
153
- * @param node
154
- */
155
- function isParagraph(node) {
156
- return ['p'].includes(String(node.tag));
157
- }
158
- /**
159
- *
160
- * @param entity
161
- */
162
- function getKindFromEntity(entity) {
163
- if (entity instanceof entities_1.NgDocApiPageEntity) {
164
- return (0, core_1.humanizeDeclarationName)(entity.declaration?.getKindName() ?? '');
165
- }
166
- return undefined;
167
- }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterUselessMembers = void 0;
4
+ const EXCLUDING_RULES = [/^ɵ/];
5
+ /**
6
+ * Excludes from the passed array members that have names that are not important to the end user
7
+ *
8
+ * @param members - List of members
9
+ */
10
+ function filterUselessMembers(members) {
11
+ return members.filter((member) => !EXCLUDING_RULES.every((rule) => rule.test(member.getName())));
12
+ }
13
+ exports.filterUselessMembers = filterUselessMembers;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDeclarationType = void 0;
4
+ const core_1 = require("@ng-doc/core");
5
+ /**
6
+ *
7
+ * @param node
8
+ */
9
+ function getDeclarationType(node) {
10
+ for (const declaration of core_1.NgDocDeclarations) {
11
+ if (node?.getKindName().includes(declaration)) {
12
+ return declaration;
13
+ }
14
+ }
15
+ return undefined;
16
+ }
17
+ exports.getDeclarationType = getDeclarationType;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getKeywordTypeFromEntity = void 0;
4
+ const entity_type_1 = require("./entity-type");
5
+ const get_kind_type_1 = require("./get-kind-type");
6
+ /**
7
+ *
8
+ * @param entity
9
+ */
10
+ function getKeywordTypeFromEntity(entity) {
11
+ if ((0, entity_type_1.isApiPageEntity)(entity)) {
12
+ const kindType = entity.declaration && (0, get_kind_type_1.getKindType)(entity.declaration);
13
+ return kindType ?? 'api';
14
+ }
15
+ if ((0, entity_type_1.isPageEntity)(entity)) {
16
+ return 'guideline';
17
+ }
18
+ return undefined;
19
+ }
20
+ exports.getKeywordTypeFromEntity = getKeywordTypeFromEntity;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getKindType = void 0;
4
+ const core_1 = require("@ng-doc/core");
5
+ const ts_morph_1 = require("ts-morph");
6
+ const get_declaration_type_1 = require("./get-declaration-type");
7
+ /**
8
+ *
9
+ * @param node
10
+ */
11
+ function getKindType(node) {
12
+ if (ts_morph_1.Node.isClassDeclaration(node)) {
13
+ for (const decorator of core_1.NgDocAngularEntities) {
14
+ if (node.getDecorator(decorator)) {
15
+ return decorator;
16
+ }
17
+ }
18
+ }
19
+ return (0, get_declaration_type_1.getDeclarationType)(node);
20
+ }
21
+ exports.getKindType = getKindType;