@skyux/docs-tools 12.0.0-alpha.0 → 12.0.0-alpha.6

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 (109) hide show
  1. package/README.md +4 -132
  2. package/fesm2022/skyux-docs-tools.mjs +444 -3335
  3. package/fesm2022/skyux-docs-tools.mjs.map +1 -1
  4. package/index.d.ts +6 -5
  5. package/lib/modules/clipboard/clipboard.service.d.ts +11 -0
  6. package/lib/modules/code-example-viewer/code-example-viewer.component.d.ts +23 -0
  7. package/lib/modules/code-example-viewer/code-example-viewer.module.d.ts +10 -0
  8. package/lib/modules/code-example-viewer/stackblitz-launch-config.d.ts +10 -0
  9. package/lib/modules/code-example-viewer/stackblitz.service.d.ts +11 -0
  10. package/lib/modules/code-snippet/code-snippet-language.d.ts +12 -0
  11. package/lib/modules/code-snippet/code-snippet.component.d.ts +16 -0
  12. package/lib/modules/code-snippet/code-snippet.module.d.ts +10 -0
  13. package/package.json +26 -20
  14. package/LICENSE +0 -21
  15. package/css/docs-tools.css +0 -70
  16. package/docs-tools.module.d.ts +0 -14
  17. package/modules/anatomy/anatomy-item.component.d.ts +0 -7
  18. package/modules/anatomy/anatomy-thumbnail.component.d.ts +0 -11
  19. package/modules/anatomy/anatomy.component.d.ts +0 -9
  20. package/modules/anatomy/anatomy.module.d.ts +0 -13
  21. package/modules/code-examples/code-example-module-dependencies.d.ts +0 -6
  22. package/modules/code-examples/code-example-theme.d.ts +0 -4
  23. package/modules/code-examples/code-example.component.d.ts +0 -39
  24. package/modules/code-examples/code-example.d.ts +0 -13
  25. package/modules/code-examples/code-examples-editor.service.d.ts +0 -18
  26. package/modules/code-examples/code-examples.component.d.ts +0 -45
  27. package/modules/code-examples/code-examples.module.d.ts +0 -14
  28. package/modules/demo/demo-content-alignment.d.ts +0 -1
  29. package/modules/demo/demo-control-panel-change.d.ts +0 -9
  30. package/modules/demo/demo-control-panel-checkbox.component.d.ts +0 -63
  31. package/modules/demo/demo-control-panel-radio-choice.d.ts +0 -13
  32. package/modules/demo/demo-control-panel-radio-group.component.d.ts +0 -64
  33. package/modules/demo/demo-control-panel-section.component.d.ts +0 -16
  34. package/modules/demo/demo-control-panel.component.d.ts +0 -34
  35. package/modules/demo/demo-custom-control-panel.component.d.ts +0 -9
  36. package/modules/demo/demo.component.d.ts +0 -32
  37. package/modules/demo/demo.module.d.ts +0 -18
  38. package/modules/demo-page/demo-page-dom-adapter.service.d.ts +0 -24
  39. package/modules/demo-page/demo-page-module-info.component.d.ts +0 -5
  40. package/modules/demo-page/demo-page-section.component.d.ts +0 -22
  41. package/modules/demo-page/demo-page-summary.component.d.ts +0 -15
  42. package/modules/demo-page/demo-page-title.service.d.ts +0 -12
  43. package/modules/demo-page/demo-page-type-definitions.component.d.ts +0 -10
  44. package/modules/demo-page/demo-page.component.d.ts +0 -112
  45. package/modules/demo-page/demo-page.module.d.ts +0 -23
  46. package/modules/design-guidelines/design-guideline-thumbnail.component.d.ts +0 -11
  47. package/modules/design-guidelines/design-guideline.component.d.ts +0 -12
  48. package/modules/design-guidelines/design-guidelines.component.d.ts +0 -5
  49. package/modules/design-guidelines/design-guidelines.module.d.ts +0 -12
  50. package/modules/heading-anchor/heading-anchor.component.d.ts +0 -7
  51. package/modules/heading-anchor/heading-anchor.module.d.ts +0 -10
  52. package/modules/markdown/markdown.module.d.ts +0 -7
  53. package/modules/markdown/markdown.pipe.d.ts +0 -7
  54. package/modules/module-info/module-info.component.d.ts +0 -21
  55. package/modules/module-info/module-info.module.d.ts +0 -13
  56. package/modules/safe-html/safe-html.component.d.ts +0 -10
  57. package/modules/safe-html/safe-html.module.d.ts +0 -8
  58. package/modules/shared/docs-tools-component-info.d.ts +0 -13
  59. package/modules/shared/docs-tools-options.d.ts +0 -4
  60. package/modules/shared/docs-tools-site-options.d.ts +0 -3
  61. package/modules/shared/docs-tools-supportal.service.d.ts +0 -11
  62. package/modules/source-code/source-code-file.d.ts +0 -5
  63. package/modules/source-code/source-code-provider.d.ts +0 -6
  64. package/modules/source-code/source-code.service.d.ts +0 -10
  65. package/modules/thumbnail/thumbnail.component.d.ts +0 -11
  66. package/modules/thumbnail/thumbnail.module.d.ts +0 -9
  67. package/modules/type-definitions/anchor-link-service-config.d.ts +0 -6
  68. package/modules/type-definitions/anchor-link-service-format.d.ts +0 -4
  69. package/modules/type-definitions/anchor-link.d.ts +0 -3
  70. package/modules/type-definitions/anchor-link.service.d.ts +0 -24
  71. package/modules/type-definitions/call-signature-definition.component.d.ts +0 -26
  72. package/modules/type-definitions/call-signature-definition.d.ts +0 -9
  73. package/modules/type-definitions/class-definition.component.d.ts +0 -7
  74. package/modules/type-definitions/class-definition.d.ts +0 -11
  75. package/modules/type-definitions/comment-tags.d.ts +0 -14
  76. package/modules/type-definitions/directive-definition.component.d.ts +0 -7
  77. package/modules/type-definitions/directive-definition.d.ts +0 -11
  78. package/modules/type-definitions/entry-child-definition.d.ts +0 -13
  79. package/modules/type-definitions/entry-definition.d.ts +0 -12
  80. package/modules/type-definitions/enumeration-definition.component.d.ts +0 -7
  81. package/modules/type-definitions/enumeration-definition.d.ts +0 -9
  82. package/modules/type-definitions/enumeration-member-definition.d.ts +0 -11
  83. package/modules/type-definitions/index-signature-definition.d.ts +0 -11
  84. package/modules/type-definitions/interface-definition.component.d.ts +0 -14
  85. package/modules/type-definitions/interface-definition.d.ts +0 -11
  86. package/modules/type-definitions/interface-property-definition.d.ts +0 -8
  87. package/modules/type-definitions/method-definition.d.ts +0 -11
  88. package/modules/type-definitions/method-definitions.component.d.ts +0 -36
  89. package/modules/type-definitions/parameter-definition.d.ts +0 -12
  90. package/modules/type-definitions/pipe-definition.component.d.ts +0 -7
  91. package/modules/type-definitions/pipe-definition.d.ts +0 -8
  92. package/modules/type-definitions/preview-feature-indicator.component.d.ts +0 -5
  93. package/modules/type-definitions/property-decorator.d.ts +0 -6
  94. package/modules/type-definitions/property-definition.d.ts +0 -11
  95. package/modules/type-definitions/property-definitions.component.d.ts +0 -39
  96. package/modules/type-definitions/type-alias-definition.component.d.ts +0 -14
  97. package/modules/type-definitions/type-alias-definition.d.ts +0 -11
  98. package/modules/type-definitions/type-anchor-links.pipe.d.ts +0 -14
  99. package/modules/type-definitions/type-definition.d.ts +0 -36
  100. package/modules/type-definitions/type-definitions-format.service.d.ts +0 -55
  101. package/modules/type-definitions/type-definitions-provider.d.ts +0 -10
  102. package/modules/type-definitions/type-definitions.d.ts +0 -20
  103. package/modules/type-definitions/type-definitions.module.d.ts +0 -26
  104. package/modules/type-definitions/type-definitions.service.d.ts +0 -20
  105. package/modules/type-definitions/type-parameter-definition.d.ts +0 -8
  106. package/modules/type-definitions/typedoc-adapter.service.d.ts +0 -49
  107. package/modules/type-definitions/typedoc-types.d.ts +0 -142
  108. package/public-api.d.ts +0 -66
  109. /package/{modules → lib/modules}/shared/sky-docs-tools-resources.module.d.ts +0 -0
@@ -1,182 +1,59 @@
1
- import * as i1 from '@angular/common';
2
- import { CommonModule } from '@angular/common';
3
1
  import * as i0 from '@angular/core';
4
- import { Component, ChangeDetectionStrategy, Input, ContentChildren, NgModule, Optional, VERSION, Injectable, EventEmitter, Output, HostBinding, ElementRef, Pipe, inject, ContentChild } from '@angular/core';
5
- import * as i3 from '@blackbaud/skyux-lib-media';
6
- import { SkyImageModule } from '@blackbaud/skyux-lib-media';
7
- import * as i5 from '@skyux/layout';
8
- import { SkyFluidGridModule, SkyDescriptionListModule, SkyDefinitionListModule } from '@skyux/layout';
9
- import * as i4 from '@blackbaud/skyux-lib-code-block';
10
- import { SkyCodeBlockModule, SkyCodeModule } from '@blackbaud/skyux-lib-code-block';
11
- import * as i5$1 from '@skyux/icon';
2
+ import { inject, Injectable, NgModule, input, viewChild, computed, Component, ChangeDetectionStrategy, ViewEncapsulation, booleanAttribute, signal } from '@angular/core';
3
+ import { KeyValuePipe, NgComponentOutlet } from '@angular/common';
4
+ import * as i5 from '@skyux/core';
5
+ import { SkyAppWindowRef, SkyIdModule } from '@skyux/core';
6
+ import * as i1 from '@skyux/icon';
12
7
  import { SkyIconModule } from '@skyux/icon';
13
- import * as i6 from '@skyux/lists';
14
- import { SkyRepeaterModule } from '@skyux/lists';
15
- import * as i7 from '@skyux/tabs';
16
- import { SkyVerticalTabsetModule, SkyTabsModule } from '@skyux/tabs';
17
- import * as i8 from '@skyux/i18n';
8
+ import * as i1$1 from '@skyux/layout';
9
+ import { SkyBoxModule } from '@skyux/layout';
10
+ import * as i6 from '@skyux/tabs';
11
+ import { SkyVerticalTabsetModule } from '@skyux/tabs';
12
+ import { DomSanitizer } from '@angular/platform-browser';
13
+ import highlight from 'highlight.js/lib/core';
14
+ import hlJavaScript from 'highlight.js/lib/languages/javascript';
15
+ import hlScss from 'highlight.js/lib/languages/scss';
16
+ import hlTypeScript from 'highlight.js/lib/languages/typescript';
17
+ import hlXml from 'highlight.js/lib/languages/xml';
18
+ import { SkyToastService } from '@skyux/toast';
19
+ import * as i2 from '@skyux/i18n';
18
20
  import { SkyLibResourcesService, SkyI18nModule } from '@skyux/i18n';
19
- import { Subject, ReplaySubject, merge } from 'rxjs';
20
- import { takeUntil, map, share } from 'rxjs/operators';
21
- import * as i1$1 from '@skyux/theme';
22
- import { SkyThemeModule } from '@skyux/theme';
23
- import * as i2 from '@skyux/core';
24
- import { VERSION as VERSION$1, SkyMediaBreakpoints } from '@skyux/core';
25
- import { VERSION as VERSION$2 } from '@skyux/icons';
26
- import StackBlitzSDK from '@stackblitz/sdk';
27
- import * as i1$2 from '@angular/forms';
28
- import { FormsModule } from '@angular/forms';
29
- import * as i3$1 from '@skyux/forms';
30
- import { SkyCheckboxModule, SkyRadioModule } from '@skyux/forms';
31
- import * as i12 from '@blackbaud/skyux-lib-stache';
32
- import { StachePageSummaryModule, StacheWrapperModule } from '@blackbaud/skyux-lib-stache';
33
- import * as i1$3 from '@angular/router';
34
- import { RouterModule } from '@angular/router';
35
- import { marked } from 'marked';
36
- import * as i4$1 from '@blackbaud/skyux-lib-clipboard';
37
- import { SkyClipboardModule } from '@blackbaud/skyux-lib-clipboard';
38
- import * as i6$1 from '@skyux/help-inline';
39
- import { SkyHelpInlineModule } from '@skyux/help-inline';
40
- import * as i7$1 from '@skyux/popovers';
41
- import { SkyPopoverModule } from '@skyux/popovers';
42
- import * as i1$5 from '@skyux/indicators';
43
- import { SkyStatusIndicatorModule, SkyAlertModule } from '@skyux/indicators';
44
- import * as i1$4 from '@angular/platform-browser';
45
- import * as i2$1 from '@skyux/config';
46
- import * as i1$6 from '@angular/common/http';
47
- import orderBy from 'lodash.orderby';
48
- import * as i9 from '@skyux/router';
49
- import { SkyAppLinkModule } from '@skyux/router';
21
+ import { HttpClient } from '@angular/common/http';
22
+ import { SkyAppAssetsService } from '@skyux/assets';
23
+ import stackblitz from '@stackblitz/sdk';
24
+ import { firstValueFrom } from 'rxjs';
50
25
 
51
- class SkyDocsAnatomyItemComponent {
52
- constructor() {
53
- this.isOptional = false;
54
- }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsAnatomyItemComponent, isStandalone: false, selector: "sky-docs-anatomy-item", inputs: { isOptional: "isOptional" }, ngImport: i0, template: "<div\n class=\"sky-docs-anatomy-item\"\n [ngClass]=\"{\n 'sky-docs-anatomy-item-optional': isOptional,\n }\"\n>\n <div class=\"sky-docs-anatomy-item-marker\">\n {{ marker }}\n </div>\n <div class=\"sky-docs-anatomy-item-description\">\n <ng-content></ng-content>\n <span *ngIf=\"isOptional\" class=\"sky-deemphasized\">&nbsp;(optional)</span>\n </div>\n</div>\n", styles: [".sky-docs-anatomy-item-marker{display:flex;width:22px;height:22px;border-radius:50%;justify-content:center;align-items:center;margin-right:5px;color:#fff;background-color:#4d842d}.sky-docs-anatomy-item{margin-bottom:10px;display:flex;align-items:center}.sky-docs-anatomy-item.sky-docs-anatomy-item-optional .sky-docs-anatomy-item-marker{background-color:#b7da9b;color:#212327}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
- }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyItemComponent, decorators: [{
59
- type: Component,
60
- args: [{ selector: 'sky-docs-anatomy-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"sky-docs-anatomy-item\"\n [ngClass]=\"{\n 'sky-docs-anatomy-item-optional': isOptional,\n }\"\n>\n <div class=\"sky-docs-anatomy-item-marker\">\n {{ marker }}\n </div>\n <div class=\"sky-docs-anatomy-item-description\">\n <ng-content></ng-content>\n <span *ngIf=\"isOptional\" class=\"sky-deemphasized\">&nbsp;(optional)</span>\n </div>\n</div>\n", styles: [".sky-docs-anatomy-item-marker{display:flex;width:22px;height:22px;border-radius:50%;justify-content:center;align-items:center;margin-right:5px;color:#fff;background-color:#4d842d}.sky-docs-anatomy-item{margin-bottom:10px;display:flex;align-items:center}.sky-docs-anatomy-item.sky-docs-anatomy-item-optional .sky-docs-anatomy-item-marker{background-color:#b7da9b;color:#212327}\n"] }]
61
- }], propDecorators: { isOptional: [{
62
- type: Input
63
- }] } });
64
-
65
- class SkyDocsAnatomyComponent {
66
- ngAfterContentInit() {
67
- this.anatomyItems.forEach((item, i) => {
68
- item.marker = (i + 1).toString();
69
- });
70
- }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsAnatomyComponent, isStandalone: false, selector: "sky-docs-anatomy", inputs: { imagePath: "imagePath" }, queries: [{ propertyName: "anatomyItems", predicate: SkyDocsAnatomyItemComponent }], ngImport: i0, template: "<div class=\"sky-docs-anatomy\">\n <sky-row>\n <sky-column\n class=\"sky-docs-anatomy-items\"\n screenSmall=\"6\"\n screenMedium=\"5\"\n screenLarge=\"4\"\n >\n <ng-content select=\"sky-docs-anatomy-item\"></ng-content>\n </sky-column>\n <sky-column screenSmall=\"6\" screenMedium=\"7\" screenLarge=\"8\">\n <sky-image\n *ngIf=\"imagePath; else thumbnails\"\n [imageSource]=\"imagePath\"\n ></sky-image>\n </sky-column>\n </sky-row>\n</div>\n\n<ng-template #thumbnails>\n <ng-content select=\"sky-docs-anatomy-thumbnail\"></ng-content>\n</ng-template>\n", styles: [".sky-docs-anatomy-items{padding-bottom:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.λ23, selector: "sky-row", inputs: ["reverseColumnOrder"] }, { kind: "component", type: i5.λ24, selector: "sky-column", inputs: ["screenXSmall", "screenSmall", "screenMedium", "screenLarge"] }, { kind: "component", type: i3.λ4, selector: "sky-image", inputs: ["caption", "captionType", "imageAlt", "imageSource", "showBorder", "showCaptionPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
- }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyComponent, decorators: [{
75
- type: Component,
76
- args: [{ selector: 'sky-docs-anatomy', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-anatomy\">\n <sky-row>\n <sky-column\n class=\"sky-docs-anatomy-items\"\n screenSmall=\"6\"\n screenMedium=\"5\"\n screenLarge=\"4\"\n >\n <ng-content select=\"sky-docs-anatomy-item\"></ng-content>\n </sky-column>\n <sky-column screenSmall=\"6\" screenMedium=\"7\" screenLarge=\"8\">\n <sky-image\n *ngIf=\"imagePath; else thumbnails\"\n [imageSource]=\"imagePath\"\n ></sky-image>\n </sky-column>\n </sky-row>\n</div>\n\n<ng-template #thumbnails>\n <ng-content select=\"sky-docs-anatomy-thumbnail\"></ng-content>\n</ng-template>\n", styles: [".sky-docs-anatomy-items{padding-bottom:20px}\n"] }]
77
- }], propDecorators: { imagePath: [{
78
- type: Input
79
- }], anatomyItems: [{
80
- type: ContentChildren,
81
- args: [SkyDocsAnatomyItemComponent]
82
- }] } });
83
-
84
- class SkyDocsThumbnailComponent {
85
- constructor() {
86
- this.showBorder = false;
87
- }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsThumbnailComponent, isStandalone: false, selector: "sky-docs-thumbnail", inputs: { caption: "caption", captionType: "captionType", imageAlt: "imageAlt", imageSource: "imageSource", showBorder: "showBorder", videoSource: "videoSource" }, ngImport: i0, template: "<div class=\"sky-docs-thumbnail\">\n <sky-image\n *ngIf=\"imageSource\"\n [caption]=\"caption\"\n [captionType]=\"captionType\"\n [imageAlt]=\"imageAlt\"\n [imageSource]=\"imageSource\"\n [showBorder]=\"showBorder\"\n [showCaptionPrefix]=\"false\"\n ></sky-image>\n <div\n *ngIf=\"videoSource\"\n class=\"sky-docs-video\"\n [ngClass]=\"{\n 'sky-docs-video-border': showBorder,\n }\"\n >\n <video controls>\n <source [attr.src]=\"videoSource\" type=\"video/mp4\" />\n </video>\n </div>\n</div>\n", styles: [".sky-docs-thumbnail{margin-bottom:50px}.sky-docs-video video{max-width:100%}.sky-docs-video-border video{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.λ4, selector: "sky-image", inputs: ["caption", "captionType", "imageAlt", "imageSource", "showBorder", "showCaptionPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
90
- }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsThumbnailComponent, decorators: [{
92
- type: Component,
93
- args: [{ selector: 'sky-docs-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-thumbnail\">\n <sky-image\n *ngIf=\"imageSource\"\n [caption]=\"caption\"\n [captionType]=\"captionType\"\n [imageAlt]=\"imageAlt\"\n [imageSource]=\"imageSource\"\n [showBorder]=\"showBorder\"\n [showCaptionPrefix]=\"false\"\n ></sky-image>\n <div\n *ngIf=\"videoSource\"\n class=\"sky-docs-video\"\n [ngClass]=\"{\n 'sky-docs-video-border': showBorder,\n }\"\n >\n <video controls>\n <source [attr.src]=\"videoSource\" type=\"video/mp4\" />\n </video>\n </div>\n</div>\n", styles: [".sky-docs-thumbnail{margin-bottom:50px}.sky-docs-video video{max-width:100%}.sky-docs-video-border video{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}\n"] }]
94
- }], propDecorators: { caption: [{
95
- type: Input
96
- }], captionType: [{
97
- type: Input
98
- }], imageAlt: [{
99
- type: Input
100
- }], imageSource: [{
101
- type: Input
102
- }], showBorder: [{
103
- type: Input
104
- }], videoSource: [{
105
- type: Input
106
- }] } });
107
-
108
- class SkyDocsThumbnailModule {
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsThumbnailModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
110
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsThumbnailModule, declarations: [SkyDocsThumbnailComponent], imports: [CommonModule, SkyImageModule], exports: [SkyDocsThumbnailComponent] }); }
111
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsThumbnailModule, imports: [CommonModule, SkyImageModule] }); }
112
- }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsThumbnailModule, decorators: [{
114
- type: NgModule,
115
- args: [{
116
- imports: [CommonModule, SkyImageModule],
117
- exports: [SkyDocsThumbnailComponent],
118
- declarations: [SkyDocsThumbnailComponent],
119
- }]
120
- }] });
121
-
122
- class SkyDocsAnatomyThumbnailComponent {
123
- constructor() {
124
- this.showBorder = false;
26
+ /**
27
+ * @internal
28
+ */
29
+ const SKY_CODE_SNIPPET_LANGUAGES = ['html', 'js', 'scss', 'ts'];
30
+ /**
31
+ * @internal
32
+ */
33
+ function assertCodeSnippetLanguage(value) {
34
+ if (!SKY_CODE_SNIPPET_LANGUAGES.includes(value)) {
35
+ throw new Error(`Value "${value}" is not a supported language type.`);
125
36
  }
126
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsAnatomyThumbnailComponent, isStandalone: false, selector: "sky-docs-anatomy-thumbnail", inputs: { caption: "caption", captionType: "captionType", imageAlt: "imageAlt", imageSource: "imageSource", videoSource: "videoSource", showBorder: "showBorder" }, ngImport: i0, template: "<div class=\"sky-docs-anatomy-thumbnail\">\n <sky-docs-thumbnail\n [caption]=\"caption\"\n [captionType]=\"captionType\"\n [imageAlt]=\"imageAlt\"\n [imageSource]=\"imageSource\"\n [videoSource]=\"videoSource\"\n [showBorder]=\"showBorder\"\n ></sky-docs-thumbnail>\n</div>\n", styles: [".sky-docs-anatomy-thumbnail{margin-bottom:50px}\n"], dependencies: [{ kind: "component", type: SkyDocsThumbnailComponent, selector: "sky-docs-thumbnail", inputs: ["caption", "captionType", "imageAlt", "imageSource", "showBorder", "videoSource"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
37
  }
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyThumbnailComponent, decorators: [{
130
- type: Component,
131
- args: [{ selector: 'sky-docs-anatomy-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-anatomy-thumbnail\">\n <sky-docs-thumbnail\n [caption]=\"caption\"\n [captionType]=\"captionType\"\n [imageAlt]=\"imageAlt\"\n [imageSource]=\"imageSource\"\n [videoSource]=\"videoSource\"\n [showBorder]=\"showBorder\"\n ></sky-docs-thumbnail>\n</div>\n", styles: [".sky-docs-anatomy-thumbnail{margin-bottom:50px}\n"] }]
132
- }], propDecorators: { caption: [{
133
- type: Input
134
- }], captionType: [{
135
- type: Input
136
- }], imageAlt: [{
137
- type: Input
138
- }], imageSource: [{
139
- type: Input
140
- }], videoSource: [{
141
- type: Input
142
- }], showBorder: [{
143
- type: Input
144
- }] } });
145
38
 
146
- class SkyDocsAnatomyModule {
147
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
148
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyModule, declarations: [SkyDocsAnatomyComponent,
149
- SkyDocsAnatomyItemComponent,
150
- SkyDocsAnatomyThumbnailComponent], imports: [CommonModule,
151
- SkyDocsThumbnailModule,
152
- SkyFluidGridModule,
153
- SkyImageModule], exports: [SkyDocsAnatomyComponent,
154
- SkyDocsAnatomyItemComponent,
155
- SkyDocsAnatomyThumbnailComponent] }); }
156
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyModule, imports: [CommonModule,
157
- SkyDocsThumbnailModule,
158
- SkyFluidGridModule,
159
- SkyImageModule] }); }
160
- }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnatomyModule, decorators: [{
162
- type: NgModule,
39
+ /**
40
+ * @internal
41
+ */
42
+ class SkyClipboardService {
43
+ #toastSvc = inject(SkyToastService);
44
+ #windowRef = inject(SkyAppWindowRef);
45
+ copyTextContent(el, successMessage) {
46
+ const text = el.nativeElement.textContent.trim();
47
+ this.#windowRef.nativeWindow.navigator.clipboard.writeText(text);
48
+ this.#toastSvc.openMessage(successMessage, { autoClose: true });
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyClipboardService, providedIn: 'root' }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyClipboardService, decorators: [{
54
+ type: Injectable,
163
55
  args: [{
164
- imports: [
165
- CommonModule,
166
- SkyDocsThumbnailModule,
167
- SkyFluidGridModule,
168
- SkyImageModule,
169
- ],
170
- declarations: [
171
- SkyDocsAnatomyComponent,
172
- SkyDocsAnatomyItemComponent,
173
- SkyDocsAnatomyThumbnailComponent,
174
- ],
175
- exports: [
176
- SkyDocsAnatomyComponent,
177
- SkyDocsAnatomyItemComponent,
178
- SkyDocsAnatomyThumbnailComponent,
179
- ],
56
+ providedIn: 'root',
180
57
  }]
181
58
  }] });
182
59
 
@@ -184,18 +61,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
184
61
  /**
185
62
  * NOTICE: DO NOT MODIFY THIS FILE!
186
63
  * The contents of this file were automatically generated by
187
- * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-docs-tools' schematic.
64
+ * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-docs-tools' schematic.
188
65
  * To update this file, simply rerun the command.
189
66
  */
190
67
  const RESOURCES = {
191
68
  'EN-US': {
192
- 'sky-docs-demo-heading': { message: 'Demo' },
193
- 'sky-docs-demo-toggle-button-on': { message: 'Show options' },
194
- 'sky-docs-demo-toggle-button-off': { message: 'Hide options' },
195
- 'sky-docs-code-example-launch-button-label': {
196
- message: 'Run in StackBlitz',
69
+ sky_code_snippet_copy_to_clipboard_button_label: { message: 'Copy' },
70
+ sky_code_snippet_copy_to_clipboard_success_message: {
71
+ message: 'Code copied',
197
72
  },
198
- 'sky-docs-demo-control-panel-reset-button-label': { message: 'Reset' },
73
+ sky_code_example_viewer_demo_hidden_message: {
74
+ message: 'Open this code example in StackBlitz to view the demo.',
75
+ },
76
+ sky_code_example_viewer_demo_stack_blitz_button: {
77
+ message: 'Edit in StackBlitz',
78
+ },
79
+ sky_code_example_viewer_hide_code_button_label: { message: 'Hide code' },
80
+ sky_code_example_viewer_show_code_button_label: { message: 'Show code' },
199
81
  },
200
82
  };
201
83
  SkyLibResourcesService.addResources(RESOURCES);
@@ -203,3231 +85,458 @@ SkyLibResourcesService.addResources(RESOURCES);
203
85
  * Import into any component library module that needs to use resource strings.
204
86
  */
205
87
  class SkyDocsToolsResourcesModule {
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
207
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsResourcesModule, exports: [SkyI18nModule] }); }
208
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsResourcesModule, imports: [SkyI18nModule] }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyDocsToolsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
89
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: SkyDocsToolsResourcesModule, exports: [SkyI18nModule] }); }
90
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyDocsToolsResourcesModule, imports: [SkyI18nModule] }); }
209
91
  }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsResourcesModule, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyDocsToolsResourcesModule, decorators: [{
211
93
  type: NgModule,
212
94
  args: [{
213
95
  exports: [SkyI18nModule],
214
96
  }]
215
97
  }] });
216
98
 
217
- var SkyDocsCodeExampleTheme;
218
- (function (SkyDocsCodeExampleTheme) {
219
- SkyDocsCodeExampleTheme["Default"] = "default";
220
- SkyDocsCodeExampleTheme["Modern"] = "modern";
221
- })(SkyDocsCodeExampleTheme || (SkyDocsCodeExampleTheme = {}));
222
-
223
99
  /**
224
- * Renders a single code example.
225
- * @example
226
- * ```
227
- * <sky-docs-code-example
228
- * heading="My code example"
229
- * sourceCodePath="src/app/public/plugin-resources/foobar"
230
- * >
231
- * </sky-docs-code-example>
232
- * ```
100
+ * @internal
233
101
  */
234
- class SkyDocsCodeExampleComponent {
235
- /**
236
- * Specifies if the editor service should show the example in modern theme.
237
- * The value will be gleaned from `SkyThemeService` first, then fallback to 'default' if the service is not found.
238
- */
239
- set theme(value) {
240
- this._theme = value;
241
- }
242
- get theme() {
243
- return this._theme || SkyDocsCodeExampleTheme.Default;
244
- }
245
- constructor(themeSvc) {
246
- this.ngUnsubscribe = new Subject();
247
- // Update theme property with SkyThemeService if it has not been set.
248
- if (!this._theme && themeSvc) {
249
- themeSvc.settingsChange
250
- .pipe(takeUntil(this.ngUnsubscribe))
251
- .subscribe((change) => {
252
- if (change.currentSettings.theme.name === 'modern') {
253
- this.theme = SkyDocsCodeExampleTheme.Modern;
254
- }
255
- else if (change.currentSettings.theme.name === 'default') {
256
- this.theme = SkyDocsCodeExampleTheme.Default;
257
- }
102
+ class SkyCodeSnippetComponent {
103
+ #clipboardSvc;
104
+ #sanitizer;
105
+ constructor() {
106
+ this.#clipboardSvc = inject(SkyClipboardService);
107
+ this.#sanitizer = inject(DomSanitizer);
108
+ this.code = input.required();
109
+ this.language = input.required();
110
+ this.codeRef = viewChild('codeRef');
111
+ this.formatted = computed(() => {
112
+ const code = this.code();
113
+ const language = this.language();
114
+ const formatted = highlight.highlight(code, {
115
+ language,
258
116
  });
259
- }
117
+ return this.#sanitizer.bypassSecurityTrustHtml(formatted.value);
118
+ });
119
+ highlight.registerLanguage('html', hlXml);
120
+ highlight.registerLanguage('js', hlJavaScript);
121
+ highlight.registerLanguage('scss', hlScss);
122
+ highlight.registerLanguage('ts', hlTypeScript);
260
123
  }
261
- ngOnDestroy() {
262
- this.ngUnsubscribe.next();
263
- this.ngUnsubscribe.complete();
124
+ onClipboardButtonClick(copySuccessMessage) {
125
+ const el = this.codeRef();
126
+ if (el) {
127
+ this.#clipboardSvc.copyTextContent(el, copySuccessMessage);
128
+ }
264
129
  }
265
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExampleComponent, deps: [{ token: i1$1.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
266
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsCodeExampleComponent, isStandalone: false, selector: "sky-docs-code-example", inputs: { heading: "heading", sourceCodePath: "sourceCodePath", theme: "theme" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeSnippetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", type: SkyCodeSnippetComponent, isStandalone: true, selector: "sky-code-snippet", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "codeRef", first: true, predicate: ["codeRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"sky-margin-stacked-lg\">\n @let copySuccessMessage =\n 'sky_code_snippet_copy_to_clipboard_success_message' | skyLibResources;\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n (click)=\"onClipboardButtonClick(copySuccessMessage)\"\n >\n <sky-icon iconName=\"clipboard-multiple\" />\n {{ 'sky_code_snippet_copy_to_clipboard_button_label' | skyLibResources }}\n </button>\n</div>\n<pre\n #codeRef\n class=\"sky-code-snippet-pre\"\n><code [innerHTML]=\"formatted()\"></code></pre>\n", styles: ["sky-code-snippet{display:block}\n", "sky-code-snippet .sky-code-snippet-pre{font-family:Roboto Mono,serif;margin:0}sky-code-snippet .hljs-attribute,sky-code-snippet .hljs-doctag,sky-code-snippet .hljs-keyword,sky-code-snippet .hljs-literal,sky-code-snippet .hljs-name,sky-code-snippet .hljs-tag .hljs-string,sky-code-snippet .hljs-type,sky-code-snippet .hljs-variable{color:#00f}sky-code-snippet .hljs-string{color:#a31515}sky-code-snippet .hljs-comment{color:green}sky-code-snippet .hljs-tag .hljs-name{color:maroon}sky-code-snippet .hljs-tag .hljs-attr{color:#e50000}\n"], dependencies: [{ kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i1.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "ngmodule", type: SkyDocsToolsResourcesModule }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
267
132
  }
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExampleComponent, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeSnippetComponent, decorators: [{
269
134
  type: Component,
135
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [SkyIconModule, SkyDocsToolsResourcesModule], selector: 'sky-code-snippet', template: "<div class=\"sky-margin-stacked-lg\">\n @let copySuccessMessage =\n 'sky_code_snippet_copy_to_clipboard_success_message' | skyLibResources;\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n (click)=\"onClipboardButtonClick(copySuccessMessage)\"\n >\n <sky-icon iconName=\"clipboard-multiple\" />\n {{ 'sky_code_snippet_copy_to_clipboard_button_label' | skyLibResources }}\n </button>\n</div>\n<pre\n #codeRef\n class=\"sky-code-snippet-pre\"\n><code [innerHTML]=\"formatted()\"></code></pre>\n", styles: ["sky-code-snippet{display:block}\n", "sky-code-snippet .sky-code-snippet-pre{font-family:Roboto Mono,serif;margin:0}sky-code-snippet .hljs-attribute,sky-code-snippet .hljs-doctag,sky-code-snippet .hljs-keyword,sky-code-snippet .hljs-literal,sky-code-snippet .hljs-name,sky-code-snippet .hljs-tag .hljs-string,sky-code-snippet .hljs-type,sky-code-snippet .hljs-variable{color:#00f}sky-code-snippet .hljs-string{color:#a31515}sky-code-snippet .hljs-comment{color:green}sky-code-snippet .hljs-tag .hljs-name{color:maroon}sky-code-snippet .hljs-tag .hljs-attr{color:#e50000}\n"] }]
136
+ }], ctorParameters: () => [] });
137
+
138
+ /**
139
+ * @internal
140
+ */
141
+ class SkyCodeSnippetModule {
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeSnippetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
143
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeSnippetModule, imports: [SkyCodeSnippetComponent], exports: [SkyCodeSnippetComponent] }); }
144
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeSnippetModule, imports: [SkyCodeSnippetComponent] }); }
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeSnippetModule, decorators: [{
147
+ type: NgModule,
270
148
  args: [{
271
- selector: 'sky-docs-code-example',
272
- template: '',
273
- changeDetection: ChangeDetectionStrategy.OnPush,
274
- standalone: false,
149
+ imports: [SkyCodeSnippetComponent],
150
+ exports: [SkyCodeSnippetComponent],
275
151
  }]
276
- }], ctorParameters: () => [{ type: i1$1.SkyThemeService, decorators: [{
277
- type: Optional
278
- }] }], propDecorators: { heading: [{
279
- type: Input
280
- }], sourceCodePath: [{
281
- type: Input
282
- }], theme: [{
283
- type: Input
284
- }] } });
152
+ }] });
285
153
 
