@covalent/markdown-navigator 4.0.0 → 4.1.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +70 -58
  2. package/_markdon-navigator-theme.scss +22 -0
  3. package/covalent-markdown-navigator.d.ts +2 -2
  4. package/esm2020/covalent-markdown-navigator.mjs +5 -0
  5. package/esm2020/markdown-navigator-window/markdown-navigator-window.component.mjs +84 -0
  6. package/esm2020/markdown-navigator-window-directive/markdown-navigator-window.directive.mjs +32 -0
  7. package/esm2020/markdown-navigator-window-service/markdown-navigator-window.service.mjs +130 -0
  8. package/esm2020/markdown-navigator.component.mjs +391 -0
  9. package/esm2020/markdown-navigator.module.mjs +77 -0
  10. package/esm2020/public_api.mjs +6 -0
  11. package/fesm2015/covalent-markdown-navigator.mjs +712 -0
  12. package/fesm2015/covalent-markdown-navigator.mjs.map +1 -0
  13. package/fesm2020/covalent-markdown-navigator.mjs +700 -0
  14. package/fesm2020/covalent-markdown-navigator.mjs.map +1 -0
  15. package/markdown-navigator-window/markdown-navigator-window.component.d.ts +15 -12
  16. package/markdown-navigator-window-directive/markdown-navigator-window.directive.d.ts +4 -1
  17. package/markdown-navigator-window-service/markdown-navigator-window.service.d.ts +3 -0
  18. package/markdown-navigator.component.d.ts +22 -20
  19. package/markdown-navigator.module.d.ts +17 -0
  20. package/package.json +38 -19
  21. package/{public-api.d.ts → public_api.d.ts} +1 -0
  22. package/bundles/covalent-markdown-navigator.umd.js +0 -1650
  23. package/bundles/covalent-markdown-navigator.umd.js.map +0 -1
  24. package/bundles/covalent-markdown-navigator.umd.min.js +0 -16
  25. package/bundles/covalent-markdown-navigator.umd.min.js.map +0 -1
  26. package/covalent-markdown-navigator.metadata.json +0 -1
  27. package/esm2015/covalent-markdown-navigator.js +0 -11
  28. package/esm2015/index.js +0 -7
  29. package/esm2015/markdown-navigator-window/markdown-navigator-window.component.js +0 -129
  30. package/esm2015/markdown-navigator-window-directive/markdown-navigator-window.directive.js +0 -50
  31. package/esm2015/markdown-navigator-window-service/markdown-navigator-window.service.js +0 -254
  32. package/esm2015/markdown-navigator.component.js +0 -698
  33. package/esm2015/markdown-navigator.module.js +0 -41
  34. package/esm2015/public-api.js +0 -10
  35. package/fesm2015/covalent-markdown-navigator.js +0 -1181
  36. package/fesm2015/covalent-markdown-navigator.js.map +0 -1
  37. package/index.d.ts +0 -1
  38. package/markdown-navigator-window/markdown-navigator-window.component.scss +0 -8
  39. package/markdown-navigator.component.scss +0 -50
