@mathstack/app-kit 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -32,10 +32,10 @@ class AdkAssetsResource {
|
|
|
32
32
|
responseType: responseType,
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
36
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkAssetsResource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkAssetsResource, providedIn: 'root' }); }
|
|
37
37
|
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkAssetsResource, decorators: [{
|
|
39
39
|
type: Injectable,
|
|
40
40
|
args: [{
|
|
41
41
|
providedIn: 'root',
|
|
@@ -88,10 +88,10 @@ class AdkAssetsService {
|
|
|
88
88
|
parseYaml(str) {
|
|
89
89
|
return parse(str);
|
|
90
90
|
}
|
|
91
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
92
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkAssetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
92
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkAssetsService, providedIn: 'root' }); }
|
|
93
93
|
}
|
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkAssetsService, decorators: [{
|
|
95
95
|
type: Injectable,
|
|
96
96
|
args: [{ providedIn: 'root' }]
|
|
97
97
|
}] });
|
|
@@ -189,7 +189,6 @@ var ShikiTheme;
|
|
|
189
189
|
const MISSING_HIGHLIGHTER = `Please provide a \`shiki\` highlighter instance via \`options\`.`;
|
|
190
190
|
class AdkShikiHighlighter {
|
|
191
191
|
constructor() {
|
|
192
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
193
192
|
this.highlighterPromise = null;
|
|
194
193
|
}
|
|
195
194
|
/**
|
|
@@ -292,10 +291,10 @@ class AdkShikiHighlighter {
|
|
|
292
291
|
}
|
|
293
292
|
return null;
|
|
294
293
|
}
|
|
295
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
296
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
294
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkShikiHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
295
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkShikiHighlighter, providedIn: 'root' }); }
|
|
297
296
|
}
|
|
298
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
297
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkShikiHighlighter, decorators: [{
|
|
299
298
|
type: Injectable,
|
|
300
299
|
args: [{
|
|
301
300
|
providedIn: 'root',
|
|
@@ -415,10 +414,10 @@ class AdkMarkdownParser {
|
|
|
415
414
|
const pathTo = pathToKV.split(':')[1]?.trim();
|
|
416
415
|
return { name, pathTo };
|
|
417
416
|
}
|
|
418
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
419
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
417
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkMarkdownParser, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
418
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkMarkdownParser }); }
|
|
420
419
|
}
|
|
421
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkMarkdownParser, decorators: [{
|
|
422
421
|
type: Injectable
|
|
423
422
|
}], ctorParameters: () => [] });
|
|
424
423
|
|
|
@@ -493,10 +492,10 @@ class AdkActiveHeadingTracker {
|
|
|
493
492
|
scrollToTop() {
|
|
494
493
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
495
494
|
}
|
|
496
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
497
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
495
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkActiveHeadingTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
496
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkActiveHeadingTracker, providedIn: 'root' }); }
|
|
498
497
|
}
|
|
499
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
498
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkActiveHeadingTracker, decorators: [{
|
|
500
499
|
type: Injectable,
|
|
501
500
|
args: [{
|
|
502
501
|
providedIn: 'root',
|
|
@@ -515,10 +514,10 @@ class AdkDocumentIndexComponent {
|
|
|
515
514
|
scrollToTop() {
|
|
516
515
|
this.activeHeadingTracker.scrollToTop();
|
|
517
516
|
}
|
|
518
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
519
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
517
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
518
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: AdkDocumentIndexComponent, isStandalone: true, selector: "hsi-adk-document-index", inputs: { headings: "headings" }, outputs: { activeHeading: "activeHeading" }, ngImport: i0, template: "<nav class=\"toc\">\n @if (headings.length > 0) {\n <p class=\"index-title\">On this page</p>\n <ul class=\"links-container\">\n @for (heading of headings; track $index) {\n <li class=\"toc-item\">\n <button\n type=\"button\"\n class=\"toc-link\"\n [style.--level]=\"heading.level\"\n (click)=\"setActiveHeading($event, heading)\"\n (keydown.enter)=\"setActiveHeading($event, heading)\"\n [class.active]=\"\n heading.id === (activeHeadingTracker.activeHeadingId$ | async)\n \"\n >{{ heading.text }}</button\n >\n </li>\n }\n </ul>\n <button\n type=\"button\"\n class=\"back-to-top\"\n (click)=\"scrollToTop()\"\n (keydown.enter)=\"scrollToTop()\"\n >\n Back to top<span\n aria-hidden=\"true\"\n class=\"material-symbols-outlined arrow\"\n >arrow_upward</span\n >\n </button>\n }\n</nav>\n", styles: [".links-container{list-style:none;flex-basis:28%;padding:0;margin:0;width:250px}.index-title{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-medium);font-size:9pt;letter-spacing:.25pt;line-height:12pt;letter-spacing:.8pt;text-transform:uppercase;padding-bottom:.25rem}.toc-link{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-regular);font-size:11pt;letter-spacing:0;line-height:16pt;cursor:pointer;padding-top:.25rem;padding-bottom:.25rem;padding-left:calc((var(--level) - 1) * 1rem);display:block;border-left:2px solid var(--hsi-adk-color-muted-primary-90);color:var(--hsi-adk-color-muted-primary-50);text-align:left}.toc-link:hover{color:var(--hsi-adk-color-muted-primary-25);border-left:2px solid var(--hsi-adk-color-muted-primary-70)}.toc-link.active{color:var(--hsi-adk-color-primary-40);border-left:2px solid var(--hsi-adk-color-primary-40)}.back-to-top{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-regular);font-size:11pt;letter-spacing:0;line-height:16pt;cursor:pointer;padding:.5rem 0;display:flex;align-items:center;text-align:left;color:var(--hsi-adk-color-muted-primary-40)}.back-to-top:hover{color:var(--hsi-adk-color-muted-primary-10)}.arrow{transform:scale(.7)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
520
519
|
}
|
|
521
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentIndexComponent, decorators: [{
|
|
522
521
|
type: Component,
|
|
523
522
|
args: [{ selector: 'hsi-adk-document-index', imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"toc\">\n @if (headings.length > 0) {\n <p class=\"index-title\">On this page</p>\n <ul class=\"links-container\">\n @for (heading of headings; track $index) {\n <li class=\"toc-item\">\n <button\n type=\"button\"\n class=\"toc-link\"\n [style.--level]=\"heading.level\"\n (click)=\"setActiveHeading($event, heading)\"\n (keydown.enter)=\"setActiveHeading($event, heading)\"\n [class.active]=\"\n heading.id === (activeHeadingTracker.activeHeadingId$ | async)\n \"\n >{{ heading.text }}</button\n >\n </li>\n }\n </ul>\n <button\n type=\"button\"\n class=\"back-to-top\"\n (click)=\"scrollToTop()\"\n (keydown.enter)=\"scrollToTop()\"\n >\n Back to top<span\n aria-hidden=\"true\"\n class=\"material-symbols-outlined arrow\"\n >arrow_upward</span\n >\n </button>\n }\n</nav>\n", styles: [".links-container{list-style:none;flex-basis:28%;padding:0;margin:0;width:250px}.index-title{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-medium);font-size:9pt;letter-spacing:.25pt;line-height:12pt;letter-spacing:.8pt;text-transform:uppercase;padding-bottom:.25rem}.toc-link{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-regular);font-size:11pt;letter-spacing:0;line-height:16pt;cursor:pointer;padding-top:.25rem;padding-bottom:.25rem;padding-left:calc((var(--level) - 1) * 1rem);display:block;border-left:2px solid var(--hsi-adk-color-muted-primary-90);color:var(--hsi-adk-color-muted-primary-50);text-align:left}.toc-link:hover{color:var(--hsi-adk-color-muted-primary-25);border-left:2px solid var(--hsi-adk-color-muted-primary-70)}.toc-link.active{color:var(--hsi-adk-color-primary-40);border-left:2px solid var(--hsi-adk-color-primary-40)}.back-to-top{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-regular);font-size:11pt;letter-spacing:0;line-height:16pt;cursor:pointer;padding:.5rem 0;display:flex;align-items:center;text-align:left;color:var(--hsi-adk-color-muted-primary-40)}.back-to-top:hover{color:var(--hsi-adk-color-muted-primary-10)}.arrow{transform:scale(.7)}\n"] }]
|
|
524
523
|
}], propDecorators: { headings: [{
|
|
@@ -590,10 +589,10 @@ class AdkDocumentationConfigParser {
|
|
|
590
589
|
}
|
|
591
590
|
return result;
|
|
592
591
|
}
|
|
593
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
594
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationConfigParser, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
593
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationConfigParser }); }
|
|
595
594
|
}
|
|
596
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationConfigParser, decorators: [{
|
|
597
596
|
type: Injectable
|
|
598
597
|
}] });
|
|
599
598
|
|
|
@@ -640,10 +639,10 @@ class AdkDocumentationContentService {
|
|
|
640
639
|
}
|
|
641
640
|
return this.files[filePathFromAssets];
|
|
642
641
|
}
|
|
643
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
644
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
642
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
643
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationContentService }); }
|
|
645
644
|
}
|
|
646
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationContentService, decorators: [{
|
|
647
646
|
type: Injectable
|
|
648
647
|
}] });
|
|
649
648
|
|
|
@@ -672,10 +671,10 @@ class NavigationSiblingsComponent {
|
|
|
672
671
|
navigateToDoc(sibling) {
|
|
673
672
|
this.nextDoc.emit(sibling);
|
|
674
673
|
}
|
|
675
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
676
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
674
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NavigationSiblingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
675
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: NavigationSiblingsComponent, isStandalone: true, selector: "hsi-adk-navigation-siblings", inputs: { siblings: "siblings" }, outputs: { nextDoc: "nextDoc" }, providers: [TitleCasePipe], usesOnChanges: true, ngImport: i0, template: "@if (siblings.previous) {\n <div\n class=\"nav-panel previous\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.previous)\"\n (keydown.enter)=\"navigateToDoc(siblings.previous)\"\n ><p class=\"label\">Previous</p\n ><p class=\"name\"\n ><span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_back</span\n >{{ previous }}</p\n ></div\n >\n}\n@if (siblings.next) {\n <div\n class=\"nav-panel next\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.next)\"\n (keydown.enter)=\"navigateToDoc(siblings.next)\"\n ><p class=\"label\">Next</p\n ><p class=\"name\"\n >{{ next }}\n <span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_forward</span\n ></p\n ></div\n >\n}\n", styles: [":host{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:\"previous next\";gap:1rem}.nav-panel{border:1px solid var(--hsi-adk-color-muted-primary-80);padding:1rem;border-radius:.5rem;cursor:pointer}.nav-panel:hover{background:var(--hsi-adk-color-primary-98);border:1px solid var(--hsi-adk-color-primary-70)}.nav-panel.previous{grid-area:previous}.nav-panel.next{grid-area:next;text-align:right}.nav-panel.next .name,.nav-panel.next .label{justify-content:flex-end}.label{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-medium);font-size:9pt;letter-spacing:.25pt;line-height:12pt;letter-spacing:.8pt;text-transform:uppercase;line-height:1;display:flex;align-items:center}.name{display:flex;align-items:center;position:relative;padding-top:.5rem;color:var(--hsi-adk-color-primary-40)}.arrow{transform:scale(.8);position:relative;top:-1px}.previous .name{left:-6px}.next .name{right:-6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
677
676
|
}
|
|
678
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
677
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NavigationSiblingsComponent, decorators: [{
|
|
679
678
|
type: Component,
|
|
680
679
|
args: [{ selector: 'hsi-adk-navigation-siblings', imports: [CommonModule], providers: [TitleCasePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (siblings.previous) {\n <div\n class=\"nav-panel previous\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.previous)\"\n (keydown.enter)=\"navigateToDoc(siblings.previous)\"\n ><p class=\"label\">Previous</p\n ><p class=\"name\"\n ><span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_back</span\n >{{ previous }}</p\n ></div\n >\n}\n@if (siblings.next) {\n <div\n class=\"nav-panel next\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.next)\"\n (keydown.enter)=\"navigateToDoc(siblings.next)\"\n ><p class=\"label\">Next</p\n ><p class=\"name\"\n >{{ next }}\n <span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_forward</span\n ></p\n ></div\n >\n}\n", styles: [":host{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:\"previous next\";gap:1rem}.nav-panel{border:1px solid var(--hsi-adk-color-muted-primary-80);padding:1rem;border-radius:.5rem;cursor:pointer}.nav-panel:hover{background:var(--hsi-adk-color-primary-98);border:1px solid var(--hsi-adk-color-primary-70)}.nav-panel.previous{grid-area:previous}.nav-panel.next{grid-area:next;text-align:right}.nav-panel.next .name,.nav-panel.next .label{justify-content:flex-end}.label{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-medium);font-size:9pt;letter-spacing:.25pt;line-height:12pt;letter-spacing:.8pt;text-transform:uppercase;line-height:1;display:flex;align-items:center}.name{display:flex;align-items:center;position:relative;padding-top:.5rem;color:var(--hsi-adk-color-primary-40)}.arrow{transform:scale(.8);position:relative;top:-1px}.previous .name{left:-6px}.next .name{right:-6px}\n"] }]
|
|
681
680
|
}], propDecorators: { siblings: [{
|
|
@@ -737,10 +736,10 @@ class AdkDocumentationDisplayComponent {
|
|
|
737
736
|
navigateToDoc(sibling) {
|
|
738
737
|
this.nextDoc.emit(sibling);
|
|
739
738
|
}
|
|
740
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
739
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
740
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: AdkDocumentationDisplayComponent, isStandalone: true, selector: "hsi-adk-documentation-display", inputs: { contentPath$: "contentPath$", fileConfig: "fileConfig", highlightTheme: "highlightTheme", pathFromAssetsToFile: "pathFromAssetsToFile", showPrevNextNavigation: "showPrevNextNavigation" }, outputs: { nextDoc: "nextDoc" }, queries: [{ propertyName: "escapedContentTemplateRef", first: true, predicate: ["escapedContent"], descendants: true }], viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true }], ngImport: i0, template: "<div class=\"documentation-container\" #file>\n @if (content$ | async; as content) {\n <div class=\"documentation-content\">\n <div class=\"main-content\">\n @for (section of content.sections; track $index) {\n @if (section.type === 'markdown') {\n <div class=\"injected-html\" [innerHTML]=\"section.html\"></div>\n } @else if (section.type === 'escaped') {\n @if (escapedContentTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"escapedContentTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: section }\"\n >\n </ng-container>\n }\n }\n }\n @if (showPrevNextNavigation) {\n <hsi-adk-navigation-siblings\n class=\"nav-siblings\"\n [siblings]=\"content.siblings\"\n (nextDoc)=\"navigateToDoc($event)\"\n ></hsi-adk-navigation-siblings>\n }\n </div>\n <hsi-adk-document-index\n class=\"document-index\"\n [headings]=\"content.headings.slice(1)\"\n (activeHeading)=\"scrollToHeading($event)\"\n ></hsi-adk-document-index>\n </div>\n }\n</div>\n", styles: [".documentation-container{margin:0 auto;max-width:1200px}.documentation-container .documentation-content{display:flex;gap:7.5rem;margin-top:1.5rem}.documentation-container .document-index{display:block;position:sticky;top:8rem;max-height:calc(100vh - 10rem)}.documentation-container .main-content{width:75%}.documentation-container .nav-siblings{padding-top:2.5rem;padding-bottom:5rem}.documentation-container .injected-html h1{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-regular);font-size:32pt;letter-spacing:0;line-height:40pt;margin:0 0 1.75rem;width:100%}.documentation-container .injected-html h2{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-regular);font-size:24pt;letter-spacing:0;line-height:32pt}.documentation-container .injected-html h3{font-family:var(--hsi-adk-font-sans);font-weight:var(--hsi-adk-font-weight-medium);font-size:14pt;letter-spacing:.25pt;line-height:20pt}.documentation-container .injected-html h2,.documentation-container .injected-html h3,.documentation-container .injected-html h4{margin:0;padding-top:1rem;padding-bottom:1.5rem}.documentation-container .injected-html p{padding-bottom:1.5rem;line-height:1.8}.documentation-container .injected-html ol{margin:0;padding-bottom:1.5rem}.documentation-container .injected-html li>p:not(.code-caption){padding-bottom:1rem}.documentation-container .injected-html pre{margin:0;padding-bottom:1.5rem}.documentation-container .injected-html a{cursor:pointer;color:var(--hsi-adk-color-primary-40)}.documentation-container .injected-html a:hover{text-decoration:underline}.documentation-container .injected-html .shiki{margin:0;padding:1rem;border:1px solid var(--hsi-adk-color-muted-primary-90);border-radius:.5rem;margin-bottom:2rem;white-space:pre-wrap}.documentation-container .injected-html p.code-caption{margin-bottom:0;padding-bottom:0;font-style:italic}.documentation-container .injected-html p.code-caption code{font-style:normal}.documentation-container .injected-html p.code-caption+pre.shiki{display:block;margin-top:2px}.documentation-container .injected-html p:has(>code)+hr{margin:0;border-top:1px solid var(--hsi-adk-color-muted-primary-80);margin-bottom:1.5rem}.documentation-container .injected-html P:has(>code):has(+hr){padding-bottom:.5rem}.documentation-container .injected-html h1>code,.documentation-container .injected-html h2>code,.documentation-container .injected-html h3>code,.documentation-container .injected-html h4>code,.documentation-container .injected-html h5>code,.documentation-container .injected-html h6>code,.documentation-container .injected-html li>code,.documentation-container .injected-html li>em>code,.documentation-container .injected-html p>code p>em>code{font-family:var(--hsi-adk-font-mono);font-weight:500;padding-left:.25rem;padding-right:.25rem;background:var(--hsi-adk-color-muted-primary-95);border-radius:.25rem;color:var(--hsi-adk-color-primary-40);padding:.125rem .25rem}.documentation-container .injected-html p>code,.documentation-container .injected-html p>em>code{font-size:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdkDocumentIndexComponent, selector: "hsi-adk-document-index", inputs: ["headings"], outputs: ["activeHeading"] }, { kind: "component", type: NavigationSiblingsComponent, selector: "hsi-adk-navigation-siblings", inputs: ["siblings"], outputs: ["nextDoc"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
742
741
|
}
|
|
743
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
742
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: AdkDocumentationDisplayComponent, decorators: [{
|
|
744
743
|
type: Component,
|
|
745
744
|
args: [{ selector: 'hsi-adk-documentation-display', imports: [
|
|
746
745
|
CommonModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathstack-app-kit.mjs","sources":["../../../libs/app-kit/src/lib/assets/assets-resource.ts","../../../libs/app-kit/src/lib/assets/assets-service.ts","../../../libs/app-kit/src/lib/core/utilities/deep-merge.ts","../../../libs/app-kit/src/lib/content-parsing/shiki-highlighter.ts","../../../libs/app-kit/src/lib/content-parsing/markdown-parser.ts","../../../libs/app-kit/src/lib/core/utilities/safe-assign.ts","../../../libs/app-kit/src/lib/documentation-display/active-heading-tracker.ts","../../../libs/app-kit/src/lib/documentation-display/document-index/document-index.component.ts","../../../libs/app-kit/src/lib/documentation-display/document-index/document-index.component.html","../../../libs/app-kit/src/lib/documentation-display/documentation-config-parser.ts","../../../libs/app-kit/src/lib/documentation-display/documentation-content-service.ts","../../../libs/app-kit/src/lib/documentation-display/navigation-siblings/navigation-siblings.component.ts","../../../libs/app-kit/src/lib/documentation-display/navigation-siblings/navigation-siblings.component.html","../../../libs/app-kit/src/lib/documentation-display/documentation-display.component.ts","../../../libs/app-kit/src/lib/documentation-display/documentation-display.component.html","../../../libs/app-kit/src/lib/ng-utilities/ng-on-changes.ts","../../../libs/app-kit/src/lib/ng-utilities/run-ng-change-detection-then.ts","../../../libs/app-kit/src/public-api.ts","../../../libs/app-kit/src/mathstack-app-kit.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AdkAssetResponse } from './assets-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdkAssetsResource {\n private http = inject(HttpClient);\n\n getAsset(path: string, responseType: AdkAssetResponse): Observable<unknown> {\n return this.http.get<unknown>(path, {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n responseType: responseType as any,\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { csvParse } from 'd3';\nimport { forkJoin, Observable } from 'rxjs';\nimport { parse as yamlParse } from 'yaml';\nimport { AdkAssetsResource } from './assets-resource';\n\nexport enum AdkAssetResponse {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n Json = 'json',\n Text = 'text',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AdkAssetsService {\n private assets: { [key: string]: Observable<unknown> } = {};\n private assetsPath = 'assets/';\n\n private resource = inject(AdkAssetsResource);\n\n setAssetsPath(path: string): void {\n this.assetsPath = path;\n }\n\n /**\n * Loads an asset from the assets folder.\n *\n * @param assetName The path to the asset from assets/. Should not include leading slash.\n * @returns An observable that emits the asset data.\n */\n getAsset(\n assetName: string,\n responseType: AdkAssetResponse\n ): Observable<unknown> {\n if (!this.assets[assetName]) {\n this.assets[assetName] = this.fetchAsset(assetName, responseType);\n }\n return this.assets[assetName];\n }\n\n private fetchAsset(\n assetName: string,\n responseType: AdkAssetResponse\n ): Observable<unknown> {\n return this.resource.getAsset(\n `${this.assetsPath}${assetName}`,\n responseType\n );\n }\n\n /**\n * Loads multiple assets concurrently.\n *\n * @param assetNames An array of asset names to load.\n * @returns An observable that emits an array of asset data.\n */\n getAssets(\n assetNames: string[],\n responseType: AdkAssetResponse\n ): Observable<unknown[]> {\n return forkJoin(\n assetNames.map((assetName) => this.getAsset(assetName, responseType))\n );\n }\n\n parseCsv<T>(str: string): T[] {\n return csvParse(str) as unknown as T[];\n }\n\n parseYaml<T>(str: string): T {\n return yamlParse(str) as T;\n }\n}\n","export function deepMerge<T>(target: T, source: Partial<T>): T {\n const output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!(key in (target as object))) {\n Object.assign(output, { [key]: source[key] });\n } else {\n output[key] = deepMerge(target[key], source[key]);\n }\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nfunction isObject(item: unknown): item is object {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Injectable } from '@angular/core';\nimport { Root } from 'hast';\nimport { fromParse5 } from 'hast-util-from-parse5';\nimport { parse } from 'parse5';\nimport { createHighlighter } from 'shiki/index.mjs';\nimport { BundledLanguage } from 'shiki/langs';\nimport { BundledTheme } from 'shiki/themes';\nimport { HighlighterGeneric } from 'shiki/types.mjs';\nimport { visit } from 'unist-util-visit';\nimport { AdkShikiHighlighterOptions } from './markdown-parser';\n\nexport const defaultHighlighterLangs = [\n 'json',\n 'ts',\n 'js',\n 'html',\n 'css',\n 'scss',\n 'yaml',\n 'angular-html',\n 'angular-ts',\n 'mermaid',\n 'bash',\n];\n\nexport enum ShikiTheme {\n Andromeeda = 'andromeeda',\n AuroraX = 'aurora-x',\n AyuDark = 'ayu-dark',\n CatppuccinFrappe = 'catppuccin-frappe',\n CatppuccinLatte = 'catppuccin-latte',\n CatppuccinMacchiato = 'catppuccin-macchiato',\n CatppuccinMocha = 'catppuccin-mocha',\n DarkPlus = 'dark-plus',\n DraculaTheme = 'dracula',\n DraculaThemeSoft = 'dracula-soft',\n EverforestDark = 'everforest-dark',\n EverforestLight = 'everforest-light',\n GitHubDark = 'github-dark',\n GitHubDarkDefault = 'github-dark-default',\n GitHubDarkDimmed = 'github-dark-dimmed',\n GitHubDarkHighContrast = 'github-dark-high-contrast',\n GitHubLight = 'github-light',\n GitHubLightDefault = 'github-light-default',\n GitHubLightHighContrast = 'github-light-high-contrast',\n Houston = 'houston',\n LaserWave = 'laserwave',\n LightPlus = 'light-plus',\n MaterialTheme = 'material-theme',\n MaterialThemeDarker = 'material-theme-darker',\n MaterialThemeLighter = 'material-theme-lighter',\n MaterialThemeOcean = 'material-theme-ocean',\n MaterialThemePalenight = 'material-theme-palenight',\n MinDark = 'min-dark',\n MinLight = 'min-light',\n Monokai = 'monokai',\n NightOwl = 'night-owl',\n Nord = 'nord',\n OneDarkPro = 'one-dark-pro',\n OneLight = 'one-light',\n Plastic = 'plastic',\n Poimandres = 'poimandres',\n Red = 'red',\n RosePine = 'rose-pine',\n RosePineDawn = 'rose-pine-dawn',\n RosePineMoon = 'rose-pine-moon',\n SlackDark = 'slack-dark',\n SlackOchin = 'slack-ochin',\n SnazzyLight = 'snazzy-light',\n SolarizedDark = 'solarized-dark',\n SolarizedLight = 'solarized-light',\n Synthwave84 = 'synthwave-84',\n TokyoNight = 'tokyo-night',\n Vesper = 'vesper',\n VitesseBlack = 'vitesse-black',\n VitesseDark = 'vitesse-dark',\n VitesseLight = 'vitesse-light',\n}\n\nconst MISSING_HIGHLIGHTER = `Please provide a \\`shiki\\` highlighter instance via \\`options\\`.`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdkShikiHighlighter {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private highlighterPromise: Promise<\n HighlighterGeneric<BundledLanguage, BundledTheme>\n > | null = null;\n\n /**\n * Initialize the highlighter. This should only be called one in an application.\n *\n * @param themes an array of any Shiki themes you may want to use anywhere in the app. You can control which theme for your particular parsing by passing the theme name to the actual parsing function.\n *\n * @returns void\n */\n async initialize(\n themes: ShikiTheme[],\n langs: string[] = defaultHighlighterLangs\n ): Promise<void> {\n if (!this.highlighterPromise) {\n this.highlighterPromise = createHighlighter({\n langs,\n themes: themes.length ? themes : [ShikiTheme.GitHubLight],\n });\n }\n await this.highlighterPromise;\n }\n\n async getHighlighter(): Promise<\n HighlighterGeneric<BundledLanguage, BundledTheme>\n > {\n if (!this.highlighterPromise) {\n throw new Error(\n 'Highlighter is not initialized. Please call initialize() once in your application first.'\n );\n }\n return this.highlighterPromise;\n }\n\n remarkHighlight(options: AdkShikiHighlighterOptions): (tree: Root) => void {\n const highlighter = options.highlighter;\n if (!options.highlighter) {\n throw new Error(MISSING_HIGHLIGHTER);\n }\n const loadedLanguages = highlighter.getLoadedLanguages();\n const ignoreUnknownLanguage =\n options.ignoreUnknownLanguage === undefined\n ? true\n : options.ignoreUnknownLanguage;\n\n const visitor = (node) => {\n if (!loadedLanguages.includes(node.lang)) {\n if (ignoreUnknownLanguage) {\n node.lang = null;\n } else {\n return;\n }\n }\n\n const highlighted = highlighter.codeToHtml(node.value, {\n lang: node.lang,\n theme: options.theme,\n });\n\n node.type = 'html';\n node.value = highlighted;\n };\n\n const transformer = (tree: Root) => {\n visit(tree, 'code', visitor);\n };\n\n return transformer;\n }\n\n rehypeHighlight(options: AdkShikiHighlighterOptions): (tree: Root) => void {\n const highlighter = options.highlighter;\n if (!options.highlighter) {\n throw new Error(MISSING_HIGHLIGHTER);\n }\n\n const visitor = (node, _index, parent) => {\n if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n return;\n }\n\n const [langClass] = node.properties.className;\n const lang = langClass.replace('language-', '');\n\n if (highlighter.getLoadedLanguages().includes(lang)) {\n const code = node.children[0]?.value;\n if (!code) {\n return;\n }\n const highlighted = highlighter.codeToHtml(code, {\n lang,\n theme: options.theme,\n });\n const parsed = parse(highlighted);\n const hastTree = fromParse5(parsed);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const content = (hastTree as any).children[0].children[1].children[0]\n .children[0];\n\n content.properties.class = ['shiki', 'shiki-' + lang, langClass];\n\n node.properties = content.properties;\n node.children = content.children;\n }\n };\n\n const transformer = (tree: Root) => {\n visit(tree, 'element', visitor);\n };\n\n return transformer;\n }\n\n getLanguage(node): string {\n const dataLanguage = node.properties.dataLanguage;\n\n if (dataLanguage != null) {\n return dataLanguage;\n }\n\n const className = node.properties.className || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === 'language-') {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport rehypeAutolinkHeadings from 'rehype-autolink-headings';\nimport rehypeRaw from 'rehype-raw';\nimport rehypeSlug from 'rehype-slug';\nimport rehypeStringify from 'rehype-stringify';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport remarkRehype from 'remark-rehype';\nimport { forkJoin, from, map, mergeMap, Observable, of, switchMap } from 'rxjs';\nimport { BundledLanguage } from 'shiki/langs';\nimport { BundledTheme } from 'shiki/themes';\nimport { HighlighterGeneric } from 'shiki/types.mjs';\nimport { unified } from 'unified';\nimport { deepMerge } from '../core/utilities/deep-merge';\nimport { AdkShikiHighlighter, ShikiTheme } from './shiki-highlighter';\n\nexport interface AdkParsedContentSection<Content = string> {\n type: string;\n content: Content;\n html?: SafeHtml;\n headers: { id: string; text: string; level: number }[];\n}\n\nexport interface AdkMarkdownParsingOptions {\n highlighter?: AdkShikiHighlighterOptions;\n gfm?: boolean;\n headingIds?: boolean;\n headingFragmentLinks?: AdkHeadingFragmentLinkOptions;\n}\n\nexport interface AdkShikiHighlighterOptions {\n highlighter?: HighlighterGeneric<BundledLanguage, BundledTheme>;\n theme?: ShikiTheme;\n type?: 'html' | 'markdown';\n ignoreUnknownLanguage?: boolean;\n}\n\nexport interface AdkHeadingFragmentLinkOptions {\n createLinks?: boolean;\n behavior?: 'append' | 'prepend' | 'wrap' | 'before' | 'after';\n}\n\nconst DEFAULT_HIGHLIGHTER_OPTIONS: AdkShikiHighlighterOptions = {\n highlighter: undefined,\n theme: ShikiTheme.GitHubLight,\n type: 'markdown',\n ignoreUnknownLanguage: true,\n};\n\nconst DEFAULT_PARSING_OPTIONS: AdkMarkdownParsingOptions = {\n gfm: true,\n headingIds: true,\n headingFragmentLinks: { createLinks: false },\n highlighter: DEFAULT_HIGHLIGHTER_OPTIONS,\n};\n\n@Injectable()\nexport class AdkMarkdownParser {\n parser: typeof unified;\n\n private sanitizer = inject(DomSanitizer);\n private shikiHighlighter = inject(AdkShikiHighlighter);\n\n constructor() {\n this.parser = unified;\n }\n\n parse(\n markdown: string,\n options?: AdkMarkdownParsingOptions\n ): Observable<AdkParsedContentSection[]> {\n const mergedOptions = deepMerge(DEFAULT_PARSING_OPTIONS, options || {});\n\n return of(mergedOptions).pipe(\n mergeMap((_options) => {\n if (_options.highlighter && !_options.highlighter.highlighter) {\n return from(this.shikiHighlighter.getHighlighter()).pipe(\n map((highlighter) => ({\n ..._options,\n highlighter: {\n ..._options.highlighter,\n highlighter,\n },\n }))\n );\n } else {\n return of(_options);\n }\n }),\n switchMap((_options) => {\n const sections = this.getSections(markdown);\n const parsedSections$ = sections.map((section) => {\n return this.parseSection(section, _options);\n });\n return forkJoin(parsedSections$);\n })\n );\n }\n\n private getSections(markdown: string): AdkParsedContentSection[] {\n const sections: AdkParsedContentSection[] = [];\n let currentMarkdown = '';\n\n const lines = markdown.split('\\n');\n\n for (const line of lines) {\n currentMarkdown += line + '\\n';\n }\n\n // Add any remaining markdown\n if (currentMarkdown.trim()) {\n sections.push({\n type: 'markdown',\n content: currentMarkdown,\n html: undefined,\n headers: this.getHeaders(currentMarkdown),\n });\n }\n\n return sections;\n }\n\n private parseSection(\n section: AdkParsedContentSection,\n options: AdkMarkdownParsingOptions\n ): Observable<AdkParsedContentSection> {\n const parsedContent$ = from(\n unified()\n .use(remarkParse)\n .use(options.gfm ? remarkGfm : undefined)\n .use(\n options.highlighter && options.highlighter.type === 'markdown'\n ? this.shikiHighlighter.remarkHighlight\n : undefined,\n options.highlighter\n )\n .use(remarkRehype, { allowDangerousHtml: true })\n .use(rehypeRaw)\n .use(options.headingIds ? rehypeSlug : undefined)\n .use(\n options.headingFragmentLinks ? rehypeAutolinkHeadings : undefined,\n { behavior: options.headingFragmentLinks?.behavior }\n )\n .use(rehypeStringify)\n .process(section.content)\n .then((file) => String(file))\n );\n\n return parsedContent$.pipe(\n map((parsedContent) => {\n const toReturn = {\n ...section,\n html: this.sanitizer.bypassSecurityTrustHtml(parsedContent),\n };\n return toReturn;\n })\n );\n }\n\n getHeaders(markdown: string): { id: string; text: string; level: number }[] {\n const headerRegex =\n /^(#{1,6})\\s*(.+)$|<h([1-6])(?:\\s+[^>]*)?>(.*?)<\\/h[1-6]>/gm;\n const headers: { id: string; text: string; level: number }[] = [];\n let match;\n\n while ((match = headerRegex.exec(markdown)) !== null) {\n let level: number;\n let text: string;\n\n if (match[1]) {\n // Markdown header, e.g., ## Heading\n level = match[1].length;\n text = match[2].trim();\n } else {\n // HTML header, e.g., <h2>Heading</h2>\n level = parseInt(match[3], 10);\n text = match[4].trim();\n }\n\n const id = text\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '');\n headers.push({ id, text, level });\n }\n return headers;\n }\n\n parseComponent(content: string): { name: string; pathTo: string } {\n const cleanedLine = content.trim().slice(2, -2).trim();\n const [nameKV, pathToKV] = cleanedLine.split(',');\n const name = nameKV.split(':')[1]?.trim();\n const pathTo = pathToKV.split(':')[1]?.trim();\n return { name, pathTo };\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Safely assigns properties from a source object to a target object.\n *\n * Copies all own, enumerable properties from `source` to `target`,\n * except when the target already has a property of the same name that is a function.\n *\n * Logs a warning for each skipped property if `logConflicts` is true.\n *\n * @template TTarget The type of the target object.\n * @template TSource The type of the source object.\n * @param target The object to assign properties to.\n * @param source The object providing properties to assign.\n * @param logConflicts If true, logs when a method/property on the target prevents assignment. Default is false.\n *\n * @example\n * safeAssign(this, { log: 'hello' }, true);\n */\nexport function safeAssign<TTarget extends object, TSource extends object>(\n target: TTarget,\n source: TSource,\n logConflicts: boolean = false\n): void {\n if (!source) return;\n\n for (const key of Object.keys(source)) {\n const existing = (target as any)[key];\n const incoming = (source as any)[key];\n\n if (typeof existing === 'function') {\n if (logConflicts) {\n console.warn(\n `safeAssign: Skipped assignment for key \"${key}\" because it would overwrite an existing method.`\n );\n }\n continue;\n }\n\n (target as any)[key] = incoming;\n }\n}\n","import { DestroyRef, inject, Injectable, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdkActiveHeadingTracker {\n private activeHeadingId = new BehaviorSubject<string | null>(null);\n activeHeadingId$ = this.activeHeadingId.asObservable();\n\n private ngZone = inject(NgZone);\n\n initScrollListener(contentEl: HTMLElement, destroyRef: DestroyRef): void {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'scroll')\n .pipe(\n takeUntilDestroyed(destroyRef),\n debounceTime(50),\n distinctUntilChanged()\n )\n .subscribe(() => {\n const headings = Array.from(\n contentEl.querySelectorAll('h1, h2, h3, h4, h5, h6')\n ) as HTMLHeadingElement[];\n const activeHeading = this.findActiveHeading(headings);\n this.ngZone.run(() => {\n if (activeHeading) {\n this.activeHeadingId.next(activeHeading.id);\n }\n });\n });\n });\n }\n\n private findActiveHeading(\n headings: HTMLHeadingElement[]\n ): HTMLHeadingElement | null {\n const scrollPosition = window.scrollY;\n for (let i = headings.length - 1; i >= 0; i--) {\n const heading = headings[i];\n if (heading.offsetTop <= scrollPosition + 50) {\n return heading;\n }\n }\n return headings[0] || null;\n }\n\n setActiveHeading(heading: HTMLHeadingElement): void {\n this.activeHeadingId.next(heading.id);\n }\n\n scrollToTop(): void {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport { AdkActiveHeadingTracker } from '../active-heading-tracker';\nimport { AdkHtmlHeader } from '../documentation-content-service';\n\n@Component({\n selector: 'hsi-adk-document-index',\n imports: [CommonModule],\n templateUrl: './document-index.component.html',\n styleUrls: ['./document-index.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdkDocumentIndexComponent {\n @Input() headings: AdkHtmlHeader[] = [];\n @Output() activeHeading = new EventEmitter<{\n heading: AdkHtmlHeader;\n event: KeyboardEvent | PointerEvent | MouseEvent | Event;\n }>();\n\n public activeHeadingTracker = inject(AdkActiveHeadingTracker);\n\n setActiveHeading(\n event: KeyboardEvent | PointerEvent | MouseEvent | Event,\n heading: AdkHtmlHeader\n ): void {\n this.activeHeading.emit({ heading, event });\n }\n\n scrollToTop(): void {\n this.activeHeadingTracker.scrollToTop();\n }\n}\n","<nav class=\"toc\">\n @if (headings.length > 0) {\n <p class=\"index-title\">On this page</p>\n <ul class=\"links-container\">\n @for (heading of headings; track $index) {\n <li class=\"toc-item\">\n <button\n type=\"button\"\n class=\"toc-link\"\n [style.--level]=\"heading.level\"\n (click)=\"setActiveHeading($event, heading)\"\n (keydown.enter)=\"setActiveHeading($event, heading)\"\n [class.active]=\"\n heading.id === (activeHeadingTracker.activeHeadingId$ | async)\n \"\n >{{ heading.text }}</button\n >\n </li>\n }\n </ul>\n <button\n type=\"button\"\n class=\"back-to-top\"\n (click)=\"scrollToTop()\"\n (keydown.enter)=\"scrollToTop()\"\n >\n Back to top<span\n aria-hidden=\"true\"\n class=\"material-symbols-outlined arrow\"\n >arrow_upward</span\n >\n </button>\n }\n</nav>\n","import { Injectable } from '@angular/core';\n\nexport interface AdkNestedObject {\n [key: string]: string | AdkNestedObject;\n}\n\nexport interface AdkDocumentationNavigationSiblings {\n previous: string | undefined;\n next: string | undefined;\n}\n\n@Injectable()\nexport class AdkDocumentationConfigParser {\n basePath: string;\n\n /**\n * This method takes a path from the application and a configuration object, and returns a path to a file that will be fetched.\n *\n * This assumes that the pathFromApp matches a path through the keys of the Nested Object.\n *\n * If the path is 'viz/content/items/bars', the config object might look like this:\n * viz: {\n * content: {\n * items: {\n * bars: 'bars.md'\n * }\n * }\n * }\n *\n * @param pathFromApp a string representing the path from the application, for example 'viz/content/items/bars'\n * @param config a nested object representing the configuration\n * @returns a string representing the file path\n */\n getPathToFile(\n pathFromApp: string,\n config: AdkNestedObject,\n basePath: string\n ): string {\n const pathParts = pathFromApp.split('/');\n const fileName = this.getFileNameFromPath(pathParts, config);\n const pathToFile = basePath ? `${basePath}/${fileName}` : fileName;\n return pathToFile;\n }\n\n /**\n *\n * @param pathParts a string array of path parts, for example ['viz', 'content', 'items', 'bars]\n * @param config a nested object representing the configuration\n * @returns a string representing the file name\n */\n private getFileNameFromPath(\n pathParts: string[],\n config: string | AdkNestedObject\n ): string {\n const fileName = pathParts.reduce((acc, part) => {\n const level = acc[part];\n acc = level;\n return acc;\n }, config);\n return fileName as string;\n }\n\n findPreviousAndNextByPath(\n obj: AdkNestedObject,\n targetPath: string\n ): AdkDocumentationNavigationSiblings {\n const flatPaths = this.flattenObjectWithPath(obj);\n const index = flatPaths.indexOf(targetPath);\n\n if (index === -1) {\n return { previous: undefined, next: undefined };\n }\n\n return {\n previous: index > 0 ? flatPaths[index - 1] : undefined,\n next: index < flatPaths.length - 1 ? flatPaths[index + 1] : undefined,\n };\n }\n\n flattenObjectWithPath(obj: AdkNestedObject, prefix: string = ''): string[] {\n let result: string[] = [];\n for (const [key, value] of Object.entries(obj)) {\n const newPath = prefix ? `${prefix}/${key}` : key;\n if (typeof value === 'object' && value !== null) {\n result = result.concat(this.flattenObjectWithPath(value, newPath));\n } else {\n result.push(newPath);\n }\n }\n return result;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, switchMap, withLatestFrom } from 'rxjs';\nimport { AdkAssetResponse, AdkAssetsService } from '../assets/assets-service';\nimport {\n AdkMarkdownParser,\n AdkMarkdownParsingOptions,\n AdkParsedContentSection,\n} from '../content-parsing';\nimport {\n AdkDocumentationConfigParser,\n AdkDocumentationNavigationSiblings,\n AdkNestedObject,\n} from './documentation-config-parser';\n\nexport interface AdkDocsConfig {\n title: string;\n items: AdkFilesConfig;\n}\n\nexport interface AdkFilesConfig {\n [key: string]: AdkFilesItem;\n}\n\nexport type AdkFilesItem = string | null | AdkFilesConfig;\n\nexport interface AdkParsedMarkdownFile<Content = string> {\n sections: AdkParsedContentSection<Content>[];\n headings: AdkHtmlHeader[];\n}\n\nexport interface AdkParsedDocumentation<\n Content = string,\n> extends AdkParsedMarkdownFile<Content> {\n siblings: AdkDocumentationNavigationSiblings;\n}\n\nexport interface AdkHtmlHeader {\n id: string;\n level: number; // starts at 1\n text: string;\n}\n\nexport interface AdkDocumentationContentOptions {\n fileConfig: AdkNestedObject;\n basePath: string;\n parsingOptions?: AdkMarkdownParsingOptions;\n}\n\n@Injectable()\nexport class AdkDocumentationContentService {\n private files: {\n [name: string]: Observable<AdkParsedContentSection[]>;\n } = {};\n\n private assetsService = inject(AdkAssetsService);\n private docsConfigParser = inject(AdkDocumentationConfigParser);\n private markdownParser = inject(AdkMarkdownParser);\n\n /**\n * This service requires the consuming app to provide the AdkDocumentationDisplayService, the AdkAssetsService, and the AdkDocumentationConfigParser at the level at which this service is configured.\n *\n * OPTIONAL: If the consuming app wants to use a different assets directory, they can pass it in here.\n */\n initialize(assetsDirectory?: string): void {\n this.assetsService.setAssetsPath(assetsDirectory || 'assets/');\n }\n\n /**\n * Assumes that the content path matches\n */\n getContentForCurrentContentPath(\n contentPath$: Observable<string>,\n options: AdkDocumentationContentOptions\n ): Observable<AdkParsedDocumentation> {\n return contentPath$.pipe(\n switchMap((contentPath) => {\n const pathToFile = this.docsConfigParser.getPathToFile(\n contentPath,\n options.fileConfig,\n options.basePath\n );\n return this.getParsedMarkdownFile(pathToFile, options.parsingOptions);\n }),\n withLatestFrom(contentPath$),\n map(([markdownSections, configPath]) => {\n return {\n sections: markdownSections,\n headings: markdownSections.reduce((acc, section) => {\n if (section.headers.length > 0) {\n acc.push(...section.headers);\n }\n return acc;\n }, [] as AdkHtmlHeader[]),\n siblings: this.docsConfigParser.findPreviousAndNextByPath(\n options.fileConfig,\n configPath\n ),\n };\n })\n );\n }\n\n private getParsedMarkdownFile(\n filePathFromAssets: string,\n parsingOptions?: AdkMarkdownParsingOptions\n ): Observable<AdkParsedContentSection[]> {\n if (!this.files[filePathFromAssets]) {\n this.files[filePathFromAssets] = this.assetsService\n .getAsset(filePathFromAssets, AdkAssetResponse.Text)\n .pipe(\n switchMap((text) =>\n this.markdownParser.parse(text as string, parsingOptions)\n )\n );\n }\n return this.files[filePathFromAssets];\n }\n}\n","import { CommonModule, TitleCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { AdkDocumentationNavigationSiblings } from '../documentation-config-parser';\n\n@Component({\n selector: 'hsi-adk-navigation-siblings',\n imports: [CommonModule],\n providers: [TitleCasePipe],\n templateUrl: './navigation-siblings.component.html',\n styleUrls: ['./navigation-siblings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavigationSiblingsComponent implements OnChanges {\n @Input() siblings: AdkDocumentationNavigationSiblings;\n @Output() nextDoc: EventEmitter<string> = new EventEmitter<string>();\n previous: string;\n next: string;\n\n private titleCase = inject(TitleCasePipe);\n\n ngOnChanges(): void {\n this.setDisplayNames();\n }\n\n setDisplayNames(): void {\n this.previous = this.siblings.previous\n ? this.getDisplayName(this.siblings.previous)\n : undefined;\n this.next = this.siblings.next\n ? this.getDisplayName(this.siblings.next)\n : undefined;\n }\n\n getDisplayName(path: string): string {\n const paths = path.split('/');\n const end = paths[paths.length - 1];\n const dehyphenated = end.replace(/-/g, ' ');\n return this.titleCase.transform(dehyphenated);\n }\n\n navigateToDoc(sibling: string): void {\n this.nextDoc.emit(sibling);\n }\n}\n","@if (siblings.previous) {\n <div\n class=\"nav-panel previous\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.previous)\"\n (keydown.enter)=\"navigateToDoc(siblings.previous)\"\n ><p class=\"label\">Previous</p\n ><p class=\"name\"\n ><span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_back</span\n >{{ previous }}</p\n ></div\n >\n}\n@if (siblings.next) {\n <div\n class=\"nav-panel next\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.next)\"\n (keydown.enter)=\"navigateToDoc(siblings.next)\"\n ><p class=\"label\">Next</p\n ><p class=\"name\"\n >{{ next }}\n <span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_forward</span\n ></p\n ></div\n >\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ShikiTheme } from '../content-parsing';\nimport { AdkActiveHeadingTracker } from './active-heading-tracker';\nimport { AdkDocumentIndexComponent } from './document-index/document-index.component';\nimport { AdkNestedObject } from './documentation-config-parser';\nimport {\n AdkDocumentationContentService,\n AdkHtmlHeader,\n AdkParsedDocumentation,\n} from './documentation-content-service';\nimport { NavigationSiblingsComponent } from './navigation-siblings/navigation-siblings.component';\n\n@Component({\n selector: 'hsi-adk-documentation-display',\n imports: [\n CommonModule,\n AdkDocumentIndexComponent,\n NavigationSiblingsComponent,\n ],\n templateUrl: './documentation-display.component.html',\n styleUrls: ['./documentation-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AdkDocumentationDisplayComponent implements OnInit, AfterViewInit {\n /**\n * Observable that emits the current content path\n */\n @Input() contentPath$: Observable<string>;\n @Input() fileConfig: AdkNestedObject;\n @Input() highlightTheme: ShikiTheme;\n @Input() pathFromAssetsToFile: string;\n @Input() showPrevNextNavigation = true;\n @Output() nextDoc: EventEmitter<string> = new EventEmitter<string>();\n @ViewChild('file') file: ElementRef<HTMLDivElement>;\n content$: Observable<AdkParsedDocumentation>;\n @ContentChild('escapedContent', { static: false })\n escapedContentTemplateRef: TemplateRef<unknown>;\n\n private content = inject(AdkDocumentationContentService);\n private activeHeading = inject(AdkActiveHeadingTracker);\n private destroyRef = inject(DestroyRef);\n private zone = inject(NgZone);\n private document = inject(DOCUMENT);\n\n ngOnInit(): void {\n this.setContent();\n }\n\n ngAfterViewInit(): void {\n this.activeHeading.initScrollListener(\n this.file.nativeElement,\n this.destroyRef\n );\n }\n\n setContent(): void {\n this.content$ = this.content.getContentForCurrentContentPath(\n this.contentPath$,\n {\n fileConfig: this.fileConfig,\n basePath: this.pathFromAssetsToFile,\n parsingOptions: {\n highlighter: {\n theme: this.highlightTheme,\n },\n },\n }\n );\n }\n\n scrollToHeading(update: {\n heading: AdkHtmlHeader;\n event: KeyboardEvent | PointerEvent | MouseEvent | Event;\n }): void {\n const targetHeading = this.file.nativeElement.querySelector(\n `#${update.heading.id}`\n ) as HTMLHeadingElement;\n targetHeading.focus();\n this.scrollToItemById(\n targetHeading,\n (update.event as KeyboardEvent).key === 'Enter'\n );\n }\n\n scrollToItemById(\n item: HTMLHeadingElement,\n needsChangeDetection = false\n ): void {\n this.activeHeading.setActiveHeading(item as HTMLHeadingElement);\n const currentOffset = item.offsetTop;\n if (needsChangeDetection) {\n this.zone.run(() => {\n this.scrollToItem(currentOffset);\n });\n } else {\n this.scrollToItem(currentOffset);\n }\n }\n\n scrollToItem(top: number): void {\n this.document.getElementsByTagName('HTML')[0].scrollTo({\n top,\n behavior: 'smooth',\n });\n }\n\n navigateToDoc(sibling: string): void {\n this.nextDoc.emit(sibling);\n }\n}\n","<div class=\"documentation-container\" #file>\n @if (content$ | async; as content) {\n <div class=\"documentation-content\">\n <div class=\"main-content\">\n @for (section of content.sections; track $index) {\n @if (section.type === 'markdown') {\n <div class=\"injected-html\" [innerHTML]=\"section.html\"></div>\n } @else if (section.type === 'escaped') {\n @if (escapedContentTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"escapedContentTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: section }\"\n >\n </ng-container>\n }\n }\n }\n @if (showPrevNextNavigation) {\n <hsi-adk-navigation-siblings\n class=\"nav-siblings\"\n [siblings]=\"content.siblings\"\n (nextDoc)=\"navigateToDoc($event)\"\n ></hsi-adk-navigation-siblings>\n }\n </div>\n <hsi-adk-document-index\n class=\"document-index\"\n [headings]=\"content.headings.slice(1)\"\n (activeHeading)=\"scrollToHeading($event)\"\n ></hsi-adk-document-index>\n </div>\n }\n</div>\n","import { SimpleChanges } from '@angular/core';\nimport { get, isEqual } from 'lodash-es';\n\n/**\n * A utility class for detecting changes to objects in Angular's ngOnChanges lifecycle hook.\n */\nexport class NgOnChangesUtilities {\n /**\n * Checks if an input object has changed since the first change.\n * @param changes - The SimpleChanges object containing the changes.\n * @param inputName - The name of the input property to check.\n * @param property - Optional specific property to check within the input object.\n * @returns True if the input object has changed since the first change, otherwise false.\n */\n static inputObjectChangedNotFirstTime(\n changes: SimpleChanges,\n inputName: string,\n property?: string\n ): boolean {\n return (\n changes[inputName] !== undefined &&\n !changes[inputName].isFirstChange() &&\n this.inputObjectChanged(changes, inputName, property)\n );\n }\n\n /**\n * Checks if an input object has changed.\n * @param changes - The SimpleChanges object containing the changes.\n * @param inputName - The name of the input property to check.\n * @param property - Optional specific property to check within the input object.\n * @returns True if the input object has changed, otherwise false.\n */\n static inputObjectChanged(\n changes: SimpleChanges,\n inputName: string,\n property?: string\n ): boolean {\n let prevAccessor = `${inputName}.previousValue`;\n let currAccessor = `${inputName}.currentValue`;\n if (property) {\n prevAccessor += `.${property}`;\n currAccessor += `.${property}`;\n }\n return (\n changes[inputName] !== undefined &&\n !isEqual(get(changes, prevAccessor), get(changes, currAccessor))\n );\n }\n}\n","import { NgZone } from '@angular/core';\nimport { Observable, switchMap } from 'rxjs';\n\n/**\n *\n * @param zone: NgZone\n * @returns (source: Observable<T>) => Observable<void>\n *\n * A custom RxJS operator that runs an Angular change detection cycle after the source observable emits, and waits until the change detection cycle is complete before emitting the next value.\n *\n * Note that this is not intended to be used frequently. It is a workaround for cases where you need to ensure that Angular has completed change detection before continuing with the next operation, for example when you need to access a DOM element that is being created through multiple levels of content projection.\n *\n * @example\n * ```ts\n * this.myObservable.pipe(\n * runNgChangeDetectionThen(this.zone),\n * subscribe(() => {\n * console.log('a change detection cycle has completed');\n * })\n * );\n * ```\n */\nexport function runNgChangeDetectionThen<T>(\n zone: NgZone\n): (source: Observable<T>) => Observable<void> {\n return function <T>(source: Observable<T>): Observable<void> {\n return source.pipe(\n switchMap(\n () =>\n new Promise<void>((resolve) => {\n zone.run(() => {\n Promise.resolve().then(() => {\n resolve();\n });\n });\n })\n )\n );\n };\n}\n","export * from './lib/assets';\nexport * from './lib/content-parsing';\nexport * from './lib/core/utilities/index';\nexport * from './lib/documentation-display';\nexport * from './lib/ng-utilities';\nexport const STYLES_PATH = './lib/styles/_index.scss';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["yamlParse","parse"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mathstack-app-kit.mjs","sources":["../../../libs/app-kit/src/lib/assets/assets-resource.ts","../../../libs/app-kit/src/lib/assets/assets-service.ts","../../../libs/app-kit/src/lib/core/utilities/deep-merge.ts","../../../libs/app-kit/src/lib/content-parsing/shiki-highlighter.ts","../../../libs/app-kit/src/lib/content-parsing/markdown-parser.ts","../../../libs/app-kit/src/lib/core/utilities/safe-assign.ts","../../../libs/app-kit/src/lib/documentation-display/active-heading-tracker.ts","../../../libs/app-kit/src/lib/documentation-display/document-index/document-index.component.ts","../../../libs/app-kit/src/lib/documentation-display/document-index/document-index.component.html","../../../libs/app-kit/src/lib/documentation-display/documentation-config-parser.ts","../../../libs/app-kit/src/lib/documentation-display/documentation-content-service.ts","../../../libs/app-kit/src/lib/documentation-display/navigation-siblings/navigation-siblings.component.ts","../../../libs/app-kit/src/lib/documentation-display/navigation-siblings/navigation-siblings.component.html","../../../libs/app-kit/src/lib/documentation-display/documentation-display.component.ts","../../../libs/app-kit/src/lib/documentation-display/documentation-display.component.html","../../../libs/app-kit/src/lib/ng-utilities/ng-on-changes.ts","../../../libs/app-kit/src/lib/ng-utilities/run-ng-change-detection-then.ts","../../../libs/app-kit/src/public-api.ts","../../../libs/app-kit/src/mathstack-app-kit.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AdkAssetResponse } from './assets-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdkAssetsResource {\n private http = inject(HttpClient);\n\n getAsset(path: string, responseType: AdkAssetResponse): Observable<unknown> {\n return this.http.get<unknown>(path, {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n responseType: responseType as any,\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { csvParse } from 'd3';\nimport { forkJoin, Observable } from 'rxjs';\nimport { parse as yamlParse } from 'yaml';\nimport { AdkAssetsResource } from './assets-resource';\n\nexport enum AdkAssetResponse {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n Json = 'json',\n Text = 'text',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AdkAssetsService {\n private assets: { [key: string]: Observable<unknown> } = {};\n private assetsPath = 'assets/';\n\n private resource = inject(AdkAssetsResource);\n\n setAssetsPath(path: string): void {\n this.assetsPath = path;\n }\n\n /**\n * Loads an asset from the assets folder.\n *\n * @param assetName The path to the asset from assets/. Should not include leading slash.\n * @returns An observable that emits the asset data.\n */\n getAsset(\n assetName: string,\n responseType: AdkAssetResponse\n ): Observable<unknown> {\n if (!this.assets[assetName]) {\n this.assets[assetName] = this.fetchAsset(assetName, responseType);\n }\n return this.assets[assetName];\n }\n\n private fetchAsset(\n assetName: string,\n responseType: AdkAssetResponse\n ): Observable<unknown> {\n return this.resource.getAsset(\n `${this.assetsPath}${assetName}`,\n responseType\n );\n }\n\n /**\n * Loads multiple assets concurrently.\n *\n * @param assetNames An array of asset names to load.\n * @returns An observable that emits an array of asset data.\n */\n getAssets(\n assetNames: string[],\n responseType: AdkAssetResponse\n ): Observable<unknown[]> {\n return forkJoin(\n assetNames.map((assetName) => this.getAsset(assetName, responseType))\n );\n }\n\n parseCsv<T>(str: string): T[] {\n return csvParse(str) as unknown as T[];\n }\n\n parseYaml<T>(str: string): T {\n return yamlParse(str) as T;\n }\n}\n","export function deepMerge<T>(target: T, source: Partial<T>): T {\n const output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!(key in (target as object))) {\n Object.assign(output, { [key]: source[key] });\n } else {\n output[key] = deepMerge(target[key], source[key]);\n }\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nfunction isObject(item: unknown): item is object {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Injectable } from '@angular/core';\nimport { Root } from 'hast';\nimport { fromParse5 } from 'hast-util-from-parse5';\nimport { parse } from 'parse5';\nimport { createHighlighter } from 'shiki/index.mjs';\nimport { BundledLanguage } from 'shiki/langs';\nimport { BundledTheme } from 'shiki/themes';\nimport { HighlighterGeneric } from 'shiki/types.mjs';\nimport { visit } from 'unist-util-visit';\nimport { AdkShikiHighlighterOptions } from './markdown-parser';\n\nexport const defaultHighlighterLangs = [\n 'json',\n 'ts',\n 'js',\n 'html',\n 'css',\n 'scss',\n 'yaml',\n 'angular-html',\n 'angular-ts',\n 'mermaid',\n 'bash',\n];\n\nexport enum ShikiTheme {\n Andromeeda = 'andromeeda',\n AuroraX = 'aurora-x',\n AyuDark = 'ayu-dark',\n CatppuccinFrappe = 'catppuccin-frappe',\n CatppuccinLatte = 'catppuccin-latte',\n CatppuccinMacchiato = 'catppuccin-macchiato',\n CatppuccinMocha = 'catppuccin-mocha',\n DarkPlus = 'dark-plus',\n DraculaTheme = 'dracula',\n DraculaThemeSoft = 'dracula-soft',\n EverforestDark = 'everforest-dark',\n EverforestLight = 'everforest-light',\n GitHubDark = 'github-dark',\n GitHubDarkDefault = 'github-dark-default',\n GitHubDarkDimmed = 'github-dark-dimmed',\n GitHubDarkHighContrast = 'github-dark-high-contrast',\n GitHubLight = 'github-light',\n GitHubLightDefault = 'github-light-default',\n GitHubLightHighContrast = 'github-light-high-contrast',\n Houston = 'houston',\n LaserWave = 'laserwave',\n LightPlus = 'light-plus',\n MaterialTheme = 'material-theme',\n MaterialThemeDarker = 'material-theme-darker',\n MaterialThemeLighter = 'material-theme-lighter',\n MaterialThemeOcean = 'material-theme-ocean',\n MaterialThemePalenight = 'material-theme-palenight',\n MinDark = 'min-dark',\n MinLight = 'min-light',\n Monokai = 'monokai',\n NightOwl = 'night-owl',\n Nord = 'nord',\n OneDarkPro = 'one-dark-pro',\n OneLight = 'one-light',\n Plastic = 'plastic',\n Poimandres = 'poimandres',\n Red = 'red',\n RosePine = 'rose-pine',\n RosePineDawn = 'rose-pine-dawn',\n RosePineMoon = 'rose-pine-moon',\n SlackDark = 'slack-dark',\n SlackOchin = 'slack-ochin',\n SnazzyLight = 'snazzy-light',\n SolarizedDark = 'solarized-dark',\n SolarizedLight = 'solarized-light',\n Synthwave84 = 'synthwave-84',\n TokyoNight = 'tokyo-night',\n Vesper = 'vesper',\n VitesseBlack = 'vitesse-black',\n VitesseDark = 'vitesse-dark',\n VitesseLight = 'vitesse-light',\n}\n\nconst MISSING_HIGHLIGHTER = `Please provide a \\`shiki\\` highlighter instance via \\`options\\`.`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdkShikiHighlighter {\n private highlighterPromise: Promise<\n HighlighterGeneric<BundledLanguage, BundledTheme>\n > | null = null;\n\n /**\n * Initialize the highlighter. This should only be called one in an application.\n *\n * @param themes an array of any Shiki themes you may want to use anywhere in the app. You can control which theme for your particular parsing by passing the theme name to the actual parsing function.\n *\n * @returns void\n */\n async initialize(\n themes: ShikiTheme[],\n langs: string[] = defaultHighlighterLangs\n ): Promise<void> {\n if (!this.highlighterPromise) {\n this.highlighterPromise = createHighlighter({\n langs,\n themes: themes.length ? themes : [ShikiTheme.GitHubLight],\n });\n }\n await this.highlighterPromise;\n }\n\n async getHighlighter(): Promise<\n HighlighterGeneric<BundledLanguage, BundledTheme>\n > {\n if (!this.highlighterPromise) {\n throw new Error(\n 'Highlighter is not initialized. Please call initialize() once in your application first.'\n );\n }\n return this.highlighterPromise;\n }\n\n remarkHighlight(options: AdkShikiHighlighterOptions): (tree: Root) => void {\n const highlighter = options.highlighter;\n if (!options.highlighter) {\n throw new Error(MISSING_HIGHLIGHTER);\n }\n const loadedLanguages = highlighter.getLoadedLanguages();\n const ignoreUnknownLanguage =\n options.ignoreUnknownLanguage === undefined\n ? true\n : options.ignoreUnknownLanguage;\n\n const visitor = (node) => {\n if (!loadedLanguages.includes(node.lang)) {\n if (ignoreUnknownLanguage) {\n node.lang = null;\n } else {\n return;\n }\n }\n\n const highlighted = highlighter.codeToHtml(node.value, {\n lang: node.lang,\n theme: options.theme,\n });\n\n node.type = 'html';\n node.value = highlighted;\n };\n\n const transformer = (tree: Root) => {\n visit(tree, 'code', visitor);\n };\n\n return transformer;\n }\n\n rehypeHighlight(options: AdkShikiHighlighterOptions): (tree: Root) => void {\n const highlighter = options.highlighter;\n if (!options.highlighter) {\n throw new Error(MISSING_HIGHLIGHTER);\n }\n\n const visitor = (node, _index, parent) => {\n if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n return;\n }\n\n const [langClass] = node.properties.className;\n const lang = langClass.replace('language-', '');\n\n if (highlighter.getLoadedLanguages().includes(lang)) {\n const code = node.children[0]?.value;\n if (!code) {\n return;\n }\n const highlighted = highlighter.codeToHtml(code, {\n lang,\n theme: options.theme,\n });\n const parsed = parse(highlighted);\n const hastTree = fromParse5(parsed);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const content = (hastTree as any).children[0].children[1].children[0]\n .children[0];\n\n content.properties.class = ['shiki', 'shiki-' + lang, langClass];\n\n node.properties = content.properties;\n node.children = content.children;\n }\n };\n\n const transformer = (tree: Root) => {\n visit(tree, 'element', visitor);\n };\n\n return transformer;\n }\n\n getLanguage(node): string {\n const dataLanguage = node.properties.dataLanguage;\n\n if (dataLanguage != null) {\n return dataLanguage;\n }\n\n const className = node.properties.className || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === 'language-') {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport rehypeAutolinkHeadings from 'rehype-autolink-headings';\nimport rehypeRaw from 'rehype-raw';\nimport rehypeSlug from 'rehype-slug';\nimport rehypeStringify from 'rehype-stringify';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport remarkRehype from 'remark-rehype';\nimport { forkJoin, from, map, mergeMap, Observable, of, switchMap } from 'rxjs';\nimport { BundledLanguage } from 'shiki/langs';\nimport { BundledTheme } from 'shiki/themes';\nimport { HighlighterGeneric } from 'shiki/types.mjs';\nimport { unified } from 'unified';\nimport { deepMerge } from '../core/utilities/deep-merge';\nimport { AdkShikiHighlighter, ShikiTheme } from './shiki-highlighter';\n\nexport interface AdkParsedContentSection<Content = string> {\n type: string;\n content: Content;\n html?: SafeHtml;\n headers: { id: string; text: string; level: number }[];\n}\n\nexport interface AdkMarkdownParsingOptions {\n highlighter?: AdkShikiHighlighterOptions;\n gfm?: boolean;\n headingIds?: boolean;\n headingFragmentLinks?: AdkHeadingFragmentLinkOptions;\n}\n\nexport interface AdkShikiHighlighterOptions {\n highlighter?: HighlighterGeneric<BundledLanguage, BundledTheme>;\n theme?: ShikiTheme;\n type?: 'html' | 'markdown';\n ignoreUnknownLanguage?: boolean;\n}\n\nexport interface AdkHeadingFragmentLinkOptions {\n createLinks?: boolean;\n behavior?: 'append' | 'prepend' | 'wrap' | 'before' | 'after';\n}\n\nconst DEFAULT_HIGHLIGHTER_OPTIONS: AdkShikiHighlighterOptions = {\n highlighter: undefined,\n theme: ShikiTheme.GitHubLight,\n type: 'markdown',\n ignoreUnknownLanguage: true,\n};\n\nconst DEFAULT_PARSING_OPTIONS: AdkMarkdownParsingOptions = {\n gfm: true,\n headingIds: true,\n headingFragmentLinks: { createLinks: false },\n highlighter: DEFAULT_HIGHLIGHTER_OPTIONS,\n};\n\n@Injectable()\nexport class AdkMarkdownParser {\n parser: typeof unified;\n\n private sanitizer = inject(DomSanitizer);\n private shikiHighlighter = inject(AdkShikiHighlighter);\n\n constructor() {\n this.parser = unified;\n }\n\n parse(\n markdown: string,\n options?: AdkMarkdownParsingOptions\n ): Observable<AdkParsedContentSection[]> {\n const mergedOptions = deepMerge(DEFAULT_PARSING_OPTIONS, options || {});\n\n return of(mergedOptions).pipe(\n mergeMap((_options) => {\n if (_options.highlighter && !_options.highlighter.highlighter) {\n return from(this.shikiHighlighter.getHighlighter()).pipe(\n map((highlighter) => ({\n ..._options,\n highlighter: {\n ..._options.highlighter,\n highlighter,\n },\n }))\n );\n } else {\n return of(_options);\n }\n }),\n switchMap((_options) => {\n const sections = this.getSections(markdown);\n const parsedSections$ = sections.map((section) => {\n return this.parseSection(section, _options);\n });\n return forkJoin(parsedSections$);\n })\n );\n }\n\n private getSections(markdown: string): AdkParsedContentSection[] {\n const sections: AdkParsedContentSection[] = [];\n let currentMarkdown = '';\n\n const lines = markdown.split('\\n');\n\n for (const line of lines) {\n currentMarkdown += line + '\\n';\n }\n\n // Add any remaining markdown\n if (currentMarkdown.trim()) {\n sections.push({\n type: 'markdown',\n content: currentMarkdown,\n html: undefined,\n headers: this.getHeaders(currentMarkdown),\n });\n }\n\n return sections;\n }\n\n private parseSection(\n section: AdkParsedContentSection,\n options: AdkMarkdownParsingOptions\n ): Observable<AdkParsedContentSection> {\n const parsedContent$ = from(\n unified()\n .use(remarkParse)\n .use(options.gfm ? remarkGfm : undefined)\n .use(\n options.highlighter && options.highlighter.type === 'markdown'\n ? this.shikiHighlighter.remarkHighlight\n : undefined,\n options.highlighter\n )\n .use(remarkRehype, { allowDangerousHtml: true })\n .use(rehypeRaw)\n .use(options.headingIds ? rehypeSlug : undefined)\n .use(\n options.headingFragmentLinks ? rehypeAutolinkHeadings : undefined,\n { behavior: options.headingFragmentLinks?.behavior }\n )\n .use(rehypeStringify)\n .process(section.content)\n .then((file) => String(file))\n );\n\n return parsedContent$.pipe(\n map((parsedContent) => {\n const toReturn = {\n ...section,\n html: this.sanitizer.bypassSecurityTrustHtml(parsedContent),\n };\n return toReturn;\n })\n );\n }\n\n getHeaders(markdown: string): { id: string; text: string; level: number }[] {\n const headerRegex =\n /^(#{1,6})\\s*(.+)$|<h([1-6])(?:\\s+[^>]*)?>(.*?)<\\/h[1-6]>/gm;\n const headers: { id: string; text: string; level: number }[] = [];\n let match;\n\n while ((match = headerRegex.exec(markdown)) !== null) {\n let level: number;\n let text: string;\n\n if (match[1]) {\n // Markdown header, e.g., ## Heading\n level = match[1].length;\n text = match[2].trim();\n } else {\n // HTML header, e.g., <h2>Heading</h2>\n level = parseInt(match[3], 10);\n text = match[4].trim();\n }\n\n const id = text\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '');\n headers.push({ id, text, level });\n }\n return headers;\n }\n\n parseComponent(content: string): { name: string; pathTo: string } {\n const cleanedLine = content.trim().slice(2, -2).trim();\n const [nameKV, pathToKV] = cleanedLine.split(',');\n const name = nameKV.split(':')[1]?.trim();\n const pathTo = pathToKV.split(':')[1]?.trim();\n return { name, pathTo };\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Safely assigns properties from a source object to a target object.\n *\n * Copies all own, enumerable properties from `source` to `target`,\n * except when the target already has a property of the same name that is a function.\n *\n * Logs a warning for each skipped property if `logConflicts` is true.\n *\n * @template TTarget The type of the target object.\n * @template TSource The type of the source object.\n * @param target The object to assign properties to.\n * @param source The object providing properties to assign.\n * @param logConflicts If true, logs when a method/property on the target prevents assignment. Default is false.\n *\n * @example\n * safeAssign(this, { log: 'hello' }, true);\n */\nexport function safeAssign<TTarget extends object, TSource extends object>(\n target: TTarget,\n source: TSource,\n logConflicts: boolean = false\n): void {\n if (!source) return;\n\n for (const key of Object.keys(source)) {\n const existing = (target as any)[key];\n const incoming = (source as any)[key];\n\n if (typeof existing === 'function') {\n if (logConflicts) {\n console.warn(\n `safeAssign: Skipped assignment for key \"${key}\" because it would overwrite an existing method.`\n );\n }\n continue;\n }\n\n (target as any)[key] = incoming;\n }\n}\n","import { DestroyRef, inject, Injectable, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdkActiveHeadingTracker {\n private activeHeadingId = new BehaviorSubject<string | null>(null);\n activeHeadingId$ = this.activeHeadingId.asObservable();\n\n private ngZone = inject(NgZone);\n\n initScrollListener(contentEl: HTMLElement, destroyRef: DestroyRef): void {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'scroll')\n .pipe(\n takeUntilDestroyed(destroyRef),\n debounceTime(50),\n distinctUntilChanged()\n )\n .subscribe(() => {\n const headings = Array.from(\n contentEl.querySelectorAll('h1, h2, h3, h4, h5, h6')\n ) as HTMLHeadingElement[];\n const activeHeading = this.findActiveHeading(headings);\n this.ngZone.run(() => {\n if (activeHeading) {\n this.activeHeadingId.next(activeHeading.id);\n }\n });\n });\n });\n }\n\n private findActiveHeading(\n headings: HTMLHeadingElement[]\n ): HTMLHeadingElement | null {\n const scrollPosition = window.scrollY;\n for (let i = headings.length - 1; i >= 0; i--) {\n const heading = headings[i];\n if (heading.offsetTop <= scrollPosition + 50) {\n return heading;\n }\n }\n return headings[0] || null;\n }\n\n setActiveHeading(heading: HTMLHeadingElement): void {\n this.activeHeadingId.next(heading.id);\n }\n\n scrollToTop(): void {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport { AdkActiveHeadingTracker } from '../active-heading-tracker';\nimport { AdkHtmlHeader } from '../documentation-content-service';\n\n@Component({\n selector: 'hsi-adk-document-index',\n imports: [CommonModule],\n templateUrl: './document-index.component.html',\n styleUrls: ['./document-index.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdkDocumentIndexComponent {\n @Input() headings: AdkHtmlHeader[] = [];\n @Output() activeHeading = new EventEmitter<{\n heading: AdkHtmlHeader;\n event: KeyboardEvent | PointerEvent | MouseEvent | Event;\n }>();\n\n public activeHeadingTracker = inject(AdkActiveHeadingTracker);\n\n setActiveHeading(\n event: KeyboardEvent | PointerEvent | MouseEvent | Event,\n heading: AdkHtmlHeader\n ): void {\n this.activeHeading.emit({ heading, event });\n }\n\n scrollToTop(): void {\n this.activeHeadingTracker.scrollToTop();\n }\n}\n","<nav class=\"toc\">\n @if (headings.length > 0) {\n <p class=\"index-title\">On this page</p>\n <ul class=\"links-container\">\n @for (heading of headings; track $index) {\n <li class=\"toc-item\">\n <button\n type=\"button\"\n class=\"toc-link\"\n [style.--level]=\"heading.level\"\n (click)=\"setActiveHeading($event, heading)\"\n (keydown.enter)=\"setActiveHeading($event, heading)\"\n [class.active]=\"\n heading.id === (activeHeadingTracker.activeHeadingId$ | async)\n \"\n >{{ heading.text }}</button\n >\n </li>\n }\n </ul>\n <button\n type=\"button\"\n class=\"back-to-top\"\n (click)=\"scrollToTop()\"\n (keydown.enter)=\"scrollToTop()\"\n >\n Back to top<span\n aria-hidden=\"true\"\n class=\"material-symbols-outlined arrow\"\n >arrow_upward</span\n >\n </button>\n }\n</nav>\n","import { Injectable } from '@angular/core';\n\nexport interface AdkNestedObject {\n [key: string]: string | AdkNestedObject;\n}\n\nexport interface AdkDocumentationNavigationSiblings {\n previous: string | undefined;\n next: string | undefined;\n}\n\n@Injectable()\nexport class AdkDocumentationConfigParser {\n basePath: string;\n\n /**\n * This method takes a path from the application and a configuration object, and returns a path to a file that will be fetched.\n *\n * This assumes that the pathFromApp matches a path through the keys of the Nested Object.\n *\n * If the path is 'viz/content/items/bars', the config object might look like this:\n * viz: {\n * content: {\n * items: {\n * bars: 'bars.md'\n * }\n * }\n * }\n *\n * @param pathFromApp a string representing the path from the application, for example 'viz/content/items/bars'\n * @param config a nested object representing the configuration\n * @returns a string representing the file path\n */\n getPathToFile(\n pathFromApp: string,\n config: AdkNestedObject,\n basePath: string\n ): string {\n const pathParts = pathFromApp.split('/');\n const fileName = this.getFileNameFromPath(pathParts, config);\n const pathToFile = basePath ? `${basePath}/${fileName}` : fileName;\n return pathToFile;\n }\n\n /**\n *\n * @param pathParts a string array of path parts, for example ['viz', 'content', 'items', 'bars]\n * @param config a nested object representing the configuration\n * @returns a string representing the file name\n */\n private getFileNameFromPath(\n pathParts: string[],\n config: string | AdkNestedObject\n ): string {\n const fileName = pathParts.reduce((acc, part) => {\n const level = acc[part];\n acc = level;\n return acc;\n }, config);\n return fileName as string;\n }\n\n findPreviousAndNextByPath(\n obj: AdkNestedObject,\n targetPath: string\n ): AdkDocumentationNavigationSiblings {\n const flatPaths = this.flattenObjectWithPath(obj);\n const index = flatPaths.indexOf(targetPath);\n\n if (index === -1) {\n return { previous: undefined, next: undefined };\n }\n\n return {\n previous: index > 0 ? flatPaths[index - 1] : undefined,\n next: index < flatPaths.length - 1 ? flatPaths[index + 1] : undefined,\n };\n }\n\n flattenObjectWithPath(obj: AdkNestedObject, prefix: string = ''): string[] {\n let result: string[] = [];\n for (const [key, value] of Object.entries(obj)) {\n const newPath = prefix ? `${prefix}/${key}` : key;\n if (typeof value === 'object' && value !== null) {\n result = result.concat(this.flattenObjectWithPath(value, newPath));\n } else {\n result.push(newPath);\n }\n }\n return result;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, switchMap, withLatestFrom } from 'rxjs';\nimport { AdkAssetResponse, AdkAssetsService } from '../assets/assets-service';\nimport {\n AdkMarkdownParser,\n AdkMarkdownParsingOptions,\n AdkParsedContentSection,\n} from '../content-parsing';\nimport {\n AdkDocumentationConfigParser,\n AdkDocumentationNavigationSiblings,\n AdkNestedObject,\n} from './documentation-config-parser';\n\nexport interface AdkDocsConfig {\n title: string;\n items: AdkFilesConfig;\n}\n\nexport interface AdkFilesConfig {\n [key: string]: AdkFilesItem;\n}\n\nexport type AdkFilesItem = string | null | AdkFilesConfig;\n\nexport interface AdkParsedMarkdownFile<Content = string> {\n sections: AdkParsedContentSection<Content>[];\n headings: AdkHtmlHeader[];\n}\n\nexport interface AdkParsedDocumentation<\n Content = string,\n> extends AdkParsedMarkdownFile<Content> {\n siblings: AdkDocumentationNavigationSiblings;\n}\n\nexport interface AdkHtmlHeader {\n id: string;\n level: number; // starts at 1\n text: string;\n}\n\nexport interface AdkDocumentationContentOptions {\n fileConfig: AdkNestedObject;\n basePath: string;\n parsingOptions?: AdkMarkdownParsingOptions;\n}\n\n@Injectable()\nexport class AdkDocumentationContentService {\n private files: {\n [name: string]: Observable<AdkParsedContentSection[]>;\n } = {};\n\n private assetsService = inject(AdkAssetsService);\n private docsConfigParser = inject(AdkDocumentationConfigParser);\n private markdownParser = inject(AdkMarkdownParser);\n\n /**\n * This service requires the consuming app to provide the AdkDocumentationDisplayService, the AdkAssetsService, and the AdkDocumentationConfigParser at the level at which this service is configured.\n *\n * OPTIONAL: If the consuming app wants to use a different assets directory, they can pass it in here.\n */\n initialize(assetsDirectory?: string): void {\n this.assetsService.setAssetsPath(assetsDirectory || 'assets/');\n }\n\n /**\n * Assumes that the content path matches\n */\n getContentForCurrentContentPath(\n contentPath$: Observable<string>,\n options: AdkDocumentationContentOptions\n ): Observable<AdkParsedDocumentation> {\n return contentPath$.pipe(\n switchMap((contentPath) => {\n const pathToFile = this.docsConfigParser.getPathToFile(\n contentPath,\n options.fileConfig,\n options.basePath\n );\n return this.getParsedMarkdownFile(pathToFile, options.parsingOptions);\n }),\n withLatestFrom(contentPath$),\n map(([markdownSections, configPath]) => {\n return {\n sections: markdownSections,\n headings: markdownSections.reduce((acc, section) => {\n if (section.headers.length > 0) {\n acc.push(...section.headers);\n }\n return acc;\n }, [] as AdkHtmlHeader[]),\n siblings: this.docsConfigParser.findPreviousAndNextByPath(\n options.fileConfig,\n configPath\n ),\n };\n })\n );\n }\n\n private getParsedMarkdownFile(\n filePathFromAssets: string,\n parsingOptions?: AdkMarkdownParsingOptions\n ): Observable<AdkParsedContentSection[]> {\n if (!this.files[filePathFromAssets]) {\n this.files[filePathFromAssets] = this.assetsService\n .getAsset(filePathFromAssets, AdkAssetResponse.Text)\n .pipe(\n switchMap((text) =>\n this.markdownParser.parse(text as string, parsingOptions)\n )\n );\n }\n return this.files[filePathFromAssets];\n }\n}\n","import { CommonModule, TitleCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { AdkDocumentationNavigationSiblings } from '../documentation-config-parser';\n\n@Component({\n selector: 'hsi-adk-navigation-siblings',\n imports: [CommonModule],\n providers: [TitleCasePipe],\n templateUrl: './navigation-siblings.component.html',\n styleUrls: ['./navigation-siblings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavigationSiblingsComponent implements OnChanges {\n @Input() siblings: AdkDocumentationNavigationSiblings;\n @Output() nextDoc: EventEmitter<string> = new EventEmitter<string>();\n previous: string;\n next: string;\n\n private titleCase = inject(TitleCasePipe);\n\n ngOnChanges(): void {\n this.setDisplayNames();\n }\n\n setDisplayNames(): void {\n this.previous = this.siblings.previous\n ? this.getDisplayName(this.siblings.previous)\n : undefined;\n this.next = this.siblings.next\n ? this.getDisplayName(this.siblings.next)\n : undefined;\n }\n\n getDisplayName(path: string): string {\n const paths = path.split('/');\n const end = paths[paths.length - 1];\n const dehyphenated = end.replace(/-/g, ' ');\n return this.titleCase.transform(dehyphenated);\n }\n\n navigateToDoc(sibling: string): void {\n this.nextDoc.emit(sibling);\n }\n}\n","@if (siblings.previous) {\n <div\n class=\"nav-panel previous\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.previous)\"\n (keydown.enter)=\"navigateToDoc(siblings.previous)\"\n ><p class=\"label\">Previous</p\n ><p class=\"name\"\n ><span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_back</span\n >{{ previous }}</p\n ></div\n >\n}\n@if (siblings.next) {\n <div\n class=\"nav-panel next\"\n role=\"link\"\n tabindex=\"0\"\n (click)=\"navigateToDoc(siblings.next)\"\n (keydown.enter)=\"navigateToDoc(siblings.next)\"\n ><p class=\"label\">Next</p\n ><p class=\"name\"\n >{{ next }}\n <span aria-hidden=\"true\" class=\"material-symbols-outlined arrow\"\n >arrow_forward</span\n ></p\n ></div\n >\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ShikiTheme } from '../content-parsing';\nimport { AdkActiveHeadingTracker } from './active-heading-tracker';\nimport { AdkDocumentIndexComponent } from './document-index/document-index.component';\nimport { AdkNestedObject } from './documentation-config-parser';\nimport {\n AdkDocumentationContentService,\n AdkHtmlHeader,\n AdkParsedDocumentation,\n} from './documentation-content-service';\nimport { NavigationSiblingsComponent } from './navigation-siblings/navigation-siblings.component';\n\n@Component({\n selector: 'hsi-adk-documentation-display',\n imports: [\n CommonModule,\n AdkDocumentIndexComponent,\n NavigationSiblingsComponent,\n ],\n templateUrl: './documentation-display.component.html',\n styleUrls: ['./documentation-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AdkDocumentationDisplayComponent implements OnInit, AfterViewInit {\n /**\n * Observable that emits the current content path\n */\n @Input() contentPath$: Observable<string>;\n @Input() fileConfig: AdkNestedObject;\n @Input() highlightTheme: ShikiTheme;\n @Input() pathFromAssetsToFile: string;\n @Input() showPrevNextNavigation = true;\n @Output() nextDoc: EventEmitter<string> = new EventEmitter<string>();\n @ViewChild('file') file: ElementRef<HTMLDivElement>;\n content$: Observable<AdkParsedDocumentation>;\n @ContentChild('escapedContent', { static: false })\n escapedContentTemplateRef: TemplateRef<unknown>;\n\n private content = inject(AdkDocumentationContentService);\n private activeHeading = inject(AdkActiveHeadingTracker);\n private destroyRef = inject(DestroyRef);\n private zone = inject(NgZone);\n private document = inject(DOCUMENT);\n\n ngOnInit(): void {\n this.setContent();\n }\n\n ngAfterViewInit(): void {\n this.activeHeading.initScrollListener(\n this.file.nativeElement,\n this.destroyRef\n );\n }\n\n setContent(): void {\n this.content$ = this.content.getContentForCurrentContentPath(\n this.contentPath$,\n {\n fileConfig: this.fileConfig,\n basePath: this.pathFromAssetsToFile,\n parsingOptions: {\n highlighter: {\n theme: this.highlightTheme,\n },\n },\n }\n );\n }\n\n scrollToHeading(update: {\n heading: AdkHtmlHeader;\n event: KeyboardEvent | PointerEvent | MouseEvent | Event;\n }): void {\n const targetHeading = this.file.nativeElement.querySelector(\n `#${update.heading.id}`\n ) as HTMLHeadingElement;\n targetHeading.focus();\n this.scrollToItemById(\n targetHeading,\n (update.event as KeyboardEvent).key === 'Enter'\n );\n }\n\n scrollToItemById(\n item: HTMLHeadingElement,\n needsChangeDetection = false\n ): void {\n this.activeHeading.setActiveHeading(item as HTMLHeadingElement);\n const currentOffset = item.offsetTop;\n if (needsChangeDetection) {\n this.zone.run(() => {\n this.scrollToItem(currentOffset);\n });\n } else {\n this.scrollToItem(currentOffset);\n }\n }\n\n scrollToItem(top: number): void {\n this.document.getElementsByTagName('HTML')[0].scrollTo({\n top,\n behavior: 'smooth',\n });\n }\n\n navigateToDoc(sibling: string): void {\n this.nextDoc.emit(sibling);\n }\n}\n","<div class=\"documentation-container\" #file>\n @if (content$ | async; as content) {\n <div class=\"documentation-content\">\n <div class=\"main-content\">\n @for (section of content.sections; track $index) {\n @if (section.type === 'markdown') {\n <div class=\"injected-html\" [innerHTML]=\"section.html\"></div>\n } @else if (section.type === 'escaped') {\n @if (escapedContentTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"escapedContentTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: section }\"\n >\n </ng-container>\n }\n }\n }\n @if (showPrevNextNavigation) {\n <hsi-adk-navigation-siblings\n class=\"nav-siblings\"\n [siblings]=\"content.siblings\"\n (nextDoc)=\"navigateToDoc($event)\"\n ></hsi-adk-navigation-siblings>\n }\n </div>\n <hsi-adk-document-index\n class=\"document-index\"\n [headings]=\"content.headings.slice(1)\"\n (activeHeading)=\"scrollToHeading($event)\"\n ></hsi-adk-document-index>\n </div>\n }\n</div>\n","import { SimpleChanges } from '@angular/core';\nimport { get, isEqual } from 'lodash-es';\n\n/**\n * A utility class for detecting changes to objects in Angular's ngOnChanges lifecycle hook.\n */\nexport class NgOnChangesUtilities {\n /**\n * Checks if an input object has changed since the first change.\n * @param changes - The SimpleChanges object containing the changes.\n * @param inputName - The name of the input property to check.\n * @param property - Optional specific property to check within the input object.\n * @returns True if the input object has changed since the first change, otherwise false.\n */\n static inputObjectChangedNotFirstTime(\n changes: SimpleChanges,\n inputName: string,\n property?: string\n ): boolean {\n return (\n changes[inputName] !== undefined &&\n !changes[inputName].isFirstChange() &&\n this.inputObjectChanged(changes, inputName, property)\n );\n }\n\n /**\n * Checks if an input object has changed.\n * @param changes - The SimpleChanges object containing the changes.\n * @param inputName - The name of the input property to check.\n * @param property - Optional specific property to check within the input object.\n * @returns True if the input object has changed, otherwise false.\n */\n static inputObjectChanged(\n changes: SimpleChanges,\n inputName: string,\n property?: string\n ): boolean {\n let prevAccessor = `${inputName}.previousValue`;\n let currAccessor = `${inputName}.currentValue`;\n if (property) {\n prevAccessor += `.${property}`;\n currAccessor += `.${property}`;\n }\n return (\n changes[inputName] !== undefined &&\n !isEqual(get(changes, prevAccessor), get(changes, currAccessor))\n );\n }\n}\n","import { NgZone } from '@angular/core';\nimport { Observable, switchMap } from 'rxjs';\n\n/**\n *\n * @param zone: NgZone\n * @returns (source: Observable<T>) => Observable<void>\n *\n * A custom RxJS operator that runs an Angular change detection cycle after the source observable emits, and waits until the change detection cycle is complete before emitting the next value.\n *\n * Note that this is not intended to be used frequently. It is a workaround for cases where you need to ensure that Angular has completed change detection before continuing with the next operation, for example when you need to access a DOM element that is being created through multiple levels of content projection.\n *\n * @example\n * ```ts\n * this.myObservable.pipe(\n * runNgChangeDetectionThen(this.zone),\n * subscribe(() => {\n * console.log('a change detection cycle has completed');\n * })\n * );\n * ```\n */\nexport function runNgChangeDetectionThen<T>(\n zone: NgZone\n): (source: Observable<T>) => Observable<void> {\n return function <T>(source: Observable<T>): Observable<void> {\n return source.pipe(\n switchMap(\n () =>\n new Promise<void>((resolve) => {\n zone.run(() => {\n Promise.resolve().then(() => {\n resolve();\n });\n });\n })\n )\n );\n };\n}\n","export * from './lib/assets';\nexport * from './lib/content-parsing';\nexport * from './lib/core/utilities/index';\nexport * from './lib/documentation-display';\nexport * from './lib/ng-utilities';\nexport const STYLES_PATH = './lib/styles/_index.scss';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["yamlParse","parse"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAQa,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAQlC,IAAA;IANC,QAAQ,CAAC,IAAY,EAAE,YAA8B,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,IAAI,EAAE;;AAElC,YAAA,YAAY,EAAE,YAAmB;AAClC,SAAA,CAAC;IACJ;8GARW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ICDW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;MAQf,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,MAAM,GAA2C,EAAE;QACnD,IAAA,CAAA,UAAU,GAAG,SAAS;AAEtB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAsD7C,IAAA;AApDC,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;AAEA;;;;;AAKG;IACH,QAAQ,CACN,SAAiB,EACjB,YAA8B,EAAA;QAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC;QACnE;AACA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B;IAEQ,UAAU,CAChB,SAAiB,EACjB,YAA8B,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAC3B,CAAA,EAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA,CAAE,EAChC,YAAY,CACb;IACH;AAEA;;;;;AAKG;IACH,SAAS,CACP,UAAoB,EACpB,YAA8B,EAAA;QAE9B,OAAO,QAAQ,CACb,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CACtE;IACH;AAEA,IAAA,QAAQ,CAAI,GAAW,EAAA;AACrB,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAmB;IACxC;AAEA,IAAA,SAAS,CAAI,GAAW,EAAA;AACtB,QAAA,OAAOA,KAAS,CAAC,GAAG,CAAM;IAC5B;8GAzDW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACb5B,SAAU,SAAS,CAAI,MAAS,EAAE,MAAkB,EAAA;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAClC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACzB,gBAAA,IAAI,EAAE,GAAG,IAAK,MAAiB,CAAC,EAAE;AAChC,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C;qBAAO;AACL,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnD;YACF;iBAAO;AACL,gBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C;AACF,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,QAAQ,CAAC,IAAa,EAAA;AAC7B,IAAA,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACjE;;ACTO,MAAM,uBAAuB,GAAG;IACrC,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,cAAc;IACd,YAAY;IACZ,SAAS;IACT,MAAM;;IAGI;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,mBAAsC;AACtC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,sBAA4C;AAC5C,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,SAAwB;AACxB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,cAAiC;AACjC,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC;AACzC,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC;AACvC,IAAA,UAAA,CAAA,wBAAA,CAAA,GAAA,2BAAoD;AACpD,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,sBAA2C;AAC3C,IAAA,UAAA,CAAA,yBAAA,CAAA,GAAA,4BAAsD;AACtD,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,uBAA6C;AAC7C,IAAA,UAAA,CAAA,sBAAA,CAAA,GAAA,wBAA+C;AAC/C,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,sBAA2C;AAC3C,IAAA,UAAA,CAAA,wBAAA,CAAA,GAAA,0BAAmD;AACnD,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,cAA2B;AAC3B,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,gBAA+B;AAC/B,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,gBAA+B;AAC/B,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAChC,CAAC,EApDW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;AAsDtB,MAAM,mBAAmB,GAAG,CAAA,gEAAA,CAAkE;MAKjF,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;QAIU,IAAA,CAAA,kBAAkB,GAEf,IAAI;AAkIhB,IAAA;AAhIC;;;;;;AAMG;AACH,IAAA,MAAM,UAAU,CACd,MAAoB,EACpB,QAAkB,uBAAuB,EAAA;AAEzC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;gBAC1C,KAAK;AACL,gBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1D,aAAA,CAAC;QACJ;QACA,MAAM,IAAI,CAAC,kBAAkB;IAC/B;AAEA,IAAA,MAAM,cAAc,GAAA;AAGlB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F;QACH;QACA,OAAO,IAAI,CAAC,kBAAkB;IAChC;AAEA,IAAA,eAAe,CAAC,OAAmC,EAAA;AACjD,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;QACtC;AACA,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,kBAAkB,EAAE;AACxD,QAAA,MAAM,qBAAqB,GACzB,OAAO,CAAC,qBAAqB,KAAK;AAChC,cAAE;AACF,cAAE,OAAO,CAAC,qBAAqB;AAEnC,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,KAAI;YACvB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxC,IAAI,qBAAqB,EAAE;AACzB,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;gBAClB;qBAAO;oBACL;gBACF;YACF;YAEA,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE;gBACrD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,OAAO,CAAC,KAAK;AACrB,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW;AAC1B,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,IAAU,KAAI;AACjC,YAAA,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;AAC9B,QAAA,CAAC;AAED,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,eAAe,CAAC,OAAmC,EAAA;AACjD,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;QACtC;QAEA,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,KAAI;AACvC,YAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;gBAClE;YACF;YAEA,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS;YAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAE/C,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK;gBACpC,IAAI,CAAC,IAAI,EAAE;oBACT;gBACF;AACA,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC/C,IAAI;oBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;AACrB,iBAAA,CAAC;AACF,gBAAA,MAAM,MAAM,GAAGC,OAAK,CAAC,WAAW,CAAC;AACjC,gBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;;AAGnC,gBAAA,MAAM,OAAO,GAAI,QAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;qBACjE,QAAQ,CAAC,CAAC,CAAC;AAEd,gBAAA,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,SAAS,CAAC;AAEhE,gBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACpC,gBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;YAClC;AACF,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,IAAU,KAAI;AACjC,YAAA,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;AACjC,QAAA,CAAC;AAED,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,WAAW,CAAC,IAAI,EAAA;AACd,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY;AAEjD,QAAA,IAAI,YAAY,IAAI,IAAI,EAAE;AACxB,YAAA,OAAO,YAAY;QACrB;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE;AAEjD,QAAA,KAAK,MAAM,aAAa,IAAI,SAAS,EAAE;YACrC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,EAAE;gBAC7C,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAC7C;QACF;AAEA,QAAA,OAAO,IAAI;IACb;8GApIW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACxCD,MAAM,2BAA2B,GAA+B;AAC9D,IAAA,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE,UAAU,CAAC,WAAW;AAC7B,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,qBAAqB,EAAE,IAAI;CAC5B;AAED,MAAM,uBAAuB,GAA8B;AACzD,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,oBAAoB,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;AAC5C,IAAA,WAAW,EAAE,2BAA2B;CACzC;MAGY,iBAAiB,CAAA;AAM5B,IAAA,WAAA,GAAA;AAHQ,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAGpD,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO;IACvB;IAEA,KAAK,CACH,QAAgB,EAChB,OAAmC,EAAA;QAEnC,MAAM,aAAa,GAAG,SAAS,CAAC,uBAAuB,EAAE,OAAO,IAAI,EAAE,CAAC;AAEvE,QAAA,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAC3B,QAAQ,CAAC,CAAC,QAAQ,KAAI;YACpB,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE;AAC7D,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,WAAW,MAAM;AACpB,oBAAA,GAAG,QAAQ;AACX,oBAAA,WAAW,EAAE;wBACX,GAAG,QAAQ,CAAC,WAAW;wBACvB,WAAW;AACZ,qBAAA;iBACF,CAAC,CAAC,CACJ;YACH;iBAAO;AACL,gBAAA,OAAO,EAAE,CAAC,QAAQ,CAAC;YACrB;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,QAAQ,KAAI;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC3C,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;gBAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7C,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC;QAClC,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAClC,MAAM,QAAQ,GAA8B,EAAE;QAC9C,IAAI,eAAe,GAAG,EAAE;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AAElC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,eAAe,IAAI,IAAI,GAAG,IAAI;QAChC;;AAGA,QAAA,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE;YAC1B,QAAQ,CAAC,IAAI,CAAC;AACZ,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;AAC1C,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,QAAQ;IACjB;IAEQ,YAAY,CAClB,OAAgC,EAChC,OAAkC,EAAA;AAElC,QAAA,MAAM,cAAc,GAAG,IAAI,CACzB,OAAO;aACJ,GAAG,CAAC,WAAW;AACf,aAAA,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,GAAG,SAAS;aACvC,GAAG,CACF,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK;AAClD,cAAE,IAAI,CAAC,gBAAgB,CAAC;AACxB,cAAE,SAAS,EACb,OAAO,CAAC,WAAW;aAEpB,GAAG,CAAC,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;aAC9C,GAAG,CAAC,SAAS;AACb,aAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS;aAC/C,GAAG,CACF,OAAO,CAAC,oBAAoB,GAAG,sBAAsB,GAAG,SAAS,EACjE,EAAE,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE,QAAQ,EAAE;aAErD,GAAG,CAAC,eAAe;AACnB,aAAA,OAAO,CAAC,OAAO,CAAC,OAAO;AACvB,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAChC;QAED,OAAO,cAAc,CAAC,IAAI,CACxB,GAAG,CAAC,CAAC,aAAa,KAAI;AACpB,YAAA,MAAM,QAAQ,GAAG;AACf,gBAAA,GAAG,OAAO;gBACV,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC;aAC5D;AACD,YAAA,OAAO,QAAQ;QACjB,CAAC,CAAC,CACH;IACH;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;QACzB,MAAM,WAAW,GACf,4DAA4D;QAC9D,MAAM,OAAO,GAAkD,EAAE;AACjE,QAAA,IAAI,KAAK;AAET,QAAA,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE;AACpD,YAAA,IAAI,KAAa;AACjB,YAAA,IAAI,IAAY;AAEhB,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;;AAEZ,gBAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBACvB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACxB;iBAAO;;gBAEL,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACxB;YAEA,MAAM,EAAE,GAAG;AACR,iBAAA,WAAW;AACX,iBAAA,OAAO,CAAC,MAAM,EAAE,GAAG;AACnB,iBAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACnC;AACA,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtD,QAAA,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AACjD,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;AACzC,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;AAC7C,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IACzB;8GAzIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACzDD;AAEA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,UAAU,CACxB,MAAe,EACf,MAAe,EACf,eAAwB,KAAK,EAAA;AAE7B,IAAA,IAAI,CAAC,MAAM;QAAE;IAEb,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,QAAA,MAAM,QAAQ,GAAI,MAAc,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,QAAQ,GAAI,MAAc,CAAC,GAAG,CAAC;AAErC,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;YAClC,IAAI,YAAY,EAAE;AAChB,gBAAA,OAAO,CAAC,IAAI,CACV,2CAA2C,GAAG,CAAA,gDAAA,CAAkD,CACjG;YACH;YACA;QACF;AAEC,QAAA,MAAc,CAAC,GAAG,CAAC,GAAG,QAAQ;IACjC;AACF;;MC7Ba,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAClE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AAE9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AA4ChC,IAAA;IA1CC,kBAAkB,CAAC,SAAsB,EAAE,UAAsB,EAAA;AAC/D,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACvB,iBAAA,IAAI,CACH,kBAAkB,CAAC,UAAU,CAAC,EAC9B,YAAY,CAAC,EAAE,CAAC,EAChB,oBAAoB,EAAE;iBAEvB,SAAS,CAAC,MAAK;AACd,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,SAAS,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAC7B;gBACzB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AACtD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;oBACnB,IAAI,aAAa,EAAE;wBACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7C;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,iBAAiB,CACvB,QAA8B,EAAA;AAE9B,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO;AACrC,QAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;YAC3B,IAAI,OAAO,CAAC,SAAS,IAAI,cAAc,GAAG,EAAE,EAAE;AAC5C,gBAAA,OAAO,OAAO;YAChB;QACF;AACA,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;IAC5B;AAEA,IAAA,gBAAgB,CAAC,OAA2B,EAAA;QAC1C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACjD;8GA/CW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCQY,yBAAyB,CAAA;AAPtC,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,QAAQ,GAAoB,EAAE;AAC7B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAGtC;AAEG,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAY9D,IAAA;IAVC,gBAAgB,CACd,KAAwD,EACxD,OAAsB,EAAA;QAEtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;IACzC;8GAlBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBtC,4+BAkCA,EAAA,MAAA,EAAA,CAAA,gvCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4+BAAA,EAAA,MAAA,EAAA,CAAA,gvCAAA,CAAA,EAAA;;sBAG9C;;sBACA;;;METU,4BAA4B,CAAA;AAGvC;;;;;;;;;;;;;;;;;AAiBG;AACH,IAAA,aAAa,CACX,WAAmB,EACnB,MAAuB,EACvB,QAAgB,EAAA;QAEhB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC;AAC5D,QAAA,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,GAAG,QAAQ;AAClE,QAAA,OAAO,UAAU;IACnB;AAEA;;;;;AAKG;IACK,mBAAmB,CACzB,SAAmB,EACnB,MAAgC,EAAA;QAEhC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;YACvB,GAAG,GAAG,KAAK;AACX,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,MAAM,CAAC;AACV,QAAA,OAAO,QAAkB;IAC3B;IAEA,yBAAyB,CACvB,GAAoB,EACpB,UAAkB,EAAA;QAElB,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;QACjD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;AAE3C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;QACjD;QAEA,OAAO;AACL,YAAA,QAAQ,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS;YACtD,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS;SACtE;IACH;AAEA,IAAA,qBAAqB,CAAC,GAAoB,EAAE,MAAA,GAAiB,EAAE,EAAA;QAC7D,IAAI,MAAM,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC9C,YAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,GAAG;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpE;iBAAO;AACL,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACtB;QACF;AACA,QAAA,OAAO,MAAM;IACf;8GA9EW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;MCsCY,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,KAAK,GAET,EAAE;AAEE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACvD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AA6DnD,IAAA;AA3DC;;;;AAIG;AACH,IAAA,UAAU,CAAC,eAAwB,EAAA;QACjC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,IAAI,SAAS,CAAC;IAChE;AAEA;;AAEG;IACH,+BAA+B,CAC7B,YAAgC,EAChC,OAAuC,EAAA;QAEvC,OAAO,YAAY,CAAC,IAAI,CACtB,SAAS,CAAC,CAAC,WAAW,KAAI;AACxB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACpD,WAAW,EACX,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,QAAQ,CACjB;YACD,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC;AACvE,QAAA,CAAC,CAAC,EACF,cAAc,CAAC,YAAY,CAAC,EAC5B,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,KAAI;YACrC,OAAO;AACL,gBAAA,QAAQ,EAAE,gBAAgB;gBAC1B,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;oBACjD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;oBAC9B;AACA,oBAAA,OAAO,GAAG;gBACZ,CAAC,EAAE,EAAqB,CAAC;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CACvD,OAAO,CAAC,UAAU,EAClB,UAAU,CACX;aACF;QACH,CAAC,CAAC,CACH;IACH;IAEQ,qBAAqB,CAC3B,kBAA0B,EAC1B,cAA0C,EAAA;QAE1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;AACnC,iBAAA,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,IAAI;iBAClD,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,KACb,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAc,EAAE,cAAc,CAAC,CAC1D,CACF;QACL;AACA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACvC;8GAnEW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA9B,8BAA8B,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C;;;MC5BY,2BAA2B,CAAA;AARxC,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,OAAO,GAAyB,IAAI,YAAY,EAAU;AAI5D,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;AAyB1C,IAAA;IAvBC,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;cAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;cAC1C,SAAS;AACb,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;cACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;cACtC,SAAS;IACf;AAEA,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC;IAC/C;AAEA,IAAA,aAAa,CAAC,OAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;8GA9BW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,6IAL3B,CAAC,aAAa,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf5B,20BA+BA,u9BDjBY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;+BACE,6BAA6B,EAAA,OAAA,EAC9B,CAAC,YAAY,CAAC,EAAA,SAAA,EACZ,CAAC,aAAa,CAAC,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,20BAAA,EAAA,MAAA,EAAA,CAAA,g6BAAA,CAAA,EAAA;;sBAG9C;;sBACA;;;MEoBU,gCAAgC,CAAA;AAZ7C,IAAA,WAAA,GAAA;QAoBW,IAAA,CAAA,sBAAsB,GAAG,IAAI;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAyB,IAAI,YAAY,EAAU;AAM5D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAmEpC,IAAA;IAjEC,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,IAAI,CAAC,aAAa,EACvB,IAAI,CAAC,UAAU,CAChB;IACH;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAC1D,IAAI,CAAC,YAAY,EACjB;YACE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,oBAAoB;AACnC,YAAA,cAAc,EAAE;AACd,gBAAA,WAAW,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,cAAc;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA,CACF;IACH;AAEA,IAAA,eAAe,CAAC,MAGf,EAAA;AACC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CACzD,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA,CAAE,CACF;QACvB,aAAa,CAAC,KAAK,EAAE;AACrB,QAAA,IAAI,CAAC,gBAAgB,CACnB,aAAa,EACZ,MAAM,CAAC,KAAuB,CAAC,GAAG,KAAK,OAAO,CAChD;IACH;AAEA,IAAA,gBAAgB,CACd,IAAwB,EACxB,oBAAoB,GAAG,KAAK,EAAA;AAE5B,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAA0B,CAAC;AAC/D,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS;QACpC,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAClC;IACF;AAEA,IAAA,YAAY,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrD,GAAG;AACH,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC;IACJ;AAEA,IAAA,aAAa,CAAC,OAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;8GArFW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,uhBC1C7C,0rCAiCA,EAAA,MAAA,EAAA,CAAA,ugGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,yBAAyB,qHACzB,2BAA2B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAOlB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAZ5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,OAAA,EAChC;wBACP,YAAY;wBACZ,yBAAyB;wBACzB,2BAA2B;AAC5B,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0rCAAA,EAAA,MAAA,EAAA,CAAA,ugGAAA,CAAA,EAAA;;sBAMpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,MAAM;;sBAEhB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;AEnDnD;;AAEG;MACU,oBAAoB,CAAA;AAC/B;;;;;;AAMG;AACH,IAAA,OAAO,8BAA8B,CACnC,OAAsB,EACtB,SAAiB,EACjB,QAAiB,EAAA;AAEjB,QAAA,QACE,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS;AAChC,YAAA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE;YACnC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;IAEzD;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,kBAAkB,CACvB,OAAsB,EACtB,SAAiB,EACjB,QAAiB,EAAA;AAEjB,QAAA,IAAI,YAAY,GAAG,CAAA,EAAG,SAAS,gBAAgB;AAC/C,QAAA,IAAI,YAAY,GAAG,CAAA,EAAG,SAAS,eAAe;QAC9C,IAAI,QAAQ,EAAE;AACZ,YAAA,YAAY,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;AAC9B,YAAA,YAAY,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;QAChC;AACA,QAAA,QACE,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS;AAChC,YAAA,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEpE;AACD;;AC9CD;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,wBAAwB,CACtC,IAAY,EAAA;AAEZ,IAAA,OAAO,UAAa,MAAqB,EAAA;AACvC,QAAA,OAAO,MAAM,CAAC,IAAI,CAChB,SAAS,CACP,MACE,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAK;AACZ,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,oBAAA,OAAO,EAAE;AACX,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACL,CACF;AACH,IAAA,CAAC;AACH;;AClCO,MAAM,WAAW,GAAG;;ACL3B;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mathstack/app-kit",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.3.0",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@angular/common": ">=18.0.0 <
|
|
7
|
-
"@angular/core": ">=18.0.0 <
|
|
6
|
+
"@angular/common": ">=18.0.0 <23.0.0",
|
|
7
|
+
"@angular/core": ">=18.0.0 <23.0.0",
|
|
8
8
|
"hast-util-from-parse5": "^8.0.1",
|
|
9
9
|
"html-entities": "^2.5.2",
|
|
10
10
|
"lodash-es": "^4.17.21",
|
|
@@ -45,5 +45,6 @@
|
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
47
|
"module": "fesm2022/mathstack-app-kit.mjs",
|
|
48
|
-
"typings": "types/mathstack-app-kit.d.ts"
|
|
48
|
+
"typings": "types/mathstack-app-kit.d.ts",
|
|
49
|
+
"type": "module"
|
|
49
50
|
}
|