154
+ /**
155
+ * Files to be read from the host SPA's "src/assets/stack-blitz" directory.
156
+ */
157
+ const TEMPLATE_FILES = ['package.json', 'package-lock.json'];
286
158
  /**
287
159
  * @internal
288
160
  */
289
- class SkyDocsCodeExamplesEditorService {
290
- launchEditor(codeExample, template = 'angular-cli') {
291
- const project = this.#getPayload(codeExample, template);
292
- const openFile = [];
293
- if (project.files['src/app/demo.component.html']) {
294
- openFile.push('src/app/demo.component.html');
295
- }
296
- else if (project.files['src/app/demo.component.ts']) {
297
- openFile.push('src/app/demo.component.ts');
161
+ class SkyStackBlitzService {
162
+ #http = inject(HttpClient, { optional: true });
163
+ #assetsSvc = inject(SkyAppAssetsService, { optional: true });
164
+ async launch(config) {
165
+ const files = {};
166
+ for (const [file, contents] of Object.entries(config.files)) {
167
+ files[`src/example/${file}`] = contents;
298
168
  }
299
- const options = {
300
- openFile,
301
- };
302
- StackBlitzSDK.openProject(project, options);
303
- }
304
- #getPayload(codeExample, template) {
305
- const angularVersion = `^${VERSION.major}`;
306
- const skyuxVersion = `^${VERSION$1.full}`;
307
- const defaultDependencies = {
308
- '@angular-devkit/build-angular': angularVersion,
309
- '@angular/animations': angularVersion,
310
- '@angular/cdk': angularVersion,
311
- '@angular/cli': angularVersion,
312
- '@angular/common': angularVersion,
313
- '@angular/compiler': angularVersion,
314
- '@angular/compiler-cli': angularVersion,
315
- '@angular/core': angularVersion,
316
- '@angular/forms': angularVersion,
317
- '@angular/platform-browser': angularVersion,
318
- '@angular/platform-browser-dynamic': angularVersion,
319
- '@angular/router': angularVersion,
320
- '@skyux/animations': skyuxVersion,
321
- '@skyux/assets': skyuxVersion,
322
- '@skyux/config': skyuxVersion,
323
- '@skyux/core': skyuxVersion,
324
- '@skyux/errors': skyuxVersion,
325
- '@skyux/forms': skyuxVersion,
326
- '@skyux/help-inline': skyuxVersion,
327
- '@skyux/i18n': skyuxVersion,
328
- '@skyux/icon': skyuxVersion,
329
- '@skyux/indicators': skyuxVersion,
330
- '@skyux/layout': skyuxVersion,
331
- '@skyux/modals': skyuxVersion,
332
- '@skyux/packages': skyuxVersion,
333
- '@skyux/popovers': skyuxVersion,
334
- '@skyux/router': skyuxVersion,
335
- '@skyux/theme': skyuxVersion,
336
- '@types/jasmine': '~5.1.4',
337
- 'ng2-dragula': '5.1.0',
338
- rxjs: '^7',
339
- tslib: '^2.8.1',
340
- typescript: '~5.6.3',
341
- 'zone.js': '~0.15.0',
342
- };
343
- const mergedDependencies = Object.assign({}, defaultDependencies, codeExample.packageDependencies);
344
- // Ensure any @skyux dependencies list the correct version of SKY UX.
345
- // e.g. `"@skyux/core": "*"` --> `"@skyux/core": "5.0.0"`
346
- for (const packageName in mergedDependencies) {
347
- /*istanbul ignore else*/
348
- if (mergedDependencies.hasOwnProperty(packageName)) {
349
- const version = mergedDependencies[packageName];
350
- if (version === '*' &&
351
- /^(@blackbaud\/skyux-lib-|@skyux)/.test(packageName)) {
352
- mergedDependencies[packageName] = skyuxVersion;
353
- }
169
+ for (const file of TEMPLATE_FILES) {
170
+ let contents = await this.#fetchTemplateFileContents(file);
171
+ if (contents === undefined && !file.endsWith('.template')) {
172
+ contents = await this.#fetchTemplateFileContents(`${file}.template`);
354
173
  }
355
- }
356
- const overrides = template === 'node'
357
- ? {
358
- 'ng2-dragula@5.1.0': {
359
- '@angular/animations': '>=16.0.0',
360
- '@angular/core': '>=16.0.0',
361
- '@angular/common': '>=16.0.0',
362
- },
174
+ if (contents === undefined) {
175
+ throw new Error(`Failed to read StackBlitz template file: ${file}`);
363
176
  }
364
- : undefined;
365
- const files = this.parseStackBlitzFiles(codeExample.sourceCode, mergedDependencies, overrides, {
366
- target: template === 'node' ? 'ES2022' : 'ES2015',
367
- }, codeExample.theme, codeExample.stylesheets);
368
- return {
369
- files,
370
- title: 'SKY UX Demo',
371
- description: 'SKY UX Demo',
372
- template,
373
- dependencies: mergedDependencies,
374
- settings: {
375
- compile: {
376
- clearConsole: false,
377
- },
177
+ files[file.replace(/\.template$/, '')] = contents;
178
+ }
179
+ const bootstrapImportPath = `./example/${config.primaryFile.replace(/\.ts$/, '')}`;
180
+ files['.stackblitzrc'] = `{
181
+ "installDependencies": true,
182
+ "startCommand": "ng serve"
183
+ }
184
+ `;
185
+ files['angular.json'] = `{
186
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
187
+ "version": 1,
188
+ "cli": {
189
+ "analytics": false
190
+ },
191
+ "newProjectRoot": "projects",
192
+ "projects": {
193
+ "example-app": {
194
+ "projectType": "application",
195
+ "schematics": {
196
+ "@schematics/angular:component": {
197
+ "style": "scss"
198
+ },
199
+ "@schematics/angular:application": {
200
+ "strict": true
201
+ }
202
+ },
203
+ "root": "",
204
+ "sourceRoot": "src",
205
+ "prefix": "app",
206
+ "architect": {
207
+ "build": {
208
+ "builder": "@angular-devkit/build-angular:browser",
209
+ "options": {
210
+ "outputPath": "dist/example-app",
211
+ "index": "src/index.html",
212
+ "main": "src/main.ts",
213
+ "polyfills": ["zone.js"],
214
+ "tsConfig": "tsconfig.app.json",
215
+ "inlineStyleLanguage": "scss",
216
+ "assets": ["src/assets"],
217
+ "styles": ["src/styles.scss"],
218
+ "stylePreprocessorOptions": {
219
+ "includePaths": ["node_modules/"]
378
220
  },
379
- };
380
- }
381
- parseStackBlitzFiles(sourceCode, dependencies, overrides, compilerOptions, theme, stylesheets = []) {
382
- const srcPath = 'src/';
383
- const appPath = `${srcPath}app/`;
384
- const banner = `/**
385
- * This file is needed for the StackBlitz demo only.
386
- * It is automatically provided when using the Angular CLI.
387
- **/
388
- `;
389
- const moduleImportStatements = [
390
- `import { FormsModule, ReactiveFormsModule } from '@angular/forms';`,
391
- ];
392
- const moduleImports = ['FormsModule', 'ReactiveFormsModule'];
393
- const files = {
394
- '.stackblitzrc': JSON.stringify({
395
- env: {
396
- NG_BUILD_PARALLEL_TS: '0',
397
- NODE_ENV: 'development',
221
+ "scripts": []
222
+ },
223
+ "configurations": {
224
+ "production": {
225
+ "budgets": [
226
+ {
227
+ "type": "initial",
228
+ "maximumWarning": "500kb",
229
+ "maximumError": "1mb"
398
230
  },
399
- }, undefined, 2),
400
- };
401
- let appComponentTemplate = '';
402
- sourceCode.forEach((file) => {
403
- files[`${appPath}${file.fileName}`] = file.rawContents;
404
- // Setup module imports and component selectors.
405
- if (file.fileName.indexOf('.module.ts') > -1) {
406
- const moduleName = this.getModuleName(file.rawContents);
407
- const importPath = `./${this.getFilenameNoExtension(file.fileName)}`;
408
- const exportedComponent = this.getExportedComponent(file.rawContents);
409
- const componentSelector = this.getComponentSelector(exportedComponent, sourceCode);
410
- appComponentTemplate += `<${componentSelector}></${componentSelector}>`;
411
- moduleImports.push(moduleName);
412
- moduleImportStatements.push(`import { ${moduleName} } from '${importPath}';`);
413
- }
414
- // Standalone entry components are named demo.component.ts.
415
- if (file.fileName === 'demo.component.ts') {
416
- const componentName = 'DemoComponent';
417
- const componentSelector = 'app-demo';
418
- const importPath = `./${this.getFilenameNoExtension(file.fileName)}`;
419
- appComponentTemplate += `<${componentSelector} />`;
420
- moduleImports.push(componentName);
421
- moduleImportStatements.push(`import { ${componentName} } from '${importPath}';`);
231
+ {
232
+ "type": "anyComponentStyle",
233
+ "maximumWarning": "2kb",
234
+ "maximumError": "4kb"
235
+ }
236
+ ],
237
+ "fileReplacements": [
238
+ {
239
+ "replace": "src/environments/environment.ts",
240
+ "with": "src/environments/environment.prod.ts"
241
+ }
242
+ ],
243
+ "outputHashing": "all"
244
+ },
245
+ "development": {
246
+ "buildOptimizer": false,
247
+ "optimization": false,
248
+ "vendorChunk": true,
249
+ "extractLicenses": false,
250
+ "sourceMap": true,
251
+ "namedChunks": true
252
+ }
253
+ },
254
+ "defaultConfiguration": "production"
255
+ },
256
+ "serve": {
257
+ "builder": "@angular-devkit/build-angular:dev-server",
258
+ "configurations": {
259
+ "production": {
260
+ "buildTarget": "example-app:build:production"
261
+ },
262
+ "development": {
263
+ "buildTarget": "example-app:build:development"
422
264
  }
423
- });
424
- files[`${appPath}app.component.ts`] = `${banner}
425
- import { Component, Injectable } from '@angular/core';
426
- import { SkyHelpOpenArgs, SkyHelpService, SkyHelpUpdateArgs } from '@skyux/core';
427
- ${moduleImportStatements.join('\n\n')}
428
-
429
- @Injectable()
430
- /*
431
- This mocked \`SkyHelpService\` is needed for Stackbliz demos only.
432
- To properly implement help service see: https://docs.blackbaud.com/bb-help-docs/
433
- */
434
- export class StackblitzOnlyCodeExamplesHelpService extends SkyHelpService {
435
- public override openHelp(args?: SkyHelpOpenArgs): void {
436
- if (args) {
437
- console.log('help key: ' + args.helpKey);
265
+ },
266
+ "defaultConfiguration": "development"
267
+ },
268
+ "extract-i18n": {
269
+ "builder": "@angular-devkit/build-angular:extract-i18n",
270
+ "options": {
271
+ "buildTarget": "example-app:build"
272
+ }
273
+ },
274
+ "test": {
275
+ "builder": "@angular-devkit/build-angular:karma",
276
+ "options": {
277
+ "main": "src/test.ts",
278
+ "polyfills": ["zone.js", "zone.js/testing"],
279
+ "tsConfig": "tsconfig.spec.json",
280
+ "karmaConfig": "karma.conf.js",
281
+ "inlineStyleLanguage": "scss",
282
+ "assets": ["src/assets"],
283
+ "stylePreprocessorOptions": {
284
+ "includePaths": ["node_modules/"]
285
+ },
286
+ "styles": ["src/styles.scss"],
287
+ "scripts": []
288
+ }
289
+ }
290
+ }
438
291
  }
439
292
  }
440
-
441
- public override updateHelp(args: SkyHelpUpdateArgs): void {
442
- if ('helpKey' in args) {
443
- console.log('help key update: ' + args.helpKey);
444
- }
445
-
446
- if ('pageDefaultHelpKey' in args) {
447
- console.log('page default help key update: ' + args.pageDefaultHelpKey);
448
- }
293
+ }
294
+ `;
295
+ files['karma.conf.js'] =
296
+ `// Karma configuration file, see link for more information
297
+ // https://karma-runner.github.io/1.0/config/configuration-file.html
298
+
299
+ module.exports = function (config) {
300
+ config.set({
301
+ basePath: '',
302
+ frameworks: ['jasmine', '@angular-devkit/build-angular'],
303
+ plugins: [
304
+ require('karma-jasmine'),
305
+ require('karma-chrome-launcher'),
306
+ require('karma-jasmine-html-reporter'),
307
+ require('karma-coverage'),
308
+ require('@angular-devkit/build-angular/plugins/karma'),
309
+ ],
310
+ client: {
311
+ jasmine: {
312
+ // you can add configuration options for Jasmine here
313
+ // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
314
+ // for example, you can disable the random execution with \`random: false\`
315
+ // or set a specific seed with \`seed: 4321\`
316
+ },
317
+ clearContext: false, // leave Jasmine Spec Runner output visible in browser
318
+ },
319
+ jasmineHtmlReporter: {
320
+ suppressAll: true, // removes the duplicated traces
321
+ },
322
+ coverageReporter: {
323
+ dir: require('path').join(__dirname, './coverage/example-app'),
324
+ subdir: '.',
325
+ reporters: [{ type: 'html' }, { type: 'text-summary' }],
326
+ },
327
+ reporters: ['progress', 'kjhtml'],
328
+ port: 9876,
329
+ colors: true,
330
+ logLevel: config.LOG_INFO,
331
+ autoWatch: true,
332
+ browsers: ['Chrome'],
333
+ singleRun: false,
334
+ restartOnFileChange: true,
335
+ });
336
+ };
337
+ `;
338
+ files['tsconfig.app.json'] = `{
339
+ "extends": "./tsconfig.json",
340
+ "compilerOptions": {
341
+ "outDir": "./out-tsc/app",
342
+ "types": []
343
+ },
344
+ "files": ["src/main.ts"],
345
+ "include": ["src/**/*.d.ts"]
346
+ }
347
+ `;
348
+ files['tsconfig.json'] = `{
349
+ "compileOnSave": false,
350
+ "compilerOptions": {
351
+ "outDir": "./dist/out-tsc",
352
+ "strict": true,
353
+ "noImplicitOverride": true,
354
+ "noPropertyAccessFromIndexSignature": true,
355
+ "noImplicitReturns": true,
356
+ "noFallthroughCasesInSwitch": true,
357
+ "skipLibCheck": true,
358
+ "isolatedModules": true,
359
+ "esModuleInterop": true,
360
+ "experimentalDecorators": true,
361
+ "moduleResolution": "bundler",
362
+ "importHelpers": true,
363
+ "target": "ES2022",
364
+ "module": "ES2022"
365
+ },
366
+ "angularCompilerOptions": {
367
+ "enableI18nLegacyMessageIdFormat": false,
368
+ "strictInjectionParameters": true,
369
+ "strictInputAccessModifiers": true,
370
+ "strictTemplates": true
449
371
  }
450
372
  }
451
-
452
- @Component({
453
- selector: 'sky-demo-app',
454
- template: '${appComponentTemplate}',
455
- imports: [
456
- ${moduleImports.join(',\n ')},
457
- ],
458
- providers: [
459
- {provide: SkyHelpService, useClass: StackblitzOnlyCodeExamplesHelpService}
460
- ]
461
- })
462
- export class AppComponent {}
463
373
  `;
464
- files[`${srcPath}index.html`] = `<!doctype html>
374
+ files['tsconfig.spec.json'] = `{
375
+ "extends": "./tsconfig.json",
376
+ "compilerOptions": {
377
+ "outDir": "./out-tsc/spec",
378
+ "types": ["jasmine"]
379
+ },
380
+ "files": ["src/test.ts"],
381
+ "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
382
+ }
383
+ `;
384
+ files['src/index.html'] = `<!doctype html>
465
385
  <html lang="en">
466
- <head>
467
- <meta charset="utf-8">
468
- <title>Sky UX Demo</title>
469
- <base href="/">
470
- <meta name="viewport" content="width=device-width, initial-scale=1">
471
- <!--
472
- The CSS links are needed for the StackBlitz demo only.
473
- This is a workaround for a known bug that prevents external imports in CSS.
474
- https://github.com/stackblitz/core/issues/133
475
- -->
476
- <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
477
- <link rel="stylesheet" type="text/css" href="https://sky.blackbaudcdn.net/static/skyux-icons/${VERSION$2.full}/assets/css/skyux-icons.min.css" crossorigin="anonymous">
478
- </head>
479
- <body>
480
- <sky-demo-app>
481
- Loading...
482
- </sky-demo-app>
483
- </body>
386
+ <head>
387
+ <meta charset="utf-8" />
388
+ <title>${config.title}</title>
389
+ <base href="/" />
390
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
391
+ <!--
392
+ The CSS links are needed for the StackBlitz demo only.
393
+ This is a workaround for a known bug that prevents external imports in CSS.
394
+ https://github.com/stackblitz/core/issues/133
395
+ -->
396
+ <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
397
+ <link rel="stylesheet" type="text/css" href="https://sky.blackbaudcdn.net/static/skyux-icons/7.10.0/assets/css/skyux-icons.min.css" crossorigin="anonymous">
398
+ </head>
399
+ <body>
400
+ <${config.componentSelector}></${config.componentSelector}>
401
+ </body>
484
402
  </html>
485
403
  `;
486
- files[`${srcPath}main.ts`] = `${banner}
487
- import 'zone.js';
488
- import '@skyux/packages/polyfills';
489
-
404
+ files['src/main.ts'] =
405
+ `import { provideHttpClient } from '@angular/common/http';
490
406
  import { bootstrapApplication } from '@angular/platform-browser';
491
407
  import { provideAnimations } from '@angular/platform-browser/animations';
492
- import { provideRouter } from '@angular/router';
493
408
  import { provideInitialTheme } from '@skyux/theme';
409
+ import { ${config.componentName} } from '${bootstrapImportPath}';
494
410
 
495
- import { AppComponent } from './app/app.component';
496
-
497
- void bootstrapApplication(AppComponent, {
411
+ bootstrapApplication(${config.componentName}, {
498
412
  providers: [
499
413
  provideAnimations(),
500
- provideInitialTheme('${theme}'),
501
- provideRouter([]),
414
+ provideInitialTheme('modern'),
415
+ provideHttpClient()
502
416
  ],
503
- })
504
- .catch((err) => console.error(err));
417
+ }).catch((err) => console.error(err));
505
418
  `;
506
- files[`${srcPath}styles.scss`] = `@import '@skyux/theme/css/sky';
507
- @import '@skyux/theme/css/themes/modern/styles';
419
+ files['src/styles.scss'] = `@import url('@skyux/theme/css/sky');
420
+ @import url('@skyux/theme/css/themes/modern/styles');
508
421
 
509
422
  body {
510
423
  background-color: #fff;
511
424
  margin: 15px;
512
425
  }
513
426
  `;
514
- stylesheets.push('src/styles.scss');
515
- files['angular.json'] = JSON.stringify({
516
- $schema: './node_modules/@angular/cli/lib/config/schema.json',
517
- version: 1,
518
- projects: {
519
- demo: {
520
- projectType: 'application',
521
- root: '',
522
- sourceRoot: 'src',
523
- prefix: 'app',
524
- architect: {
525
- build: {
526
- builder: '@angular-devkit/build-angular:application',
527
- options: {
528
- index: 'src/index.html',
529
- browser: 'src/main.ts',
530
- outputPath: 'dist/demo',
531
- tsConfig: 'tsconfig.app.json',
532
- inlineStyleLanguage: 'scss',
533
- styles: stylesheets,
534
- },
535
- configurations: {
536
- development: {
537
- optimization: false,
538
- extractLicenses: false,
539
- sourceMap: true,
540
- },
541
- },
542
- defaultConfiguration: 'development',
543
- },
544
- serve: {
545
- builder: '@angular-devkit/build-angular:dev-server',
546
- configurations: {
547
- development: {
548
- buildTarget: 'demo:build:development',
549
- },
550
- },
551
- defaultConfiguration: 'development',
552
- },
553
- },
554
- },
555
- },
556
- }, undefined, 2);
557
- files['package.json'] = JSON.stringify({
558
- name: 'skyux-spa-demo',
559
- version: '0.0.0',
560
- dependencies,
561
- scripts: {
562
- start: 'ng serve',
563
- build: 'ng build',
564
- },
565
- ...(overrides ? { overrides } : {}),
566
- }, undefined, 2);
567
- files['tsconfig.app.json'] = JSON.stringify({
568
- extends: './tsconfig.json',
569
- compilerOptions: {
570
- outDir: './out-tsc/app',
571
- types: [],
572
- },
573
- files: ['src/main.ts'],
574
- include: ['src/**/*.d.ts'],
575
- }, undefined, 2);
576
- files['tsconfig.json'] = JSON.stringify({
577
- compileOnSave: false,
578
- compilerOptions: {
579
- strict: true,
580
- forceConsistentCasingInFileNames: true,
581
- noImplicitOverride: true,
582
- noPropertyAccessFromIndexSignature: true,
583
- noImplicitReturns: true,
584
- noFallthroughCasesInSwitch: true,
585
- sourceMap: true,
586
- declaration: false,
587
- downlevelIteration: true,
588
- esModuleInterop: true,
589
- experimentalDecorators: true,
590
- moduleResolution: 'node',
591
- importHelpers: true,
592
- typeRoots: ['node_modules/@types'],
593
- target: 'ES2015',
594
- module: 'ES2022',
595
- useDefineForClassFields: false,
596
- lib: ['ES2022', 'dom'],
597
- ...compilerOptions,
598
- },
599
- angularCompilerOptions: {
600
- fullTemplateTypeCheck: true,
601
- enableI18nLegacyMessageIdFormat: false,
602
- strictInjectionParameters: true,
603
- strictInputAccessModifiers: true,
604
- strictTemplates: true,
605
- },
606
- }, undefined, 2);
607
- return files;
608
- }
609
- getModuleName(contents) {
610
- return contents.split('export class ')[1].split(' {')[0];
611
- }
612
- getFilenameNoExtension(fileName) {
613
- const extension = fileName.split('.').pop();
614
- return fileName.replace(`.${extension}`, '');
427
+ files['src/test.ts'] =
428
+ `// This file is required by karma.conf.js and loads recursively all the .spec and framework files
429
+
430
+ import 'zone.js/testing';
431
+ import {getTestBed} from '@angular/core/testing';
432
+ import {
433
+ BrowserDynamicTestingModule,
434
+ platformBrowserDynamicTesting,
435
+ } from '@angular/platform-browser-dynamic/testing';
436
+
437
+ // First, initialize the Angular testing environment.
438
+ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
439
+
440
+ // Then we find all the tests.
441
+ const context = (import.meta as any).webpackContext('./', {
442
+ recursive: true,
443
+ regExp: /\\.spec\\.ts$/,
444
+ });
445
+
446
+ // And load the modules.
447
+ context.keys().map(context);
448
+ `;
449
+ stackblitz.openProject({
450
+ title: config.title,
451
+ files,
452
+ template: 'node',
453
+ }, { openFile: config.primaryFile });
615
454
  }
616
- getExportedComponent(contents) {
617
- const trimmed = contents.replace(/\s/g, '');
618
- let fragment = trimmed.split('exports:[')[1];
619
- if (!fragment) {
620
- throw 'You must export a component from the code example module!';
621
- }
622
- fragment = fragment.split(']')[0];
623
- const components = fragment.split(',').filter((x) => x);
624
- if (components.length > 1) {
625
- throw ('You may only export a single component from the code example module' +
626
- `(we found ${components.length}: ${components.join(', ')}).` +
627
- 'Is it possible to create a new code example with the extra components?');
455
+ async #fetchTemplateFileContents(file) {
456
+ const filePath = `assets/stack-blitz/${file}`;
457
+ const url = this.#assetsSvc?.getUrl(filePath) ?? filePath;
458
+ if (!this.#http) {
459
+ return undefined;
628
460
  }
629
- return components[0];
630
- }
631
- getComponentSelector(componentClassName, sourceCode) {
632
- const found = sourceCode.find((file) => {
633
- return file.rawContents.indexOf(`class ${componentClassName}`) > -1;
461
+ return await firstValueFrom(this.#http.get(url, { responseType: 'text' })).catch(() => {
462
+ return undefined;
634
463
  });
635
- const trimmed = found.rawContents.replace(/\s/g, '');
636
- return trimmed.split(`selector:'`)[1].split(`'`)[0];
637
464
  }
638
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
639
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesEditorService, providedIn: 'root' }); }
640
- }
641
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesEditorService, decorators: [{
642
- type: Injectable,
643
- args: [{
644
- providedIn: 'root',
645
- }]
646
- }] });
647
-
648
- class SkyDocsSourceCodeProvider {
649
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSourceCodeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
650
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSourceCodeProvider, providedIn: 'root' }); }
465
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyStackBlitzService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
466
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyStackBlitzService, providedIn: 'root' }); }
651
467
  }
652
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSourceCodeProvider, decorators: [{
468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyStackBlitzService, decorators: [{
653
469
  type: Injectable,
654
- args: [{
655
- providedIn: 'root',
656
- }]
470
+ args: [{ providedIn: 'root' }]
657
471
  }] });
658
472
 
659
- class SkyDocsSourceCodeService {
660
- constructor(sourceCodeProvider) {
661
- this.sourceCodeProvider = sourceCodeProvider;
662
- }
663
- getSourceCode(path) {
664
- const sourceCode = this.sourceCodeProvider.sourceCode;
665
- if (!sourceCode || !sourceCode.length) {
666
- return [];
667
- }
668
- return sourceCode
669
- .filter((file) => file.filePath.indexOf(path) === 0)
670
- .map((file) => {
671
- // TODO: Remove decoding after migrating to Angular CLI. Code examples will not be encoded for SKY UX 5 libraries.
672
- // SKY UX 4 libraries will return rawContents encoded, while later libraries will
673
- // return rawContents decoded. Check if the contents need decoded before returning them.
674
- let decodedContents;
675
- try {
676
- decodedContents = decodeURIComponent(file.rawContents);
677
- if (decodedContents !== file.rawContents) {
678
- file.rawContents = decodedContents;
679
- }
680
- }
681
- catch (error) {
682
- // Pre-decoded contents may contain characters like '%' that would throw errors.
683
- // In these cases, pass along the original rawContents.
684
- }
685
- return file;
686
- });
687
- }
688
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSourceCodeService, deps: [{ token: SkyDocsSourceCodeProvider }], target: i0.ɵɵFactoryTarget.Injectable }); }
689
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSourceCodeService, providedIn: 'any' }); }
690
- }
691
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSourceCodeService, decorators: [{
692
- type: Injectable,
693
- args: [{
694
- providedIn: 'any',
695
- }]
696
- }], ctorParameters: () => [{ type: SkyDocsSourceCodeProvider }] });
697
-
698
473
  /**
699
- * Wraps all code examples and handles their configuration and styles.
700
- * @example
701
- * ```
702
- * <sky-docs-code-examples
703
- * [packageDependencies]="{
704
- * "foobar": "*",
705
- * "baz": "1.2.3"
706
- * }"
707
- * >
708
- * <sky-docs-code-example>
709
- * </sky-docs-code-example>
710
- * </sky-docs-code-examples>
711
- * ```
474
+ * @internal
712
475
  */