@@ -0,0 +1,700 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, SecurityContext, Component, ChangeDetectionStrategy, Input, Output, ViewChild, HostListener, Injectable, Inject, Directive, NgModule } from '@angular/core';
3
+ import * as i11 from '@angular/common';
4
+ import { DOCUMENT, CommonModule } from '@angular/common';
5
+ import * as i1 from '@covalent/markdown';
6
+ import { isAnchorLink, removeLeadingHash } from '@covalent/markdown';
7
+ import * as i2 from '@angular/platform-browser';
8
+ import * as i3 from '@angular/common/http';
9
+ import { firstValueFrom } from 'rxjs';
10
+ import * as i4 from '@angular/material/progress-bar';
11
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
12
+ import * as i5 from '@covalent/core/breadcrumbs';
13
+ import { CovalentBreadcrumbsModule } from '@covalent/core/breadcrumbs';
14
+ import * as i6 from '@angular/material/icon';
15
+ import { MatIconModule } from '@angular/material/icon';
16
+ import * as i7 from '@angular/material/divider';
17
+ import * as i8 from '@covalent/core/message';
18
+ import { CovalentMessageModule } from '@covalent/core/message';
19
+ import * as i9 from '@covalent/flavored-markdown';
20
+ import { CovalentFlavoredMarkdownModule } from '@covalent/flavored-markdown';
21
+ import * as i10 from '@angular/material/list';
22
+ import { MatListModule } from '@angular/material/list';
23
+ import * as i12 from '@angular/material/tooltip';
24
+ import { MatTooltipModule } from '@angular/material/tooltip';
25
+ import * as i13 from '@angular/material/core';
26
+ import * as i1$1 from '@covalent/core/dialogs';
27
+ import { ResizableDraggableDialog, CovalentDialogsModule } from '@covalent/core/dialogs';
28
+ import { MatButtonModule } from '@angular/material/button';
29
+
30
+ const DEFAULT_MARKDOWN_NAVIGATOR_LABELS = {
31
+ goHome: 'Go home',
32
+ goBack: 'Go back',
33
+ emptyState: 'No item(s) to display',
34
+ };
35
+ class TdMarkdownNavigatorComponent {
36
+ constructor(_markdownUrlLoaderService, _changeDetectorRef, _sanitizer, _http) {
37
+ this._markdownUrlLoaderService = _markdownUrlLoaderService;
38
+ this._changeDetectorRef = _changeDetectorRef;
39
+ this._sanitizer = _sanitizer;
40
+ this._http = _http;
41
+ /**
42
+ * copyCodeToClipboard?: boolean
43
+ *
44
+ * Display copy button on code snippets to copy code to clipboard.
45
+ *
46
+ */
47
+ this.copyCodeToClipboard = false;
48
+ /**
49
+ * copyCodeTooltips?: ICopyCodeTooltips
50
+ *
51
+ * Tooltips for copy button to copy and upon copying.
52
+ */
53
+ this.copyCodeTooltips = {};
54
+ this.buttonClicked = new EventEmitter();
55
+ this.historyStack = []; // history
56
+ this.currentMenuItems = []; // current menu items
57
+ this.loading = false;
58
+ }
59
+ clickListener(event) {
60
+ const element = event.srcElement;
61
+ if (element.matches('a[href]') &&
62
+ isMarkdownHref(element)) {
63
+ this.handleLinkClick(event);
64
+ }
65
+ }
66
+ get showGoBackButton() {
67
+ return this.historyStack.length > 0;
68
+ }
69
+ get showHeader() {
70
+ return this.showGoBackButton || !!this.currentItemTitle;
71
+ }
72
+ get showMenu() {
73
+ const showMenu = this.currentMenuItems && this.currentMenuItems.length > 0;
74
+ return showMenu ?? false;
75
+ }
76
+ get showTdMarkdownLoader() {
77
+ return (!!this.currentMarkdownItem &&
78
+ !!this.currentMarkdownItem.url &&
79
+ !this.showTdMarkdown);
80
+ }
81
+ get showTdMarkdown() {
82
+ return (!!this.currentMarkdownItem && !!this.currentMarkdownItem.markdownString);
83
+ }
84
+ get url() {
85
+ if (this.currentMarkdownItem) {
86
+ return this.currentMarkdownItem.url;
87
+ }
88
+ return undefined;
89
+ }
90
+ get footerComponent() {
91
+ if (this.currentMarkdownItem && this.currentMarkdownItem.footer) {
92
+ return this.currentMarkdownItem.footer;
93
+ }
94
+ return this.footer;
95
+ }
96
+ get httpOptions() {
97
+ if (this.currentMarkdownItem) {
98
+ return this.currentMarkdownItem.httpOptions;
99
+ }
100
+ return undefined;
101
+ }
102
+ get markdownString() {
103
+ if (this.currentMarkdownItem) {
104
+ return this.currentMarkdownItem.markdownString;
105
+ }
106
+ return undefined;
107
+ }
108
+ get anchor() {
109
+ if (this.currentMarkdownItem) {
110
+ return this.currentMarkdownItem.anchor;
111
+ }
112
+ return undefined;
113
+ }
114
+ get showEmptyState() {
115
+ return !this.items || this.items.length < 1;
116
+ }
117
+ get goHomeLabel() {
118
+ return ((this.labels && this.labels.goHome) ||
119
+ DEFAULT_MARKDOWN_NAVIGATOR_LABELS.goHome);
120
+ }
121
+ get goBackLabel() {
122
+ return ((this.labels && this.labels.goBack) ||
123
+ DEFAULT_MARKDOWN_NAVIGATOR_LABELS.goBack);
124
+ }
125
+ get emptyStateLabel() {
126
+ return ((this.labels && this.labels.emptyState) ||
127
+ DEFAULT_MARKDOWN_NAVIGATOR_LABELS.emptyState);
128
+ }
129
+ get currentItemTitle() {
130
+ if (this.historyStack.length < 1) {
131
+ return '';
132
+ }
133
+ else if (this.currentMarkdownItem) {
134
+ return this.getTitle(this.currentMarkdownItem);
135
+ }
136
+ else if (this.historyStack.length > 0) {
137
+ return this.getTitle(this.historyStack[this.historyStack.length - 1]);
138
+ }
139
+ return '';
140
+ }
141
+ async ngOnChanges(changes) {
142
+ if (changes['items']) {
143
+ this.reset();
144
+ }
145
+ if (changes['startAt'] && this.items && this.startAt) {
146
+ this._jumpTo(this.startAt, undefined);
147
+ }
148
+ }
149
+ hasChildrenOrChildrenUrl(item) {
150
+ return (item.children && item.children.length > 0) || !!item.childrenUrl;
151
+ }
152
+ clearErrors() {
153
+ this.markdownLoaderError = undefined;
154
+ this.childrenUrlError = undefined;
155
+ }
156
+ reset() {
157
+ this.loading = false;
158
+ this.clearErrors();
159
+ // if single item and no children
160
+ if (this.items &&
161
+ this.items.length === 1 &&
162
+ !this.hasChildrenOrChildrenUrl(this.items[0])) {
163
+ this.currentMenuItems = [];
164
+ this.currentMarkdownItem = this.items[0];
165
+ }
166
+ else {
167
+ this.currentMenuItems = this.items;
168
+ this.currentMarkdownItem = undefined;
169
+ }
170
+ this.historyStack = [];
171
+ this._changeDetectorRef.markForCheck();
172
+ }
173
+ goBack(goBackLength = 1) {
174
+ this.loading = false;
175
+ this.clearErrors();
176
+ if (this.historyStack.length > 1) {
177
+ let parent = this.historyStack[this.historyStack.length - 2];
178
+ if (parent?.startAtLink) {
179
+ parent = this.historyStack[this.historyStack.length - 3]
180
+ ? this.historyStack[this.historyStack.length - 3]
181
+ : undefined;
182
+ this.historyStack = this.historyStack.slice(0, -goBackLength);
183
+ }
184
+ if (parent) {
185
+ this.currentMarkdownItem = parent;
186
+ this.historyStack = this.historyStack.slice(0, -goBackLength);
187
+ this.setChildrenAsCurrentMenuItems(parent);
188
+ }
189
+ else {
190
+ this.reset();
191
+ }
192
+ }
193
+ else {
194
+ // one level down just go to root
195
+ this.reset();
196
+ }
197
+ this._changeDetectorRef.markForCheck();
198
+ }
199
+ handleItemSelected(item) {
200
+ this.clearErrors();
201
+ this.currentMarkdownItem = item;
202
+ this.historyStack = [...this.historyStack, item];
203
+ this.setChildrenAsCurrentMenuItems(item);
204
+ this._changeDetectorRef.markForCheck();
205
+ }
206
+ async setChildrenAsCurrentMenuItems(item) {
207
+ this.currentMenuItems = [];
208
+ this.loading = true;
209
+ this._changeDetectorRef.markForCheck();
210
+ const stackSnapshot = this.historyStack;
211
+ let children = [];
212
+ if (item.children) {
213
+ children = item.children;
214
+ }
215
+ else if (item.childrenUrl) {
216
+ children = await this.loadChildrenUrl(item);
217
+ }
218
+ if (children && children.length && item.startAtLink) {
219
+ this._jumpTo(item.startAtLink, children);
220
+ }
221
+ const newStackSnapshot = this.historyStack;
222
+ if (stackSnapshot.length === newStackSnapshot.length &&
223
+ stackSnapshot.every((stackItem, index) => stackItem === newStackSnapshot[index])) {
224
+ this.currentMenuItems = children;
225
+ }
226
+ this.loading = false;
227
+ this._changeDetectorRef.markForCheck();
228
+ }
229
+ async loadChildrenUrl(item) {
230
+ const sanitizedUrl = this._sanitizer.sanitize(SecurityContext.URL, item.childrenUrl ?? null) ??
231
+ '';
232
+ try {
233
+ return await firstValueFrom(this._http.get(sanitizedUrl, {
234
+ ...item.httpOptions,
235
+ }));
236
+ }
237
+ catch (error) {
238
+ this.handleChildrenUrlError(error);
239
+ return [];
240
+ }
241
+ }
242
+ getTitle(item) {
243
+ if (!item) {
244
+ return '';
245
+ }
246
+ return (removeLeadingHash(item.anchor ?? '') ||
247
+ item.title ||
248
+ getTitleFromUrl(item.url ?? '') ||
249
+ getTitleFromMarkdownString(item.markdownString ?? '') ||
250
+ '').trim();
251
+ }
252
+ getIcon(item) {
253
+ return item?.icon || 'subject';
254
+ }
255
+ handleChildrenUrlError(error) {
256
+ this.childrenUrlError = error.message;
257
+ this._changeDetectorRef.markForCheck();
258
+ }
259
+ handleMarkdownLoaderError(error) {
260
+ this.markdownLoaderError = error ? error.message : '';
261
+ this._changeDetectorRef.markForCheck();
262
+ }
263
+ async _jumpTo(itemOrPath, children) {
264
+ const historyStack = this.historyStack;
265
+ this.reset();
266
+ if (this.items && this.items.length > 0) {
267
+ let path = [];
268
+ if (Array.isArray(itemOrPath)) {
269
+ path = await this.followPath(this.items, itemOrPath);
270
+ }
271
+ else if (children && children.length > 0) {
272
+ this.historyStack = historyStack;
273
+ path = this.findPath(children, itemOrPath);
274
+ }
275
+ else {
276
+ path = this.findPath(this.items, itemOrPath);
277
+ }
278
+ (path || []).forEach((pathItem) => this.handleItemSelected(pathItem));
279
+ }
280
+ this._changeDetectorRef.markForCheck();
281
+ }
282
+ async followPath(items, path) {
283
+ let pathItems = [];
284
+ let currentLevel = items;
285
+ const compareWith = this.compareWith || defaultCompareWith;
286
+ for (const pathItem of path) {
287
+ const foundItem = currentLevel.find((item) => compareWith(pathItem, item));
288
+ if (foundItem) {
289
+ pathItems = [...pathItems, foundItem];
290
+ if (foundItem.children) {
291
+ currentLevel = foundItem.children;
292
+ }
293
+ else if (foundItem.childrenUrl) {
294
+ currentLevel = await this.loadChildrenUrl(foundItem);
295
+ }
296
+ }
297
+ else {
298
+ break;
299
+ }
300
+ }
301
+ if (pathItems.length !== path.length) {
302
+ pathItems = [];
303
+ }
304
+ return pathItems;
305
+ }
306
+ findPath(items, item) {
307
+ const compareWith = this.compareWith || defaultCompareWith;
308
+ if (items) {
309
+ for (const child of items) {
310
+ if (item && compareWith(child, item)) {
311
+ return [child];
312
+ }
313
+ const ancestors = this.findPath(child.children, item);
314
+ if (ancestors) {
315
+ return [child, ...ancestors];
316
+ }
317
+ }
318
+ }
319
+ return undefined;
320
+ }
321
+ async handleLinkClick(event) {
322
+ event.preventDefault();
323
+ const link = event.target;
324
+ const url = new URL(link.href);
325
+ this.loading = true;
326
+ this._changeDetectorRef.markForCheck();
327
+ try {
328
+ const markdownString = await this._markdownUrlLoaderService.load(url.href);
329
+ // pass in url to be able to use currentMarkdownItem.url later on
330
+ this.handleItemSelected({ markdownString, url: url.href });
331
+ this.markdownWrapper.nativeElement.scrollTop = 0;
332
+ }
333
+ catch (error) {
334
+ const win = window.open(url.href, '_blank');
335
+ win?.focus();
336
+ }
337
+ finally {
338
+ this.loading = false;
339
+ }
340
+ this._changeDetectorRef.markForCheck();
341
+ }
342
+ }
343
+ TdMarkdownNavigatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorComponent, deps: [{ token: i1.TdMarkdownLoaderService }, { token: i0.ChangeDetectorRef }, { token: i2.DomSanitizer }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
344
+ TdMarkdownNavigatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdMarkdownNavigatorComponent, selector: "td-markdown-navigator", inputs: { items: "items", labels: "labels", startAt: "startAt", copyCodeToClipboard: "copyCodeToClipboard", copyCodeTooltips: "copyCodeTooltips", footer: "footer", compareWith: "compareWith" }, outputs: { buttonClicked: "buttonClicked" }, host: { listeners: { "click": "clickListener($event)" } }, viewQueries: [{ propertyName: "markdownWrapper", first: true, predicate: ["markdownWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!showEmptyState\">\n <mat-progress-bar\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n ></mat-progress-bar>\n <ng-container *ngIf=\"showHeader\">\n <td-breadcrumbs>\n <a\n td-breadcrumb\n [matTooltip]=\"goHomeLabel ?? ''\"\n (click)=\"reset()\"\n [attr.data-test]=\"'home-button'\"\n >Home</a\n >\n <ng-container\n *ngFor=\"let stack of historyStack; last as isLast; index as index\"\n >\n <ng-container *ngIf=\"!isLast; else lastBreadCrumb\">\n <a\n td-breadcrumb\n (click)=\"goBack(index)\"\n [attr.data-test]=\"'back-button'\"\n >{{ stack.title }}</a\n >\n </ng-container>\n <ng-template #lastBreadCrumb>\n <mat-icon class=\"breadcrumb-end-icon\">chevron_right</mat-icon>\n </ng-template>\n </ng-container>\n </td-breadcrumbs>\n <div class=\"breadcrumb-current-title\" [attr.data-test]=\"'title'\">\n {{ currentItemTitle }}\n </div>\n\n <mat-divider [style.position]=\"'relative'\"></mat-divider>\n </ng-container>\n\n <div class=\"scroll-area\" id=\"td-markdown-navigator-content\">\n <div\n *ngIf=\"showTdMarkdownLoader || showTdMarkdown\"\n class=\"markdown-wrapper\"\n #markdownWrapper\n >\n <td-message\n *ngIf=\"markdownLoaderError\"\n [sublabel]=\"markdownLoaderError\"\n color=\"warn\"\n icon=\"error\"\n [attr.data-test]=\"'markdown-loader-error'\"\n ></td-message>\n <td-flavored-markdown-loader\n *ngIf=\"showTdMarkdownLoader\"\n [url]=\"url ?? ''\"\n [httpOptions]=\"httpOptions ?? {}\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (loadFailed)=\"handleMarkdownLoaderError($event)\"\n ></td-flavored-markdown-loader>\n <td-flavored-markdown\n *ngIf=\"showTdMarkdown\"\n [content]=\"markdownString ?? ''\"\n [hostedUrl]=\"url ?? ''\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n ></td-flavored-markdown>\n </div>\n\n <td-message\n *ngIf=\"childrenUrlError\"\n [sublabel]=\"childrenUrlError\"\n color=\"warn\"\n icon=\"error\"\n [attr.data-test]=\"'children-url-error'\"\n ></td-message>\n <div *ngIf=\"showMenu\" class=\"td-markdown-list\">\n <mat-action-list>\n <button\n *ngFor=\"let item of currentMenuItems; index as index\"\n [id]=\"\n 'td-markdown-navigator-list-item-' + (item.id ? item.id : index)\n \"\n (click)=\"handleItemSelected(item)\"\n mat-list-item\n [matTooltip]=\"getTitle(item)\"\n matTooltipPosition=\"before\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon matListIcon>\n {{ getIcon(item) }}\n </mat-icon>\n <span matLine class=\"truncate\">\n {{ getTitle(item) }}\n </span>\n <span matLine class=\"truncate\">{{ item.description }}</span>\n <mat-divider></mat-divider>\n </button>\n </mat-action-list>\n </div>\n\n <ng-container *ngComponentOutlet=\"footerComponent\"></ng-container>\n </div>\n</ng-container>\n\n<div\n *ngIf=\"showEmptyState\"\n layout=\"column\"\n layout-align=\"center center\"\n class=\"empty-state\"\n>\n <mat-icon matListAvatar>subject</mat-icon>\n <h2>{{ emptyStateLabel }}</h2>\n</div>\n", styles: [":host{position:relative;height:inherit;height:100%;box-sizing:border-box;display:flex;flex-direction:column}:host td-breadcrumbs::ng-deep{margin:16px 16px 8px}:host td-breadcrumbs::ng-deep mat-icon{font-size:16px;margin-left:1px;margin-right:0;margin-top:-1px}:host .breadcrumb-end-icon{line-height:16px;margin-top:1px}:host .breadcrumb-current-title{font-weight:700;margin:0 16px 16px}:host .scroll-area{min-height:1px;overflow-y:auto;flex:1;box-sizing:border-box}:host .markdown-wrapper{padding:16px 16px 0}:host .td-markdown-list>.mat-list{padding-top:0}:host td-flavored-markdown-loader ::ng-deep .mat-progress-bar{top:0;left:0;right:0;position:absolute}:host .title{display:inline-block;vertical-align:middle;margin:8px 0;padding-left:16px}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-state{padding:32px}.empty-state mat-icon{font-size:4em}\n"], components: [{ type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5.TdBreadcrumbsComponent, selector: "td-breadcrumbs", inputs: ["separatorIcon"] }, { type: i5.TdBreadcrumbComponent, selector: "td-breadcrumb, a[td-breadcrumb]" }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8.TdMessageComponent, selector: "td-message", inputs: ["label", "sublabel", "icon", "color", "opened"] }, { type: i9.TdFlavoredMarkdownLoaderComponent, selector: "td-flavored-markdown-loader", inputs: ["url", "httpOptions", "anchor", "copyCodeToClipboard", "copyCodeTooltips"], outputs: ["contentReady", "loadFailed", "buttonClicked"] }, { type: i9.TdFlavoredMarkdownComponent, selector: "td-flavored-markdown", inputs: ["content", "simpleLineBreaks", "hostedUrl", "anchor", "copyCodeToClipboard", "copyCodeTooltips"], outputs: ["contentReady", "buttonClicked"] }, { type: i10.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i10.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { type: i13.MatLine, selector: "[mat-line], [matLine]" }, { type: i11.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }, { type: i10.MatListAvatarCssMatStyler, selector: "[mat-list-avatar], [matListAvatar]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorComponent, decorators: [{
346
+ type: Component,
347
+ args: [{ selector: 'td-markdown-navigator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!showEmptyState\">\n <mat-progress-bar\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n ></mat-progress-bar>\n <ng-container *ngIf=\"showHeader\">\n <td-breadcrumbs>\n <a\n td-breadcrumb\n [matTooltip]=\"goHomeLabel ?? ''\"\n (click)=\"reset()\"\n [attr.data-test]=\"'home-button'\"\n >Home</a\n >\n <ng-container\n *ngFor=\"let stack of historyStack; last as isLast; index as index\"\n >\n <ng-container *ngIf=\"!isLast; else lastBreadCrumb\">\n <a\n td-breadcrumb\n (click)=\"goBack(index)\"\n [attr.data-test]=\"'back-button'\"\n >{{ stack.title }}</a\n >\n </ng-container>\n <ng-template #lastBreadCrumb>\n <mat-icon class=\"breadcrumb-end-icon\">chevron_right</mat-icon>\n </ng-template>\n </ng-container>\n </td-breadcrumbs>\n <div class=\"breadcrumb-current-title\" [attr.data-test]=\"'title'\">\n {{ currentItemTitle }}\n </div>\n\n <mat-divider [style.position]=\"'relative'\"></mat-divider>\n </ng-container>\n\n <div class=\"scroll-area\" id=\"td-markdown-navigator-content\">\n <div\n *ngIf=\"showTdMarkdownLoader || showTdMarkdown\"\n class=\"markdown-wrapper\"\n #markdownWrapper\n >\n <td-message\n *ngIf=\"markdownLoaderError\"\n [sublabel]=\"markdownLoaderError\"\n color=\"warn\"\n icon=\"error\"\n [attr.data-test]=\"'markdown-loader-error'\"\n ></td-message>\n <td-flavored-markdown-loader\n *ngIf=\"showTdMarkdownLoader\"\n [url]=\"url ?? ''\"\n [httpOptions]=\"httpOptions ?? {}\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (loadFailed)=\"handleMarkdownLoaderError($event)\"\n ></td-flavored-markdown-loader>\n <td-flavored-markdown\n *ngIf=\"showTdMarkdown\"\n [content]=\"markdownString ?? ''\"\n [hostedUrl]=\"url ?? ''\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n ></td-flavored-markdown>\n </div>\n\n <td-message\n *ngIf=\"childrenUrlError\"\n [sublabel]=\"childrenUrlError\"\n color=\"warn\"\n icon=\"error\"\n [attr.data-test]=\"'children-url-error'\"\n ></td-message>\n <div *ngIf=\"showMenu\" class=\"td-markdown-list\">\n <mat-action-list>\n <button\n *ngFor=\"let item of currentMenuItems; index as index\"\n [id]=\"\n 'td-markdown-navigator-list-item-' + (item.id ? item.id : index)\n \"\n (click)=\"handleItemSelected(item)\"\n mat-list-item\n [matTooltip]=\"getTitle(item)\"\n matTooltipPosition=\"before\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon matListIcon>\n {{ getIcon(item) }}\n </mat-icon>\n <span matLine class=\"truncate\">\n {{ getTitle(item) }}\n </span>\n <span matLine class=\"truncate\">{{ item.description }}</span>\n <mat-divider></mat-divider>\n </button>\n </mat-action-list>\n </div>\n\n <ng-container *ngComponentOutlet=\"footerComponent\"></ng-container>\n </div>\n</ng-container>\n\n<div\n *ngIf=\"showEmptyState\"\n layout=\"column\"\n layout-align=\"center center\"\n class=\"empty-state\"\n>\n <mat-icon matListAvatar>subject</mat-icon>\n <h2>{{ emptyStateLabel }}</h2>\n</div>\n", styles: [":host{position:relative;height:inherit;height:100%;box-sizing:border-box;display:flex;flex-direction:column}:host td-breadcrumbs::ng-deep{margin:16px 16px 8px}:host td-breadcrumbs::ng-deep mat-icon{font-size:16px;margin-left:1px;margin-right:0;margin-top:-1px}:host .breadcrumb-end-icon{line-height:16px;margin-top:1px}:host .breadcrumb-current-title{font-weight:700;margin:0 16px 16px}:host .scroll-area{min-height:1px;overflow-y:auto;flex:1;box-sizing:border-box}:host .markdown-wrapper{padding:16px 16px 0}:host .td-markdown-list>.mat-list{padding-top:0}:host td-flavored-markdown-loader ::ng-deep .mat-progress-bar{top:0;left:0;right:0;position:absolute}:host .title{display:inline-block;vertical-align:middle;margin:8px 0;padding-left:16px}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-state{padding:32px}.empty-state mat-icon{font-size:4em}\n"] }]
348
+ }], ctorParameters: function () { return [{ type: i1.TdMarkdownLoaderService }, { type: i0.ChangeDetectorRef }, { type: i2.DomSanitizer }, { type: i3.HttpClient }]; }, propDecorators: { items: [{
349
+ type: Input
350
+ }], labels: [{
351
+ type: Input
352
+ }], startAt: [{
353
+ type: Input
354
+ }], copyCodeToClipboard: [{
355
+ type: Input
356
+ }], copyCodeTooltips: [{
357
+ type: Input
358
+ }], footer: [{
359
+ type: Input
360
+ }], compareWith: [{
361
+ type: Input
362
+ }], buttonClicked: [{
363
+ type: Output
364
+ }], markdownWrapper: [{
365
+ type: ViewChild,
366
+ args: ['markdownWrapper']
367
+ }], clickListener: [{
368
+ type: HostListener,
369
+ args: ['click', ['$event']]
370
+ }] } });
371
+ function getTitleFromUrl(url) {
372
+ if (url) {
373
+ const temp = new URL(url);
374
+ if (temp.hash) {
375
+ return removeLeadingHash(temp.hash);
376
+ }
377
+ else {
378
+ const path = temp.pathname.split('/');
379
+ const fileName = path[path.length - 1];
380
+ return fileName.replace(/\.[^/.]+$/, ''); // remove .md
381
+ }
382
+ }
383
+ return '';
384
+ }
385
+ function getTitleFromMarkdownString(markdownString) {
386
+ if (markdownString) {
387
+ const firstLine = markdownString.split(/[\r\n]+/).find((line) => !!line) ?? '';
388
+ return removeLeadingHash(firstLine).trim();
389
+ }
390
+ return '';
391
+ }
392
+ function isMarkdownHref(anchor) {
393
+ return !isAnchorLink(anchor) && anchor.pathname.endsWith('.md');
394
+ }
395
+ function defaultCompareWith(o1, o2) {
396
+ if (o1.id && o2.id) {
397
+ return o1.id === o2.id;
398
+ }
399
+ return o1 === o2;
400
+ }
401
+
402
+ const DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS = {
403
+ title: 'Help',
404
+ close: 'Close',
405
+ dock: 'Dock',
406
+ unDock: 'Undock',
407
+ };
408
+ class TdMarkdownNavigatorWindowComponent {
409
+ constructor() {
410
+ this.toolbarColor = 'primary';
411
+ this.docked = false;
412
+ this.copyCodeToClipboard = false;
413
+ this.copyCodeTooltips = {};
414
+ this.closed = new EventEmitter();
415
+ this.dockToggled = new EventEmitter();
416
+ this.buttonClicked = new EventEmitter();
417
+ }
418
+ get markdownNavigatorLabels() {
419
+ if (!this.labels) {
420
+ return undefined;
421
+ }
422
+ const { goHome, goBack, emptyState } = this.labels;
423
+ return {
424
+ goHome,
425
+ goBack,
426
+ emptyState,
427
+ };
428
+ }
429
+ get titleLabel() {
430
+ return ((this.labels && this.labels.title) ||
431
+ DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.title);
432
+ }
433
+ get closeLabel() {
434
+ return ((this.labels && this.labels.close) ||
435
+ DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.close);
436
+ }
437
+ get toggleDockedStateLabel() {
438
+ if (this.docked) {
439
+ return ((this.labels && this.labels.unDock) ||
440
+ DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.unDock);
441
+ }
442
+ else {
443
+ return ((this.labels && this.labels.dock) ||
444
+ DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.dock);
445
+ }
446
+ }
447
+ toggleDockedState() {
448
+ this.dockToggled.emit(this.docked);
449
+ }
450
+ }
451
+ TdMarkdownNavigatorWindowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
452
+ TdMarkdownNavigatorWindowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdMarkdownNavigatorWindowComponent, selector: "td-markdown-navigator-window", inputs: { items: "items", labels: "labels", toolbarColor: "toolbarColor", startAt: "startAt", compareWith: "compareWith", docked: "docked", copyCodeToClipboard: "copyCodeToClipboard", copyCodeTooltips: "copyCodeTooltips", footer: "footer" }, outputs: { closed: "closed", dockToggled: "dockToggled", buttonClicked: "buttonClicked" }, ngImport: i0, template: "<td-window-dialog\n [toolbarColor]=\"toolbarColor\"\n [docked]=\"docked\"\n [title]=\"titleLabel\"\n [toggleDockedStateLabel]=\"toggleDockedStateLabel\"\n [closeLabel]=\"closeLabel\"\n (dockToggled)=\"toggleDockedState()\"\n (closed)=\"closed.emit()\"\n>\n <td-markdown-navigator\n [items]=\"items\"\n [labels]=\"markdownNavigatorLabels\"\n [style.display]=\"docked ? 'none' : 'inherit'\"\n [startAt]=\"startAt\"\n [compareWith]=\"compareWith\"\n [footer]=\"footer\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n ></td-markdown-navigator>\n</td-window-dialog>\n", styles: [":host{height:100%;display:flex;flex-direction:column}td-markdown-navigator{height:calc(100% - 56px)}\n"], components: [{ type: i1$1.TdWindowDialogComponent, selector: "td-window-dialog", inputs: ["toolbarColor", "docked", "title", "toggleDockedStateLabel", "closeLabel"], outputs: ["dockToggled", "closed"] }, { type: TdMarkdownNavigatorComponent, selector: "td-markdown-navigator", inputs: ["items", "labels", "startAt", "copyCodeToClipboard", "copyCodeTooltips", "footer", "compareWith"], outputs: ["buttonClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowComponent, decorators: [{
454
+ type: Component,
455
+ args: [{ selector: 'td-markdown-navigator-window', changeDetection: ChangeDetectionStrategy.OnPush, template: "<td-window-dialog\n [toolbarColor]=\"toolbarColor\"\n [docked]=\"docked\"\n [title]=\"titleLabel\"\n [toggleDockedStateLabel]=\"toggleDockedStateLabel\"\n [closeLabel]=\"closeLabel\"\n (dockToggled)=\"toggleDockedState()\"\n (closed)=\"closed.emit()\"\n>\n <td-markdown-navigator\n [items]=\"items\"\n [labels]=\"markdownNavigatorLabels\"\n [style.display]=\"docked ? 'none' : 'inherit'\"\n [startAt]=\"startAt\"\n [compareWith]=\"compareWith\"\n [footer]=\"footer\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n ></td-markdown-navigator>\n</td-window-dialog>\n", styles: [":host{height:100%;display:flex;flex-direction:column}td-markdown-navigator{height:calc(100% - 56px)}\n"] }]
456
+ }], propDecorators: { items: [{
457
+ type: Input
458
+ }], labels: [{
459
+ type: Input
460
+ }], toolbarColor: [{
461
+ type: Input
462
+ }], startAt: [{
463
+ type: Input
464
+ }], compareWith: [{
465
+ type: Input
466
+ }], docked: [{
467
+ type: Input
468
+ }], copyCodeToClipboard: [{
469
+ type: Input
470
+ }], copyCodeTooltips: [{
471
+ type: Input
472
+ }], footer: [{
473
+ type: Input
474
+ }], closed: [{
475
+ type: Output
476
+ }], dockToggled: [{
477
+ type: Output
478
+ }], buttonClicked: [{
479
+ type: Output
480
+ }] } });
481
+
482
+ const CDK_OVERLAY_CUSTOM_CLASS = 'td-window-dialog';
483
+ const DEFAULT_POSITION = { bottom: '0px', right: '0px' };
484
+ const DEFAULT_WIDTH = '360px';
485
+ const DEFAULT_HEIGHT = '75vh';
486
+ const MIN_HEIGHT = '56px';
487
+ const MAX_WIDTH = '100vw';
488
+ const DEFAULT_DRAGGABLE_DIALOG_CONFIG = {
489
+ hasBackdrop: false,
490
+ closeOnNavigation: true,
491
+ panelClass: [CDK_OVERLAY_CUSTOM_CLASS],
492
+ position: DEFAULT_POSITION,
493
+ height: DEFAULT_HEIGHT,
494
+ width: DEFAULT_WIDTH,
495
+ maxWidth: MAX_WIDTH,
496
+ };
497
+ class TdMarkdownNavigatorWindowService {
498
+ constructor(_tdDialogService, _document, rendererFactory) {
499
+ this._tdDialogService = _tdDialogService;
500
+ this._document = _document;
501
+ this.rendererFactory = rendererFactory;
502
+ this.markdownNavigatorWindowDialogsOpen = 0;
503
+ this._renderer2 = rendererFactory.createRenderer(undefined, null);
504
+ }
505
+ open(config) {
506
+ this.close();
507
+ const configClass = config?.dialogConfig?.panelClass;
508
+ const panelClass = configClass && !Array.isArray(configClass) ? [configClass] : [];
509
+ const draggableConfig = {
510
+ ...DEFAULT_DRAGGABLE_DIALOG_CONFIG,
511
+ ...config.dialogConfig,
512
+ ...panelClass,
513
+ };
514
+ const { matDialogRef, dragRefSubject, } = this._tdDialogService.openDraggable({
515
+ component: TdMarkdownNavigatorWindowComponent,
516
+ config: draggableConfig,
517
+ dragHandleSelectors: ['.td-window-dialog-toolbar'],
518
+ draggableClass: 'td-draggable-markdown-navigator-window',
519
+ });
520
+ this.markdownNavigatorWindowDialog = matDialogRef;
521
+ this.markdownNavigatorWindowDialog.componentInstance.items = config.items;
522
+ this.markdownNavigatorWindowDialog.componentInstance.labels = config.labels;
523
+ this.markdownNavigatorWindowDialog.componentInstance.startAt =
524
+ config.startAt;
525
+ this.markdownNavigatorWindowDialog.componentInstance.copyCodeToClipboard =
526
+ config.copyCodeToClipboard;
527
+ this.markdownNavigatorWindowDialog.componentInstance.copyCodeTooltips =
528
+ config.copyCodeTooltips;
529
+ this.markdownNavigatorWindowDialog.componentInstance.compareWith =
530
+ config.compareWith;
531
+ this.markdownNavigatorWindowDialog.componentInstance.toolbarColor =
532
+ 'toolbarColor' in config ? config.toolbarColor : 'primary';
533
+ this.markdownNavigatorWindowDialogsOpen++;
534
+ this.markdownNavigatorWindowDialog.componentInstance.footer = config.footer;
535
+ dragRefSubject.subscribe((dragRf) => {
536
+ this.dragRef = dragRf;
537
+ this.resizableDraggableDialog = new ResizableDraggableDialog(this._document, this._renderer2, this.markdownNavigatorWindowDialog, this.dragRef);
538
+ });
539
+ this._handleEvents();
540
+ return this.markdownNavigatorWindowDialog;
541
+ }
542
+ close() {
543
+ if (this.markdownNavigatorWindowDialog) {
544
+ if (this.resizableDraggableDialog) {
545
+ this.resizableDraggableDialog.detach();
546
+ }
547
+ this.markdownNavigatorWindowDialog.close();
548
+ }
549
+ }
550
+ get isOpen() {
551
+ return this.markdownNavigatorWindowDialogsOpen > 0;
552
+ }
553
+ _handleEvents() {
554
+ let position;
555
+ let dimensions;
556
+ this.markdownNavigatorWindowDialog.componentInstance.closed.subscribe(() => this.close());
557
+ this.markdownNavigatorWindowDialog.componentInstance.dockToggled.subscribe((docked) => {
558
+ if (docked) {
559
+ this.markdownNavigatorWindowDialog.componentInstance.docked = false;
560
+ this.markdownNavigatorWindowDialog.updateSize(dimensions.width, dimensions.height);
561
+ this.markdownNavigatorWindowDialog.updatePosition({
562
+ top: '0px',
563
+ right: '0px',
564
+ bottom: '0px',
565
+ left: '0px',
566
+ });
567
+ this.dragRef.setFreeDragPosition(position);
568
+ this.dragRef.disabled = false;
569
+ this.resizableDraggableDialog.attach();
570
+ }
571
+ else {
572
+ dimensions = this._getDialogSize(this.markdownNavigatorWindowDialog);
573
+ position = this.dragRef.getFreeDragPosition();
574
+ this.markdownNavigatorWindowDialog.componentInstance.docked = true;
575
+ this.markdownNavigatorWindowDialog.updateSize(DEFAULT_WIDTH, MIN_HEIGHT);
576
+ this.markdownNavigatorWindowDialog.updatePosition(DEFAULT_POSITION);
577
+ this.dragRef.reset();
578
+ this.dragRef.disabled = true;
579
+ this.resizableDraggableDialog.detach();
580
+ }
581
+ });
582
+ this.markdownNavigatorWindowDialog
583
+ .afterClosed()
584
+ .toPromise()
585
+ .then(() => {
586
+ this.markdownNavigatorWindowDialogsOpen--;
587
+ });
588
+ }
589
+ _getDialogSize(dialogRef) {
590
+ const { width, height } = getComputedStyle(this._document.getElementById(dialogRef.id).parentElement);
591
+ return {
592
+ width,
593
+ height,
594
+ };
595
+ }
596
+ }
597
+ TdMarkdownNavigatorWindowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowService, deps: [{ token: i1$1.TdDialogService }, { token: DOCUMENT }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
598
+ TdMarkdownNavigatorWindowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowService });
599
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowService, decorators: [{
600
+ type: Injectable
601
+ }], ctorParameters: function () { return [{ type: i1$1.TdDialogService }, { type: undefined, decorators: [{
602
+ type: Inject,
603
+ args: [DOCUMENT]
604
+ }] }, { type: i0.RendererFactory2 }]; } });
605
+
606
+ class TdMarkdownNavigatorWindowDirective {
607
+ constructor(_markdownNavigatorWindowService) {
608
+ this._markdownNavigatorWindowService = _markdownNavigatorWindowService;
609
+ this.disabled = false;
610
+ }
611
+ click() {
612
+ if (!this.disabled && this.config) {
613
+ this._markdownNavigatorWindowService.open(this.config);
614
+ }
615
+ }
616
+ }
617
+ TdMarkdownNavigatorWindowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowDirective, deps: [{ token: TdMarkdownNavigatorWindowService }], target: i0.ɵɵFactoryTarget.Directive });
618
+ TdMarkdownNavigatorWindowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdMarkdownNavigatorWindowDirective, selector: "[tdMarkdownNavigatorWindow]", inputs: { config: ["tdMarkdownNavigatorWindow", "config"], disabled: "disabled" }, host: { listeners: { "click": "click()" } }, ngImport: i0 });
619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdMarkdownNavigatorWindowDirective, decorators: [{
620
+ type: Directive,
621
+ args: [{
622
+ selector: '[tdMarkdownNavigatorWindow]',
623
+ }]
624
+ }], ctorParameters: function () { return [{ type: TdMarkdownNavigatorWindowService }]; }, propDecorators: { config: [{
625
+ type: Input,
626
+ args: ['tdMarkdownNavigatorWindow']
627
+ }], disabled: [{
628
+ type: Input
629
+ }], click: [{
630
+ type: HostListener,
631
+ args: ['click']
632
+ }] } });
633
+
634
+ class CovalentMarkdownNavigatorModule {
635
+ }
636
+ CovalentMarkdownNavigatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CovalentMarkdownNavigatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
637
+ CovalentMarkdownNavigatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CovalentMarkdownNavigatorModule, declarations: [TdMarkdownNavigatorComponent,
638
+ TdMarkdownNavigatorWindowComponent,
639
+ TdMarkdownNavigatorWindowDirective], imports: [CommonModule,
640
+ // material
641
+ MatButtonModule,
642
+ MatTooltipModule,
643
+ MatListModule,
644
+ MatIconModule,
645
+ MatProgressBarModule,
646
+ CovalentBreadcrumbsModule,
647
+ CovalentDialogsModule,
648
+ CovalentFlavoredMarkdownModule,
649
+ CovalentMessageModule], exports: [TdMarkdownNavigatorComponent,
650
+ TdMarkdownNavigatorWindowComponent,
651
+ TdMarkdownNavigatorWindowDirective] });
652
+ CovalentMarkdownNavigatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CovalentMarkdownNavigatorModule, providers: [TdMarkdownNavigatorWindowService], imports: [[
653
+ CommonModule,
654
+ // material
655
+ MatButtonModule,
656
+ MatTooltipModule,
657
+ MatListModule,
658
+ MatIconModule,
659
+ MatProgressBarModule,
660
+ CovalentBreadcrumbsModule,
661
+ CovalentDialogsModule,
662
+ CovalentFlavoredMarkdownModule,
663
+ CovalentMessageModule,
664
+ ]] });
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CovalentMarkdownNavigatorModule, decorators: [{
666
+ type: NgModule,
667
+ args: [{
668
+ imports: [
669
+ CommonModule,
670
+ // material
671
+ MatButtonModule,
672
+ MatTooltipModule,
673
+ MatListModule,
674
+ MatIconModule,
675
+ MatProgressBarModule,
676
+ CovalentBreadcrumbsModule,
677
+ CovalentDialogsModule,
678
+ CovalentFlavoredMarkdownModule,
679
+ CovalentMessageModule,
680
+ ],
681
+ declarations: [
682
+ TdMarkdownNavigatorComponent,
683
+ TdMarkdownNavigatorWindowComponent,
684
+ TdMarkdownNavigatorWindowDirective,
685
+ ],
686
+ exports: [
687
+ TdMarkdownNavigatorComponent,
688
+ TdMarkdownNavigatorWindowComponent,
689
+ TdMarkdownNavigatorWindowDirective,
690
+ ],
691
+ providers: [TdMarkdownNavigatorWindowService],
692
+ }]
693
+ }] });
694
+
695
+ /**
696
+ * Generated bundle index. Do not edit.
697
+ */
698
+
699
+ export { CovalentMarkdownNavigatorModule, DEFAULT_MARKDOWN_NAVIGATOR_LABELS, DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS, TdMarkdownNavigatorComponent, TdMarkdownNavigatorWindowComponent, TdMarkdownNavigatorWindowDirective, TdMarkdownNavigatorWindowService };
700
+ //# sourceMappingURL=covalent-markdown-navigator.mjs.map