713
- class SkyDocsCodeExamplesComponent {
714
- /**
715
- * Any extra NPM package dependencies that are needed for the editor to run the code example.
716
- * @default {}
717
- */
718
- set packageDependencies(value) {
719
- this._packageDependencies = value;
720
- }
721
- get packageDependencies() {
722
- return this._packageDependencies || {};
723
- }
724
- constructor(editorService, sourceCodeService) {
725
- this.editorService = editorService;
726
- this.sourceCodeService = sourceCodeService;
727
- this.stylesheets = [];
728
- this.codeExamples = [];
729
- }
730
- ngAfterContentInit() {
731
- this.codeExampleComponents.forEach((component) => {
732
- // Make sure the source code path ends in a slash, so that similarly named directories aren't included.
733
- let sourceCodePath = component.sourceCodePath;
734
- if (sourceCodePath.slice(-1) !== '/') {
735
- sourceCodePath += '/';
736
- }
737
- const sourceCode = this.sourceCodeService.getSourceCode(sourceCodePath);
738
- if (!sourceCode.length) {
739
- console.warn(`Source code not found at location "${sourceCodePath}" for "${component.heading}"!`);
740
- return;
741
- }
742
- this.codeExamples.push({
743
- heading: component.heading,
744
- packageDependencies: this.packageDependencies,
745
- sourceCode,
746
- stylesheets: this.stylesheets,
747
- theme: component.theme,
748
- });
749
- });
750
- }
751
- launchEditor(codeExample, event) {
752
- event.stopPropagation();
753
- this.editorService.launchEditor(codeExample, event.metaKey || event.ctrlKey ? 'node' : 'angular-cli');
754
- }
755
- /**
756
- * Returns a string representing one of PrismJS's supported language types.
757
- * See: https://prismjs.com/#supported-languages
758
- */
759
- parseCodeLanguageType(fileName) {
760
- const extension = fileName.split('.').pop().toLowerCase();
761
- switch (extension) {
762
- case 'ts':
763
- return 'typescript';
764
- case 'html':
765
- return 'markup';
766
- default:
767
- return extension;
768
- }
769
- }
770
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesComponent, deps: [{ token: SkyDocsCodeExamplesEditorService }, { token: SkyDocsSourceCodeService }], target: i0.ɵɵFactoryTarget.Component }); }
771
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsCodeExamplesComponent, isStandalone: false, selector: "sky-docs-code-examples", inputs: { packageDependencies: "packageDependencies", stylesheets: "stylesheets" }, queries: [{ propertyName: "codeExampleComponents", predicate: SkyDocsCodeExampleComponent }], ngImport: i0, template: "<div *ngIf=\"codeExamples && codeExamples.length\" class=\"sky-docs-code-examples\">\n <sky-repeater\n *ngIf=\"codeExamples.length > 1; else singleCodeExample\"\n expandMode=\"multiple\"\n >\n <sky-repeater-item\n *ngFor=\"let codeExample of codeExamples\"\n [isExpanded]=\"false\"\n >\n <sky-repeater-item-title>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n</div>\n\n<ng-template>\n <ng-content select=\"sky-docs-code-example\"> </ng-content>\n</ng-template>\n\n<ng-template let-item #codeExampleTemplate>\n <div class=\"sky-docs-code-example-wrapper\">\n <sky-vertical-tabset *ngIf=\"item.sourceCode && item.sourceCode.length\">\n <sky-vertical-tab\n *ngFor=\"let file of item.sourceCode; let i = index\"\n [active]=\"i === 0\"\n [tabHeading]=\"file.fileName\"\n >\n <sky-code-block\n [code]=\"file.rawContents\"\n [languageType]=\"parseCodeLanguageType(file.fileName)\"\n >\n </sky-code-block>\n </sky-vertical-tab>\n </sky-vertical-tabset>\n </div>\n</ng-template>\n\n<ng-template #singleCodeExample>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template let-codeExample #codeExampleHeaderTemplate>\n <div class=\"sky-docs-code-example-header\">\n <div class=\"sky-docs-code-example-header-title sky-emphasized\">\n {{ codeExample.heading }}\n </div>\n <div class=\"sky-docs-code-example-header-controls\">\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n (click)=\"launchEditor(codeExample, $event)\"\n >\n <sky-icon icon=\"pencil\"></sky-icon>\n {{ 'sky-docs-code-example-launch-button-label' | skyLibResources }}\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-docs-code-examples{margin-top:30px}.sky-docs-code-example-header{display:flex;align-items:baseline}.sky-docs-code-example-header-title{flex-grow:1}.sky-docs-code-example-header-controls{flex-grow:0}.sky-docs-code-example-header-controls .sky-btn{font-weight:400}.sky-docs-code-example-wrapper{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;margin-top:10px}.sky-docs-code-example-wrapper ::ng-deep .sky-vertical-tabset-content{margin:0}.sky-docs-code-example-wrapper ::ng-deep sky-code-block{margin:0!important}.sky-docs-code-example-wrapper ::ng-deep .sky-code-block-header{border:0}.sky-docs-code-example-wrapper ::ng-deep .sky-code-output{border-left:0;border-right:0;border-bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: i5$1.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i6.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i6.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: i6.λ12, selector: "sky-repeater-item-title" }, { kind: "component", type: i7.λ6, selector: "sky-vertical-tabset", inputs: ["showTabsText", "ariaLabel", "ariaLabelledBy", "ariaRole", "maintainTabContent"], outputs: ["activeChange"] }, { kind: "component", type: i7.λ4, selector: "sky-vertical-tab", inputs: ["active", "ariaControls", "ariaRole", "disabled", "errorIndicator", "tabHeaderCount", "tabHeading", "showTabRightArrow", "tabId"] }, { kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
772
- }
773
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesComponent, decorators: [{
774
- type: Component,
775
- args: [{ selector: 'sky-docs-code-examples', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div *ngIf=\"codeExamples && codeExamples.length\" class=\"sky-docs-code-examples\">\n <sky-repeater\n *ngIf=\"codeExamples.length > 1; else singleCodeExample\"\n expandMode=\"multiple\"\n >\n <sky-repeater-item\n *ngFor=\"let codeExample of codeExamples\"\n [isExpanded]=\"false\"\n >\n <sky-repeater-item-title>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n</div>\n\n<ng-template>\n <ng-content select=\"sky-docs-code-example\"> </ng-content>\n</ng-template>\n\n<ng-template let-item #codeExampleTemplate>\n <div class=\"sky-docs-code-example-wrapper\">\n <sky-vertical-tabset *ngIf=\"item.sourceCode && item.sourceCode.length\">\n <sky-vertical-tab\n *ngFor=\"let file of item.sourceCode; let i = index\"\n [active]=\"i === 0\"\n [tabHeading]=\"file.fileName\"\n >\n <sky-code-block\n [code]=\"file.rawContents\"\n [languageType]=\"parseCodeLanguageType(file.fileName)\"\n >\n </sky-code-block>\n </sky-vertical-tab>\n </sky-vertical-tabset>\n </div>\n</ng-template>\n\n<ng-template #singleCodeExample>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template let-codeExample #codeExampleHeaderTemplate>\n <div class=\"sky-docs-code-example-header\">\n <div class=\"sky-docs-code-example-header-title sky-emphasized\">\n {{ codeExample.heading }}\n </div>\n <div class=\"sky-docs-code-example-header-controls\">\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n (click)=\"launchEditor(codeExample, $event)\"\n >\n <sky-icon icon=\"pencil\"></sky-icon>\n {{ 'sky-docs-code-example-launch-button-label' | skyLibResources }}\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-docs-code-examples{margin-top:30px}.sky-docs-code-example-header{display:flex;align-items:baseline}.sky-docs-code-example-header-title{flex-grow:1}.sky-docs-code-example-header-controls{flex-grow:0}.sky-docs-code-example-header-controls .sky-btn{font-weight:400}.sky-docs-code-example-wrapper{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;margin-top:10px}.sky-docs-code-example-wrapper ::ng-deep .sky-vertical-tabset-content{margin:0}.sky-docs-code-example-wrapper ::ng-deep sky-code-block{margin:0!important}.sky-docs-code-example-wrapper ::ng-deep .sky-code-block-header{border:0}.sky-docs-code-example-wrapper ::ng-deep .sky-code-output{border-left:0;border-right:0;border-bottom:0}\n"] }]
776
- }], ctorParameters: () => [{ type: SkyDocsCodeExamplesEditorService }, { type: SkyDocsSourceCodeService }], propDecorators: { packageDependencies: [{
777
- type: Input
778
- }], stylesheets: [{
779
- type: Input
780
- }], codeExampleComponents: [{
781
- type: ContentChildren,
782
- args: [SkyDocsCodeExampleComponent]
783
- }] } });
784
-
785
- class SkyDocsCodeExamplesModule {
786
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
787
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesModule, declarations: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent], imports: [CommonModule,
788
- SkyCodeBlockModule,
789
- SkyDocsToolsResourcesModule,
790
- SkyIconModule,
791
- SkyRepeaterModule,
792
- SkyVerticalTabsetModule], exports: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent] }); }
793
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesModule, imports: [CommonModule,
794
- SkyCodeBlockModule,
795
- SkyDocsToolsResourcesModule,
796
- SkyIconModule,
797
- SkyRepeaterModule,
798
- SkyVerticalTabsetModule] }); }
799
- }
800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCodeExamplesModule, decorators: [{
801
- type: NgModule,
802
- args: [{
803
- imports: [
804
- CommonModule,
805
- SkyCodeBlockModule,
476
+ class SkyCodeExampleViewerComponent {
477
+ constructor() {
478
+ this.#stackblitzSvc = inject(SkyStackBlitzService);
479
+ this.componentName = input.required();
480
+ this.componentSelector = input.required();
481
+ this.componentType = input.required();
482
+ this.demoHidden = input(false);
483
+ this.files = input.required();
484
+ this.headingText = input.required();
485
+ this.primaryFile = input.required();
486
+ this.stacked = input(false, { transform: booleanAttribute });
487
+ this.isCodeVisible = signal(false);
488
+ }
489
+ #stackblitzSvc;
490
+ getCodeLanguage(fileName) {
491
+ const extension = fileName.split('.').pop();
492
+ assertCodeSnippetLanguage(extension);
493
+ return extension;
494
+ }
495
+ launchStackBlitz() {
496
+ void this.#stackblitzSvc.launch({
497
+ componentName: this.componentName(),
498
+ componentSelector: this.componentSelector(),
499
+ files: this.files(),
500
+ primaryFile: this.primaryFile(),
501
+ title: this.headingText(),
502
+ });
503
+ }
504
+ toggleCodeVisibility() {
505
+ const isCodeVisible = this.isCodeVisible();
506
+ this.isCodeVisible.set(!isCodeVisible);
507
+ }
508
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeExampleViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
509
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: SkyCodeExampleViewerComponent, isStandalone: true, selector: "sky-code-example-viewer", inputs: { componentName: { classPropertyName: "componentName", publicName: "componentName", isSignal: true, isRequired: true, transformFunction: null }, componentSelector: { classPropertyName: "componentSelector", publicName: "componentSelector", isSignal: true, isRequired: true, transformFunction: null }, componentType: { classPropertyName: "componentType", publicName: "componentType", isSignal: true, isRequired: true, transformFunction: null }, demoHidden: { classPropertyName: "demoHidden", publicName: "demoHidden", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: true, transformFunction: null }, headingText: { classPropertyName: "headingText", publicName: "headingText", isSignal: true, isRequired: true, transformFunction: null }, primaryFile: { classPropertyName: "primaryFile", publicName: "primaryFile", isSignal: true, isRequired: true, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.sky-margin-stacked-xl": "stacked()" } }, ngImport: i0, template: "<sky-box headingLevel=\"3\" headingStyle=\"3\" [headingText]=\"headingText()\">\n <sky-box-controls>\n <button\n class=\"sky-btn sky-btn-default\"\n data-sky-id=\"stackblitz-btn\"\n type=\"button\"\n (click)=\"launchStackBlitz()\"\n >\n <sky-icon iconName=\"edit\" />\n {{ 'sky_code_example_viewer_demo_stack_blitz_button' | skyLibResources }}\n </button>\n </sky-box-controls>\n\n <sky-box-content>\n <div\n class=\"sky-code-example-viewer-demo sky-padding-even-md sky-margin-stacked-lg\"\n >\n @if (!demoHidden()) {\n <ng-template [ngComponentOutlet]=\"componentType()\" />\n } @else {\n {{ 'sky_code_example_viewer_demo_hidden_message' | skyLibResources }}\n }\n </div>\n\n <div class=\"sky-margin-stacked-sm\">\n <button\n class=\"sky-btn sky-btn-link\"\n data-sky-id=\"toggle-code-visibility-btn\"\n type=\"button\"\n [attr.aria-controls]=\"codeRef.id\"\n [attr.aria-expanded]=\"isCodeVisible()\"\n (click)=\"toggleCodeVisibility()\"\n >\n <sky-icon\n [iconName]=\"isCodeVisible() ? 'chevron-down' : 'chevron-right'\"\n />\n {{\n isCodeVisible()\n ? ('sky_code_example_viewer_hide_code_button_label'\n | skyLibResources)\n : ('sky_code_example_viewer_show_code_button_label'\n | skyLibResources)\n }}\n </button>\n </div>\n\n <sky-vertical-tabset #codeRef=\"skyId\" skyId [hidden]=\"!isCodeVisible()\">\n @for (obj of files() | keyvalue; track obj.key) {\n <sky-vertical-tab\n [active]=\"obj.key === primaryFile()\"\n [tabHeading]=\"obj.key\"\n >\n <sky-code-snippet\n [code]=\"obj.value\"\n [language]=\"getCodeLanguage(obj.key)\"\n />\n </sky-vertical-tab>\n }\n </sky-vertical-tabset>\n </sky-box-content>\n</sky-box>\n", styles: [":host{display:block}.sky-code-example-viewer-demo{border:1px solid var(--sky-border-color-neutral-medium)}\n"], dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: SkyBoxModule }, { kind: "component", type: i1$1.λ41, selector: "sky-box", inputs: ["headingText", "headingHidden", "headingLevel", "headingStyle", "helpPopoverContent", "helpPopoverTitle", "helpKey", "ariaLabel", "ariaLabelledBy", "ariaRole"] }, { kind: "component", type: i1$1.λ43, selector: "sky-box-content" }, { kind: "component", type: i1$1.λ44, selector: "sky-box-controls" }, { kind: "ngmodule", type: SkyCodeSnippetModule }, { kind: "component", type: SkyCodeSnippetComponent, selector: "sky-code-snippet", inputs: ["code", "language"] }, { kind: "ngmodule", type: SkyDocsToolsResourcesModule }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i1.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i5.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "ngmodule", type: SkyVerticalTabsetModule }, { kind: "component", type: i6.λ6, selector: "sky-vertical-tabset", inputs: ["showTabsText", "ariaLabel", "ariaLabelledBy", "ariaRole", "maintainTabContent"], outputs: ["activeChange"] }, { kind: "component", type: i6.λ4, selector: "sky-vertical-tab", inputs: ["active", "ariaControls", "ariaRole", "disabled", "errorIndicator", "requiredIndicator", "tabHeaderCount", "tabHeading", "showTabRightArrow", "tabId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
510
+ }
511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeExampleViewerComponent, decorators: [{
512
+ type: Component,
513
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, host: {
514
+ '[class.sky-margin-stacked-xl]': 'stacked()',
515
+ }, imports: [
516
+ KeyValuePipe,
517
+ NgComponentOutlet,
518
+ SkyBoxModule,
519
+ SkyCodeSnippetModule,
806
520
  SkyDocsToolsResourcesModule,
807
521
  SkyIconModule,
808
- SkyRepeaterModule,
522
+ SkyIdModule,
809
523
  SkyVerticalTabsetModule,
810
- ],
811
- declarations: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent],
812
- exports: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent],
813
- }]
814
- }] });
815
-
816
- /**
817
- * Renders a checkbox control within the control panel.
818
- * @example
819
- * ```markup
820
- * <sky-docs-demo-control-panel-checkbox
821
- * label="Show title"
822
- * [checked]="true"
823
- * [propertyName]="showTitle"
824
- * >
825
- * </sky-docs-demo-control-panel-checkbox>
826
- * ```
827
- */
828
- class SkyDocsDemoControlPanelCheckboxComponent {
829
- /**
830
- * The checked status of the checkbox.
831
- * @default false
832
- */
833
- set checked(value) {
834
- if (value !== undefined && this._checked === undefined) {
835
- this.initialState.checked = value;
836
- }
837
- this._checked = value;
838
- }
839
- get checked() {
840
- return this._checked || false;
841
- }
842
- constructor(changeDetector) {
843
- this.changeDetector = changeDetector;
844
- /**
845
- * Indicates whether to disable the checkbox.
846
- */
847
- this.disabled = false;
848
- this.selectionChange = new ReplaySubject();
849
- this.initialState = {};
850
- }
851
- ngOnInit() {
852
- setTimeout(() => {
853
- this.initialState.checked = this.checked;
854
- this.notifyChange();
855
- });
856
- }
857
- ngOnDestroy() {
858
- this.selectionChange.complete();
859
- }
860
- onModelChange() {
861
- this.notifyChange();
862
- }
863
- resetState() {
864
- if (this.initialState.checked !== this.checked) {
865
- this.checked = !!this.initialState.checked;
866
- this.notifyChange();
867
- this.changeDetector.markForCheck();
868
- }
869
- }
870
- notifyChange() {
871
- this.selectionChange.next({
872
- [this.propertyName]: this.checked,
873
- });
874
- }
875
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
876
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoControlPanelCheckboxComponent, isStandalone: false, selector: "sky-docs-demo-control-panel-checkbox", inputs: { checked: "checked", disabled: "disabled", helpPopoverContent: "helpPopoverContent", helpPopoverTitle: "helpPopoverTitle", label: "label", propertyName: "propertyName" }, ngImport: i0, template: "<sky-checkbox\n [disabled]=\"disabled\"\n [labelText]=\"label\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [name]=\"propertyName\"\n [(ngModel)]=\"checked\"\n (change)=\"onModelChange()\"\n/>\n", dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "helpPopoverContent", "helpPopoverTitle", "icon", "checkboxType", "checked", "indeterminate", "required", "labelText", "labelHidden", "hintText", "stacked", "helpKey"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
877
- }
878
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelCheckboxComponent, decorators: [{
879
- type: Component,
880
- args: [{ selector: 'sky-docs-demo-control-panel-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<sky-checkbox\n [disabled]=\"disabled\"\n [labelText]=\"label\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [name]=\"propertyName\"\n [(ngModel)]=\"checked\"\n (change)=\"onModelChange()\"\n/>\n" }]
881
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { checked: [{
882
- type: Input
883
- }], disabled: [{
884
- type: Input
885
- }], helpPopoverContent: [{
886
- type: Input
887
- }], helpPopoverTitle: [{
888
- type: Input
889
- }], label: [{
890
- type: Input
891
- }], propertyName: [{
892
- type: Input
893
- }] } });
894
-
895
- /**
896
- * Renders a radio control group.
897
- * @example
898
- * ```markup
899
- * <sky-docs-demo-control-panel-radio-group
900
- * [choices]="[
901
- * { 'label': 'Red', value: '#f00' },
902
- * { 'label': 'Green', value: '#0f0' },
903
- * { 'label': 'Blue', value: '#00f' }
904
- * ]"
905
- * heading="Choose a color"
906
- * initialValue="Red"
907
- * propertyName="color"
908
- * >
909
- * </sky-docs-demo-control-panel-radio-group>
910
- * ```
911
- */
912
- class SkyDocsDemoControlPanelRadioGroupComponent {
913
- constructor(changeDetector) {
914
- this.changeDetector = changeDetector;
915
- /**
916
- * Indicates whether to disable the radio group.
917
- */
918
- this.disabled = false;
919
- /**
920
- * @internal
921
- */
922
- this.selectionChange = new ReplaySubject();
923
- }
924
- ngOnInit() {
925
- this.value = this.cloneValue(this.initialValue);
926
- this.#notifyChange();
927
- }
928
- ngOnDestroy() {
929
- this.selectionChange.complete();
930
- }
931
- onModelChange(value) {
932
- this.value = value;
933
- this.#notifyChange();
934
- }
935
- resetValue() {
936
- this.value = this.cloneValue(this.initialValue);
937
- this.#notifyChange();
938
- this.changeDetector.markForCheck();
939
- }
940
- cloneValue(value) {
941
- if (typeof value === 'object') {
942
- return JSON.parse(JSON.stringify(value));
943
- }
944
- return value;
945
- }
946
- #notifyChange() {
947
- this.selectionChange.next({
948
- [this.propertyName]: this.value,
949
- });
950
- }
951
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelRadioGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
952
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoControlPanelRadioGroupComponent, isStandalone: false, selector: "sky-docs-demo-control-panel-radio-group", inputs: { choices: "choices", disabled: "disabled", heading: "heading", initialValue: "initialValue", propertyName: "propertyName" }, ngImport: i0, template: "<div class=\"sky-demo-control-panel-radio-group\">\n <sky-radio-group\n [disabled]=\"disabled\"\n [headingText]=\"heading\"\n [headingStyle]=\"4\"\n [name]=\"propertyName\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ul class=\"sky-list-unstyled\">\n <li *ngFor=\"let choice of choices\">\n <sky-radio [value]=\"choice.value\">\n <sky-radio-label>{{ choice.label }}</sky-radio-label>\n </sky-radio>\n </li>\n </ul>\n </sky-radio-group>\n</div>\n", styles: [".sky-demo-control-panel-radio-group{margin-bottom:20px}ul{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.λ13, selector: "sky-radio", inputs: ["checked", "disabled", "id", "label", "labelledBy", "name", "tabindex", "value", "helpPopoverContent", "helpPopoverTitle", "icon", "radioType", "labelText", "labelHidden", "hintText", "helpKey"], outputs: ["change", "checkedChange", "disabledChange"] }, { kind: "component", type: i3$1.λ11, selector: "sky-radio-group", inputs: ["ariaLabelledBy", "ariaLabel", "disabled", "headingLevel", "headingStyle", "name", "required", "stacked", "value", "tabIndex", "headingText", "headingHidden", "hintText", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }, { kind: "component", type: i3$1.λ12, selector: "sky-radio-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
953
- }
954
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelRadioGroupComponent, decorators: [{
955
- type: Component,
956
- args: [{ selector: 'sky-docs-demo-control-panel-radio-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-demo-control-panel-radio-group\">\n <sky-radio-group\n [disabled]=\"disabled\"\n [headingText]=\"heading\"\n [headingStyle]=\"4\"\n [name]=\"propertyName\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ul class=\"sky-list-unstyled\">\n <li *ngFor=\"let choice of choices\">\n <sky-radio [value]=\"choice.value\">\n <sky-radio-label>{{ choice.label }}</sky-radio-label>\n </sky-radio>\n </li>\n </ul>\n </sky-radio-group>\n</div>\n", styles: [".sky-demo-control-panel-radio-group{margin-bottom:20px}ul{margin:0}\n"] }]
957
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { choices: [{
958
- type: Input
959
- }], disabled: [{
960
- type: Input
961
- }], heading: [{
962
- type: Input
963
- }], initialValue: [{
964
- type: Input
965
- }], propertyName: [{
966
- type: Input
967
- }] } });
968
-
969
- /**
970
- * Handles the appearance and configuration of the behavior demo control panel.
971
- * @example
972
- * ```markup
973
- * <sky-docs-demo-control-panel
974
- * (selectionChange)="onSelectionChange($event)"
975
- * >
976
- * Control panel content here.
977
- * </sky-docs-demo-control-panel>
978
- * ```
979
- */
980
- class SkyDocsDemoControlPanelComponent {
981
- constructor() {
982
- /**
983
- * Fires when the user clicks the reset button.
984
- */
985
- this.reset = new EventEmitter();
986
- /**
987
- * Fires when a user makes a selection from one of the controls in the panel.
988
- */
989
- this.selectionChange = new EventEmitter();
990
- this.ngUnsubscribe = new Subject();
991
- }
992
- ngAfterContentInit() {
993
- this.addEventListeners();
994
- merge(this.checkboxes.changes, this.radioGroups.changes)
995
- .pipe(takeUntil(this.ngUnsubscribe))
996
- .subscribe(() => {
997
- this.addEventListeners();
998
- });
999
- }
1000
- ngOnDestroy() {
1001
- this.reset.complete();
1002
- this.selectionChange.complete();
1003
- this.ngUnsubscribe.next();
1004
- this.ngUnsubscribe.complete();
1005
- }
1006
- onResetButtonClick() {
1007
- this.radioGroups.forEach((radioGroup) => {
1008
- radioGroup.resetValue();
1009
- });
1010
- this.checkboxes.forEach((checkbox) => {
1011
- checkbox.resetState();
1012
- });
1013
- this.reset.emit();
1014
- }
1015
- addEventListeners() {
1016
- if (this.eventListeners) {
1017
- this.eventListeners.unsubscribe();
1018
- }
1019
- this.eventListeners = merge(...this.checkboxes.map((c) => c.selectionChange), ...this.radioGroups.map((c) => c.selectionChange))
1020
- .pipe(takeUntil(this.ngUnsubscribe))
1021
- .subscribe((change) => {
1022
- this.selectionChange.next(change);
1023
- });
1024
- }
1025
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1026
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoControlPanelComponent, isStandalone: false, selector: "sky-docs-demo-control-panel", outputs: { reset: "reset", selectionChange: "selectionChange" }, queries: [{ propertyName: "radioGroups", predicate: SkyDocsDemoControlPanelRadioGroupComponent, descendants: true }, { propertyName: "checkboxes", predicate: SkyDocsDemoControlPanelCheckboxComponent, descendants: true }], ngImport: i0, template: "<div class=\"sky-docs-demo-control-panel\">\n <div class=\"sky-docs-demo-control-panel-row sky-rounded-corners\">\n <div\n class=\"sky-docs-demo-control-panel-column sky-docs-demo-control-panel-sections-column\"\n >\n <ng-content select=\"sky-docs-demo-control-panel-section\"></ng-content>\n </div>\n\n <div\n class=\"sky-docs-demo-control-panel-column sky-docs-demo-control-panel-button-column\"\n >\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.data-test-selector]=\"'sky-docs-demo-control-panel-reset-button'\"\n (click)=\"onResetButtonClick()\"\n >\n {{ 'sky-docs-demo-control-panel-reset-button-label' | skyLibResources }}\n </button>\n </div>\n </div>\n</div>\n", styles: [".sky-docs-demo-control-panel{margin-bottom:20px;margin-top:-1px;margin-left:-15px}.sky-docs-demo-control-panel-row{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;padding:15px;background-color:#fff;display:inline-flex;min-width:220px}.sky-docs-demo-control-panel-sections-column{display:flex}.sky-docs-demo-control-panel-sections-column ::ng-deep sky-docs-demo-control-panel-section{min-width:120px}.sky-docs-demo-control-panel-button-column{align-self:flex-end}.sky-docs-demo-control-panel-button-column .sky-btn{border:0}\n"], dependencies: [{ kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1027
- }
1028
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelComponent, decorators: [{
1029
- type: Component,
1030
- args: [{ selector: 'sky-docs-demo-control-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-demo-control-panel\">\n <div class=\"sky-docs-demo-control-panel-row sky-rounded-corners\">\n <div\n class=\"sky-docs-demo-control-panel-column sky-docs-demo-control-panel-sections-column\"\n >\n <ng-content select=\"sky-docs-demo-control-panel-section\"></ng-content>\n </div>\n\n <div\n class=\"sky-docs-demo-control-panel-column sky-docs-demo-control-panel-button-column\"\n >\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.data-test-selector]=\"'sky-docs-demo-control-panel-reset-button'\"\n (click)=\"onResetButtonClick()\"\n >\n {{ 'sky-docs-demo-control-panel-reset-button-label' | skyLibResources }}\n </button>\n </div>\n </div>\n</div>\n", styles: [".sky-docs-demo-control-panel{margin-bottom:20px;margin-top:-1px;margin-left:-15px}.sky-docs-demo-control-panel-row{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;padding:15px;background-color:#fff;display:inline-flex;min-width:220px}.sky-docs-demo-control-panel-sections-column{display:flex}.sky-docs-demo-control-panel-sections-column ::ng-deep sky-docs-demo-control-panel-section{min-width:120px}.sky-docs-demo-control-panel-button-column{align-self:flex-end}.sky-docs-demo-control-panel-button-column .sky-btn{border:0}\n"] }]
1031
- }], propDecorators: { reset: [{
1032
- type: Output
1033
- }], selectionChange: [{
1034
- type: Output
1035
- }], radioGroups: [{
1036
- type: ContentChildren,
1037
- args: [SkyDocsDemoControlPanelRadioGroupComponent, {
1038
- descendants: true,
1039
- }]
1040
- }], checkboxes: [{
1041
- type: ContentChildren,
1042
- args: [SkyDocsDemoControlPanelCheckboxComponent, {
1043
- descendants: true,
1044
- }]
1045
- }] } });
1046
-
1047
- /**
1048
- * Renders a custom control panel in the "Show options" dropdown above the demo.
1049
- */
1050
- class SkyDocsDemoCustomControlPanelComponent {
1051
- constructor() {
1052
- this.classes = 'sky-rounded-corners';
1053
- }
1054
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoCustomControlPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1055
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoCustomControlPanelComponent, isStandalone: false, selector: "sky-docs-demo-custom-control-panel", host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<ng-content />\n", styles: [":host{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;padding:15px;background-color:#fff;display:inline-flex;min-width:220px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1056
- }
1057
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoCustomControlPanelComponent, decorators: [{
1058
- type: Component,
1059
- args: [{ selector: 'sky-docs-demo-custom-control-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content />\n", styles: [":host{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;padding:15px;background-color:#fff;display:inline-flex;min-width:220px}\n"] }]
1060
- }], propDecorators: { classes: [{
1061
- type: HostBinding,
1062
- args: ['class']
1063
- }] } });
1064
-
1065
- /**
1066
- * Wraps all behavior demo components and handles the configuration and appearance of the behavior demo.
1067
- * @example
1068
- * ```markup
1069
- * <sky-docs-demo>
1070
- * Demo content here.
1071
- * </sky-docs-demo>
1072
- * ```
1073
- */
1074
- class SkyDocsDemoComponent {
1075
- constructor() {
1076
- this.areOptionsVisible = false;
1077
- }
1078
- /**
1079
- * Specifies the horizontal alignment of the demo contents.
1080
- * @default 'left'
1081
- */
1082
- set alignContents(value) {
1083
- this._alignContents = value;
1084
- }
1085
- get alignContents() {
1086
- return this._alignContents || 'left';
1087
- }
1088
- get hasOptions() {
1089
- return ((this.controlPanels && this.controlPanels.length > 0) ||
1090
- (this.customControlPanels && this.customControlPanels.length > 0));
1091
- }
1092
- get toggleOptionsButtonIcon() {
1093
- return this.areOptionsVisible ? 'chevron-up' : 'chevron-down';
1094
- }
1095
- onToggleOptionsButtonClick() {
1096
- this.areOptionsVisible = !this.areOptionsVisible;
1097
- }
1098
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1099
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoComponent, isStandalone: false, selector: "sky-docs-demo", inputs: { alignContents: "alignContents", heading: "heading" }, queries: [{ propertyName: "controlPanels", predicate: SkyDocsDemoControlPanelComponent, read: ElementRef }, { propertyName: "customControlPanels", predicate: SkyDocsDemoCustomControlPanelComponent, read: ElementRef }], ngImport: i0, template: "<div class=\"sky-docs-demo\">\n <div aria-level=\"3\" class=\"sky-docs-demo-heading\" role=\"heading\">\n <span\n class=\"sky-section-heading\"\n [attr.data-test-selector]=\"'sky-docs-demo-heading-text'\"\n >\n {{ heading || ('sky-docs-demo-heading' | skyLibResources) }}\n </span>\n\n <div class=\"sky-docs-demo-control-panel-wrapper\">\n <div class=\"sky-docs-demo-control-panel-wrapper-header\">\n <button\n *ngIf=\"hasOptions\"\n class=\"sky-btn\"\n type=\"button\"\n [attr.data-test-selector]=\"'sky-docs-demo-heading-button'\"\n [ngClass]=\"{\n 'sky-docs-demo-heading-btn-open': areOptionsVisible,\n }\"\n (click)=\"onToggleOptionsButtonClick()\"\n >\n <sky-icon [icon]=\"toggleOptionsButtonIcon\"></sky-icon>\n <ng-container *ngIf=\"areOptionsVisible\">\n {{ 'sky-docs-demo-toggle-button-off' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"!areOptionsVisible\">\n {{ 'sky-docs-demo-toggle-button-on' | skyLibResources }}\n </ng-container>\n </button>\n </div>\n <div class=\"sky-docs-demo-control-panel-wrapper-body\">\n <ng-container *ngIf=\"areOptionsVisible\">\n <ng-container *ngTemplateOutlet=\"controlPanels\"></ng-container>\n <ng-container *ngTemplateOutlet=\"customControlPanels\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div\n class=\"sky-docs-demo-viewport\"\n [ngClass]=\"'sky-docs-demo-viewport-align-' + alignContents\"\n >\n <div class=\"sky-docs-demo-viewport-gutter\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #controlPanels>\n <ng-content select=\"sky-docs-demo-control-panel\" />\n</ng-template>\n\n<ng-template #customControlPanels>\n <ng-content select=\"sky-docs-demo-custom-control-panel\" />\n</ng-template>\n", styles: [".sky-docs-demo{margin-bottom:20px}.sky-docs-demo-heading{margin-bottom:10px;display:flex;flex-direction:row}.sky-docs-demo-heading .sky-docs-demo-heading-btn-open{border-bottom-color:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0;position:relative}.sky-docs-demo-control-panel-wrapper{display:flex;flex-direction:column}.sky-section-heading{margin-right:10px}.sky-docs-demo-viewport{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;margin-bottom:10px;padding:15px}.sky-docs-demo-viewport-align-center{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$1.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1100
- }
1101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoComponent, decorators: [{
1102
- type: Component,
1103
- args: [{ selector: 'sky-docs-demo', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-demo\">\n <div aria-level=\"3\" class=\"sky-docs-demo-heading\" role=\"heading\">\n <span\n class=\"sky-section-heading\"\n [attr.data-test-selector]=\"'sky-docs-demo-heading-text'\"\n >\n {{ heading || ('sky-docs-demo-heading' | skyLibResources) }}\n </span>\n\n <div class=\"sky-docs-demo-control-panel-wrapper\">\n <div class=\"sky-docs-demo-control-panel-wrapper-header\">\n <button\n *ngIf=\"hasOptions\"\n class=\"sky-btn\"\n type=\"button\"\n [attr.data-test-selector]=\"'sky-docs-demo-heading-button'\"\n [ngClass]=\"{\n 'sky-docs-demo-heading-btn-open': areOptionsVisible,\n }\"\n (click)=\"onToggleOptionsButtonClick()\"\n >\n <sky-icon [icon]=\"toggleOptionsButtonIcon\"></sky-icon>\n <ng-container *ngIf=\"areOptionsVisible\">\n {{ 'sky-docs-demo-toggle-button-off' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"!areOptionsVisible\">\n {{ 'sky-docs-demo-toggle-button-on' | skyLibResources }}\n </ng-container>\n </button>\n </div>\n <div class=\"sky-docs-demo-control-panel-wrapper-body\">\n <ng-container *ngIf=\"areOptionsVisible\">\n <ng-container *ngTemplateOutlet=\"controlPanels\"></ng-container>\n <ng-container *ngTemplateOutlet=\"customControlPanels\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div\n class=\"sky-docs-demo-viewport\"\n [ngClass]=\"'sky-docs-demo-viewport-align-' + alignContents\"\n >\n <div class=\"sky-docs-demo-viewport-gutter\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #controlPanels>\n <ng-content select=\"sky-docs-demo-control-panel\" />\n</ng-template>\n\n<ng-template #customControlPanels>\n <ng-content select=\"sky-docs-demo-custom-control-panel\" />\n</ng-template>\n", styles: [".sky-docs-demo{margin-bottom:20px}.sky-docs-demo-heading{margin-bottom:10px;display:flex;flex-direction:row}.sky-docs-demo-heading .sky-docs-demo-heading-btn-open{border-bottom-color:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0;position:relative}.sky-docs-demo-control-panel-wrapper{display:flex;flex-direction:column}.sky-section-heading{margin-right:10px}.sky-docs-demo-viewport{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;margin-bottom:10px;padding:15px}.sky-docs-demo-viewport-align-center{display:flex;align-items:center;justify-content:center}\n"] }]
1104
- }], propDecorators: { alignContents: [{
1105
- type: Input
1106
- }], heading: [{
1107
- type: Input
1108
- }], controlPanels: [{
1109
- type: ContentChildren,
1110
- args: [SkyDocsDemoControlPanelComponent, { read: ElementRef }]
1111
- }], customControlPanels: [{
1112
- type: ContentChildren,
1113
- args: [SkyDocsDemoCustomControlPanelComponent, { read: ElementRef }]
1114
- }] } });
1115
-
1116
- /**
1117
- * Renders a section within the control panel.
1118
- * @example
1119
- * ```markup
1120
- * <sky-docs-demo-control-panel>
1121
- * <sky-docs-demo-control-panel-section>
1122
- * Section content here.
1123
- * </sky-docs-demo-control-panel-section>
1124
- * </sky-docs-demo-control-panel>
1125
- * ```
1126
- */
1127
- class SkyDocsDemoControlPanelSectionComponent {
1128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1129
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoControlPanelSectionComponent, isStandalone: false, selector: "sky-docs-demo-control-panel-section", ngImport: i0, template: "<div class=\"sky-demo-control-panel-section\">\n <ng-content select=\"sky-docs-demo-control-panel-radio-group\"></ng-content>\n <ng-content select=\"sky-docs-demo-control-panel-checkbox\"></ng-content>\n</div>\n", styles: [".sky-demo-control-panel-section{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1130
- }
1131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoControlPanelSectionComponent, decorators: [{
1132
- type: Component,
1133
- args: [{ selector: 'sky-docs-demo-control-panel-section', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-demo-control-panel-section\">\n <ng-content select=\"sky-docs-demo-control-panel-radio-group\"></ng-content>\n <ng-content select=\"sky-docs-demo-control-panel-checkbox\"></ng-content>\n</div>\n", styles: [".sky-demo-control-panel-section{padding-right:20px}\n"] }]
1134
- }] });
1135
-
1136
- class SkyDocsDemoModule {
1137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1138
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoModule, declarations: [SkyDocsDemoComponent,
1139
- SkyDocsDemoControlPanelCheckboxComponent,
1140
- SkyDocsDemoControlPanelComponent,
1141
- SkyDocsDemoControlPanelRadioGroupComponent,
1142
- SkyDocsDemoControlPanelSectionComponent,
1143
- SkyDocsDemoCustomControlPanelComponent], imports: [CommonModule,
1144
- FormsModule,
1145
- SkyCheckboxModule,
1146
- SkyDocsToolsResourcesModule,
1147
- SkyIconModule,
1148
- SkyRadioModule,
1149
- SkyThemeModule], exports: [SkyDocsDemoComponent,
1150
- SkyDocsDemoControlPanelCheckboxComponent,
1151
- SkyDocsDemoControlPanelComponent,
1152
- SkyDocsDemoControlPanelRadioGroupComponent,
1153
- SkyDocsDemoControlPanelSectionComponent,
1154
- SkyDocsDemoCustomControlPanelComponent] }); }
1155
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoModule, imports: [CommonModule,
1156
- FormsModule,
1157
- SkyCheckboxModule,
1158
- SkyDocsToolsResourcesModule,
1159
- SkyIconModule,
1160
- SkyRadioModule,
1161
- SkyThemeModule] }); }
1162
- }
1163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoModule, decorators: [{
1164
- type: NgModule,
1165
- args: [{
1166
- imports: [
1167
- CommonModule,
1168
- FormsModule,
1169
- SkyCheckboxModule,
1170
- SkyDocsToolsResourcesModule,
1171
- SkyIconModule,
1172
- SkyRadioModule,
1173
- SkyThemeModule,
1174
- ],
1175
- declarations: [
1176
- SkyDocsDemoComponent,
1177
- SkyDocsDemoControlPanelCheckboxComponent,
1178
- SkyDocsDemoControlPanelComponent,
1179
- SkyDocsDemoControlPanelRadioGroupComponent,
1180
- SkyDocsDemoControlPanelSectionComponent,
1181
- SkyDocsDemoCustomControlPanelComponent,
1182
- ],
1183
- exports: [
1184
- SkyDocsDemoComponent,
1185
- SkyDocsDemoControlPanelCheckboxComponent,
1186
- SkyDocsDemoControlPanelComponent,
1187
- SkyDocsDemoControlPanelRadioGroupComponent,
1188
- SkyDocsDemoControlPanelSectionComponent,
1189
- SkyDocsDemoCustomControlPanelComponent,
1190
- ],
1191
- }]
1192
- }] });
1193
-
1194
- class SkyDocsHeadingAnchorComponent {
1195
- constructor() {
1196
- this.headingLevel = '2';
1197
- }
1198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsHeadingAnchorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsHeadingAnchorComponent, isStandalone: false, selector: "sky-docs-heading-anchor", inputs: { anchorId: "anchorId", headingLevel: "headingLevel" }, ngImport: i0, template: "<div\n class=\"sky-docs-heading-anchor\"\n role=\"heading\"\n [ngClass]=\"'sky-docs-tools-heading-anchor-h' + headingLevel\"\n [attr.aria-level]=\"headingLevel\"\n [attr.id]=\"anchorId || null\"\n>\n <ng-content></ng-content>\n <a\n *ngIf=\"anchorId\"\n aria-hidden=\"true\"\n class=\"sky-docs-heading-anchor\"\n queryParamsHandling=\"merge\"\n [fragment]=\"anchorId\"\n [routerLink]=\"[]\"\n >\n <sky-icon class=\"sky-docs-heading-anchor-icon\" icon=\"link\"></sky-icon>\n </a>\n</div>\n", styles: [".sky-docs-heading-anchor{color:#212327}.sky-docs-heading-anchor:hover{text-decoration:none}.sky-docs-heading-anchor:hover .sky-docs-heading-anchor-icon{opacity:1}.sky-docs-heading-anchor:focus .sky-docs-heading-anchor-icon{opacity:1}.sky-docs-heading-anchor-icon{opacity:0;transition:opacity .15s ease-in-out;color:#0974a1;font-weight:400;font-size:18px}.sky-docs-tools-heading-anchor-h1,.sky-docs-tools-heading-anchor-h2,.sky-docs-tools-heading-anchor-h3,.sky-docs-tools-heading-anchor-h4,.sky-docs-tools-heading-anchor-h5,.sky-docs-tools-heading-anchor-h6{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;margin:30px 0 15px}.sky-docs-tools-heading-anchor-h1{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;margin:30px 0 15px;font-weight:300;font-size:34px}.sky-docs-tools-heading-anchor-h2{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;margin:30px 0;font-weight:300;font-size:26px}.sky-docs-tools-heading-anchor-h3{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;margin:30px 0 15px;font-size:19px;font-weight:400}.sky-docs-tools-heading-anchor-h4{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5$1.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1200
- }
1201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsHeadingAnchorComponent, decorators: [{
1202
- type: Component,
1203
- args: [{ selector: 'sky-docs-heading-anchor', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"sky-docs-heading-anchor\"\n role=\"heading\"\n [ngClass]=\"'sky-docs-tools-heading-anchor-h' + headingLevel\"\n [attr.aria-level]=\"headingLevel\"\n [attr.id]=\"anchorId || null\"\n>\n <ng-content></ng-content>\n <a\n *ngIf=\"anchorId\"\n aria-hidden=\"true\"\n class=\"sky-docs-heading-anchor\"\n queryParamsHandling=\"merge\"\n [fragment]=\"anchorId\"\n [routerLink]=\"[]\"\n >\n <sky-icon class=\"sky-docs-heading-anchor-icon\" icon=\"link\"></sky-icon>\n </a>\n</div>\n", styles: [".sky-docs-heading-anchor{color:#212327}.sky-docs-heading-anchor:hover{text-decoration:none}.sky-docs-heading-anchor:hover .sky-docs-heading-anchor-icon{opacity:1}.sky-docs-heading-anchor:focus .sky-docs-heading-anchor-icon{opacity:1}.sky-docs-heading-anchor-icon{opacity:0;transition:opacity .15s ease-in-out;color:#0974a1;font-weight:400;font-size:18px}.sky-docs-tools-heading-anchor-h1,.sky-docs-tools-heading-anchor-h2,.sky-docs-tools-heading-anchor-h3,.sky-docs-tools-heading-anchor-h4,.sky-docs-tools-heading-anchor-h5,.sky-docs-tools-heading-anchor-h6{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;margin:30px 0 15px}.sky-docs-tools-heading-anchor-h1{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;margin:30px 0 15px;font-weight:300;font-size:34px}.sky-docs-tools-heading-anchor-h2{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;margin:30px 0;font-weight:300;font-size:26px}.sky-docs-tools-heading-anchor-h3{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;margin:30px 0 15px;font-size:19px;font-weight:400}.sky-docs-tools-heading-anchor-h4{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}\n"] }]
1204
- }], propDecorators: { anchorId: [{
1205
- type: Input
1206
- }], headingLevel: [{
1207
- type: Input
1208
- }] } });
1209
-
1210
- class SkyDocsHeadingAnchorModule {
1211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsHeadingAnchorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1212
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsHeadingAnchorModule, declarations: [SkyDocsHeadingAnchorComponent], imports: [CommonModule, RouterModule, SkyIconModule], exports: [SkyDocsHeadingAnchorComponent] }); }
1213
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsHeadingAnchorModule, imports: [CommonModule, RouterModule, SkyIconModule] }); }
1214
- }
1215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsHeadingAnchorModule, decorators: [{
1216
- type: NgModule,
1217
- args: [{
1218
- declarations: [SkyDocsHeadingAnchorComponent],
1219
- imports: [CommonModule, RouterModule, SkyIconModule],
1220
- exports: [SkyDocsHeadingAnchorComponent],
1221
- }]
1222
- }] });
1223
-
1224
- class SkyDocsMarkdownPipe {
1225
- transform(markdown) {
1226
- if (!markdown) {
1227
- return '';
1228
- }
1229
- return marked(markdown);
1230
- }
1231
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1232
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownPipe, isStandalone: false, name: "skyDocsMarkdown" }); }
1233
- }
1234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownPipe, decorators: [{
1235
- type: Pipe,
1236
- args: [{
1237
- name: 'skyDocsMarkdown',
1238
- standalone: false,
1239
- }]
1240
- }] });
1241
-
1242
- class SkyDocsMarkdownModule {
1243
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1244
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownModule, declarations: [SkyDocsMarkdownPipe], exports: [SkyDocsMarkdownPipe] }); }
1245
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownModule, providers: [SkyDocsMarkdownPipe] }); }
1246
- }
1247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMarkdownModule, decorators: [{
1248
- type: NgModule,
1249
- args: [{
1250
- declarations: [SkyDocsMarkdownPipe],
1251
- providers: [SkyDocsMarkdownPipe],
1252
- exports: [SkyDocsMarkdownPipe],
1253
- }]
1254
- }] });
1255
-
1256
- class SkyDocsToolsOptions {
1257
- }
1258
-
1259
- class SkyDocsModuleInfoComponent {
1260
- set gitRepoUrl(value) {
1261
- this.gitRepoUrlOrDefault = value || this.#options?.gitRepoUrl;
1262
- this.#updateExternalLinks();
1263
- }
1264
- set packageName(value) {
1265
- this.packageNameOrDefault = value || this.#options?.packageName;
1266
- this.#updateInstallationCommand();
1267
- this.#updateExternalLinks();
1268
- }
1269
- set packageUrl(value) {
1270
- this.#packageUrl = value;
1271
- this.#updateExternalLinks();
1272
- }
1273
- #options;
1274
- #packageUrl;
1275
- constructor(options) {
1276
- if (options) {
1277
- this.#options = options;
1278
- this.gitRepoUrl = options.gitRepoUrl;
1279
- this.packageName = options.packageName;
1280
- }
1281
- }
1282
- #updateExternalLinks() {
1283
- const externalLinks = [];
1284
- if (this.packageNameOrDefault) {
1285
- externalLinks.push({
1286
- url: this.#packageUrl ||
1287
- `https://npmjs.org/package/${this.packageNameOrDefault}`,
1288
- label: 'View in NPM',
1289
- });
1290
- }
1291
- if (this.gitRepoUrlOrDefault) {
1292
- externalLinks.push({
1293
- url: this.gitRepoUrlOrDefault,
1294
- label: 'View in GitHub',
1295
- });
1296
- }
1297
- this.externalLinks = externalLinks;
1298
- }
1299
- #updateInstallationCommand() {
1300
- this.installationCommand = this.packageNameOrDefault
1301
- ? `npm install --save-exact ${this.packageNameOrDefault}`
1302
- : '';
1303
- }
1304
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsModuleInfoComponent, deps: [{ token: SkyDocsToolsOptions, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1305
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsModuleInfoComponent, isStandalone: false, selector: "sky-docs-module-info", inputs: { gitRepoUrl: "gitRepoUrl", moduleName: "moduleName", packageName: "packageName", packageUrl: "packageUrl" }, ngImport: i0, template: "<div class=\"sky-docs-module-info\">\n <sky-description-list class=\"sky-margin-stacked-lg\" mode=\"vertical\">\n <sky-description-list-content *ngIf=\"moduleName\">\n <sky-description-list-term> Defined in </sky-description-list-term>\n <sky-description-list-description>\n <sky-code class=\"sky-docs-module-info-module-name\">{{\n moduleName\n }}</sky-code>\n </sky-description-list-description>\n </sky-description-list-content>\n\n <sky-description-list-content *ngIf=\"packageNameOrDefault\">\n <sky-description-list-term>NPM package</sky-description-list-term>\n <sky-description-list-description>\n <span class=\"sky-docs-module-info-package-name\"\n ><sky-code>{{ packageNameOrDefault }}</sky-code></span\n >\n <ng-container *ngFor=\"let externalLink of externalLinks; let i = index\">\n <a\n class=\"sky-docs-module-info-external-link\"\n [href]=\"externalLink.url\"\n >{{ externalLink.label }}</a\n >\n <span *ngIf=\"i < externalLinks.length - 1\"> | </span>\n </ng-container>\n </sky-description-list-description>\n </sky-description-list-content>\n\n <sky-description-list-content *ngIf=\"installationCommand\">\n <sky-description-list-term>\n Installation\n <sky-help-inline\n *ngIf=\"moduleName\"\n class=\"sky-control-help\"\n [skyPopover]=\"installationCommandPopover\"\n skyPopoverPlacement=\"right\"\n >\n </sky-help-inline>\n </sky-description-list-term>\n <sky-description-list-description>\n <sky-popover #installationCommandPopover>\n To use this module, you must install peer dependencies along with its\n package. Also, after you install the package, you must add the module\n as an export in your SPA's main module to make exports available to\n your SPA.\n </sky-popover>\n <div class=\"sky-docs-module-info-installation-command\">\n <span\n class=\"sky-docs-module-info-installation-command-code\"\n #copyTarget\n >\n <sky-code>{{ installationCommand }}</sky-code>\n </span>\n <sky-copy-to-clipboard\n buttonText=\"Copy\"\n [copyTarget]=\"copyTarget\"\n ></sky-copy-to-clipboard>\n </div>\n </sky-description-list-description>\n </sky-description-list-content>\n </sky-description-list>\n\n <div class=\"sky-docs-module-info-additional-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-docs-module-info-installation-command{display:flex}.sky-docs-module-info-installation-command-code,.sky-docs-module-info-package-name{margin-right:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.λ1, selector: "sky-code" }, { kind: "component", type: i4$1.λ1, selector: "sky-copy-to-clipboard", inputs: ["ariaLabel", "ariaLabelledBy", "copyTarget", "buttonText", "buttonClickedText", "title"] }, { kind: "component", type: i5.λ18, selector: "sky-description-list", inputs: ["defaultDescription", "listItemWidth", "mode"] }, { kind: "component", type: i5.λ21, selector: "sky-description-list-content", inputs: ["helpKey", "helpPopoverContent", "helpPopoverTitle"] }, { kind: "component", type: i5.λ19, selector: "sky-description-list-term" }, { kind: "component", type: i5.λ20, selector: "sky-description-list-description" }, { kind: "component", type: i6$1.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "component", type: i7$1.λ6, selector: "sky-popover", inputs: ["alignment", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { kind: "directive", type: i7$1.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1306
- }
1307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsModuleInfoComponent, decorators: [{
1308
- type: Component,
1309
- args: [{ selector: 'sky-docs-module-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-module-info\">\n <sky-description-list class=\"sky-margin-stacked-lg\" mode=\"vertical\">\n <sky-description-list-content *ngIf=\"moduleName\">\n <sky-description-list-term> Defined in </sky-description-list-term>\n <sky-description-list-description>\n <sky-code class=\"sky-docs-module-info-module-name\">{{\n moduleName\n }}</sky-code>\n </sky-description-list-description>\n </sky-description-list-content>\n\n <sky-description-list-content *ngIf=\"packageNameOrDefault\">\n <sky-description-list-term>NPM package</sky-description-list-term>\n <sky-description-list-description>\n <span class=\"sky-docs-module-info-package-name\"\n ><sky-code>{{ packageNameOrDefault }}</sky-code></span\n >\n <ng-container *ngFor=\"let externalLink of externalLinks; let i = index\">\n <a\n class=\"sky-docs-module-info-external-link\"\n [href]=\"externalLink.url\"\n >{{ externalLink.label }}</a\n >\n <span *ngIf=\"i < externalLinks.length - 1\"> | </span>\n </ng-container>\n </sky-description-list-description>\n </sky-description-list-content>\n\n <sky-description-list-content *ngIf=\"installationCommand\">\n <sky-description-list-term>\n Installation\n <sky-help-inline\n *ngIf=\"moduleName\"\n class=\"sky-control-help\"\n [skyPopover]=\"installationCommandPopover\"\n skyPopoverPlacement=\"right\"\n >\n </sky-help-inline>\n </sky-description-list-term>\n <sky-description-list-description>\n <sky-popover #installationCommandPopover>\n To use this module, you must install peer dependencies along with its\n package. Also, after you install the package, you must add the module\n as an export in your SPA's main module to make exports available to\n your SPA.\n </sky-popover>\n <div class=\"sky-docs-module-info-installation-command\">\n <span\n class=\"sky-docs-module-info-installation-command-code\"\n #copyTarget\n >\n <sky-code>{{ installationCommand }}</sky-code>\n </span>\n <sky-copy-to-clipboard\n buttonText=\"Copy\"\n [copyTarget]=\"copyTarget\"\n ></sky-copy-to-clipboard>\n </div>\n </sky-description-list-description>\n </sky-description-list-content>\n </sky-description-list>\n\n <div class=\"sky-docs-module-info-additional-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-docs-module-info-installation-command{display:flex}.sky-docs-module-info-installation-command-code,.sky-docs-module-info-package-name{margin-right:10px}\n"] }]
1310
- }], ctorParameters: () => [{ type: SkyDocsToolsOptions, decorators: [{
1311
- type: Optional
1312
- }] }], propDecorators: { gitRepoUrl: [{
1313
- type: Input
1314
- }], moduleName: [{
1315
- type: Input
1316
- }], packageName: [{
1317
- type: Input
1318
- }], packageUrl: [{
1319
- type: Input
1320
- }] } });
1321
-
1322
- class SkyDocsModuleInfoModule {
1323
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsModuleInfoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1324
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsModuleInfoModule, declarations: [SkyDocsModuleInfoComponent], imports: [CommonModule,
1325
- SkyCodeModule,
1326
- SkyClipboardModule,
1327
- SkyDescriptionListModule,
1328
- SkyHelpInlineModule,
1329
- SkyPopoverModule], exports: [SkyDocsModuleInfoComponent] }); }
1330
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsModuleInfoModule, imports: [CommonModule,
1331
- SkyCodeModule,
1332
- SkyClipboardModule,
1333
- SkyDescriptionListModule,
1334
- SkyHelpInlineModule,
1335
- SkyPopoverModule] }); }
1336
- }
1337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsModuleInfoModule, decorators: [{
1338
- type: NgModule,
1339
- args: [{
1340
- imports: [
1341
- CommonModule,
1342
- SkyCodeModule,
1343
- SkyClipboardModule,
1344
- SkyDescriptionListModule,
1345
- SkyHelpInlineModule,
1346
- SkyPopoverModule,
1347
- ],
1348
- declarations: [SkyDocsModuleInfoComponent],
1349
- exports: [SkyDocsModuleInfoComponent],
1350
- }]
1351
- }] });
1352
-
1353
- class SkyDocsSafeHtmlComponent {
1354
- constructor(domSanitizer) {
1355
- this.domSanitizer = domSanitizer;
1356
- }
1357
- getTrustedHtml(content) {
1358
- return this.domSanitizer.bypassSecurityTrustHtml(content);
1359
- }
1360
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSafeHtmlComponent, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1361
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsSafeHtmlComponent, isStandalone: false, selector: "sky-docs-safe-html", inputs: { innerHtml: "innerHtml" }, ngImport: i0, template: "<div class=\"sky-docs-safe-html\" [innerHtml]=\"getTrustedHtml(innerHtml)\"></div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1362
- }
1363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSafeHtmlComponent, decorators: [{
1364
- type: Component,
1365
- args: [{ selector: 'sky-docs-safe-html', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-safe-html\" [innerHtml]=\"getTrustedHtml(innerHtml)\"></div>\n" }]
1366
- }], ctorParameters: () => [{ type: i1$4.DomSanitizer }], propDecorators: { innerHtml: [{
1367
- type: Input
1368
- }] } });
1369
-
1370
- class SkyDocsSafeHtmlModule {
1371
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSafeHtmlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1372
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSafeHtmlModule, declarations: [SkyDocsSafeHtmlComponent], imports: [CommonModule], exports: [SkyDocsSafeHtmlComponent] }); }
1373
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSafeHtmlModule, imports: [CommonModule] }); }
1374
- }
1375
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSafeHtmlModule, decorators: [{
1376
- type: NgModule,
1377
- args: [{
1378
- declarations: [SkyDocsSafeHtmlComponent],
1379
- imports: [CommonModule],
1380
- exports: [SkyDocsSafeHtmlComponent],
1381
- }]
1382
- }] });
1383
-
1384
- /**
1385
- * Formats type definitions into HTML-compatible strings.
1386
- */
1387
- class SkyDocsTypeDefinitionsFormatService {
1388
- /**
1389
- * Returns an HTML-formatted representation of the provided interface config.
1390
- */
1391
- getInterfaceSourceCode(definition) {
1392
- const typeParameters = this.getFormattedTypeParameters(definition.typeParameters);
1393
- const config = {
1394
- escapeSpecialCharacters: false,
1395
- };
1396
- let signature = `interface ${definition.name}${typeParameters} {`;
1397
- signature += this.getFormattedInterfaceProperties(definition, config);
1398
- signature += '\n}';
1399
- return signature;
1400
- }
1401
- /**
1402
- * Returns an HTML-formatted representation of the provided method config.
1403
- */
1404
- getMethodSourceCode(definition) {
1405
- const config = {
1406
- escapeSpecialCharacters: false,
1407
- };
1408
- const typeArguments = this.getFormattedTypeArguments(definition.type, config);
1409
- const callSignature = definition.type.callSignature;
1410
- const returnType = this.getFormattedType(callSignature.returnType, config);
1411
- let params = '';
1412
- if (callSignature.parameters) {
1413
- params += callSignature.parameters
1414
- .map((p) => this.getFormattedParameterName(p, config))
1415
- .join(', ');
1416
- }
1417
- return `public ${definition.isStatic ? 'static ' : ''}${definition.name}${typeArguments}(${params}): ${returnType}`;
1418
- }
1419
- /**
1420
- * Returns an HTML-formatted representation of the provided type alias config.
1421
- */
1422
- getTypeAliasSourceCode(definition) {
1423
- const config = {
1424
- escapeSpecialCharacters: false,
1425
- };
1426
- const typeParameters = this.getFormattedTypeParameters(definition.typeParameters);
1427
- let signature = `type ${definition.name}${typeParameters} = `;
1428
- if (definition.type.callSignature) {
1429
- signature += this.getFormattedCallSignature(definition.type.callSignature, {
1430
- escapeSpecialCharacters: false,
1431
- });
1432
- }
1433
- else if (definition.type.indexSignature) {
1434
- const indexSignature = definition.type.indexSignature;
1435
- const type = this.getFormattedType(indexSignature.type, {
1436
- escapeSpecialCharacters: false,
1437
- });
1438
- signature += `{\n [${indexSignature.key.name}: string]: ${type};\n}`;
1439
- }
1440
- else {
1441
- /*istanbul ignore else */
1442
- if (definition.type.type === 'union') {
1443
- signature += this.getFormattedUnion(definition.type, config);
1444
- }
1445
- }
1446
- return signature;
1447
- }
1448
- /**
1449
- * Returns a formatted string representing a parameter's name and value. For example: `'foo: string'`.
1450
- */
1451
- getFormattedParameterName(parameter, config = {
1452
- escapeSpecialCharacters: true,
1453
- }) {
1454
- const optionalMarker = parameter.isOptional ? '?' : '';
1455
- const parameterType = this.getFormattedType(parameter.type, config);
1456
- let signature = `${parameter.name}${optionalMarker}: ${parameterType}`;
1457
- if (config.escapeSpecialCharacters) {
1458
- signature = this.escapeSpecialCharacters(signature);
1459
- }
1460
- return signature;
1461
- }
1462
- /**
1463
- * Returns a formatted string representing a property (or method's) name and value. For example: `'public foo: string'`.
1464
- */
1465
- getFormattedPropertyName(property) {
1466
- let signature = '';
1467
- const indexSignature = property.type?.indexSignature;
1468
- let name;
1469
- if (indexSignature) {
1470
- name = `[${indexSignature.key.name}: ${this.getFormattedType(indexSignature.key.type)}]`;
1471
- }
1472
- else {
1473
- name = property.name;
1474
- }
1475
- if (property.deprecationWarning !== undefined) {
1476
- signature += `<strike>${name}</strike>`;
1477
- }
1478
- else {
1479
- signature += name;
1480
- }
1481
- if (property.decorator?.name !== 'Output' &&
1482
- property.isOptional &&
1483
- !indexSignature) {
1484
- signature += '?';
1485
- }
1486
- if (indexSignature) {
1487
- signature += `: ${this.getFormattedType(indexSignature.type)}`;
1488
- }
1489
- else if (property.type) {
1490
- signature += `: ${this.getFormattedType(property.type)}`;
1491
- }
1492
- return signature;
1493
- }
1494
- /**
1495
- * Returns an HTML-formatted method name to be used on the properties table.
1496
- */
1497
- getFormattedMethodName(definition) {
1498
- let formatted = '';
1499
- if (definition.isStatic) {
1500
- formatted += `${definition.parentName}.`;
1501
- }
1502
- if (definition.deprecationWarning !== undefined) {
1503
- formatted = `<strike>${formatted}${definition.name}</strike>`;
1504
- }
1505
- else {
1506
- formatted += definition.name;
1507
- }
1508
- return `${formatted}()`;
1509
- }
1510
- /**
1511
- * Returns a formatted string representing the provided type.
1512
- */
1513
- getFormattedType(type, config = {
1514
- escapeSpecialCharacters: true,
1515
- }) {
1516
- let formatted = 'any';
1517
- if (!type) {
1518
- return formatted;
1519
- }
1520
- if (type.name === 'InputSignal' &&
1521
- type.package === '@angular/core' &&
1522
- type.typeArguments?.length) {
1523
- type = type.typeArguments[0];
1524
- }
1525
- if (type.callSignature) {
1526
- let formattedSignature = this.getFormattedCallSignature(type.callSignature, config);
1527
- if (type.type === 'array') {
1528
- formattedSignature = `(${formattedSignature})[]`;
1529
- }
1530
- return formattedSignature;
1531
- }
1532
- if (type.unionTypes) {
1533
- return this.getFormattedUnion(type, config);
1534
- }
1535
- if (type.name !== null && type.name !== undefined) {
1536
- formatted = `${type.name}`;
1537
- }
1538
- if (type.typeArguments) {
1539
- formatted += this.getFormattedTypeArguments(type, config);
1540
- }
1541
- if (type.type === 'array') {
1542
- formatted += '[]';
1543
- }
1544
- if (type.type === 'literal' && typeof type.name === 'string') {
1545
- formatted = `'${formatted}'`;
1546
- }
1547
- if (type.typeLiteral) {
1548
- const formattedTypeLiteral = this.getFormattedInterfaceProperties(type.typeLiteral, config)
1549
- .replace(/\n/g, ' ')
1550
- .replace(/\s\s+/g, ' ');
1551
- formatted = `{${formattedTypeLiteral} }`;
1552
- }
1553
- if (config.escapeSpecialCharacters) {
1554
- return this.escapeSpecialCharacters(formatted);
1555
- }
1556
- return formatted;
1557
- }
1558
- escapeSpecialCharacters(value) {
1559
- return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
1560
- }
1561
- getFormattedCallSignature(callSignature, config) {
1562
- const returnType = this.getFormattedType(callSignature.returnType, config);
1563
- if (!callSignature.parameters) {
1564
- return `() => ${returnType}`;
1565
- }
1566
- const formattedParams = callSignature.parameters
1567
- .map((p) => this.getFormattedParameterName(p, config))
1568
- .join(', ');
1569
- return `(${formattedParams}) => ${returnType}`;
1570
- }
1571
- getFormattedUnion(typeConfig, config) {
1572
- return typeConfig.unionTypes
1573
- .map((t) => {
1574
- return this.getFormattedType(t, config);
1575
- })
1576
- .join(' | ');
1577
- }
1578
- /**
1579
- * Parse any type arguments e.g. `<T, F>`.
1580
- */
1581
- getFormattedTypeArguments(typeConfig, config) {
1582
- if (!typeConfig.typeArguments) {
1583
- return '';
1584
- }
1585
- const typeArguments = typeConfig.typeArguments.map((typeArgument) => {
1586
- if (typeArgument.type === 'array') {
1587
- return `${typeArgument.name}[]`;
1588
- }
1589
- if (typeArgument.unionTypes) {
1590
- return this.getFormattedUnion(typeArgument, config);
1591
- }
1592
- return typeArgument.name;
1593
- });
1594
- return `<${typeArguments.join(', ')}>`;
1595
- }
1596
- getFormattedTypeParameters(typeParameters) {
1597
- if (!typeParameters) {
1598
- return '';
1599
- }
1600
- const formatted = typeParameters.map((typeParameter) => {
1601
- let result = typeParameter.name;
1602
- if (typeParameter.type && typeParameter.type.type === 'reference') {
1603
- result += ` extends ${typeParameter.type.name}`;
1604
- }
1605
- return result;
1606
- });
1607
- return `<${formatted.join(', ')}>`;
1608
- }
1609
- getFormattedInterfaceProperties(definition, config) {
1610
- let signature = '';
1611
- definition.properties.forEach((property) => {
1612
- const indexSignature = property.type.indexSignature;
1613
- const optionalIndicator = property.isOptional && !indexSignature ? '?' : '';
1614
- const propertyType = this.getFormattedType(property.type, config);
1615
- let name;
1616
- if (indexSignature) {
1617
- name = `[${indexSignature.key.name}: string]`;
1618
- }
1619
- else {
1620
- name = property.name;
1621
- }
1622
- signature += `\n ${name}${optionalIndicator}: ${propertyType};`;
1623
- });
1624
- return signature;
1625
- }
1626
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsFormatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1627
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsFormatService, providedIn: 'root' }); }
1628
- }
1629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsFormatService, decorators: [{
1630
- type: Injectable,
1631
- args: [{
1632
- providedIn: 'root',
1633
- }]
1634
- }] });
1635
-
1636
- class SkyDocsTypeDefinitionsProvider {
1637
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1638
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsProvider }); }
1639
- }
1640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsProvider, decorators: [{
1641
- type: Injectable
1642
- }] });
1643
-
1644
- /**
1645
- * Finds any type name that is NOT surrounded by alpha-numeric (and '>', '<', '.') characters.
1646
- * (This is to avoid matching types that share similar words, such as `Foo` and `FooUser`.)
1647
- * Notes:
1648
- * - If the type name is surrounded by angle brackets, then it has already been processed as a link.
1649
- * - If the type name starts with a period '.', then it is a sub property of an enumeration, etc. and should not be processed as a link.
1650
- * - If the type name ends with a period followed immediately by any word character, then it is a method or property (Foo.bar).
1651
- * Only the type name should be processed as a link.
1652
- */
1653
- function createRegex(keyword) {
1654
- return new RegExp(`(^|[^a-zA-Z0-9>.[/])(${keyword})(\\.\\w+)?(?=[^a-zA-Z0-9<]+|$)`, 'g');
1655
- }
1656
- class SkyDocsAnchorLinkService {
1657
- constructor(typeDefinitionsProvider) {
1658
- this.anchorIds = typeDefinitionsProvider.anchorIds;
1659
- }
1660
- /**
1661
- * Formats known type names with `<code>` tags and wraps them with anchor tags, linking to the appropriate type.
1662
- * If the content is already contained within a `<code>` tag, set `codeFormat = false` to prevent extra `<code>` tags from being added.
1663
- */
1664
- applyTypeAnchorLinks(content, config) {
1665
- if (!this.anchorIds || !content) {
1666
- return content;
1667
- }
1668
- // Set default for code formatting.
1669
- if (!config) {
1670
- config = {
1671
- applyCodeFormatting: true,
1672
- };
1673
- }
1674
- content = this.removeDoubleSquareBrackets(content);
1675
- Object.keys(this.anchorIds).forEach((typeName) => {
1676
- content = this.removeBackticks(typeName, content);
1677
- let matches;
1678
- let counter = 0;
1679
- const max = 100;
1680
- const regex = createRegex(typeName);
1681
- do {
1682
- matches = regex.exec(content);
1683
- if (matches) {
1684
- const anchorId = this.anchorIds[typeName];
1685
- const anchorHtml = '<a class="sky-docs-anchor-link" href="#' +
1686
- anchorId +
1687
- '">' +
1688
- typeName +
1689
- '</a>';
1690
- // Group 3 of the regex pattern captures type properties like Foo.bar.
1691
- // If these are found, they do not need hyperlinked, but add them to the encapsulating code tag.
1692
- const typeProperty = matches[3] ? matches[3] : '';
1693
- let replacement;
1694
- if (config.applyCodeFormatting) {
1695
- replacement = '<code>' + anchorHtml + typeProperty + '</code>';
1696
- }
1697
- else {
1698
- replacement = anchorHtml + typeProperty;
1699
- }
1700
- // Regex Positive lookbehinds aren't supported in IE11 and Safari, so we have to check if the match has a starting extra character
1701
- // (usually whitespace " Foo"), and then modify the starting/ending indexes to account for the extra character.
1702
- const isMatchExact = matches[0].substr(0, typeName.length) === typeName;
1703
- const startIndex = isMatchExact ? matches.index : matches.index + 1;
1704
- const endIndex = isMatchExact
1705
- ? matches[0].length
1706
- : matches[0].length - 1;
1707
- let contentWithCodeTags = content.substr(0, startIndex) +
1708
- replacement +
1709
- content.substr(startIndex + endIndex);
1710
- content = contentWithCodeTags;
1711
- counter++;
1712
- }
1713
- } while (matches !== null && counter < max);
1714
- });
1715
- return content;
1716
- }
1717
- /**
1718
- * For backwards compatibility, we need to remove any double brackets wrapped around types.
1719
- * e.g., `[[SampleType]]`
1720
- */
1721
- removeDoubleSquareBrackets(content) {
1722
- const match = content.match(/\[\[.*\]\]/);
1723
- if (match) {
1724
- const typeName = match[0].replace(/\[\[/g, '').replace(/\]\]/g, '');
1725
- content = content.replace(match[0], typeName);
1726
- }
1727
- return content;
1728
- }
1729
- /**
1730
- * Removes backtick characters around known types to prevent
1731
- * the markdown pipe from wrapping them with code elements.
1732
- */
1733
- removeBackticks(typeName, content) {
1734
- const regexp = new RegExp(`\`(${typeName})\``, 'g');
1735
- return content.replace(regexp, typeName);
1736
- }
1737
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnchorLinkService, deps: [{ token: SkyDocsTypeDefinitionsProvider }], target: i0.ɵɵFactoryTarget.Injectable }); }
1738
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnchorLinkService, providedIn: 'any' }); }
1739
- }
1740
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsAnchorLinkService, decorators: [{
1741
- type: Injectable,
1742
- args: [{
1743
- providedIn: 'any',
1744
- }]
1745
- }], ctorParameters: () => [{ type: SkyDocsTypeDefinitionsProvider }] });
1746
-
1747
- /**
1748
- * Adds same-page anchor tags around known TypeScript types.
1749
- */
1750
- class SkyDocsTypeAnchorLinksPipe {
1751
- constructor(anchorLinkService) {
1752
- this.anchorLinkService = anchorLinkService;
1753
- }
1754
- transform(value, formatType) {
1755
- const anchorLinkConfig = {
1756
- applyCodeFormatting: formatType !== 'no-code-tags',
1757
- };
1758
- return this.anchorLinkService.applyTypeAnchorLinks(value, anchorLinkConfig);
1759
- }
1760
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeAnchorLinksPipe, deps: [{ token: SkyDocsAnchorLinkService }], target: i0.ɵɵFactoryTarget.Pipe }); }
1761
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeAnchorLinksPipe, isStandalone: false, name: "skyDocsTypeAnchorLinks" }); }
1762
- }
1763
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeAnchorLinksPipe, decorators: [{
1764
- type: Pipe,
1765
- args: [{
1766
- name: 'skyDocsTypeAnchorLinks',
1767
- pure: true,
1768
- standalone: false,
1769
- }]
1770
- }], ctorParameters: () => [{ type: SkyDocsAnchorLinkService }] });
1771
-
1772
- /**
1773
- * "Call signatures" include methods, functions, and inline arrow functions.
1774
- * This component is used to document both the return type and parameters of a given call signature.
1775
- */
1776
- class SkyDocsCallSignatureDefinitionComponent {
1777
- set config(value) {
1778
- this._config = value;
1779
- this.updateView();
1780
- }
1781
- get config() {
1782
- return this._config;
1783
- }
1784
- constructor(formatService) {
1785
- this.formatService = formatService;
1786
- }
1787
- updateView() {
1788
- this.parameters = this.config?.parameters?.map((p) => {
1789
- const vm = {
1790
- defaultValue: p.defaultValue,
1791
- description: p.description,
1792
- formattedName: this.formatService.getFormattedParameterName(p),
1793
- isOptional: p.isOptional,
1794
- };
1795
- return vm;
1796
- });
1797
- this.returnTypeFormatted = this.formatService.getFormattedType(this.config?.returnType);
1798
- }
1799
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCallSignatureDefinitionComponent, deps: [{ token: SkyDocsTypeDefinitionsFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
1800
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsCallSignatureDefinitionComponent, isStandalone: false, selector: "sky-docs-call-signature-definition", inputs: { config: "config" }, ngImport: i0, template: "<div *ngIf=\"config\" class=\"sky-docs-call-signature-definition\">\n <ng-container *ngIf=\"parameters\">\n <h4 class=\"sky-docs-call-signature-definition-heading\">Parameters</h4>\n <table class=\"sky-docs-parameter-definitions\">\n <tbody>\n <tr *ngFor=\"let parameter of parameters\">\n <th class=\"sky-docs-parameter-definition-header\">\n <sky-code\n ><span\n [innerHtml]=\"\n parameter.formattedName\n | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n </th>\n <td class=\"sky-docs-parameter-definition-body\">\n <div\n *ngIf=\"parameter.description\"\n class=\"sky-docs-parameter-definition-description\"\n >\n <sky-docs-safe-html\n *ngIf=\"parameter.description\"\n [innerHtml]=\"\n parameter.description\n | skyDocsTypeAnchorLinks\n | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n </div>\n <div\n *ngIf=\"parameter.isOptional\"\n class=\"sky-docs-parameter-definition-label-optional\"\n >\n Optional.\n <ng-container *ngIf=\"parameter.defaultValue\">\n Default is\n <sky-code\n ><span\n [innerHtml]=\"\n parameter.defaultValue\n | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span></sky-code\n >.\n </ng-container>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <ng-container *ngIf=\"returnTypeFormatted\">\n <h4 class=\"sky-docs-call-signature-definition-heading\">Returns</h4>\n\n <div class=\"sky-docs-call-signature-definition-return-type\">\n <sky-code\n ><span\n [innerHtml]=\"\n returnTypeFormatted | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n </div>\n </ng-container>\n</div>\n", styles: [".sky-docs-call-signature-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-parameter-definitions{width:auto;max-width:100%;border-spacing:0;border-collapse:collapse;background-color:#fff;margin-left:15px}.sky-docs-parameter-definitions th,.sky-docs-parameter-definitions td{padding:10px;border-bottom:1px dotted #cdcfd2;vertical-align:top;text-align:left}.sky-docs-parameter-definitions th ::ng-deep:first-child .sky-code,.sky-docs-parameter-definitions td ::ng-deep:first-child .sky-code{display:inline-block;white-space:normal}.sky-docs-parameter-definitions th ::ng-deep p,.sky-docs-parameter-definitions td ::ng-deep p{margin:10px 0}.sky-docs-parameter-definitions th ::ng-deep p:first-child,.sky-docs-parameter-definitions td ::ng-deep p:first-child{margin-top:0!important}.sky-docs-parameter-definitions th ::ng-deep p:last-child,.sky-docs-parameter-definitions td ::ng-deep p:last-child{margin-bottom:0!important}.sky-docs-parameter-definitions th{width:25%;padding-left:0}.sky-docs-parameter-definitions tr:first-child>th,.sky-docs-parameter-definitions tr:first-child>td{padding-top:0}.sky-docs-parameter-definitions tr:last-child>th,.sky-docs-parameter-definitions tr:last-child>td{border-bottom:0;padding-bottom:0}.sky-docs-parameter-definition-header{width:1%;white-space:nowrap;font-weight:400}.sky-docs-parameter-definition-label-optional{color:#686c73}.sky-docs-call-signature-definition-return-type{margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.λ1, selector: "sky-code" }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1801
- }
1802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsCallSignatureDefinitionComponent, decorators: [{
1803
- type: Component,
1804
- args: [{ selector: 'sky-docs-call-signature-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div *ngIf=\"config\" class=\"sky-docs-call-signature-definition\">\n <ng-container *ngIf=\"parameters\">\n <h4 class=\"sky-docs-call-signature-definition-heading\">Parameters</h4>\n <table class=\"sky-docs-parameter-definitions\">\n <tbody>\n <tr *ngFor=\"let parameter of parameters\">\n <th class=\"sky-docs-parameter-definition-header\">\n <sky-code\n ><span\n [innerHtml]=\"\n parameter.formattedName\n | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n </th>\n <td class=\"sky-docs-parameter-definition-body\">\n <div\n *ngIf=\"parameter.description\"\n class=\"sky-docs-parameter-definition-description\"\n >\n <sky-docs-safe-html\n *ngIf=\"parameter.description\"\n [innerHtml]=\"\n parameter.description\n | skyDocsTypeAnchorLinks\n | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n </div>\n <div\n *ngIf=\"parameter.isOptional\"\n class=\"sky-docs-parameter-definition-label-optional\"\n >\n Optional.\n <ng-container *ngIf=\"parameter.defaultValue\">\n Default is\n <sky-code\n ><span\n [innerHtml]=\"\n parameter.defaultValue\n | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span></sky-code\n >.\n </ng-container>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <ng-container *ngIf=\"returnTypeFormatted\">\n <h4 class=\"sky-docs-call-signature-definition-heading\">Returns</h4>\n\n <div class=\"sky-docs-call-signature-definition-return-type\">\n <sky-code\n ><span\n [innerHtml]=\"\n returnTypeFormatted | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n </div>\n </ng-container>\n</div>\n", styles: [".sky-docs-call-signature-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-parameter-definitions{width:auto;max-width:100%;border-spacing:0;border-collapse:collapse;background-color:#fff;margin-left:15px}.sky-docs-parameter-definitions th,.sky-docs-parameter-definitions td{padding:10px;border-bottom:1px dotted #cdcfd2;vertical-align:top;text-align:left}.sky-docs-parameter-definitions th ::ng-deep:first-child .sky-code,.sky-docs-parameter-definitions td ::ng-deep:first-child .sky-code{display:inline-block;white-space:normal}.sky-docs-parameter-definitions th ::ng-deep p,.sky-docs-parameter-definitions td ::ng-deep p{margin:10px 0}.sky-docs-parameter-definitions th ::ng-deep p:first-child,.sky-docs-parameter-definitions td ::ng-deep p:first-child{margin-top:0!important}.sky-docs-parameter-definitions th ::ng-deep p:last-child,.sky-docs-parameter-definitions td ::ng-deep p:last-child{margin-bottom:0!important}.sky-docs-parameter-definitions th{width:25%;padding-left:0}.sky-docs-parameter-definitions tr:first-child>th,.sky-docs-parameter-definitions tr:first-child>td{padding-top:0}.sky-docs-parameter-definitions tr:last-child>th,.sky-docs-parameter-definitions tr:last-child>td{border-bottom:0;padding-bottom:0}.sky-docs-parameter-definition-header{width:1%;white-space:nowrap;font-weight:400}.sky-docs-parameter-definition-label-optional{color:#686c73}.sky-docs-call-signature-definition-return-type{margin-left:15px}\n"] }]
1805
- }], ctorParameters: () => [{ type: SkyDocsTypeDefinitionsFormatService }], propDecorators: { config: [{
1806
- type: Input
1807
- }] } });
1808
-
1809
- class SkyDocsPreviewIndicatorComponent {
1810
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsPreviewIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1811
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsPreviewIndicatorComponent, isStandalone: true, selector: "sky-docs-preview-feature-indicator", ngImport: i0, template: "<sky-status-indicator indicatorType=\"warning\" descriptionType=\"warning\"\n >Preview. This feature may not be fully represented in the design\n documentation, the demo, or code examples.</sky-status-indicator\n>\n", dependencies: [{ kind: "ngmodule", type: SkyStatusIndicatorModule }, { kind: "component", type: i1$5.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1812
- }
1813
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsPreviewIndicatorComponent, decorators: [{
1814
- type: Component,
1815
- args: [{ selector: 'sky-docs-preview-feature-indicator', changeDetection: ChangeDetectionStrategy.OnPush, imports: [SkyStatusIndicatorModule], template: "<sky-status-indicator indicatorType=\"warning\" descriptionType=\"warning\"\n >Preview. This feature may not be fully represented in the design\n documentation, the demo, or code examples.</sky-status-indicator\n>\n" }]
1816
- }] });
1817
-
1818
- class SkyDocsPropertyDefinitionsComponent {
1819
- set config(value) {
1820
- this._config = value;
1821
- this.updateView();
1822
- }
1823
- get config() {
1824
- return this._config || {};
1825
- }
1826
- constructor(changeDetector, formatService, mediaQueryService) {
1827
- this.changeDetector = changeDetector;
1828
- this.formatService = formatService;
1829
- this.mediaQueryService = mediaQueryService;
1830
- this.propertyType = 'Property';
1831
- this.showOptionalStatus = true;
1832
- this.deprecationWarningPrefix = `<span class="sky-text-warning"></span>**Deprecated.** `;
1833
- this.isMobile = true;
1834
- this.properties = [];
1835
- }
1836
- ngOnInit() {
1837
- this.mediaQueryService.subscribe((breakpoints) => {
1838
- this.isMobile = breakpoints <= SkyMediaBreakpoints.sm;
1839
- this.changeDetector.markForCheck();
1840
- });
1841
- }
1842
- updateView() {
1843
- this.properties = this.config?.properties?.map((property) => {
1844
- const vm = {
1845
- callSignature: property.type?.callSignature,
1846
- defaultValue: this.formatService.escapeSpecialCharacters(property.defaultValue || ''),
1847
- deprecationWarning: property.deprecationWarning,
1848
- description: property.description,
1849
- formattedName: this.formatService.getFormattedPropertyName(property),
1850
- isOutput: property.decorator?.name === 'Output',
1851
- isOptional: property.isOptional,
1852
- isPreview: property.isPreview,
1853
- };
1854
- return vm;
1855
- });
1856
- }
1857
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsPropertyDefinitionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDocsTypeDefinitionsFormatService }, { token: i2.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Component }); }
1858
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsPropertyDefinitionsComponent, isStandalone: false, selector: "sky-docs-property-definitions", inputs: { config: "config", propertyType: "propertyType", showOptionalStatus: "showOptionalStatus" }, ngImport: i0, template: "<div *ngIf=\"properties\" class=\"sky-docs-property-definitions\">\n <table *ngIf=\"!isMobile; else mobileTemplate\" class=\"sky-docs-table\">\n <thead>\n <tr class=\"sky-docs-table-row\">\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-name\"\n >\n {{ propertyType }}\n </th>\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-description\"\n >\n Description\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let property of properties\" class=\"sky-docs-table-row\">\n <td\n class=\"sky-docs-table-cell sky-docs-property-definitions-table-cell-name\"\n >\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </td>\n <td\n class=\"sky-docs-table-cell sky-docs-property-definitions-table-cell-description\"\n >\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n\n <ng-template #mobileTemplate>\n <dl class=\"sky-docs-property-definition-list\">\n <div\n *ngFor=\"let property of properties\"\n class=\"sky-docs-property-definition-list-item\"\n >\n <dt class=\"sky-field-label\">{{ propertyType }}</dt>\n <dd class=\"sky-docs-property-definitions-dd-name\">\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </dd>\n <dt class=\"sky-field-label\">Description</dt>\n <dd class=\"sky-docs-property-definitions-dd-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </dd>\n </div>\n </dl>\n </ng-template>\n</div>\n\n<ng-template let-property #nameTemplate>\n <sky-code\n ><span\n [innerHtml]=\"\n property.formattedName | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n</ng-template>\n\n<ng-template let-property #descriptionTemplate>\n <div\n *ngIf=\"!property.isOutput && !property.isOptional && showOptionalStatus\"\n class=\"sky-docs-property-definition-label\"\n >\n <sky-status-indicator indicatorType=\"danger\" descriptionType=\"danger\"\n >Required.</sky-status-indicator\n >\n </div>\n <div\n *ngIf=\"property.isPreview\"\n class=\"sky-docs-property-definition-preview-warning sky-docs-property-definition-label\"\n >\n <sky-docs-preview-feature-indicator></sky-docs-preview-feature-indicator>\n </div>\n\n <sky-docs-safe-html\n *ngIf=\"property.deprecationWarning !== undefined\"\n class=\"sky-docs-property-definitions-deprecation-warning\"\n [innerHtml]=\"\n deprecationWarningPrefix + property.deprecationWarning\n | skyDocsTypeAnchorLinks\n | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n\n <sky-docs-safe-html\n *ngIf=\"property.description\"\n class=\"sky-docs-property-definitions-description\"\n [innerHtml]=\"\n property.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n\n <div\n *ngIf=\"!property.isOutput && property.isOptional && showOptionalStatus\"\n class=\"sky-docs-property-definition-label sky-docs-property-definition-label-optional\"\n >\n Optional.\n <ng-container *ngIf=\"property.defaultValue\"\n >Default is\n <sky-code\n ><span\n [innerHtml]=\"\n property.defaultValue | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span></sky-code\n >.</ng-container\n >\n </div>\n\n <sky-docs-call-signature-definition\n *ngIf=\"property.callSignature\"\n [config]=\"property.callSignature\"\n ></sky-docs-call-signature-definition>\n</ng-template>\n", styles: [":host{margin:15px 0}.sky-docs-property-definitions{width:100%;max-width:100%}.sky-docs-property-definitions th{position:sticky;top:var(--sky-viewport-top, 0);z-index:1}.sky-docs-property-definitions-table-cell-description{word-break:break-word}.sky-docs-table-column-header-name{width:25%}.sky-docs-property-definition-label-optional{color:#686c73;margin-bottom:10px}.sky-docs-property-definition-list{margin:0}.sky-docs-property-definition-list-item{border-bottom:1px dotted #cdcfd2;margin:10px 0}.sky-docs-property-definition-list-item .sky-field-label{margin:10px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ1, selector: "sky-code" }, { kind: "component", type: SkyDocsPreviewIndicatorComponent, selector: "sky-docs-preview-feature-indicator" }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: i1$5.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }, { kind: "component", type: SkyDocsCallSignatureDefinitionComponent, selector: "sky-docs-call-signature-definition", inputs: ["config"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1859
- }
1860
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsPropertyDefinitionsComponent, decorators: [{
1861
- type: Component,
1862
- args: [{ selector: 'sky-docs-property-definitions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div *ngIf=\"properties\" class=\"sky-docs-property-definitions\">\n <table *ngIf=\"!isMobile; else mobileTemplate\" class=\"sky-docs-table\">\n <thead>\n <tr class=\"sky-docs-table-row\">\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-name\"\n >\n {{ propertyType }}\n </th>\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-description\"\n >\n Description\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let property of properties\" class=\"sky-docs-table-row\">\n <td\n class=\"sky-docs-table-cell sky-docs-property-definitions-table-cell-name\"\n >\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </td>\n <td\n class=\"sky-docs-table-cell sky-docs-property-definitions-table-cell-description\"\n >\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n\n <ng-template #mobileTemplate>\n <dl class=\"sky-docs-property-definition-list\">\n <div\n *ngFor=\"let property of properties\"\n class=\"sky-docs-property-definition-list-item\"\n >\n <dt class=\"sky-field-label\">{{ propertyType }}</dt>\n <dd class=\"sky-docs-property-definitions-dd-name\">\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </dd>\n <dt class=\"sky-field-label\">Description</dt>\n <dd class=\"sky-docs-property-definitions-dd-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: property }\"\n ></ng-template>\n </dd>\n </div>\n </dl>\n </ng-template>\n</div>\n\n<ng-template let-property #nameTemplate>\n <sky-code\n ><span\n [innerHtml]=\"\n property.formattedName | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n</ng-template>\n\n<ng-template let-property #descriptionTemplate>\n <div\n *ngIf=\"!property.isOutput && !property.isOptional && showOptionalStatus\"\n class=\"sky-docs-property-definition-label\"\n >\n <sky-status-indicator indicatorType=\"danger\" descriptionType=\"danger\"\n >Required.</sky-status-indicator\n >\n </div>\n <div\n *ngIf=\"property.isPreview\"\n class=\"sky-docs-property-definition-preview-warning sky-docs-property-definition-label\"\n >\n <sky-docs-preview-feature-indicator></sky-docs-preview-feature-indicator>\n </div>\n\n <sky-docs-safe-html\n *ngIf=\"property.deprecationWarning !== undefined\"\n class=\"sky-docs-property-definitions-deprecation-warning\"\n [innerHtml]=\"\n deprecationWarningPrefix + property.deprecationWarning\n | skyDocsTypeAnchorLinks\n | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n\n <sky-docs-safe-html\n *ngIf=\"property.description\"\n class=\"sky-docs-property-definitions-description\"\n [innerHtml]=\"\n property.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n\n <div\n *ngIf=\"!property.isOutput && property.isOptional && showOptionalStatus\"\n class=\"sky-docs-property-definition-label sky-docs-property-definition-label-optional\"\n >\n Optional.\n <ng-container *ngIf=\"property.defaultValue\"\n >Default is\n <sky-code\n ><span\n [innerHtml]=\"\n property.defaultValue | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span></sky-code\n >.</ng-container\n >\n </div>\n\n <sky-docs-call-signature-definition\n *ngIf=\"property.callSignature\"\n [config]=\"property.callSignature\"\n ></sky-docs-call-signature-definition>\n</ng-template>\n", styles: [":host{margin:15px 0}.sky-docs-property-definitions{width:100%;max-width:100%}.sky-docs-property-definitions th{position:sticky;top:var(--sky-viewport-top, 0);z-index:1}.sky-docs-property-definitions-table-cell-description{word-break:break-word}.sky-docs-table-column-header-name{width:25%}.sky-docs-property-definition-label-optional{color:#686c73;margin-bottom:10px}.sky-docs-property-definition-list{margin:0}.sky-docs-property-definition-list-item{border-bottom:1px dotted #cdcfd2;margin:10px 0}.sky-docs-property-definition-list-item .sky-field-label{margin:10px 0}\n"] }]
1863
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: SkyDocsTypeDefinitionsFormatService }, { type: i2.SkyMediaQueryService }], propDecorators: { config: [{
1864
- type: Input
1865
- }], propertyType: [{
1866
- type: Input
1867
- }], showOptionalStatus: [{
1868
- type: Input
1869
- }] } });
1870
-
1871
- class SkyDocsDirectiveDefinitionComponent {
1872
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDirectiveDefinitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1873
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDirectiveDefinitionComponent, isStandalone: false, selector: "sky-docs-directive-definition", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-directive-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-directive-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <h4 class=\"sky-docs-directive-definition-h4\">Selector</h4>\n\n <p class=\"sky-docs-directive-selector\">\n <sky-code>{{ config.selector }}</sky-code>\n </p>\n\n <ng-container *ngIf=\"config.codeExample\">\n <h4 class=\"sky-docs-directive-definition-h4\">Example</h4>\n <sky-code-block\n class=\"sky-docs-code-block\"\n [code]=\"config.codeExample\"\n [hideHeader]=\"true\"\n [languageType]=\"config.codeExampleLanguage\"\n >\n </sky-code-block>\n </ng-container>\n\n <sky-docs-property-definitions\n *ngIf=\"config.inputProperties?.length\"\n propertyType=\"Input\"\n [config]=\"{\n properties: config.inputProperties,\n }\"\n ></sky-docs-property-definitions>\n\n <sky-docs-property-definitions\n *ngIf=\"config.eventProperties?.length\"\n propertyType=\"Event\"\n [config]=\"{\n properties: config.eventProperties,\n }\"\n ></sky-docs-property-definitions>\n</div>\n", styles: [".sky-docs-directive-definition-h4{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-directive-selector{margin-left:15px!important;margin-top:10px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: i4.λ1, selector: "sky-code" }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsPropertyDefinitionsComponent, selector: "sky-docs-property-definitions", inputs: ["config", "propertyType", "showOptionalStatus"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1874
- }
1875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDirectiveDefinitionComponent, decorators: [{
1876
- type: Component,
1877
- args: [{ selector: 'sky-docs-directive-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-directive-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-directive-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <h4 class=\"sky-docs-directive-definition-h4\">Selector</h4>\n\n <p class=\"sky-docs-directive-selector\">\n <sky-code>{{ config.selector }}</sky-code>\n </p>\n\n <ng-container *ngIf=\"config.codeExample\">\n <h4 class=\"sky-docs-directive-definition-h4\">Example</h4>\n <sky-code-block\n class=\"sky-docs-code-block\"\n [code]=\"config.codeExample\"\n [hideHeader]=\"true\"\n [languageType]=\"config.codeExampleLanguage\"\n >\n </sky-code-block>\n </ng-container>\n\n <sky-docs-property-definitions\n *ngIf=\"config.inputProperties?.length\"\n propertyType=\"Input\"\n [config]=\"{\n properties: config.inputProperties,\n }\"\n ></sky-docs-property-definitions>\n\n <sky-docs-property-definitions\n *ngIf=\"config.eventProperties?.length\"\n propertyType=\"Event\"\n [config]=\"{\n properties: config.eventProperties,\n }\"\n ></sky-docs-property-definitions>\n</div>\n", styles: [".sky-docs-directive-definition-h4{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-directive-selector{margin-left:15px!important;margin-top:10px!important}\n"] }]
1878
- }], propDecorators: { config: [{
1879
- type: Input
1880
- }] } });
1881
-
1882
- class SkyDocsEnumerationDefinitionComponent {
1883
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsEnumerationDefinitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1884
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsEnumerationDefinitionComponent, isStandalone: false, selector: "sky-docs-enumeration-definition", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-enumeration-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-enumeration-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-docs-property-definitions\n *ngIf=\"config.members\"\n propertyType=\"Member\"\n [config]=\"{ properties: config.members }\"\n [showOptionalStatus]=\"false\"\n ></sky-docs-property-definitions>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsPropertyDefinitionsComponent, selector: "sky-docs-property-definitions", inputs: ["config", "propertyType", "showOptionalStatus"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1885
- }
1886
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsEnumerationDefinitionComponent, decorators: [{
1887
- type: Component,
1888
- args: [{ selector: 'sky-docs-enumeration-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-enumeration-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-enumeration-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-docs-property-definitions\n *ngIf=\"config.members\"\n propertyType=\"Member\"\n [config]=\"{ properties: config.members }\"\n [showOptionalStatus]=\"false\"\n ></sky-docs-property-definitions>\n</div>\n" }]
1889
- }], propDecorators: { config: [{
1890
- type: Input
1891
- }] } });
1892
-
1893
- class SkyDocsInterfaceDefinitionComponent {
1894
- set config(value) {
1895
- this._config = value;
1896
- this.updateView();
1897
- }
1898
- get config() {
1899
- return this._config;
1900
- }
1901
- constructor(formatService) {
1902
- this.formatService = formatService;
1903
- }
1904
- updateView() {
1905
- this.sourceCode = this.config
1906
- ? this.formatService.getInterfaceSourceCode(this.config)
1907
- : undefined;
1908
- }
1909
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsInterfaceDefinitionComponent, deps: [{ token: SkyDocsTypeDefinitionsFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
1910
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsInterfaceDefinitionComponent, isStandalone: false, selector: "sky-docs-interface-definition", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-interface-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-interface-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-code-block\n *ngIf=\"sourceCode\"\n class=\"sky-docs-code-block\"\n languageType=\"typescript\"\n [code]=\"sourceCode\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n\n <sky-docs-property-definitions\n *ngIf=\"config.properties?.length\"\n [config]=\"{ properties: config.properties }\"\n [showOptionalStatus]=\"false\"\n ></sky-docs-property-definitions>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsPropertyDefinitionsComponent, selector: "sky-docs-property-definitions", inputs: ["config", "propertyType", "showOptionalStatus"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1911
- }
1912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsInterfaceDefinitionComponent, decorators: [{
1913
- type: Component,
1914
- args: [{ selector: 'sky-docs-interface-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-interface-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-interface-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-code-block\n *ngIf=\"sourceCode\"\n class=\"sky-docs-code-block\"\n languageType=\"typescript\"\n [code]=\"sourceCode\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n\n <sky-docs-property-definitions\n *ngIf=\"config.properties?.length\"\n [config]=\"{ properties: config.properties }\"\n [showOptionalStatus]=\"false\"\n ></sky-docs-property-definitions>\n</div>\n" }]
1915
- }], ctorParameters: () => [{ type: SkyDocsTypeDefinitionsFormatService }], propDecorators: { config: [{
1916
- type: Input
1917
- }] } });
1918
-
1919
- class SkyDocsMethodDefinitionsComponent {
1920
- set config(value) {
1921
- this.#_config = value;
1922
- this.updateView();
1923
- }
1924
- get config() {
1925
- return this.#_config || {};
1926
- }
1927
- #_config;
1928
- #changeDetector;
1929
- #formatService;
1930
- #mediaQueryService;
1931
- constructor(changeDetector, formatService, mediaQueryService) {
1932
- this.deprecationWarningPrefix = `<span class="sky-text-warning"></span>**Deprecated.** `;
1933
- this.isMobile = true;
1934
- this.#changeDetector = changeDetector;
1935
- this.#formatService = formatService;
1936
- this.#mediaQueryService = mediaQueryService;
1937
- }
1938
- ngOnInit() {
1939
- this.#mediaQueryService.subscribe((breakpoints) => {
1940
- this.isMobile = breakpoints <= SkyMediaBreakpoints.sm;
1941
- this.#changeDetector.markForCheck();
1942
- });
1943
- }
1944
- updateView() {
1945
- if (this.config.methods?.length > 0) {
1946
- this.methods = [];
1947
- this.staticMethods = [];
1948
- for (let method of this.config.methods) {
1949
- const vm = {
1950
- callSignature: method.type.callSignature,
1951
- codeExample: method.codeExample,
1952
- codeExampleLanguage: method.codeExampleLanguage,
1953
- deprecationWarning: method.deprecationWarning,
1954
- description: method.description,
1955
- formattedName: this.#formatService.getFormattedMethodName(method),
1956
- sourceCode: this.#formatService.getMethodSourceCode(method),
1957
- isStatic: method.isStatic,
1958
- isPreview: method.isPreview,
1959
- };
1960
- if (vm.isStatic) {
1961
- this.staticMethods.push(vm);
1962
- }
1963
- else {
1964
- this.methods.push(vm);
1965
- }
1966
- }
1967
- }
1968
- }
1969
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMethodDefinitionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDocsTypeDefinitionsFormatService }, { token: i2.SkyMediaQueryService }], target: i0.ɵɵFactoryTarget.Component }); }
1970
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsMethodDefinitionsComponent, isStandalone: false, selector: "sky-docs-method-definitions", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"methods?.length > 0 || staticMethods?.length > 0\"\n class=\"sky-docs-method-definitions\"\n>\n <ng-container *ngIf=\"!isMobile; else mobileTemplate\">\n <table\n class=\"sky-docs-table sky-docs-static-method-definitions\"\n *ngIf=\"staticMethods?.length > 0\"\n >\n <tr class=\"sky-docs-table-row\">\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-name\"\n >\n Static methods\n </th>\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-description\"\n >\n Description\n </th>\n </tr>\n <tr *ngFor=\"let method of staticMethods\" class=\"sky-docs-table-row\">\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-name\"\n >\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-description\"\n >\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n </tr>\n </table>\n <table\n class=\"sky-docs-table sky-docs-standard-method-definitions\"\n *ngIf=\"methods?.length > 0\"\n >\n <tr class=\"sky-docs-table-row\">\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-name\"\n >\n Methods\n </th>\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-description\"\n >\n Description\n </th>\n </tr>\n <tr *ngFor=\"let method of methods\" class=\"sky-docs-table-row\">\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-name\"\n >\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-description\"\n >\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n </tr>\n </table>\n </ng-container>\n\n <ng-template #mobileTemplate>\n <dl\n class=\"sky-docs-method-definition-list sky-docs-static-method-definitions\"\n *ngIf=\"staticMethods?.length > 0\"\n >\n <div\n *ngFor=\"let method of staticMethods\"\n class=\"sky-docs-method-definition-list-item\"\n >\n <dt class=\"sky-field-label\">Static methods</dt>\n <dd class=\"sky-docs-method-definitions-dd-name\">\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n <dt class=\"sky-field-label\">Description</dt>\n <dd class=\"sky-docs-method-definitions-dd-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n </div>\n </dl>\n <dl\n class=\"sky-docs-method-definition-list sky-docs-standard-method-definitions\"\n *ngIf=\"methods?.length > 0\"\n >\n <div\n *ngFor=\"let method of methods\"\n class=\"sky-docs-method-definition-list-item\"\n >\n <dt class=\"sky-field-label\">Methods</dt>\n <dd class=\"sky-docs-method-definitions-dd-name\">\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n <dt class=\"sky-field-label\">Description</dt>\n <dd class=\"sky-docs-method-definitions-dd-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n </div>\n </dl>\n </ng-template>\n</div>\n\n<ng-template let-method #nameTemplate>\n <sky-code\n ><span\n [innerHtml]=\"\n method.formattedName | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n</ng-template>\n\n<ng-template let-method #descriptionTemplate>\n <div\n *ngIf=\"method.isPreview\"\n class=\"sky-docs-method-definition-preview-warning sky-docs-property-definition-label\"\n >\n <sky-docs-preview-feature-indicator></sky-docs-preview-feature-indicator>\n </div>\n\n <sky-docs-safe-html\n *ngIf=\"method.deprecationWarning !== undefined\"\n class=\"sky-docs-method-definition-deprecation-warning\"\n [innerHtml]=\"\n deprecationWarningPrefix + method.deprecationWarning\n | skyDocsTypeAnchorLinks\n | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n\n <sky-docs-safe-html\n *ngIf=\"method.description\"\n class=\"sky-docs-method-definition-description\"\n [innerHtml]=\"method.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-code-block\n *ngIf=\"method.sourceCode\"\n class=\"sky-docs-code-block\"\n languageType=\"typescript\"\n [code]=\"method.sourceCode\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n\n <sky-docs-call-signature-definition\n *ngIf=\"method.callSignature\"\n [config]=\"method.callSignature\"\n ></sky-docs-call-signature-definition>\n\n <ng-container *ngIf=\"method.codeExample\">\n <h4 class=\"sky-docs-method-definition-heading\">Example</h4>\n <sky-code-block\n *ngIf=\"method.codeExample\"\n class=\"sky-docs-code-block\"\n languageType=\"method.codeExampleLanguage\"\n [code]=\"method.codeExample\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n </ng-container>\n</ng-template>\n", styles: [":host{margin:15px 0}.sky-docs-method-definitions{width:100%;max-width:100%;overflow:auto}.sky-docs-table-column-header-name{width:25%}.sky-docs-method-definition-label-optional{color:#686c73}.sky-docs-method-definition-list{margin:0}.sky-docs-method-definition-list-item{border-bottom:1px dotted #cdcfd2;margin:10px 0}.sky-docs-method-definition-list-item .sky-field-label{margin:10px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: i4.λ1, selector: "sky-code" }, { kind: "component", type: SkyDocsPreviewIndicatorComponent, selector: "sky-docs-preview-feature-indicator" }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsCallSignatureDefinitionComponent, selector: "sky-docs-call-signature-definition", inputs: ["config"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1971
- }
1972
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsMethodDefinitionsComponent, decorators: [{
1973
- type: Component,
1974
- args: [{ selector: 'sky-docs-method-definitions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"methods?.length > 0 || staticMethods?.length > 0\"\n class=\"sky-docs-method-definitions\"\n>\n <ng-container *ngIf=\"!isMobile; else mobileTemplate\">\n <table\n class=\"sky-docs-table sky-docs-static-method-definitions\"\n *ngIf=\"staticMethods?.length > 0\"\n >\n <tr class=\"sky-docs-table-row\">\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-name\"\n >\n Static methods\n </th>\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-description\"\n >\n Description\n </th>\n </tr>\n <tr *ngFor=\"let method of staticMethods\" class=\"sky-docs-table-row\">\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-name\"\n >\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-description\"\n >\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n </tr>\n </table>\n <table\n class=\"sky-docs-table sky-docs-standard-method-definitions\"\n *ngIf=\"methods?.length > 0\"\n >\n <tr class=\"sky-docs-table-row\">\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-name\"\n >\n Methods\n </th>\n <th\n class=\"sky-docs-table-column-header sky-docs-table-column-header-description\"\n >\n Description\n </th>\n </tr>\n <tr *ngFor=\"let method of methods\" class=\"sky-docs-table-row\">\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-name\"\n >\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n <td\n class=\"sky-docs-table-cell sky-docs-method-definitions-table-cell-description\"\n >\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </td>\n </tr>\n </table>\n </ng-container>\n\n <ng-template #mobileTemplate>\n <dl\n class=\"sky-docs-method-definition-list sky-docs-static-method-definitions\"\n *ngIf=\"staticMethods?.length > 0\"\n >\n <div\n *ngFor=\"let method of staticMethods\"\n class=\"sky-docs-method-definition-list-item\"\n >\n <dt class=\"sky-field-label\">Static methods</dt>\n <dd class=\"sky-docs-method-definitions-dd-name\">\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n <dt class=\"sky-field-label\">Description</dt>\n <dd class=\"sky-docs-method-definitions-dd-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n </div>\n </dl>\n <dl\n class=\"sky-docs-method-definition-list sky-docs-standard-method-definitions\"\n *ngIf=\"methods?.length > 0\"\n >\n <div\n *ngFor=\"let method of methods\"\n class=\"sky-docs-method-definition-list-item\"\n >\n <dt class=\"sky-field-label\">Methods</dt>\n <dd class=\"sky-docs-method-definitions-dd-name\">\n <ng-template\n [ngTemplateOutlet]=\"nameTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n <dt class=\"sky-field-label\">Description</dt>\n <dd class=\"sky-docs-method-definitions-dd-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: method }\"\n ></ng-template>\n </dd>\n </div>\n </dl>\n </ng-template>\n</div>\n\n<ng-template let-method #nameTemplate>\n <sky-code\n ><span\n [innerHtml]=\"\n method.formattedName | skyDocsTypeAnchorLinks: 'no-code-tags'\n \"\n ></span\n ></sky-code>\n</ng-template>\n\n<ng-template let-method #descriptionTemplate>\n <div\n *ngIf=\"method.isPreview\"\n class=\"sky-docs-method-definition-preview-warning sky-docs-property-definition-label\"\n >\n <sky-docs-preview-feature-indicator></sky-docs-preview-feature-indicator>\n </div>\n\n <sky-docs-safe-html\n *ngIf=\"method.deprecationWarning !== undefined\"\n class=\"sky-docs-method-definition-deprecation-warning\"\n [innerHtml]=\"\n deprecationWarningPrefix + method.deprecationWarning\n | skyDocsTypeAnchorLinks\n | skyDocsMarkdown\n \"\n ></sky-docs-safe-html>\n\n <sky-docs-safe-html\n *ngIf=\"method.description\"\n class=\"sky-docs-method-definition-description\"\n [innerHtml]=\"method.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-code-block\n *ngIf=\"method.sourceCode\"\n class=\"sky-docs-code-block\"\n languageType=\"typescript\"\n [code]=\"method.sourceCode\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n\n <sky-docs-call-signature-definition\n *ngIf=\"method.callSignature\"\n [config]=\"method.callSignature\"\n ></sky-docs-call-signature-definition>\n\n <ng-container *ngIf=\"method.codeExample\">\n <h4 class=\"sky-docs-method-definition-heading\">Example</h4>\n <sky-code-block\n *ngIf=\"method.codeExample\"\n class=\"sky-docs-code-block\"\n languageType=\"method.codeExampleLanguage\"\n [code]=\"method.codeExample\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n </ng-container>\n</ng-template>\n", styles: [":host{margin:15px 0}.sky-docs-method-definitions{width:100%;max-width:100%;overflow:auto}.sky-docs-table-column-header-name{width:25%}.sky-docs-method-definition-label-optional{color:#686c73}.sky-docs-method-definition-list{margin:0}.sky-docs-method-definition-list-item{border-bottom:1px dotted #cdcfd2;margin:10px 0}.sky-docs-method-definition-list-item .sky-field-label{margin:10px 0}\n"] }]
1975
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: SkyDocsTypeDefinitionsFormatService }, { type: i2.SkyMediaQueryService }], propDecorators: { config: [{
1976
- type: Input
1977
- }] } });
1978
-
1979
- class SkyDocsPipeDefinitionComponent {
1980
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsPipeDefinitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1981
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsPipeDefinitionComponent, isStandalone: false, selector: "sky-docs-pipe-definition", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-pipe-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <ng-container *ngIf=\"config.codeExample\">\n <h4 class=\"sky-docs-pipe-definition-heading\">Example</h4>\n <sky-code-block\n class=\"sky-docs-code-block\"\n [code]=\"config.codeExample\"\n [hideHeader]=\"true\"\n [languageType]=\"config.codeExampleLanguage\"\n ></sky-code-block>\n </ng-container>\n\n <sky-docs-method-definitions\n *ngIf=\"config.transformMethod\"\n [config]=\"{\n methods: [config.transformMethod],\n }\"\n ></sky-docs-method-definitions>\n</div>\n", styles: [".sky-docs-pipe-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsMethodDefinitionsComponent, selector: "sky-docs-method-definitions", inputs: ["config"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1982
- }
1983
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsPipeDefinitionComponent, decorators: [{
1984
- type: Component,
1985
- args: [{ selector: 'sky-docs-pipe-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-pipe-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <ng-container *ngIf=\"config.codeExample\">\n <h4 class=\"sky-docs-pipe-definition-heading\">Example</h4>\n <sky-code-block\n class=\"sky-docs-code-block\"\n [code]=\"config.codeExample\"\n [hideHeader]=\"true\"\n [languageType]=\"config.codeExampleLanguage\"\n ></sky-code-block>\n </ng-container>\n\n <sky-docs-method-definitions\n *ngIf=\"config.transformMethod\"\n [config]=\"{\n methods: [config.transformMethod],\n }\"\n ></sky-docs-method-definitions>\n</div>\n", styles: [".sky-docs-pipe-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}\n"] }]
1986
- }], propDecorators: { config: [{
1987
- type: Input
1988
- }] } });
1989
-
1990
- class SkyDocsClassDefinitionComponent {
1991
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsClassDefinitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1992
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsClassDefinitionComponent, isStandalone: false, selector: "sky-docs-class-definition", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-class-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-class-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <ng-container *ngIf=\"config.properties?.length\">\n <sky-docs-property-definitions\n [config]=\"{ properties: config.properties }\"\n ></sky-docs-property-definitions>\n </ng-container>\n\n <ng-container *ngIf=\"config.methods?.length\">\n <sky-docs-method-definitions\n [config]=\"{ methods: config.methods }\"\n ></sky-docs-method-definitions>\n </ng-container>\n</div>\n", styles: [".sky-docs-class-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-class-definition-return-type{margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsMethodDefinitionsComponent, selector: "sky-docs-method-definitions", inputs: ["config"] }, { kind: "component", type: SkyDocsPropertyDefinitionsComponent, selector: "sky-docs-property-definitions", inputs: ["config", "propertyType", "showOptionalStatus"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1993
- }
1994
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsClassDefinitionComponent, decorators: [{
1995
- type: Component,
1996
- args: [{ selector: 'sky-docs-class-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-class-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-class-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <ng-container *ngIf=\"config.properties?.length\">\n <sky-docs-property-definitions\n [config]=\"{ properties: config.properties }\"\n ></sky-docs-property-definitions>\n </ng-container>\n\n <ng-container *ngIf=\"config.methods?.length\">\n <sky-docs-method-definitions\n [config]=\"{ methods: config.methods }\"\n ></sky-docs-method-definitions>\n </ng-container>\n</div>\n", styles: [".sky-docs-class-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-class-definition-return-type{margin-left:15px}\n"] }]
1997
- }], propDecorators: { config: [{
1998
- type: Input
1999
- }] } });
2000
-
2001
- class SkyDocsTypeAliasDefinitionComponent {
2002
- set config(value) {
2003
- this._config = value;
2004
- this.updateView();
2005
- }
2006
- get config() {
2007
- return this._config;
2008
- }
2009
- constructor(formatService) {
2010
- this.formatService = formatService;
2011
- }
2012
- updateView() {
2013
- this.sourceCode = this.config
2014
- ? this.formatService.getTypeAliasSourceCode(this.config)
2015
- : undefined;
2016
- }
2017
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeAliasDefinitionComponent, deps: [{ token: SkyDocsTypeDefinitionsFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
2018
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsTypeAliasDefinitionComponent, isStandalone: false, selector: "sky-docs-type-alias-definition", inputs: { config: "config" }, ngImport: i0, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-type-alias-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <div\n *ngIf=\"config.isPreview\"\n class=\"sky-docs-type-alias-preview-warning sky-docs-property-definition-label\"\n >\n <sky-docs-preview-feature-indicator></sky-docs-preview-feature-indicator>\n </div>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-type-alias-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-code-block\n *ngIf=\"sourceCode\"\n class=\"sky-docs-code-block\"\n languageType=\"typescript\"\n [code]=\"sourceCode\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n\n <sky-docs-call-signature-definition\n *ngIf=\"config.type.callSignature\"\n [config]=\"config.type.callSignature\"\n ></sky-docs-call-signature-definition>\n</div>\n", styles: [".sky-docs-type-alias-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-type-alias-definition-return-type{margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }, { kind: "component", type: SkyDocsPreviewIndicatorComponent, selector: "sky-docs-preview-feature-indicator" }, { kind: "component", type: SkyDocsSafeHtmlComponent, selector: "sky-docs-safe-html", inputs: ["innerHtml"] }, { kind: "component", type: SkyDocsCallSignatureDefinitionComponent, selector: "sky-docs-call-signature-definition", inputs: ["config"] }, { kind: "pipe", type: SkyDocsMarkdownPipe, name: "skyDocsMarkdown" }, { kind: "pipe", type: SkyDocsTypeAnchorLinksPipe, name: "skyDocsTypeAnchorLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2019
- }
2020
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeAliasDefinitionComponent, decorators: [{
2021
- type: Component,
2022
- args: [{ selector: 'sky-docs-type-alias-definition', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"config\"\n class=\"sky-docs-type-alias-definition sky-docs-type-definition-wrapper\"\n>\n <sky-docs-heading-anchor headingLevel=\"3\" [anchorId]=\"config.anchorId\">\n {{ config.name }}\n </sky-docs-heading-anchor>\n\n <div\n *ngIf=\"config.isPreview\"\n class=\"sky-docs-type-alias-preview-warning sky-docs-property-definition-label\"\n >\n <sky-docs-preview-feature-indicator></sky-docs-preview-feature-indicator>\n </div>\n\n <sky-docs-safe-html\n *ngIf=\"config.description\"\n class=\"sky-docs-type-alias-definition-description\"\n [innerHtml]=\"config.description | skyDocsTypeAnchorLinks | skyDocsMarkdown\"\n ></sky-docs-safe-html>\n\n <sky-code-block\n *ngIf=\"sourceCode\"\n class=\"sky-docs-code-block\"\n languageType=\"typescript\"\n [code]=\"sourceCode\"\n [hideHeader]=\"true\"\n ></sky-code-block>\n\n <sky-docs-call-signature-definition\n *ngIf=\"config.type.callSignature\"\n [config]=\"config.type.callSignature\"\n ></sky-docs-call-signature-definition>\n</div>\n", styles: [".sky-docs-type-alias-definition-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;font-weight:400;font-weight:600;font-size:15px;margin:0 0 10px}.sky-docs-type-alias-definition-return-type{margin-left:15px}\n"] }]
2023
- }], ctorParameters: () => [{ type: SkyDocsTypeDefinitionsFormatService }], propDecorators: { config: [{
2024
- type: Input
2025
- }] } });
2026
-
2027
- class SkyDocsTypeDefinitionsModule {
2028
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2029
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsModule, declarations: [SkyDocsCallSignatureDefinitionComponent,
2030
- SkyDocsClassDefinitionComponent,
2031
- SkyDocsDirectiveDefinitionComponent,
2032
- SkyDocsEnumerationDefinitionComponent,
2033
- SkyDocsInterfaceDefinitionComponent,
2034
- SkyDocsMethodDefinitionsComponent,
2035
- SkyDocsPipeDefinitionComponent,
2036
- SkyDocsPropertyDefinitionsComponent,
2037
- SkyDocsTypeAliasDefinitionComponent,
2038
- SkyDocsTypeAnchorLinksPipe], imports: [CommonModule,
2039
- RouterModule,
2040
- SkyCodeBlockModule,
2041
- SkyCodeModule,
2042
- SkyDefinitionListModule,
2043
- SkyDocsHeadingAnchorModule,
2044
- SkyDocsMarkdownModule,
2045
- SkyDocsPreviewIndicatorComponent,
2046
- SkyDocsSafeHtmlModule,
2047
- SkyIconModule,
2048
- SkyStatusIndicatorModule], exports: [SkyDocsCallSignatureDefinitionComponent,
2049
- SkyDocsClassDefinitionComponent,
2050
- SkyDocsDirectiveDefinitionComponent,
2051
- SkyDocsEnumerationDefinitionComponent,
2052
- SkyDocsInterfaceDefinitionComponent,
2053
- SkyDocsMethodDefinitionsComponent,
2054
- SkyDocsPipeDefinitionComponent,
2055
- SkyDocsPropertyDefinitionsComponent,
2056
- SkyDocsTypeAliasDefinitionComponent,
2057
- SkyDocsTypeAnchorLinksPipe] }); }
2058
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsModule, imports: [CommonModule,
2059
- RouterModule,
2060
- SkyCodeBlockModule,
2061
- SkyCodeModule,
2062
- SkyDefinitionListModule,
2063
- SkyDocsHeadingAnchorModule,
2064
- SkyDocsMarkdownModule,
2065
- SkyDocsPreviewIndicatorComponent,
2066
- SkyDocsSafeHtmlModule,
2067
- SkyIconModule,
2068
- SkyStatusIndicatorModule] }); }
2069
- }
2070
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsModule, decorators: [{
2071
- type: NgModule,
2072
- args: [{
2073
- imports: [
2074
- CommonModule,
2075
- RouterModule,
2076
- SkyCodeBlockModule,
2077
- SkyCodeModule,
2078
- SkyDefinitionListModule,
2079
- SkyDocsHeadingAnchorModule,
2080
- SkyDocsMarkdownModule,
2081
- SkyDocsPreviewIndicatorComponent,
2082
- SkyDocsSafeHtmlModule,
2083
- SkyIconModule,
2084
- SkyStatusIndicatorModule,
2085
- ],
2086
- declarations: [
2087
- SkyDocsCallSignatureDefinitionComponent,
2088
- SkyDocsClassDefinitionComponent,
2089
- SkyDocsDirectiveDefinitionComponent,
2090
- SkyDocsEnumerationDefinitionComponent,
2091
- SkyDocsInterfaceDefinitionComponent,
2092
- SkyDocsMethodDefinitionsComponent,
2093
- SkyDocsPipeDefinitionComponent,
2094
- SkyDocsPropertyDefinitionsComponent,
2095
- SkyDocsTypeAliasDefinitionComponent,
2096
- SkyDocsTypeAnchorLinksPipe,
2097
- ],
2098
- exports: [
2099
- SkyDocsCallSignatureDefinitionComponent,
2100
- SkyDocsClassDefinitionComponent,
2101
- SkyDocsDirectiveDefinitionComponent,
2102
- SkyDocsEnumerationDefinitionComponent,
2103
- SkyDocsInterfaceDefinitionComponent,
2104
- SkyDocsMethodDefinitionsComponent,
2105
- SkyDocsPipeDefinitionComponent,
2106
- SkyDocsPropertyDefinitionsComponent,
2107
- SkyDocsTypeAliasDefinitionComponent,
2108
- SkyDocsTypeAnchorLinksPipe,
2109
- ],
2110
- }]
2111
- }] });
2112
-
2113
- /**
2114
- * Specifies a section of page content.
2115
- * @example
2116
- * ```
2117
- * <sky-docs-demo-page-section
2118
- * heading="Section heading"
2119
- * >
2120
- * Section content here.
2121
- * </sky-docs-demo-page-section>
2122
- * ```
2123
- */
2124
- class SkyDocsDemoPageSectionComponent {
2125
- get anchorId() {
2126
- return `section-${this.getSanitizedName(this.heading)}`;
2127
- }
2128
- getSanitizedName(value) {
2129
- if (!value) {
2130
- return;
2131
- }
2132
- const sanitized = value
2133
- .toLowerCase()
2134
- // Remove special characters.
2135
- .replace(/[\_\~\`\@\!\#\$\%\^\&\*\(\)\[\]\{\}\;\:\'\/\\\<\>\,\.\?\=\+\|"]/g, '')
2136
- // Replace space characters with a dash.
2137
- .replace(/\s/g, '-')
2138
- // Remove any double-dashes.
2139
- .replace(/--/g, '-');
2140
- return sanitized;
2141
- }
2142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoPageSectionComponent, isStandalone: false, selector: "sky-docs-demo-page-section", inputs: { heading: "heading" }, ngImport: i0, template: "<div class=\"sky-docs-demo-page-section sky-rounded-corners\">\n <div *ngIf=\"heading\" class=\"sky-docs-demo-page-section-header\">\n <sky-docs-heading-anchor headingLevel=\"2\" [anchorId]=\"anchorId\">\n {{ heading }}\n </sky-docs-heading-anchor>\n </div>\n <div class=\"sky-docs-demo-page-section-body\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-docs-demo-page-section{margin-bottom:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyDocsHeadingAnchorComponent, selector: "sky-docs-heading-anchor", inputs: ["anchorId", "headingLevel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2144
- }
2145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageSectionComponent, decorators: [{
2146
- type: Component,
2147
- args: [{ selector: 'sky-docs-demo-page-section', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-demo-page-section sky-rounded-corners\">\n <div *ngIf=\"heading\" class=\"sky-docs-demo-page-section-header\">\n <sky-docs-heading-anchor headingLevel=\"2\" [anchorId]=\"anchorId\">\n {{ heading }}\n </sky-docs-heading-anchor>\n </div>\n <div class=\"sky-docs-demo-page-section-body\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-docs-demo-page-section{margin-bottom:50px}\n"] }]
2148
- }], propDecorators: { heading: [{
2149
- type: Input
2150
- }] } });
2151
-
2152
- /**
2153
- * The page summary provides a section at the top of the page
2154
- * to summarize what a user should expect to find or learn on the page.
2155
- * @example
2156
- * ```
2157
- * <sky-docs-demo-page-summary>
2158
- * Page summary here.
2159
- * </sky-docs-demo-page-summary>
2160
- * ```
2161
- */
2162
- class SkyDocsDemoPageSummaryComponent {
2163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoPageSummaryComponent, isStandalone: false, selector: "sky-docs-demo-page-summary", ngImport: i0, template: "<div class=\"sky-docs-demo-page-summary\">\n <ng-content></ng-content>\n</div>\n", styles: [".sky-docs-demo-page-summary{margin-bottom:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2165
- }
2166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageSummaryComponent, decorators: [{
2167
- type: Component,
2168
- args: [{ selector: 'sky-docs-demo-page-summary', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-demo-page-summary\">\n <ng-content></ng-content>\n</div>\n", styles: [".sky-docs-demo-page-summary{margin-bottom:20px}\n"] }]
2169
- }] });
2170
-
2171
- class SkyDocsDesignGuidelinesComponent {
2172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelinesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2173
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDesignGuidelinesComponent, isStandalone: false, selector: "sky-docs-design-guidelines", ngImport: i0, template: "<div class=\"sky-docs-design-guidelines\">\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2174
- }
2175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelinesComponent, decorators: [{
2176
- type: Component,
2177
- args: [{ selector: 'sky-docs-design-guidelines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-design-guidelines\">\n <ng-content></ng-content>\n</div>\n" }]
524
+ ], selector: 'sky-code-example-viewer', template: "<sky-box headingLevel=\"3\" headingStyle=\"3\" [headingText]=\"headingText()\">\n <sky-box-controls>\n <button\n class=\"sky-btn sky-btn-default\"\n data-sky-id=\"stackblitz-btn\"\n type=\"button\"\n (click)=\"launchStackBlitz()\"\n >\n <sky-icon iconName=\"edit\" />\n {{ 'sky_code_example_viewer_demo_stack_blitz_button' | skyLibResources }}\n </button>\n </sky-box-controls>\n\n <sky-box-content>\n <div\n class=\"sky-code-example-viewer-demo sky-padding-even-md sky-margin-stacked-lg\"\n >\n @if (!demoHidden()) {\n <ng-template [ngComponentOutlet]=\"componentType()\" />\n } @else {\n {{ 'sky_code_example_viewer_demo_hidden_message' | skyLibResources }}\n }\n </div>\n\n <div class=\"sky-margin-stacked-sm\">\n <button\n class=\"sky-btn sky-btn-link\"\n data-sky-id=\"toggle-code-visibility-btn\"\n type=\"button\"\n [attr.aria-controls]=\"codeRef.id\"\n [attr.aria-expanded]=\"isCodeVisible()\"\n (click)=\"toggleCodeVisibility()\"\n >\n <sky-icon\n [iconName]=\"isCodeVisible() ? 'chevron-down' : 'chevron-right'\"\n />\n {{\n isCodeVisible()\n ? ('sky_code_example_viewer_hide_code_button_label'\n | skyLibResources)\n : ('sky_code_example_viewer_show_code_button_label'\n | skyLibResources)\n }}\n </button>\n </div>\n\n <sky-vertical-tabset #codeRef=\"skyId\" skyId [hidden]=\"!isCodeVisible()\">\n @for (obj of files() | keyvalue; track obj.key) {\n <sky-vertical-tab\n [active]=\"obj.key === primaryFile()\"\n [tabHeading]=\"obj.key\"\n >\n <sky-code-snippet\n [code]=\"obj.value\"\n [language]=\"getCodeLanguage(obj.key)\"\n />\n </sky-vertical-tab>\n }\n </sky-vertical-tabset>\n </sky-box-content>\n</sky-box>\n", styles: [":host{display:block}.sky-code-example-viewer-demo{border:1px solid var(--sky-border-color-neutral-medium)}\n"] }]
2178
525
  }] });
2179
526
 
2180
527
  /**
2181
528
  * @internal
2182
529
  */
2183
- class SkyDocsDemoPageDomAdapterService {
2184
- get anchorLinks() {
2185
- return document.querySelectorAll('a.sky-docs-anchor-link');
2186
- }
2187
- get currentUrl() {
2188
- return this.windowRef.nativeWindow.location.href.split('#')[0];
2189
- }
2190
- constructor(windowRef) {
2191
- this.windowRef = windowRef;
2192
- this._anchorLinkClick = new Subject();
2193
- this.eventListener = (e) => {
2194
- e.preventDefault();
2195
- this._anchorLinkClick.next({
2196
- href: e.target.href,
2197
- });
2198
- };
2199
- }
2200
- ngOnDestroy() {
2201
- this.removeClickEventListeners();
2202
- }
2203
- setupAnchorLinks() {
2204
- for (let index = 0; index < this.anchorLinks.length; index++) {
2205
- const anchor = this.anchorLinks[index];
2206
- const fragment = anchor.href.split('#')[1];
2207
- const url = this.currentUrl;
2208
- const href = `${url}#${fragment}`;
2209
- anchor.href = href;
2210
- }
2211
- }
2212
- get anchorLinkClick() {
2213
- if (this._anchorLinkClick.observers.length === 0) {
2214
- this.addClickEventListeners();
2215
- }
2216
- else {
2217
- this.removeClickEventListeners();
2218
- }
2219
- return this._anchorLinkClick;
2220
- }
2221
- scrollToFragment(fragment) {
2222
- this.windowRef.nativeWindow.setTimeout(() => {
2223
- const element = document.getElementById(fragment);
2224
- if (element) {
2225
- this.windowRef.nativeWindow.scrollTo(0, element.offsetTop);
2226
- }
2227
- }, 250);
2228
- }
2229
- addClickEventListeners() {
2230
- // Wait for a tick to allow all anchors to be written.
2231
- this.windowRef.nativeWindow.setTimeout(() => {
2232
- for (let index = 0; index < this.anchorLinks.length; index++) {
2233
- const anchor = this.anchorLinks[index];
2234
- anchor.addEventListener('click', this.eventListener);
2235
- }
2236
- });
2237
- }
2238
- removeClickEventListeners() {
2239
- for (let index = 0; index < this.anchorLinks.length; index++) {
2240
- const anchor = this.anchorLinks[index];
2241
- anchor.removeEventListener('click', this.eventListener);
2242
- }
2243
- }
2244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageDomAdapterService, deps: [{ token: i2.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
2245
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageDomAdapterService }); }
2246
- }
2247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageDomAdapterService, decorators: [{
2248
- type: Injectable
2249
- }], ctorParameters: () => [{ type: i2.SkyAppWindowRef }] });
2250
-
2251
- class SkyDocsToolsSiteOptions {
2252
- }
2253
-
2254
- class SkyDocsSupportalService {
2255
- constructor(http) {
2256
- this.http = http;
2257
- }
2258
- getComponentsInfo() {
2259
- return this.http
2260
- .get('https://sky-pusa01.app.blackbaud.net/skysp/v1/docs/components-info')
2261
- .pipe(map((results) => results.components), share());
2262
- }
2263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSupportalService, deps: [{ token: i1$6.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
2264
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSupportalService, providedIn: 'root' }); }
2265
- }
2266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsSupportalService, decorators: [{
2267
- type: Injectable,
2268
- args: [{
2269
- providedIn: 'root',
2270
- }]
2271
- }], ctorParameters: () => [{ type: i1$6.HttpClient }] });
2272
-
2273
- /**
2274
- * @internal
2275
- */
2276
- class SkyDocsDemoPageTitleService {
2277
- constructor(title) {
2278
- this.title = title;
2279
- }
2280
- setTitle(...parts) {
2281
- let windowTitle = 'SKY UX';
2282
- if (parts && parts.length > 0) {
2283
- parts.push(windowTitle);
2284
- windowTitle = parts.join(' - ');
2285
- }
2286
- this.title.setTitle(windowTitle);
2287
- }
2288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageTitleService, deps: [{ token: i1$4.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
2289
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageTitleService, providedIn: 'root' }); }
2290
- }
2291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageTitleService, decorators: [{
2292
- type: Injectable,
2293
- args: [{
2294
- providedIn: 'root',
2295
- }]
2296
- }], ctorParameters: () => [{ type: i1$4.Title }] });
2297
-
2298
- /**
2299
- * This enum comes from:
2300
- * https://github.com/TypeStrong/typedoc/blob/v0.25.13/src/lib/models/reflections/kind.ts
2301
- * The enum is up to date as of version `0.25.13`.
2302
- */
2303
- var TypeDocKind;
2304
- (function (TypeDocKind) {
2305
- TypeDocKind[TypeDocKind["Project"] = 1] = "Project";
2306
- TypeDocKind[TypeDocKind["Module"] = 2] = "Module";
2307
- TypeDocKind[TypeDocKind["Namespace"] = 4] = "Namespace";
2308
- TypeDocKind[TypeDocKind["Enum"] = 8] = "Enum";
2309
- TypeDocKind[TypeDocKind["EnumMember"] = 16] = "EnumMember";
2310
- TypeDocKind[TypeDocKind["Variable"] = 32] = "Variable";
2311
- TypeDocKind[TypeDocKind["Function"] = 64] = "Function";
2312
- TypeDocKind[TypeDocKind["Class"] = 128] = "Class";
2313
- TypeDocKind[TypeDocKind["Interface"] = 256] = "Interface";
2314
- TypeDocKind[TypeDocKind["Constructor"] = 512] = "Constructor";
2315
- TypeDocKind[TypeDocKind["Property"] = 1024] = "Property";
2316
- TypeDocKind[TypeDocKind["Method"] = 2048] = "Method";
2317
- TypeDocKind[TypeDocKind["CallSignature"] = 4096] = "CallSignature";
2318
- TypeDocKind[TypeDocKind["IndexSignature"] = 8192] = "IndexSignature";
2319
- TypeDocKind[TypeDocKind["ConstructorSignature"] = 16384] = "ConstructorSignature";
2320
- TypeDocKind[TypeDocKind["Parameter"] = 32768] = "Parameter";
2321
- TypeDocKind[TypeDocKind["TypeLiteral"] = 65536] = "TypeLiteral";
2322
- TypeDocKind[TypeDocKind["TypeParameter"] = 131072] = "TypeParameter";
2323
- TypeDocKind[TypeDocKind["Accessor"] = 262144] = "Accessor";
2324
- TypeDocKind[TypeDocKind["GetSignature"] = 524288] = "GetSignature";
2325
- TypeDocKind[TypeDocKind["SetSignature"] = 1048576] = "SetSignature";
2326
- TypeDocKind[TypeDocKind["TypeAlias"] = 2097152] = "TypeAlias";
2327
- TypeDocKind[TypeDocKind["Reference"] = 4194304] = "Reference";
2328
- })(TypeDocKind || (TypeDocKind = {}));
2329
-
2330
- /**
2331
- * Converts TypeDoc types into SKY UX docs-tools types, to be supplied to the various definitions components.
2332
- */
2333
- class SkyDocsTypeDocAdapterService {
2334
- constructor(typeDefinitionsProvider) {
2335
- this.typeDefinitionsProvider = typeDefinitionsProvider;
2336
- }
2337
- toClassDefinition(entry) {
2338
- const definition = {
2339
- anchorId: this.getAnchorId(entry),
2340
- name: entry.name,
2341
- hasPreviewFeatures: false,
2342
- };
2343
- const tags = this.getCommentTags(entry.comment);
2344
- this.applyCommentTagValues(definition, tags);
2345
- const methods = this.getClassMethods(entry);
2346
- if (methods.length) {
2347
- definition.methods = methods;
2348
- }
2349
- const properties = this.getClassProperties(entry);
2350
- if (properties.length) {
2351
- definition.properties = properties;
2352
- }
2353
- definition.hasPreviewFeatures =
2354
- !!definition.methods?.some((method) => method.isPreview) ||
2355
- !!definition.properties?.some((property) => property.isPreview);
2356
- return definition;
2357
- }
2358
- toDirectiveDefinition(entry) {
2359
- const definition = {
2360
- anchorId: this.getAnchorId(entry),
2361
- name: entry.name,
2362
- selector: this.getSelector(entry),
2363
- hasPreviewFeatures: false,
2364
- };
2365
- const tags = this.getCommentTags(entry.comment);
2366
- this.applyCommentTagValues(definition, tags);
2367
- const properties = this.getClassProperties(entry);
2368
- const eventProperties = properties.filter((p) => p.decorator?.name === 'Output');
2369
- if (eventProperties.length) {
2370
- definition.eventProperties = eventProperties;
2371
- }
2372
- const inputProperties = properties.filter((p) => this.#isInputProperty(p));
2373
- if (inputProperties.length) {
2374
- definition.inputProperties = inputProperties;
2375
- }
2376
- definition.hasPreviewFeatures =
2377
- !!definition.inputProperties?.some((property) => property.isPreview) ||
2378
- !!definition.eventProperties?.some((property) => property.isPreview);
2379
- return definition;
2380
- }
2381
- toEnumerationDefinition(entry) {
2382
- const members = this.getEnumerationMembers(entry);
2383
- const definition = {
2384
- anchorId: this.getAnchorId(entry),
2385
- members,
2386
- name: entry.name,
2387
- hasPreviewFeatures: !!members.find((member) => member.isPreview),
2388
- };
2389
- const tags = this.getCommentTags(entry.comment);
2390
- this.applyCommentTagValues(definition, tags);
2391
- return definition;
2392
- }
2393
- toInterfaceDefinition(entry) {
2394
- const properties = this.getInterfaceProperties(entry);
2395
- const definition = {
2396
- anchorId: this.getAnchorId(entry),
2397
- name: entry.name,
2398
- hasPreviewFeatures: !!properties.find((member) => member.isPreview),
2399
- properties,
2400
- };
2401
- const tags = this.getCommentTags(entry.comment);
2402
- this.applyCommentTagValues(definition, tags);
2403
- const typeParameters = this.getTypeParameterDefinitions(entry.typeParameters);
2404
- if (typeParameters.length) {
2405
- definition.typeParameters = typeParameters;
2406
- }
2407
- return definition;
2408
- }
2409
- toPipeDefinition(entry) {
2410
- const methods = this.getClassMethods(entry);
2411
- const transformMethod = methods.find((m) => m.name === 'transform');
2412
- const definition = {
2413
- anchorId: this.getAnchorId(entry),
2414
- name: entry.name,
2415
- transformMethod,
2416
- };
2417
- const tags = this.getCommentTags(entry.comment);
2418
- this.applyCommentTagValues(definition, tags);
2419
- return definition;
2420
- }
2421
- toTypeAliasDefinition(entry) {
2422
- const definition = {
2423
- anchorId: this.getAnchorId(entry),
2424
- name: entry.name,
2425
- isPreview: false,
2426
- type: this.getTypeDefinition({
2427
- comment: entry.comment,
2428
- type: entry.type,
2429
- }),
2430
- };
2431
- const tags = this.getCommentTags(entry.type.declaration?.signatures
2432
- ? entry.type.declaration.signatures[0].comment
2433
- : entry.comment);
2434
- this.applyCommentTagValues(definition, tags);
2435
- const typeParameters = this.getTypeParameterDefinitions(entry.typeParameters);
2436
- if (typeParameters.length) {
2437
- definition.typeParameters = typeParameters;
2438
- }
2439
- return definition;
2440
- }
2441
- getSelector(entry) {
2442
- const decoratorSource = entry.decorators[0].arguments.obj;
2443
- return decoratorSource.indexOf('selector: `') > -1
2444
- ? decoratorSource
2445
- .split('selector: `')[1]
2446
- .split('`')[0]
2447
- .replace(/\s\s+/g, ' ')
2448
- : decoratorSource.split("selector: '")[1].split("'")[0];
2449
- }
2450
- getClassProperties(entry) {
2451
- if (!entry.children) {
2452
- return [];
2453
- }
2454
- const definitions = entry.children
2455
- .filter((child) =>
2456
- // We only want properties (both with or without a getter/setter)
2457
- child.kind === TypeDocKind.Property ||
2458
- child.kind === TypeDocKind.Accessor)
2459
- .filter((child) =>
2460
- // We only want accessors that don't have a setter if they are not inputs
2461
- child.kind !== TypeDocKind.Accessor ||
2462
- child.setSignature ||
2463
- this.getDecorator(child)?.name !== 'Input')
2464
- .map((child) => {
2465
- let definition = {
2466
- isOptional: true,
2467
- isPreview: false,
2468
- name: this.getPropertyName(child),
2469
- type: this.getTypeDefinition(child),
2470
- };
2471
- let defaultValue;
2472
- /* Ensure we are properly capturing definitions which use a getter/setter. Final check is a sanity check */
2473
- if (child.kind === TypeDocKind.Accessor &&
2474
- !child.comment?.summary
2475
- ?.map((item) => item.text)
2476
- .join('')
2477
- .trim() &&
2478
- (child.setSignature || child.getSignature)) {
2479
- const mainTags = this.getCommentTags(child.comment);
2480
- this.applyCommentTagValues(definition, mainTags);
2481
- if (child.getSignature) {
2482
- const getTags = this.getCommentTags(child.getSignature.comment);
2483
- definition.isOptional = !getTags.extras.required;
2484
- this.applyCommentTagValues(definition, getTags);
2485
- defaultValue = this.getDefaultValue(child, getTags);
2486
- }
2487
- if (child.setSignature) {
2488
- const setTags = this.getCommentTags(child.setSignature.comment);
2489
- this.applyCommentTagValues(definition, setTags);
2490
- definition.isOptional =
2491
- definition.isOptional && !setTags.extras.required;
2492
- defaultValue = defaultValue || this.getDefaultValue(child, setTags);
2493
- }
2494
- else {
2495
- definition.isOptional = !mainTags.extras.required;
2496
- defaultValue = this.getDefaultValue(child, mainTags);
2497
- }
2498
- }
2499
- else {
2500
- let tags;
2501
- if (child.kind === TypeDocKind.Property &&
2502
- !child.comment?.summary
2503
- ?.map((item) => item.text)
2504
- .join('')
2505
- .trim() &&
2506
- child.type.declaration?.signatures?.length > 0 &&
2507
- child.type.declaration.signatures[0].comment) {
2508
- tags = this.getCommentTags(child.type.declaration.signatures[0].comment);
2509
- definition.isOptional = !tags.extras.required;
2510
- this.applyCommentTagValues(definition, tags);
2511
- }
2512
- tags = this.getCommentTags(child.comment);
2513
- definition.isOptional =
2514
- definition.isOptional && !tags.extras.required;
2515
- this.applyCommentTagValues(definition, tags);
2516
- defaultValue = this.getDefaultValue(child, tags);
2517
- }
2518
- if (defaultValue) {
2519
- definition.defaultValue = defaultValue;
2520
- }
2521
- const decorator = this.getDecorator(child);
2522
- if (decorator) {
2523
- definition.decorator = decorator;
2524
- }
2525
- if (!definition.description) {
2526
- const constructor = entry.children.find((child) => child.kind === TypeDocKind.Constructor);
2527
- if (constructor) {
2528
- const signature = constructor.signatures.find((signature) => signature.kind === TypeDocKind.ConstructorSignature);
2529
- /* Sanity check */
2530
- /* istanbul ignore else */
2531
- if (signature) {
2532
- const matchingParam = signature.parameters?.find((parameter) => parameter.name === child.name);
2533
- if (matchingParam) {
2534
- const matchingParamTags = this.getCommentTags(matchingParam.comment);
2535
- this.applyCommentTagValues(definition, matchingParamTags);
2536
- }
2537
- }
2538
- }
2539
- }
2540
- return definition;
2541
- });
2542
- return orderBy(definitions, ['isOptional', 'name'], ['asc', 'asc']);
2543
- }
2544
- getClassMethods(entry) {
2545
- if (!entry.children) {
2546
- return [];
2547
- }
2548
- const methods = entry.children
2549
- .filter((child) => child.kind === TypeDocKind.Method && /^ng/.test(child.name) === false)
2550
- .map((child) => {
2551
- const definition = {
2552
- name: this.getPropertyName(child),
2553
- type: this.getTypeDefinition(child),
2554
- isStatic: !!child.flags?.isStatic,
2555
- isPreview: false,
2556
- parentName: entry.name,
2557
- };
2558
- // Comments for methods are stored in a different location.
2559
- const comment = child.signatures[0].comment;
2560
- const tags = this.getCommentTags(comment);
2561
- this.applyCommentTagValues(definition, tags);
2562
- const typeParameters = this.getTypeParameterDefinitions(child.signatures[0].typeParameters);
2563
- if (typeParameters.length) {
2564
- definition.typeParameters = typeParameters;
2565
- }
2566
- return definition;
2567
- });
2568
- return orderBy(methods, ['name'], ['asc']);
2569
- }
2570
- getInterfaceProperties(entry) {
2571
- if (!entry.children && !entry.indexSignature) {
2572
- return [];
2573
- }
2574
- const definitions = entry.children?.map((child) => {
2575
- let tags;
2576
- if (child.kind === TypeDocKind.Method && child.signatures.length > 0) {
2577
- tags = this.getCommentTags(child.signatures[0].comment);
2578
- }
2579
- else if (child.type.type === 'reflection' &&
2580
- child.type?.declaration?.signatures?.length > 0) {
2581
- tags = this.getCommentTags(child.type.declaration.signatures[0].comment);
2582
- }
2583
- else {
2584
- tags = this.getCommentTags(child.comment);
2585
- }
2586
- const definition = {
2587
- isOptional: tags.extras.required ? false : !!child.flags?.isOptional,
2588
- isPreview: false,
2589
- name: this.getPropertyName(child),
2590
- type: this.getTypeDefinition(child),
2591
- };
2592
- this.applyCommentTagValues(definition, tags);
2593
- return definition;
2594
- }) || [];
2595
- const sorted = orderBy(definitions, ['isOptional', 'name'], ['asc', 'asc']);
2596
- // Add any index signatures, e.g. `[_: string]: any`
2597
- if (entry.indexSignature) {
2598
- const indexSignature = entry.indexSignature;
2599
- const definition = {
2600
- isOptional: true,
2601
- isPreview: false,
2602
- name: indexSignature.name,
2603
- type: {
2604
- indexSignature: this.getIndexSignatureDefinition(indexSignature),
2605
- },
2606
- };
2607
- // New versions of typedoc do not seem to add the comment for index signatures - the else statement is a default based on the only index signature we had in September 2023 (SkySelectField).
2608
- if (indexSignature.comment) {
2609
- const tags = this.getCommentTags(indexSignature.comment);
2610
- this.applyCommentTagValues(definition, tags);
2611
- }
2612
- else {
2613
- definition.description = 'All other properties for an item.';
2614
- }
2615
- sorted.push(definition);
2616
- }
2617
- return sorted;
2618
- }
2619
- getEnumerationMembers(entry) {
2620
- if (!entry.children) {
2621
- return [];
2622
- }
2623
- return entry.children.map((child) => {
2624
- const definition = {
2625
- name: child.name,
2626
- isPreview: false,
2627
- };
2628
- const tags = this.getCommentTags(child.comment);
2629
- this.applyCommentTagValues(definition, tags);
2630
- return definition;
2631
- });
2632
- }
2633
- getTypeDefinition(child) {
2634
- let definition;
2635
- const kind = child.kind;
2636
- switch (kind) {
2637
- case TypeDocKind.Accessor:
2638
- if (child.setSignature) {
2639
- return this.getTypeDefinition(child.setSignature.parameters[0]);
2640
- }
2641
- return this.getTypeDefinition(child.getSignature);
2642
- case TypeDocKind.Method:
2643
- definition = {
2644
- callSignature: this.getCallSignatureDefinition(child.signatures[0], this.getCommentTags(child.comment)),
2645
- name: child.signatures[0].name,
2646
- };
2647
- return definition;
2648
- default:
2649
- let name = child.type.name || child.type.elementType?.name || child.type.value;
2650
- definition = {
2651
- type: child.type.type,
2652
- };
2653
- if (name) {
2654
- definition.name = name;
2655
- }
2656
- // Union?
2657
- if (child.type.types) {
2658
- definition.unionTypes = child.type.types.map((t) => this.getTypeDefinition({ type: t }));
2659
- }
2660
- // Convert reflection types.
2661
- if (child.type.type === 'reflection' ||
2662
- child.type.elementType?.type === 'reflection') {
2663
- const declaration = child.type.elementType?.type === 'reflection'
2664
- ? child.type.elementType.declaration
2665
- : child.type.declaration;
2666
- /*istanbul ignore else */
2667
- if (declaration) {
2668
- if (declaration.signatures) {
2669
- definition.callSignature = this.getCallSignatureDefinition(declaration.signatures[0], this.getCommentTags(child.comment));
2670
- }
2671
- else if (declaration.indexSignature) {
2672
- const indexSignature = declaration.indexSignature;
2673
- definition.indexSignature =
2674
- this.getIndexSignatureDefinition(indexSignature);
2675
- } /* istanbul ignore else */
2676
- else if (declaration.children) {
2677
- definition.typeLiteral = {
2678
- properties: this.getInterfaceProperties({
2679
- children: declaration.children,
2680
- }),
2681
- };
2682
- }
2683
- }
2684
- }
2685
- if (child.type.type === 'typeOperator') {
2686
- definition.name = `${child.type.operator} ${child.type.target.name}`;
2687
- }
2688
- if (child.type.typeArguments) {
2689
- definition.typeArguments = this.getTypeArgumentDefinitions(child.type);
2690
- }
2691
- if (child.type.package) {
2692
- definition.package = child.type.package;
2693
- }
2694
- return definition;
2695
- }
2696
- }
2697
- getParameterDefinitions(callSignature, parentTags) {
2698
- if (!callSignature.parameters) {
2699
- return [];
2700
- }
2701
- const parameters = callSignature.parameters.map((p) => {
2702
- const tags = this.getParameterCommentTags(p, parentTags);
2703
- const defaultValue = this.getDefaultValue(p, tags);
2704
- const typeArguments = this.getTypeArgumentDefinitions(p.type);
2705
- const parameter = {
2706
- isOptional: !!(defaultValue || !!p.flags?.isOptional),
2707
- name: p.name,
2708
- type: this.getTypeDefinition(p),
2709
- };
2710
- if (defaultValue !== undefined) {
2711
- parameter.defaultValue = defaultValue;
2712
- }
2713
- if (tags.description) {
2714
- parameter.description = tags.description;
2715
- }
2716
- if (typeArguments.length) {
2717
- parameter.typeArguments = typeArguments;
2718
- }
2719
- return parameter;
2720
- });
2721
- return parameters;
2722
- }
2723
- getTypeArgumentDefinitions(typeConfig) {
2724
- if (!typeConfig || !typeConfig.typeArguments) {
2725
- return [];
2726
- }
2727
- return typeConfig.typeArguments.map((typeArgument) => {
2728
- return this.getTypeDefinition({ type: typeArgument });
2729
- });
2730
- }
2731
- getCallSignatureDefinition(callSignature, tags) {
2732
- const definition = {
2733
- returnType: this.getTypeDefinition(callSignature),
2734
- };
2735
- const parameters = this.getParameterDefinitions(callSignature, tags);
2736
- if (parameters.length) {
2737
- definition.parameters = parameters;
2738
- }
2739
- return definition;
2740
- }
2741
- getIndexSignatureDefinition(signature) {
2742
- return {
2743
- key: {
2744
- name: signature.parameters[0].name,
2745
- type: this.getTypeDefinition(signature.parameters[0]),
2746
- },
2747
- type: this.getTypeDefinition(signature),
2748
- };
2749
- }
2750
- getTypeParameterDefinitions(typeParameters) {
2751
- if (!typeParameters) {
2752
- return [];
2753
- }
2754
- return typeParameters.map((typeParam) => {
2755
- const definition = {
2756
- name: typeParam.name,
2757
- };
2758
- if (typeParam.type) {
2759
- definition.type = this.getTypeDefinition({
2760
- type: typeParam.type,
2761
- });
2762
- }
2763
- return definition;
2764
- });
2765
- }
2766
- getCommentTags(comment) {
2767
- let codeExample;
2768
- let codeExampleLanguage = 'markup';
2769
- let deprecationWarning;
2770
- let defaultValue;
2771
- let description = '';
2772
- let parameters;
2773
- const extras = {};
2774
- if (comment) {
2775
- if (comment.blockTags) {
2776
- comment.blockTags.forEach((tag) => {
2777
- switch (tag.tag) {
2778
- case '@deprecated':
2779
- deprecationWarning = tag.content
2780
- .map((item) => item.text)
2781
- .join('')
2782
- .trim();
2783
- break;
2784
- case '@default':
2785
- case '@defaultValue':
2786
- defaultValue = tag.content
2787
- .map((item) => item.text)
2788
- .join('')
2789
- .trim();
2790
- if (tag.content[0].kind === 'code') {
2791
- defaultValue = defaultValue.split('```')[1].trim();
2792
- const defaultLanguage = defaultValue.split('\n')[0];
2793
- if (defaultLanguage === 'markup' ||
2794
- defaultLanguage === 'typescript' ||
2795
- defaultLanguage === 'ts') {
2796
- defaultValue = defaultValue
2797
- .slice(defaultLanguage.length)
2798
- .trim();
2799
- }
2800
- }
2801
- break;
2802
- case '@example':
2803
- codeExample = tag.content
2804
- .map((item) => item.text)
2805
- .join('')
2806
- .trim()
2807
- .split('```')[1]
2808
- .trim();
2809
- const exampleLanguage = codeExample.split('\n')[0];
2810
- if (exampleLanguage === 'markup' ||
2811
- exampleLanguage === 'typescript' ||
2812
- exampleLanguage === 'ts') {
2813
- codeExample = codeExample.slice(exampleLanguage.length).trim();
2814
- codeExampleLanguage = exampleLanguage;
2815
- }
2816
- break;
2817
- case '@param':
2818
- parameters = parameters || [];
2819
- parameters.push({
2820
- name: tag.param,
2821
- description: tag.content
2822
- .map((item) => item.text)
2823
- .join('')
2824
- .trim(),
2825
- });
2826
- break;
2827
- case '@preview':
2828
- extras['preview'] = true;
2829
- break;
2830
- case '@required':
2831
- extras['required'] = true;
2832
- break;
2833
- /* istanbul ignore next */
2834
- default:
2835
- break;
2836
- }
2837
- });
2838
- }
2839
- description = comment.summary
2840
- ?.map((item) => item.text)
2841
- .join('')
2842
- .trim();
2843
- }
2844
- return {
2845
- codeExample,
2846
- codeExampleLanguage,
2847
- defaultValue,
2848
- deprecationWarning,
2849
- description,
2850
- extras,
2851
- parameters,
2852
- };
2853
- }
2854
- /**
2855
- * Parameter descriptions are derived from the parent's (function/method) comment.
2856
- */
2857
- getParameterCommentTags(parameter, parentTags) {
2858
- const tags = this.getCommentTags(parameter.comment);
2859
- const paramTags = parentTags.parameters;
2860
- const tagParam = paramTags
2861
- ? paramTags.find((param) => param.name === parameter.name)
2862
- : undefined;
2863
- if (!tagParam || !tagParam.description) {
2864
- return tags;
2865
- }
2866
- return {
2867
- ...tags,
2868
- ...{
2869
- description: tagParam.description,
2870
- },
2871
- };
2872
- }
2873
- /**
2874
- * Applies comment tag (e.g. `@param`) values to the provided definition, if the value is defined.
2875
- */
2876
- applyCommentTagValues(definition, tags) {
2877
- if (tags.codeExample) {
2878
- definition.codeExample = tags.codeExample;
2879
- definition.codeExampleLanguage = tags.codeExampleLanguage;
2880
- }
2881
- if (tags.deprecationWarning !== undefined) {
2882
- definition.deprecationWarning = tags.deprecationWarning;
2883
- }
2884
- if (tags.description) {
2885
- definition.description = tags.description;
2886
- }
2887
- if (tags.extras?.preview) {
2888
- definition.isPreview = tags.extras?.preview;
2889
- }
2890
- }
2891
- getDecorator(child) {
2892
- const name = child.decorators && child.decorators[0] && child.decorators[0].name;
2893
- if (name) {
2894
- return { name };
2895
- }
2896
- }
2897
- getPropertyName(property) {
2898
- const decorators = property.decorators && property.decorators[0];
2899
- // Use the Input's bound property name, if found.
2900
- // e.g. @Input('foobar')
2901
- return decorators?.arguments?.bindingPropertyName
2902
- ? decorators.arguments.bindingPropertyName.replace(/(\'|\")/g, '')
2903
- : property.name;
2904
- }
2905
- getDefaultValue(child, tags) {
2906
- if (tags.defaultValue) {
2907
- return tags.defaultValue;
2908
- }
2909
- // TypeDoc version 0.20.x stopped auto-generating initializers for the default value
2910
- // (and replaced them with "...") due to the complicated logic it required.
2911
- // See: https://github.com/TypeStrong/typedoc/issues/1552
2912
- if (child.defaultValue === '...') {
2913
- return;
2914
- }
2915
- return child.defaultValue;
2916
- }
2917
- getAnchorId(entry) {
2918
- return (entry.anchorId ||
2919
- this.typeDefinitionsProvider?.anchorIds[entry.name] ||
2920
- '');
2921
- }
2922
- #isInputProperty(property) {
2923
- return (property.decorator?.name === 'Input' ||
2924
- (property.type.name === 'InputSignal' &&
2925
- property.type.package === '@angular/core'));
2926
- }
2927
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDocAdapterService, deps: [{ token: SkyDocsTypeDefinitionsProvider, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2928
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDocAdapterService, providedIn: 'any' }); }
2929
- }
2930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDocAdapterService, decorators: [{
2931
- type: Injectable,
2932
- args: [{
2933
- providedIn: 'any',
2934
- }]
2935
- }], ctorParameters: () => [{ type: SkyDocsTypeDefinitionsProvider, decorators: [{
2936
- type: Optional
2937
- }] }] });
2938
-
2939
- /**
2940
- * Handles all type definitions that have been converted from the third-party documentation generator.
2941
- */
2942
- class SkyDocsTypeDefinitionsService {
2943
- constructor(typeDefinitionsProvider, adapter) {
2944
- this.typeDefinitionsProvider = typeDefinitionsProvider;
2945
- this.adapter = adapter;
2946
- }
2947
- /**
2948
- * Returns type definitions from a specific source code location.
2949
- * @param sourceCodePath The directory of the source code you wish to pull type definitions from,
2950
- * relative to the application's root directory.
2951
- */
2952
- getTypeDefinitions(sourceCodePath, additionalSourceCodePaths) {
2953
- if (!sourceCodePath) {
2954
- throw new Error('The `sourceCodePath` parameter is required');
2955
- }
2956
- const sourceCodePaths = additionalSourceCodePaths && additionalSourceCodePaths.length > 0
2957
- ? [sourceCodePath].concat(additionalSourceCodePaths)
2958
- : [sourceCodePath];
2959
- sourceCodePaths.forEach((path) => {
2960
- if (!path.endsWith('/') && !path.endsWith('.ts')) {
2961
- throw new Error('Source code paths must end with a forward slash (`/`) or `.ts`.');
2962
- }
2963
- });
2964
- const allDefinitions = this.typeDefinitionsProvider.typeDefinitions;
2965
- const types = {
2966
- classes: [],
2967
- components: [],
2968
- directives: [],
2969
- enumerations: [],
2970
- interfaces: [],
2971
- pipes: [],
2972
- services: [],
2973
- typeAliases: [],
2974
- hasPreviewFeatures: false,
2975
- };
2976
- if (!allDefinitions) {
2977
- console.warn(`No types were found for this project!`);
2978
- return types;
2979
- }
2980
- sourceCodePaths.forEach((path) => {
2981
- const requestedDir = path
2982
- .replace(/src\/app\/public\//, '')
2983
- .replace(/^\//, ''); // remove first slash.
2984
- // Only process types that match the requested source code location.
2985
- const typeDefinitions = allDefinitions.filter((i) => i.sources && i.sources[0].fileName.match(requestedDir));
2986
- if (typeDefinitions.length === 0) {
2987
- console.warn(`Type definitions were not found for location: ${requestedDir}`);
2988
- }
2989
- typeDefinitions.forEach((item) => {
2990
- const decorator = item.decorators && item.decorators[0]?.name;
2991
- const kind = item.kind;
2992
- switch (decorator) {
2993
- case 'Component':
2994
- const componentType = this.adapter.toDirectiveDefinition(item);
2995
- types.components.push(componentType);
2996
- types.hasPreviewFeatures ||= componentType.hasPreviewFeatures;
2997
- break;
2998
- case 'Directive':
2999
- const directiveType = this.adapter.toDirectiveDefinition(item);
3000
- types.directives.push(directiveType);
3001
- types.hasPreviewFeatures ||= directiveType.hasPreviewFeatures;
3002
- break;
3003
- case 'Injectable':
3004
- const serviceType = this.adapter.toClassDefinition(item);
3005
- types.services.push(serviceType);
3006
- types.hasPreviewFeatures ||= serviceType.hasPreviewFeatures;
3007
- break;
3008
- case 'NgModule':
3009
- // Don't document modules.
3010
- break;
3011
- case 'Pipe':
3012
- const pipeType = this.adapter.toPipeDefinition(item);
3013
- types.pipes.push(pipeType);
3014
- types.hasPreviewFeatures ||= pipeType.transformMethod.isPreview;
3015
- break;
3016
- default:
3017
- /*tslint:disable-next-line:switch-default*/
3018
- switch (kind) {
3019
- case TypeDocKind.Class:
3020
- const classType = this.adapter.toClassDefinition(item);
3021
- types.classes.push(classType);
3022
- types.hasPreviewFeatures ||= classType.hasPreviewFeatures;
3023
- break;
3024
- case TypeDocKind.Interface:
3025
- const interfaceType = this.adapter.toInterfaceDefinition(item);
3026
- types.interfaces.push(interfaceType);
3027
- types.hasPreviewFeatures ||= interfaceType.hasPreviewFeatures;
3028
- break;
3029
- case TypeDocKind.Enum:
3030
- const enumType = this.adapter.toEnumerationDefinition(item);
3031
- types.enumerations.push(enumType);
3032
- types.hasPreviewFeatures ||= enumType.hasPreviewFeatures;
3033
- break;
3034
- case TypeDocKind.TypeAlias:
3035
- const typeAliasType = this.adapter.toTypeAliasDefinition(item);
3036
- types.typeAliases.push(typeAliasType);
3037
- types.hasPreviewFeatures ||= !!typeAliasType.isPreview;
3038
- break;
3039
- }
3040
- }
3041
- });
3042
- });
3043
- return types;
3044
- }
3045
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsService, deps: [{ token: SkyDocsTypeDefinitionsProvider }, { token: SkyDocsTypeDocAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3046
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsService, providedIn: 'any' }); }
3047
- }
3048
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsTypeDefinitionsService, decorators: [{
3049
- type: Injectable,
3050
- args: [{
3051
- providedIn: 'any',
3052
- }]
3053
- }], ctorParameters: () => [{ type: SkyDocsTypeDefinitionsProvider }, { type: SkyDocsTypeDocAdapterService }] });
3054
-
3055
- /**
3056
- * @internal
3057
- */
3058
- class SkyDocsDemoPageTypeDefinitionsComponent {
3059
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageTypeDefinitionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3060
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoPageTypeDefinitionsComponent, isStandalone: false, selector: "sky-docs-demo-page-type-definitions", inputs: { types: "types" }, ngImport: i0, template: "<ng-template [ngIf]=\"types\">\n <sky-docs-demo-page-section\n *ngIf=\"types.components.length\"\n heading=\"Components\"\n >\n <sky-docs-directive-definition\n *ngFor=\"let config of types.components\"\n [config]=\"config\"\n ></sky-docs-directive-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.directives.length\"\n heading=\"Directives\"\n >\n <sky-docs-directive-definition\n *ngFor=\"let config of types.directives\"\n [config]=\"config\"\n ></sky-docs-directive-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section *ngIf=\"types.pipes.length\" heading=\"Pipes\">\n <sky-docs-pipe-definition\n *ngFor=\"let config of types.pipes\"\n [config]=\"config\"\n ></sky-docs-pipe-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section *ngIf=\"types.services.length\" heading=\"Services\">\n <sky-docs-class-definition\n *ngFor=\"let config of types.services\"\n [config]=\"config\"\n ></sky-docs-class-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section *ngIf=\"types.classes.length\" heading=\"Classes\">\n <sky-docs-class-definition\n *ngFor=\"let config of types.classes\"\n [config]=\"config\"\n ></sky-docs-class-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.interfaces.length\"\n heading=\"Interfaces\"\n >\n <sky-docs-interface-definition\n *ngFor=\"let config of types.interfaces\"\n [config]=\"config\"\n ></sky-docs-interface-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.enumerations.length\"\n heading=\"Enumerations\"\n >\n <sky-docs-enumeration-definition\n *ngFor=\"let config of types.enumerations\"\n [config]=\"config\"\n ></sky-docs-enumeration-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.typeAliases.length\"\n heading=\"Type aliases\"\n >\n <sky-docs-type-alias-definition\n *ngFor=\"let config of types.typeAliases\"\n [config]=\"config\"\n ></sky-docs-type-alias-definition>\n </sky-docs-demo-page-section>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyDocsClassDefinitionComponent, selector: "sky-docs-class-definition", inputs: ["config"] }, { kind: "component", type: SkyDocsDirectiveDefinitionComponent, selector: "sky-docs-directive-definition", inputs: ["config"] }, { kind: "component", type: SkyDocsEnumerationDefinitionComponent, selector: "sky-docs-enumeration-definition", inputs: ["config"] }, { kind: "component", type: SkyDocsInterfaceDefinitionComponent, selector: "sky-docs-interface-definition", inputs: ["config"] }, { kind: "component", type: SkyDocsPipeDefinitionComponent, selector: "sky-docs-pipe-definition", inputs: ["config"] }, { kind: "component", type: SkyDocsTypeAliasDefinitionComponent, selector: "sky-docs-type-alias-definition", inputs: ["config"] }, { kind: "component", type: SkyDocsDemoPageSectionComponent, selector: "sky-docs-demo-page-section", inputs: ["heading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3061
- }
3062
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageTypeDefinitionsComponent, decorators: [{
3063
- type: Component,
3064
- args: [{ selector: 'sky-docs-demo-page-type-definitions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template [ngIf]=\"types\">\n <sky-docs-demo-page-section\n *ngIf=\"types.components.length\"\n heading=\"Components\"\n >\n <sky-docs-directive-definition\n *ngFor=\"let config of types.components\"\n [config]=\"config\"\n ></sky-docs-directive-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.directives.length\"\n heading=\"Directives\"\n >\n <sky-docs-directive-definition\n *ngFor=\"let config of types.directives\"\n [config]=\"config\"\n ></sky-docs-directive-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section *ngIf=\"types.pipes.length\" heading=\"Pipes\">\n <sky-docs-pipe-definition\n *ngFor=\"let config of types.pipes\"\n [config]=\"config\"\n ></sky-docs-pipe-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section *ngIf=\"types.services.length\" heading=\"Services\">\n <sky-docs-class-definition\n *ngFor=\"let config of types.services\"\n [config]=\"config\"\n ></sky-docs-class-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section *ngIf=\"types.classes.length\" heading=\"Classes\">\n <sky-docs-class-definition\n *ngFor=\"let config of types.classes\"\n [config]=\"config\"\n ></sky-docs-class-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.interfaces.length\"\n heading=\"Interfaces\"\n >\n <sky-docs-interface-definition\n *ngFor=\"let config of types.interfaces\"\n [config]=\"config\"\n ></sky-docs-interface-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.enumerations.length\"\n heading=\"Enumerations\"\n >\n <sky-docs-enumeration-definition\n *ngFor=\"let config of types.enumerations\"\n [config]=\"config\"\n ></sky-docs-enumeration-definition>\n </sky-docs-demo-page-section>\n\n <sky-docs-demo-page-section\n *ngIf=\"types.typeAliases.length\"\n heading=\"Type aliases\"\n >\n <sky-docs-type-alias-definition\n *ngFor=\"let config of types.typeAliases\"\n [config]=\"config\"\n ></sky-docs-type-alias-definition>\n </sky-docs-demo-page-section>\n</ng-template>\n" }]
3065
- }], propDecorators: { types: [{
3066
- type: Input
3067
- }] } });
3068
-
3069
- /**
3070
- * The demo page component wraps all documentation components and handles the configuration and layout of the page.
3071
- * @example
3072
- * ```
3073
- * <sky-docs-demo-page
3074
- * pageTitle="My demo page"
3075
- * >
3076
- * Content here.
3077
- * </sky-docs-demo-page>
3078
- * ```
3079
- */
3080
- class SkyDocsDemoPageComponent {
3081
- /**
3082
- * Specifies the local path to any other relevant source code. The values are relative to the root directory.
3083
- */
3084
- set additionalSourceCodePaths(paths) {
3085
- this.#_additionalSourceCodePaths = paths;
3086
- this.#updateTypes();
3087
- }
3088
- get additionalSourceCodePaths() {
3089
- return this.#_additionalSourceCodePaths;
3090
- }
3091
- /**
3092
- * Specifies the local path to any other relevant testing source code. The values are relative to the root directory.
3093
- */
3094
- set additionalTestingSourceCodePaths(paths) {
3095
- this.#_additionalTestingSourceCodePaths = paths;
3096
- this.#updateTestingTypes();
3097
- }
3098
- get additionalTestingSourceCodePaths() {
3099
- return this.#_additionalTestingSourceCodePaths;
3100
- }
3101
- /**
3102
- * Specifies the local path to the module's source code. The value is relative to the root directory.
3103
- */
3104
- set moduleSourceCodePath(path) {
3105
- this.#_moduleSourceCodePath = path;
3106
- this.testingSourceCodePath = path.replace('/modules/', '/testing/');
3107
- this.#updateTypes();
3108
- this.#updateTestingTypes();
3109
- }
3110
- get moduleSourceCodePath() {
3111
- return this.#_moduleSourceCodePath;
3112
- }
3113
- #_additionalSourceCodePaths;
3114
- #_additionalTestingSourceCodePaths;
3115
- #_moduleSourceCodePath;
3116
- constructor(activatedRoute, changeDetector, router, skyAppConfig, domAdapter, supportalService, titleService, typeDefinitionService) {
3117
- this.activatedRoute = activatedRoute;
3118
- this.changeDetector = changeDetector;
3119
- this.router = router;
3120
- this.skyAppConfig = skyAppConfig;
3121
- this.domAdapter = domAdapter;
3122
- this.supportalService = supportalService;
3123
- this.titleService = titleService;
3124
- this.typeDefinitionService = typeDefinitionService;
3125
- /**
3126
- * @internal
3127
- */
3128
- this.enableCodeExamples = false;
3129
- /**
3130
- * @internal
3131
- */
3132
- this.enableTestingTab = false;
3133
- /**
3134
- * @internal
3135
- */
3136
- this.enableTabLayout = false;
3137
- this.hasPreviewFeatures = false;
3138
- this.siteOptions = inject(SkyDocsToolsSiteOptions, { optional: true });
3139
- }
3140
- ngOnInit() {
3141
- const currentHostUrl = this.skyAppConfig.skyux.host.url + '/' + this.skyAppConfig.skyux.name;
3142
- this.updateTitle();
3143
- this.supportalService
3144
- .getComponentsInfo()
3145
- .subscribe((results) => {
3146
- this.sidebarRoutes = [
3147
- {
3148
- name: 'Components',
3149
- path: 'https://developer.blackbaud.com/skyux/components',
3150
- children: results.map((component) => ({
3151
- name: component.name,
3152
- path: this.getPath(component.url, currentHostUrl),
3153
- })),
3154
- },
3155
- ];
3156
- this.changeDetector.markForCheck();
3157
- });
3158
- }
3159
- ngAfterContentInit() {
3160
- this.enableCodeExamples = this.codeExampleComponents.length > 0;
3161
- this.enableTabLayout =
3162
- !!this.designGuidelinesComponent || this.enableCodeExamples;
3163
- }
3164
- ngAfterViewInit() {
3165
- // Watch for route fragment to change and scroll to heading.
3166
- this.activatedRoute.fragment.subscribe((fragment) => {
3167
- this.domAdapter.scrollToFragment(fragment);
3168
- });
3169
- // Change the HREF attribute for all dynamic links when the query params change.
3170
- // This will also generate the appropriate HREF if the user wants to open the link in a new window.
3171
- this.activatedRoute.queryParams.subscribe(() => {
3172
- this.domAdapter.setupAnchorLinks();
3173
- });
3174
- // When a dynamic link is clicked, use Angular's router so that everything works correctly.
3175
- this.domAdapter.anchorLinkClick.subscribe((anchorLink) => {
3176
- const fragment = anchorLink.href.split('#')[1];
3177
- this.router.navigate([], {
3178
- fragment,
3179
- queryParamsHandling: 'merge',
3180
- });
3181
- if (this.activatedRoute.snapshot.fragment === fragment) {
3182
- this.domAdapter.scrollToFragment(fragment);
3183
- }
3184
- });
3185
- }
3186
- updateTitle() {
3187
- /*istanbul ignore else*/
3188
- if (this.pageTitle) {
3189
- this.titleService.setTitle(this.pageTitle, 'Components');
3190
- }
3191
- }
3192
- getPath(url, currentHostUrl) {
3193
- // Replace host + SPA so Stache will mark active.
3194
- // Strip URL params is url is local, as those will be preserved by stacheRouterLink.
3195
- if (url.indexOf(currentHostUrl) > -1) {
3196
- return url.replace(currentHostUrl, '').split('?')[0];
3197
- }
3198
- else {
3199
- return url;
3200
- }
3201
- }
3202
- #updateTypes() {
3203
- this.moduleTypeDefinitions = this.typeDefinitionService.getTypeDefinitions(this.moduleSourceCodePath, this.additionalSourceCodePaths);
3204
- }
3205
- #updateTestingTypes() {
3206
- this.testingTypeDefinitions = this.typeDefinitionService.getTypeDefinitions(this.testingSourceCodePath, this.additionalTestingSourceCodePaths);
3207
- this.enableTestingTab = Object.values(this.testingTypeDefinitions).some((value) => value && value.length > 0);
3208
- }
3209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i1$3.Router }, { token: i2$1.SkyAppConfig }, { token: SkyDocsDemoPageDomAdapterService }, { token: SkyDocsSupportalService }, { token: SkyDocsDemoPageTitleService }, { token: SkyDocsTypeDefinitionsService }], target: i0.ɵɵFactoryTarget.Component }); }
3210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoPageComponent, isStandalone: false, selector: "sky-docs-demo-page", inputs: { additionalSourceCodePaths: "additionalSourceCodePaths", additionalTestingSourceCodePaths: "additionalTestingSourceCodePaths", gitRepoUrl: "gitRepoUrl", moduleName: "moduleName", moduleSourceCodePath: "moduleSourceCodePath", packageName: "packageName", packageUrl: "packageUrl", pageTitle: "pageTitle" }, providers: [SkyDocsDemoPageDomAdapterService], queries: [{ propertyName: "designGuidelinesComponent", first: true, predicate: SkyDocsDesignGuidelinesComponent, descendants: true }, { propertyName: "codeExampleComponents", predicate: SkyDocsCodeExamplesComponent }], ngImport: i0, template: "<div class=\"sky-docs-demo-page\">\n <stache\n layout=\"sidebar\"\n [pageTitle]=\"pageTitle\"\n [showBreadcrumbs]=\"false\"\n [showTableOfContents]=\"false\"\n [sidebarRoutes]=\"sidebarRoutes\"\n >\n <ng-content select=\"sky-docs-demo-page-summary\"></ng-content>\n\n <sky-alert\n *ngIf=\"\n moduleTypeDefinitions?.hasPreviewFeatures ||\n testingTypeDefinitions?.hasPreviewFeatures\n \"\n class=\"sky-docs-demo-page-preview-alert sky-margin-stacked-lg\"\n >This component currently has preview features available that may not be\n fully represented in the design documentation, the demo, or code examples.\n <ng-container *ngIf=\"siteOptions?.previewFeaturesUrl\"\n >Learn more about this work\n <a [skyAppLink]=\"siteOptions?.previewFeaturesUrl\"\n >here.</a\n ></ng-container\n ></sky-alert\n >\n\n <ng-content select=\"sky-docs-demo\"></ng-content>\n\n <div class=\"sky-docs-demo-page-main\">\n <sky-tabset *ngIf=\"enableTabLayout; else content\" permalinkId=\"docs\">\n <sky-tab tabHeading=\"Design\" *ngIf=\"!!designGuidelinesComponent\">\n <ng-content select=\"sky-docs-design-guidelines\"></ng-content>\n </sky-tab>\n\n <sky-tab tabHeading=\"Development\">\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </sky-tab>\n\n <sky-tab tabHeading=\"Testing\" *ngIf=\"enableTestingTab\">\n <sky-docs-demo-page-section heading=\"Test harnesses\">\n <p>\n SKY UX test harnesses are built upon Angular CDK component\n harnesses. For more information see the\n <a href=\"https://material.angular.io/cdk/test-harnesses/overview\"\n >Angular CDK component harness documentation</a\n >.\n </p>\n </sky-docs-demo-page-section>\n <sky-docs-demo-page-type-definitions [types]=\"testingTypeDefinitions\">\n </sky-docs-demo-page-type-definitions>\n </sky-tab>\n\n <sky-tab tabHeading=\"Code examples\" *ngIf=\"enableCodeExamples\">\n <ng-content select=\"sky-docs-code-examples\"></ng-content>\n </sky-tab>\n </sky-tabset>\n </div>\n </stache>\n</div>\n\n<ng-template #content>\n <sky-docs-demo-page-section\n *ngIf=\"moduleName || packageName\"\n heading=\"Installation\"\n >\n <sky-docs-module-info\n [gitRepoUrl]=\"gitRepoUrl\"\n [moduleName]=\"moduleName\"\n [packageName]=\"packageName\"\n [packageUrl]=\"packageUrl\"\n >\n <ng-content select=\"sky-docs-demo-page-module-info\"></ng-content>\n </sky-docs-module-info>\n </sky-docs-demo-page-section>\n\n <ng-content></ng-content>\n\n <sky-docs-demo-page-type-definitions [types]=\"moduleTypeDefinitions\">\n </sky-docs-demo-page-type-definitions>\n</ng-template>\n", styles: [".sky-docs-demo-page ::ng-deep p{margin:15px 0}.sky-docs-demo-page ::ng-deep .stache-max-width-container{max-width:none;margin:0}.sky-docs-demo-page ::ng-deep .sky-docs-code-block{margin:15px 0;display:block}.sky-docs-demo-page ::ng-deep .sky-docs-code-block .sky-code-block{font-size:13.5px}.sky-docs-demo-page ::ng-deep .sky-docs-code-block .sky-code-output{margin:-2px 0 0;padding:0 0 0 15px;background:transparent;border:0}.sky-docs-demo-page ::ng-deep .sky-definition-list{margin:0}.sky-docs-demo-page ::ng-deep .sky-definition-list .sky-docs-code-block{margin:0}.sky-docs-demo-page ::ng-deep .sky-docs-type-definition-wrapper{margin-bottom:40px}.sky-docs-demo-page-main{padding:30px 0}.sky-docs-demo-page-main table{margin-top:15px;margin-bottom:15px}.sky-docs-demo-page-main ::ng-deep .sky-tabset{margin-left:-45px;margin-right:-45px;padding-left:45px;padding-right:45px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$5.λ1, selector: "sky-alert", inputs: ["alertType", "closeable", "closed", "descriptionType", "customDescription"], outputs: ["closedChange"] }, { kind: "directive", type: i9.λ3, selector: "[skyAppLink]", inputs: ["skyAppLink"] }, { kind: "component", type: SkyDocsModuleInfoComponent, selector: "sky-docs-module-info", inputs: ["gitRepoUrl", "moduleName", "packageName", "packageUrl"] }, { kind: "component", type: i7.λ1, selector: "sky-tab", inputs: ["active", "disabled", "permalinkValue", "tabHeaderCount", "tabHeading", "tabIndexValue", "layout"], outputs: ["close"] }, { kind: "component", type: i7.λ2, selector: "sky-tabset", inputs: ["active", "ariaLabel", "ariaLabelledBy", "permalinkId", "tabStyle"], outputs: ["activeChange", "newTab", "openTab", "tabIndexesChange"] }, { kind: "component", type: i12.λ30, selector: "stache", inputs: ["pageTitle", "windowTitle", "navTitle", "layout", "sidebarRoutes", "breadcrumbsRoutes", "showBreadcrumbs", "showEditButton", "showFooter", "showTableOfContents", "showBackToTop", "showInNav", "inPageRoutes"] }, { kind: "component", type: SkyDocsDemoPageSectionComponent, selector: "sky-docs-demo-page-section", inputs: ["heading"] }, { kind: "component", type: SkyDocsDemoPageTypeDefinitionsComponent, selector: "sky-docs-demo-page-type-definitions", inputs: ["types"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3211
- }
3212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageComponent, decorators: [{
3213
- type: Component,
3214
- args: [{ selector: 'sky-docs-demo-page', providers: [SkyDocsDemoPageDomAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-demo-page\">\n <stache\n layout=\"sidebar\"\n [pageTitle]=\"pageTitle\"\n [showBreadcrumbs]=\"false\"\n [showTableOfContents]=\"false\"\n [sidebarRoutes]=\"sidebarRoutes\"\n >\n <ng-content select=\"sky-docs-demo-page-summary\"></ng-content>\n\n <sky-alert\n *ngIf=\"\n moduleTypeDefinitions?.hasPreviewFeatures ||\n testingTypeDefinitions?.hasPreviewFeatures\n \"\n class=\"sky-docs-demo-page-preview-alert sky-margin-stacked-lg\"\n >This component currently has preview features available that may not be\n fully represented in the design documentation, the demo, or code examples.\n <ng-container *ngIf=\"siteOptions?.previewFeaturesUrl\"\n >Learn more about this work\n <a [skyAppLink]=\"siteOptions?.previewFeaturesUrl\"\n >here.</a\n ></ng-container\n ></sky-alert\n >\n\n <ng-content select=\"sky-docs-demo\"></ng-content>\n\n <div class=\"sky-docs-demo-page-main\">\n <sky-tabset *ngIf=\"enableTabLayout; else content\" permalinkId=\"docs\">\n <sky-tab tabHeading=\"Design\" *ngIf=\"!!designGuidelinesComponent\">\n <ng-content select=\"sky-docs-design-guidelines\"></ng-content>\n </sky-tab>\n\n <sky-tab tabHeading=\"Development\">\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </sky-tab>\n\n <sky-tab tabHeading=\"Testing\" *ngIf=\"enableTestingTab\">\n <sky-docs-demo-page-section heading=\"Test harnesses\">\n <p>\n SKY UX test harnesses are built upon Angular CDK component\n harnesses. For more information see the\n <a href=\"https://material.angular.io/cdk/test-harnesses/overview\"\n >Angular CDK component harness documentation</a\n >.\n </p>\n </sky-docs-demo-page-section>\n <sky-docs-demo-page-type-definitions [types]=\"testingTypeDefinitions\">\n </sky-docs-demo-page-type-definitions>\n </sky-tab>\n\n <sky-tab tabHeading=\"Code examples\" *ngIf=\"enableCodeExamples\">\n <ng-content select=\"sky-docs-code-examples\"></ng-content>\n </sky-tab>\n </sky-tabset>\n </div>\n </stache>\n</div>\n\n<ng-template #content>\n <sky-docs-demo-page-section\n *ngIf=\"moduleName || packageName\"\n heading=\"Installation\"\n >\n <sky-docs-module-info\n [gitRepoUrl]=\"gitRepoUrl\"\n [moduleName]=\"moduleName\"\n [packageName]=\"packageName\"\n [packageUrl]=\"packageUrl\"\n >\n <ng-content select=\"sky-docs-demo-page-module-info\"></ng-content>\n </sky-docs-module-info>\n </sky-docs-demo-page-section>\n\n <ng-content></ng-content>\n\n <sky-docs-demo-page-type-definitions [types]=\"moduleTypeDefinitions\">\n </sky-docs-demo-page-type-definitions>\n</ng-template>\n", styles: [".sky-docs-demo-page ::ng-deep p{margin:15px 0}.sky-docs-demo-page ::ng-deep .stache-max-width-container{max-width:none;margin:0}.sky-docs-demo-page ::ng-deep .sky-docs-code-block{margin:15px 0;display:block}.sky-docs-demo-page ::ng-deep .sky-docs-code-block .sky-code-block{font-size:13.5px}.sky-docs-demo-page ::ng-deep .sky-docs-code-block .sky-code-output{margin:-2px 0 0;padding:0 0 0 15px;background:transparent;border:0}.sky-docs-demo-page ::ng-deep .sky-definition-list{margin:0}.sky-docs-demo-page ::ng-deep .sky-definition-list .sky-docs-code-block{margin:0}.sky-docs-demo-page ::ng-deep .sky-docs-type-definition-wrapper{margin-bottom:40px}.sky-docs-demo-page-main{padding:30px 0}.sky-docs-demo-page-main table{margin-top:15px;margin-bottom:15px}.sky-docs-demo-page-main ::ng-deep .sky-tabset{margin-left:-45px;margin-right:-45px;padding-left:45px;padding-right:45px}\n"] }]
3215
- }], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i1$3.Router }, { type: i2$1.SkyAppConfig }, { type: SkyDocsDemoPageDomAdapterService }, { type: SkyDocsSupportalService }, { type: SkyDocsDemoPageTitleService }, { type: SkyDocsTypeDefinitionsService }], propDecorators: { additionalSourceCodePaths: [{
3216
- type: Input
3217
- }], additionalTestingSourceCodePaths: [{
3218
- type: Input
3219
- }], gitRepoUrl: [{
3220
- type: Input
3221
- }], moduleName: [{
3222
- type: Input
3223
- }], moduleSourceCodePath: [{
3224
- type: Input
3225
- }], packageName: [{
3226
- type: Input
3227
- }], packageUrl: [{
3228
- type: Input
3229
- }], pageTitle: [{
3230
- type: Input
3231
- }], designGuidelinesComponent: [{
3232
- type: ContentChild,
3233
- args: [SkyDocsDesignGuidelinesComponent]
3234
- }], codeExampleComponents: [{
3235
- type: ContentChildren,
3236
- args: [SkyDocsCodeExamplesComponent]
3237
- }] } });
3238
-
3239
- class SkyDocsDemoPageModuleInfoComponent {
3240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageModuleInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3241
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDemoPageModuleInfoComponent, isStandalone: false, selector: "sky-docs-demo-page-module-info", ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
3242
- }
3243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageModuleInfoComponent, decorators: [{
3244
- type: Component,
3245
- args: [{
3246
- selector: 'sky-docs-demo-page-module-info',
3247
- template: '<ng-content></ng-content>',
3248
- standalone: false,
3249
- }]
3250
- }] });
3251
-
3252
- class SkyDocsDemoPageModule {
3253
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3254
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageModule, declarations: [SkyDocsDemoPageComponent,
3255
- SkyDocsDemoPageModuleInfoComponent,
3256
- SkyDocsDemoPageSectionComponent,
3257
- SkyDocsDemoPageSummaryComponent,
3258
- SkyDocsDemoPageTypeDefinitionsComponent], imports: [CommonModule,
3259
- RouterModule,
3260
- SkyAlertModule,
3261
- SkyAppLinkModule,
3262
- SkyCodeBlockModule,
3263
- SkyCodeModule,
3264
- SkyDocsDemoModule,
3265
- SkyDocsHeadingAnchorModule,
3266
- SkyDocsMarkdownModule,
3267
- SkyDocsModuleInfoModule,
3268
- SkyDocsTypeDefinitionsModule,
3269
- SkyTabsModule,
3270
- StachePageSummaryModule,
3271
- StacheWrapperModule], exports: [SkyDocsDemoPageComponent,
3272
- SkyDocsDemoPageModuleInfoComponent,
3273
- SkyDocsDemoPageSectionComponent,
3274
- SkyDocsDemoPageSummaryComponent,
3275
- SkyDocsDemoPageTypeDefinitionsComponent] }); }
3276
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageModule, imports: [CommonModule,
3277
- RouterModule,
3278
- SkyAlertModule,
3279
- SkyAppLinkModule,
3280
- SkyCodeBlockModule,
3281
- SkyCodeModule,
3282
- SkyDocsDemoModule,
3283
- SkyDocsHeadingAnchorModule,
3284
- SkyDocsMarkdownModule,
3285
- SkyDocsModuleInfoModule,
3286
- SkyDocsTypeDefinitionsModule,
3287
- SkyTabsModule,
3288
- StachePageSummaryModule,
3289
- StacheWrapperModule] }); }
3290
- }
3291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDemoPageModule, decorators: [{
3292
- type: NgModule,
3293
- args: [{
3294
- imports: [
3295
- CommonModule,
3296
- RouterModule,
3297
- SkyAlertModule,
3298
- SkyAppLinkModule,
3299
- SkyCodeBlockModule,
3300
- SkyCodeModule,
3301
- SkyDocsDemoModule,
3302
- SkyDocsHeadingAnchorModule,
3303
- SkyDocsMarkdownModule,
3304
- SkyDocsModuleInfoModule,
3305
- SkyDocsTypeDefinitionsModule,
3306
- SkyTabsModule,
3307
- StachePageSummaryModule,
3308
- StacheWrapperModule,
3309
- ],
3310
- declarations: [
3311
- SkyDocsDemoPageComponent,
3312
- SkyDocsDemoPageModuleInfoComponent,
3313
- SkyDocsDemoPageSectionComponent,
3314
- SkyDocsDemoPageSummaryComponent,
3315
- SkyDocsDemoPageTypeDefinitionsComponent,
3316
- ],
3317
- exports: [
3318
- SkyDocsDemoPageComponent,
3319
- SkyDocsDemoPageModuleInfoComponent,
3320
- SkyDocsDemoPageSectionComponent,
3321
- SkyDocsDemoPageSummaryComponent,
3322
- SkyDocsDemoPageTypeDefinitionsComponent,
3323
- ],
3324
- }]
3325
- }] });
3326
-
3327
- class SkyDocsDesignGuidelineThumbnailComponent {
3328
- constructor() {
3329
- this.showBorder = false;
3330
- }
3331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelineThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3332
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDesignGuidelineThumbnailComponent, isStandalone: false, selector: "sky-docs-design-guideline-thumbnail", inputs: { caption: "caption", captionType: "captionType", imageAlt: "imageAlt", imageSource: "imageSource", videoSource: "videoSource", showBorder: "showBorder" }, ngImport: i0, template: "<div class=\"sky-docs-design-guideline-thumbnail\">\n <sky-docs-thumbnail\n [caption]=\"caption\"\n [captionType]=\"captionType\"\n [imageAlt]=\"imageAlt\"\n [imageSource]=\"imageSource\"\n [videoSource]=\"videoSource\"\n [showBorder]=\"showBorder\"\n ></sky-docs-thumbnail>\n</div>\n", styles: [".sky-docs-design-guideline-thumbnail{margin-bottom:50px}.sky-docs-design-guideline-video video{max-width:100%}.sky-docs-design-guideline-video-border video{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}\n"], dependencies: [{ kind: "component", type: SkyDocsThumbnailComponent, selector: "sky-docs-thumbnail", inputs: ["caption", "captionType", "imageAlt", "imageSource", "showBorder", "videoSource"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3333
- }
3334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelineThumbnailComponent, decorators: [{
3335
- type: Component,
3336
- args: [{ selector: 'sky-docs-design-guideline-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-design-guideline-thumbnail\">\n <sky-docs-thumbnail\n [caption]=\"caption\"\n [captionType]=\"captionType\"\n [imageAlt]=\"imageAlt\"\n [imageSource]=\"imageSource\"\n [videoSource]=\"videoSource\"\n [showBorder]=\"showBorder\"\n ></sky-docs-thumbnail>\n</div>\n", styles: [".sky-docs-design-guideline-thumbnail{margin-bottom:50px}.sky-docs-design-guideline-video video{max-width:100%}.sky-docs-design-guideline-video-border video{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}\n"] }]
3337
- }], propDecorators: { caption: [{
3338
- type: Input
3339
- }], captionType: [{
3340
- type: Input
3341
- }], imageAlt: [{
3342
- type: Input
3343
- }], imageSource: [{
3344
- type: Input
3345
- }], videoSource: [{
3346
- type: Input
3347
- }], showBorder: [{
3348
- type: Input
3349
- }] } });
3350
-
3351
- class SkyDocsDesignGuidelineComponent {
3352
- constructor() {
3353
- this.headingStyle = 'default';
3354
- this.hasThumbnails = false;
3355
- }
3356
- get classNames() {
3357
- const classNames = [];
3358
- classNames.push(`sky-text-${this.headingStyle}`);
3359
- return classNames.join(' ');
3360
- }
3361
- ngAfterContentInit() {
3362
- this.hasThumbnails = !!this.thumbnails.length;
3363
- }
3364
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3365
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SkyDocsDesignGuidelineComponent, isStandalone: false, selector: "sky-docs-design-guideline", inputs: { heading: "heading", headingStyle: "headingStyle" }, queries: [{ propertyName: "thumbnails", predicate: SkyDocsDesignGuidelineThumbnailComponent }], ngImport: i0, template: "<div class=\"sky-docs-design-guideline\">\n <h3\n *ngIf=\"heading\"\n class=\"sky-docs-design-guideline-heading\"\n [ngClass]=\"classNames\"\n >\n {{ heading }}\n </h3>\n <sky-row *ngIf=\"hasThumbnails; else content\">\n <sky-column screenSmall=\"6\" screenMedium=\"5\" screenLarge=\"4\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </sky-column>\n <sky-column screenSmall=\"6\" screenMedium=\"7\" screenLarge=\"8\">\n <div class=\"sky-docs-design-guideline-thumbnails\">\n <ng-container *ngTemplateOutlet=\"thumbnails\"></ng-container>\n </div>\n </sky-column>\n </sky-row>\n</div>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #thumbnails>\n <ng-content select=\"sky-docs-design-guideline-thumbnail\"></ng-content>\n</ng-template>\n", styles: [".sky-docs-design-guideline-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;margin:30px 0 15px;font-size:19px;font-weight:400}.sky-docs-design-guideline-thumbnails{display:flex;flex-wrap:wrap}.sky-docs-design-guideline-thumbnails ::ng-deep sky-docs-design-guideline-thumbnail:first-child{padding-right:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ23, selector: "sky-row", inputs: ["reverseColumnOrder"] }, { kind: "component", type: i5.λ24, selector: "sky-column", inputs: ["screenXSmall", "screenSmall", "screenMedium", "screenLarge"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3366
- }
3367
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelineComponent, decorators: [{
3368
- type: Component,
3369
- args: [{ selector: 'sky-docs-design-guideline', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-docs-design-guideline\">\n <h3\n *ngIf=\"heading\"\n class=\"sky-docs-design-guideline-heading\"\n [ngClass]=\"classNames\"\n >\n {{ heading }}\n </h3>\n <sky-row *ngIf=\"hasThumbnails; else content\">\n <sky-column screenSmall=\"6\" screenMedium=\"5\" screenLarge=\"4\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </sky-column>\n <sky-column screenSmall=\"6\" screenMedium=\"7\" screenLarge=\"8\">\n <div class=\"sky-docs-design-guideline-thumbnails\">\n <ng-container *ngTemplateOutlet=\"thumbnails\"></ng-container>\n </div>\n </sky-column>\n </sky-row>\n</div>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #thumbnails>\n <ng-content select=\"sky-docs-design-guideline-thumbnail\"></ng-content>\n</ng-template>\n", styles: [".sky-docs-design-guideline-heading{line-height:1.1;font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#212327;margin:30px 0 15px;font-size:19px;font-weight:400}.sky-docs-design-guideline-thumbnails{display:flex;flex-wrap:wrap}.sky-docs-design-guideline-thumbnails ::ng-deep sky-docs-design-guideline-thumbnail:first-child{padding-right:20px}\n"] }]
3370
- }], propDecorators: { heading: [{
3371
- type: Input
3372
- }], headingStyle: [{
3373
- type: Input
3374
- }], thumbnails: [{
3375
- type: ContentChildren,
3376
- args: [SkyDocsDesignGuidelineThumbnailComponent]
3377
- }] } });
3378
-
3379
- class SkyDocsDesignGuidelinesModule {
3380
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelinesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3381
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelinesModule, declarations: [SkyDocsDesignGuidelineComponent,
3382
- SkyDocsDesignGuidelineThumbnailComponent,
3383
- SkyDocsDesignGuidelinesComponent], imports: [CommonModule, SkyDocsThumbnailModule, SkyFluidGridModule], exports: [SkyDocsDesignGuidelineComponent,
3384
- SkyDocsDesignGuidelineThumbnailComponent,
3385
- SkyDocsDesignGuidelinesComponent] }); }
3386
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelinesModule, imports: [CommonModule, SkyDocsThumbnailModule, SkyFluidGridModule] }); }
3387
- }
3388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsDesignGuidelinesModule, decorators: [{
3389
- type: NgModule,
3390
- args: [{
3391
- imports: [CommonModule, SkyDocsThumbnailModule, SkyFluidGridModule],
3392
- declarations: [
3393
- SkyDocsDesignGuidelineComponent,
3394
- SkyDocsDesignGuidelineThumbnailComponent,
3395
- SkyDocsDesignGuidelinesComponent,
3396
- ],
3397
- exports: [
3398
- SkyDocsDesignGuidelineComponent,
3399
- SkyDocsDesignGuidelineThumbnailComponent,
3400
- SkyDocsDesignGuidelinesComponent,
3401
- ],
3402
- }]
3403
- }] });
3404
-
3405
- /**
3406
- * This module conveniently exports the most commonly used modules.
3407
- */
3408
- class SkyDocsToolsModule {
3409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3410
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsModule, exports: [SkyDocsAnatomyModule,
3411
- SkyDocsCodeExamplesModule,
3412
- SkyDocsDemoModule,
3413
- SkyDocsDemoPageModule,
3414
- SkyDocsDesignGuidelinesModule] }); }
3415
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsModule, imports: [SkyDocsAnatomyModule,
3416
- SkyDocsCodeExamplesModule,
3417
- SkyDocsDemoModule,
3418
- SkyDocsDemoPageModule,
3419
- SkyDocsDesignGuidelinesModule] }); }
530
+ class SkyCodeExampleViewerModule {
531
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeExampleViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
532
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeExampleViewerModule, imports: [SkyCodeExampleViewerComponent], exports: [SkyCodeExampleViewerComponent] }); }
533
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeExampleViewerModule, imports: [SkyCodeExampleViewerComponent] }); }
3420
534
  }
3421
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SkyDocsToolsModule, decorators: [{
535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SkyCodeExampleViewerModule, decorators: [{
3422
536
  type: NgModule,
3423
537
  args: [{
3424
- exports: [
3425
- SkyDocsAnatomyModule,
3426
- SkyDocsCodeExamplesModule,
3427
- SkyDocsDemoModule,
3428
- SkyDocsDemoPageModule,
3429
- SkyDocsDesignGuidelinesModule,
3430
- ],
538
+ imports: [SkyCodeExampleViewerComponent],
539
+ exports: [SkyCodeExampleViewerComponent],
3431
540
  }]
3432
541
  }] });
3433
542
 
@@ -3435,5 +544,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
3435
544
  * Generated bundle index. Do not edit.
3436
545
  */
3437
546
 
3438
- export { SkyDocsAnatomyModule, SkyDocsCodeExampleTheme, SkyDocsCodeExamplesModule, SkyDocsDemoModule, SkyDocsDemoPageModule, SkyDocsDesignGuidelinesModule, SkyDocsHeadingAnchorModule, SkyDocsMarkdownModule, SkyDocsMarkdownPipe, SkyDocsModuleInfoModule, SkyDocsSourceCodeProvider, SkyDocsSupportalService, SkyDocsThumbnailModule, SkyDocsToolsModule, SkyDocsToolsOptions, SkyDocsToolsSiteOptions, SkyDocsTypeDefinitionsModule, SkyDocsTypeDefinitionsProvider, SkyDocsTypeDefinitionsService, SkyDocsAnatomyItemComponent as λ1, SkyDocsDemoPageModuleInfoComponent as λ10, SkyDocsDemoPageSectionComponent as λ11, SkyDocsDemoPageSummaryComponent as λ12, SkyDocsDemoPageTypeDefinitionsComponent as λ13, SkyDocsDemoPageComponent as λ14, SkyDocsDesignGuidelineThumbnailComponent as λ15, SkyDocsDesignGuidelineComponent as λ16, SkyDocsDesignGuidelinesComponent as λ17, SkyDocsHeadingAnchorComponent as λ18, SkyDocsModuleInfoComponent as λ19, SkyDocsAnatomyComponent as λ2, SkyDocsThumbnailComponent as λ20, SkyDocsCallSignatureDefinitionComponent as λ21, SkyDocsClassDefinitionComponent as λ22, SkyDocsDirectiveDefinitionComponent as λ23, SkyDocsEnumerationDefinitionComponent as λ24, SkyDocsInterfaceDefinitionComponent as λ25, SkyDocsMethodDefinitionsComponent as λ26, SkyDocsPipeDefinitionComponent as λ27, SkyDocsPropertyDefinitionsComponent as λ28, SkyDocsTypeAliasDefinitionComponent as λ29, SkyDocsCodeExampleComponent as λ3, SkyDocsTypeAnchorLinksPipe as λ30, SkyDocsAnatomyThumbnailComponent as λ31, SkyDocsDemoCustomControlPanelComponent as λ32, SkyDocsCodeExamplesComponent as λ4, SkyDocsDemoControlPanelCheckboxComponent as λ5, SkyDocsDemoControlPanelRadioGroupComponent as λ6, SkyDocsDemoControlPanelSectionComponent as λ7, SkyDocsDemoControlPanelComponent as λ8, SkyDocsDemoComponent as λ9 };
547
+ export { SKY_CODE_SNIPPET_LANGUAGES, SkyCodeExampleViewerModule, SkyCodeSnippetModule, SkyCodeSnippetComponent as λ1, SkyCodeExampleViewerComponent as λ2 };
3439
548
  //# sourceMappingURL=skyux-docs-tools.mjs.map