@thescaffold/ngx-apps-blog 0.2.31 → 0.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,710 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, HostListener, Component, NgModule } from '@angular/core';
3
+ import * as i1$1 from '@angular/router';
4
+ import { ActivatedRoute, RouterModule } from '@angular/router';
5
+ import * as i4 from '@thescaffold/ngx-core';
6
+ import { BaseDirective, MediaService, titleCase, SharedModule, PipesModule } from '@thescaffold/ngx-core';
7
+ import * as i2 from '@thescaffold/ngx-ui';
8
+ import { LayoutsModule, ElementsModule, ToolbarModule } from '@thescaffold/ngx-ui';
9
+ import { combineLatest, map, switchMap } from 'rxjs';
10
+ import * as i1 from '@angular/forms';
11
+ import * as i1$2 from '@angular/common';
12
+
13
+ class DocsComponent extends BaseDirective {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.mediaService = inject(MediaService);
17
+ this.route = inject(ActivatedRoute);
18
+ this.navList = [];
19
+ this.showHeaders = true;
20
+ this.expandedSection = null;
21
+ this.expandedSubSection = null;
22
+ this.nav$ = combineLatest([
23
+ this.mediaService.context('blog').index(),
24
+ this.route.url,
25
+ ]).pipe(map(([content, _urlSegments]) => {
26
+ this.navList = content?.nav || [];
27
+ // Use full router URL instead of relative segments
28
+ const currentPath = this.router.url.split('?')[0].split('#')[0];
29
+ // Find and expand the section containing the current page
30
+ this.expandCurrentSection(this.navList, currentPath);
31
+ return this.navList;
32
+ }));
33
+ this.breadcrumbs$ = this.route.url.pipe(map((segments) => {
34
+ const breads = [
35
+ {
36
+ title: this.translate('apps.blog.component.docs.home.title'),
37
+ url: '/blog',
38
+ },
39
+ ...(segments.length > 1
40
+ ? [
41
+ {
42
+ title: titleCase(segments[0].path.replace(/-/g, ' ')),
43
+ url: `/${segments[0]}`,
44
+ },
45
+ ]
46
+ : []),
47
+ ...(segments.length > 2
48
+ ? [
49
+ {
50
+ title: titleCase(segments[1].path.replace(/-/g, ' ')),
51
+ url: `/${segments[1]}`,
52
+ },
53
+ ]
54
+ : []),
55
+ ...(segments.length > 3
56
+ ? [
57
+ {
58
+ title: titleCase(segments[2].path.replace(/-/g, ' ')),
59
+ url: `/${segments[2]}`,
60
+ },
61
+ ]
62
+ : []),
63
+ {
64
+ title: titleCase(segments[segments.length - 1].path.replace(/-/g, ' ')),
65
+ url: null,
66
+ },
67
+ ];
68
+ return breads;
69
+ }));
70
+ this.docs$ = this.route.params.pipe(switchMap((params) => {
71
+ let name = '';
72
+ const sub1 = (this.currentNav = params['sub1']);
73
+ if (sub1) {
74
+ this.showHeaders = sub1.toLowerCase() != 'index';
75
+ name += sub1;
76
+ }
77
+ const sub2 = params['sub2'];
78
+ if (sub2) {
79
+ this.showHeaders = sub2.toLowerCase() != 'index';
80
+ name += `/${sub2}`;
81
+ }
82
+ const sub3 = params['sub3'];
83
+ if (sub3) {
84
+ this.showHeaders = sub3.toLowerCase() != 'index';
85
+ name += `/${sub3}`;
86
+ }
87
+ const sub4 = params['sub4'];
88
+ if (sub4) {
89
+ this.showHeaders = sub4.toLowerCase() != 'index';
90
+ name += `/${sub4}`;
91
+ }
92
+ const sub5 = params['sub5'];
93
+ if (sub5) {
94
+ this.showHeaders = sub5.toLowerCase() != 'index';
95
+ name += `/${sub5}`;
96
+ }
97
+ return this.mediaService.context('blog').article(name, true);
98
+ }));
99
+ }
100
+ /**
101
+ * Intercepts clicks on anchor tags within the documentation content
102
+ * and routes internal links via Angular Router instead of triggering
103
+ * a full page reload.
104
+ */
105
+ onContentClick(event) {
106
+ const target = event.target;
107
+ const anchor = target.closest('a');
108
+ if (!anchor)
109
+ return;
110
+ const href = anchor.getAttribute('href');
111
+ if (!href)
112
+ return;
113
+ // Check if it's an internal link (starts with /, ./, or ../)
114
+ if (href.startsWith('/') ||
115
+ href.startsWith('./') ||
116
+ href.startsWith('../')) {
117
+ event.preventDefault();
118
+ event.stopPropagation();
119
+ // Handle fragment links
120
+ const [path, fragment] = href.split('#');
121
+ const extras = {};
122
+ if (fragment) {
123
+ extras.fragment = fragment;
124
+ }
125
+ this.router.navigate([path || './'], extras);
126
+ }
127
+ else if (href.startsWith('#')) {
128
+ // Same-page fragment navigation
129
+ event.preventDefault();
130
+ event.stopPropagation();
131
+ this.router.navigate([], {
132
+ fragment: href.substring(1),
133
+ relativeTo: this.route,
134
+ });
135
+ }
136
+ // External links (http://, https://, etc.) will navigate normally
137
+ }
138
+ onSelectChange(event) {
139
+ const selectedUrl = event.target.value;
140
+ if (selectedUrl) {
141
+ this.router.navigate([selectedUrl]);
142
+ }
143
+ }
144
+ getLowestLevelHeaders(headers) {
145
+ if (headers.length === 0)
146
+ return [];
147
+ // Find the lowest level in the array
148
+ const minLevel = Math.min(...headers.map((header) => header.level));
149
+ // Filter headers by the lowest level
150
+ return headers.filter((header) => header.level == minLevel);
151
+ }
152
+ toggleSection(index) {
153
+ // Accordion behavior: close if already open, otherwise open this one and close others
154
+ if (this.expandedSection === index) {
155
+ this.expandedSection = null;
156
+ }
157
+ else {
158
+ this.expandedSection = index;
159
+ // Reset sub-section when changing main section
160
+ this.expandedSubSection = null;
161
+ }
162
+ }
163
+ toggleSubSection(sectionIndex, subIndex) {
164
+ const key = `${sectionIndex}-${subIndex}`;
165
+ // Accordion behavior: close if already open, otherwise open this one and close others
166
+ if (this.expandedSubSection === key) {
167
+ this.expandedSubSection = null;
168
+ }
169
+ else {
170
+ this.expandedSubSection = key;
171
+ }
172
+ }
173
+ expandCurrentSection(nav, currentPath) {
174
+ if (!nav?.length)
175
+ return;
176
+ // Normalize current path (remove trailing slash, handle base path)
177
+ const normalizedCurrentPath = currentPath.replace(/\/$/, '').toLowerCase();
178
+ for (let i = 0; i < nav.length; i++) {
179
+ const section = nav[i];
180
+ // Check if section URL matches
181
+ if (section.url && this.urlMatches(section.url, normalizedCurrentPath)) {
182
+ this.expandedSection = i;
183
+ return;
184
+ }
185
+ // Check links (level 2)
186
+ if (section.links?.length) {
187
+ for (let j = 0; j < section.links.length; j++) {
188
+ const link = section.links[j];
189
+ if (link.url && this.urlMatches(link.url, normalizedCurrentPath)) {
190
+ this.expandedSection = i;
191
+ if (link.links?.length) {
192
+ this.expandedSubSection = `${i}-${j}`;
193
+ }
194
+ return;
195
+ }
196
+ // Check sub-links (level 3)
197
+ if (link.links?.length) {
198
+ for (const subLink of link.links) {
199
+ if (subLink.url &&
200
+ this.urlMatches(subLink.url, normalizedCurrentPath)) {
201
+ this.expandedSection = i;
202
+ this.expandedSubSection = `${i}-${j}`;
203
+ return;
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ // Default to first section if no match found
211
+ if (this.expandedSection === null && nav.length > 0) {
212
+ this.expandedSection = 0;
213
+ }
214
+ }
215
+ urlMatches(navUrl, currentPath) {
216
+ const normalizedNavUrl = navUrl.replace(/\/$/, '').toLowerCase();
217
+ return (normalizedNavUrl === currentPath ||
218
+ currentPath.startsWith(normalizedNavUrl + '/'));
219
+ }
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DocsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: DocsComponent, isStandalone: false, selector: "x-docs", host: { listeners: { "click": "onContentClick($event)" } }, usesInheritance: true, ngImport: i0, template: `
222
+ <div class="x-docs row m-0 p-0">
223
+ <!-- Mobile Navigation Dropdown -->
224
+ @if (nav$ | async; as nav) {
225
+ <div
226
+ class="x-docs-mobile-nav col-12 col-lg-3 p-0 mb-3 sticky-top d-block d-lg-none"
227
+ >
228
+ @if (nav?.length) {
229
+ <div class="x-docs-mobile-nav-wrapper">
230
+ <i class="fa-solid fa-book-open x-docs-mobile-nav-icon"></i>
231
+ <select
232
+ (change)="onSelectChange($event)"
233
+ class="form-select x-docs-mobile-select"
234
+ >
235
+ <option value="" disabled selected>
236
+ Navigate Documentation
237
+ </option>
238
+ @for (a of nav; track a) {
239
+ <optgroup [label]="a.title">
240
+ @if (!a?.links?.length) {
241
+ <option [value]="a.url">
242
+ {{ a.title }}
243
+ </option>
244
+ }
245
+ @if (a?.links?.length) {
246
+ @for (b of a.links; track b) {
247
+ <option [value]="b.url">
248
+ {{ b.title }}
249
+ </option>
250
+ }
251
+ @for (b of a.links; track b) {
252
+ @for (c of b.links; track c) {
253
+ <option [value]="c.url">— {{ c.title }}</option>
254
+ }
255
+ }
256
+ }
257
+ </optgroup>
258
+ }
259
+ </select>
260
+ </div>
261
+ }
262
+ </div>
263
+ } @else {
264
+ <x-element-loader></x-element-loader>
265
+ }
266
+
267
+ <!-- Desktop Sidebar Navigation -->
268
+ @if (nav$ | async; as nav) {
269
+ <aside
270
+ class="x-docs-sidebar col-12 col-lg-3 sticky-top d-none d-lg-block p-0 m-0"
271
+ >
272
+ <nav class="x-docs-sidebar-nav" aria-label="Documentation navigation">
273
+ @if (nav?.length) {
274
+ @for (a of nav; track a; let i = $index) {
275
+ <div
276
+ class="x-docs-nav-section"
277
+ [class.collapsed]="expandedSection !== i"
278
+ >
279
+ <button
280
+ class="x-docs-nav-title-btn"
281
+ type="button"
282
+ (click)="toggleSection(i)"
283
+ [attr.aria-expanded]="expandedSection === i"
284
+ aria-controls="nav-section-{{ i }}"
285
+ >
286
+ <span
287
+ class="x-docs-nav-title-text"
288
+ [innerHTML]="a.title"
289
+ ></span>
290
+ <i
291
+ class="fa-solid x-docs-nav-chevron"
292
+ [class.fa-chevron-down]="expandedSection !== i"
293
+ [class.fa-chevron-up]="expandedSection === i"
294
+ ></i>
295
+ </button>
296
+ @if (a?.links?.length) {
297
+ <ul class="x-docs-nav-list" [id]="'nav-section-' + i">
298
+ @for (b of a?.links; track b; let j = $index) {
299
+ <li
300
+ class="x-docs-nav-item"
301
+ [class.collapsed]="
302
+ b?.links?.length &&
303
+ expandedSubSection !== i + '-' + j
304
+ "
305
+ >
306
+ @if (b?.links?.length) {
307
+ <button
308
+ class="x-docs-nav-link x-docs-nav-link-btn"
309
+ type="button"
310
+ (click)="toggleSubSection(i, j)"
311
+ [attr.aria-expanded]="
312
+ expandedSubSection === i + '-' + j
313
+ "
314
+ [class.has-children]="true"
315
+ >
316
+ <span [innerHTML]="b.title"></span>
317
+ <i
318
+ class="fa-solid x-docs-nav-sub-chevron"
319
+ [class.fa-chevron-down]="
320
+ expandedSubSection !== i + '-' + j
321
+ "
322
+ [class.fa-chevron-up]="
323
+ expandedSubSection === i + '-' + j
324
+ "
325
+ ></i>
326
+ </button>
327
+ <ul class="x-docs-nav-sublist">
328
+ @for (c of b.links; track c) {
329
+ <li class="x-docs-nav-subitem">
330
+ <a
331
+ class="x-docs-child-nav x-docs-nav-sublink"
332
+ [routerLink]="c.url"
333
+ [routerLinkActive]="'active'"
334
+ [innerHTML]="c.title"
335
+ ></a>
336
+ </li>
337
+ }
338
+ </ul>
339
+ } @else {
340
+ <a
341
+ class="x-docs-parent-nav x-docs-nav-link"
342
+ [routerLink]="b.url"
343
+ [routerLinkActive]="'active'"
344
+ [innerHTML]="b.title"
345
+ ></a>
346
+ }
347
+ </li>
348
+ }
349
+ </ul>
350
+ }
351
+ </div>
352
+ }
353
+ }
354
+ </nav>
355
+ </aside>
356
+ } @else {
357
+ <x-element-loader></x-element-loader>
358
+ }
359
+
360
+ <!-- Main Content Area -->
361
+ <main class="x-docs-main col-12 col-lg-9">
362
+ @if (docs$ | async; as docs) {
363
+ <div class="row">
364
+ <article class="x-docs-article col-12 col-lg-9">
365
+ <!-- Breadcrumbs -->
366
+ @if (breadcrumbs$ | async; as breadcrumbs) {
367
+ <nav class="x-docs-breadcrumb" aria-label="Breadcrumb">
368
+ <ol class="breadcrumb mb-0">
369
+ @for (
370
+ breadcrumb of breadcrumbs;
371
+ track breadcrumb;
372
+ let last = $last
373
+ ) {
374
+ <li class="breadcrumb-item" [class.active]="last">
375
+ @if (breadcrumb?.url) {
376
+ <a
377
+ [routerLink]="breadcrumb.url"
378
+ class="x-docs-breadcrumb-link"
379
+ >
380
+ {{ breadcrumb.title }}
381
+ </a>
382
+ }
383
+ @if (!breadcrumb?.url) {
384
+ <span class="x-docs-breadcrumb-current">{{
385
+ breadcrumb.title
386
+ }}</span>
387
+ }
388
+ </li>
389
+ }
390
+ </ol>
391
+ </nav>
392
+ }
393
+
394
+ <!-- Documentation Content -->
395
+ @if (docs?.html) {
396
+ <div
397
+ class="x-docs-content"
398
+ data-bs-spy="scroll"
399
+ data-bs-target="#x-docs-nav"
400
+ data-bs-root-margin="0px 0px -40%"
401
+ data-bs-smooth-scroll="true"
402
+ tabindex="0"
403
+ >
404
+ <div [innerHTML]="docs.html | xSafeHtml"></div>
405
+ </div>
406
+ } @else {
407
+ <x-element-blank></x-element-blank>
408
+ }
409
+ </article>
410
+
411
+ <!-- Table of Contents (On This Page) -->
412
+ @if (showHeaders && docs?.headers?.length) {
413
+ <aside class="x-docs-toc col-lg-3 sticky-top d-none d-lg-block">
414
+ <div class="x-docs-toc-wrapper">
415
+ <h4 class="x-docs-toc-title">On This Page</h4>
416
+ <nav class="x-docs-toc-nav" aria-label="Table of contents">
417
+ <ul class="x-docs-toc-list">
418
+ @for (h of getLowestLevelHeaders(docs.headers); track h) {
419
+ <li class="x-docs-toc-item">
420
+ <a
421
+ class="x-docs-header-nav x-docs-toc-link"
422
+ [routerLink]="['./']"
423
+ [routerLinkActive]="'active'"
424
+ [fragment]="h.id"
425
+ [innerHTML]="h.text"
426
+ ></a>
427
+ </li>
428
+ }
429
+ </ul>
430
+ </nav>
431
+ </div>
432
+ </aside>
433
+ }
434
+ </div>
435
+ } @else {
436
+ <x-element-loader></x-element-loader>
437
+ }
438
+ </main>
439
+ </div>
440
+ `, isInline: true, styles: [":host{display:block}.x-docs{min-height:calc(100vh - 120px)}.x-docs-mobile-nav{z-index:100;background:var(--bs-body-bg);padding:.75rem!important;border-bottom:1px solid var(--bs-border-color-translucent)}.x-docs-mobile-nav-wrapper{position:relative;display:flex;align-items:center}.x-docs-mobile-nav-icon{position:absolute;left:1rem;color:var(--bs-secondary-color);pointer-events:none;z-index:1}.x-docs-mobile-select{padding-left:2.5rem!important;font-size:.9375rem;border-radius:.5rem;border-color:var(--bs-border-color);background-color:var(--bs-body-bg);transition:border-color .15s ease,box-shadow .15s ease}.x-docs-mobile-select:focus{border-color:var(--bs-primary);box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.15)}.x-docs-sidebar{max-height:calc(100vh - 80px);overflow-y:auto;padding:1.5rem 1rem 1.5rem 0!important;scrollbar-width:thin;scrollbar-color:var(--bs-border-color) transparent}.x-docs-sidebar::-webkit-scrollbar{width:4px}.x-docs-sidebar::-webkit-scrollbar-track{background:transparent}.x-docs-sidebar::-webkit-scrollbar-thumb{background-color:var(--bs-border-color);border-radius:4px}.x-docs-nav-section:last-child{margin-bottom:0}.x-docs-nav-title-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .75rem;margin-bottom:.5rem;background:transparent;border:none;border-radius:.375rem;cursor:pointer;transition:background-color .15s ease}.x-docs-nav-title-btn:hover{background-color:var(--bs-tertiary-bg)}.x-docs-nav-title-btn:focus{outline:none;box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.15)}.x-docs-nav-title-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--bs-secondary-color)}.x-docs-nav-chevron{font-size:.625rem;color:var(--bs-secondary-color);transition:transform .2s ease}.x-docs-nav-list{list-style:none;padding:0;margin:0;max-height:1000px;overflow:hidden;transition:max-height .3s ease,opacity .2s ease;opacity:1;margin-left:1rem!important}.x-docs-nav-section.collapsed .x-docs-nav-list{max-height:0;opacity:0;margin:0}.x-docs-nav-item{margin-bottom:.125rem}.x-docs-nav-link-btn{display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:none;cursor:pointer;text-align:left}.x-docs-nav-link-btn:focus{outline:none;box-shadow:0 0 0 .15rem rgba(var(--bs-primary-rgb),.15)}.x-docs-nav-sub-chevron{font-size:.5rem;color:var(--bs-secondary-color);margin-left:.5rem;flex-shrink:0;transition:transform .2s ease}.x-docs-nav-link{display:block;padding:.5rem .75rem;font-size:.875rem;color:var(--bs-body-color);text-decoration:none;border-radius:.375rem;transition:background-color .15s ease,color .15s ease}.x-docs-nav-link:hover{background-color:var(--bs-tertiary-bg);color:var(--bs-body-color)}.x-docs-parent-nav.active{background-color:var(--bs-primary-bg-subtle);color:var(--bs-primary);font-weight:600}.x-docs-nav-sublist{list-style:none;padding:0;margin:.25rem 0 .5rem .75rem;border-left:1px solid var(--bs-border-color);max-height:500px;overflow:hidden;transition:max-height .25s ease,opacity .2s ease,margin .25s ease;opacity:1}.x-docs-nav-item.collapsed .x-docs-nav-sublist{max-height:0;opacity:0;margin:0 0 0 .75rem}.x-docs-nav-subitem{margin:0}.x-docs-nav-sublink{display:block;padding:.375rem .75rem;font-size:.8125rem;color:var(--bs-secondary-color);text-decoration:none;border-left:2px solid transparent;margin-left:-1px;transition:color .15s ease,border-color .15s ease}.x-docs-nav-sublink:hover{color:var(--bs-body-color);border-left-color:var(--bs-border-color)}.x-docs-child-nav.active{color:var(--bs-primary);border-left-color:var(--bs-primary);font-weight:500}.x-docs-main{background-color:var(--bs-tertiary-bg);border-radius:1rem 0 0;padding:2rem!important}.x-docs-article{padding-right:2rem!important}.x-docs-breadcrumb{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--bs-border-color-translucent)}.x-docs-breadcrumb .breadcrumb{font-size:.875rem;margin:0}.x-docs-breadcrumb-link{color:var(--bs-secondary-color);text-decoration:none;transition:color .15s ease}.x-docs-breadcrumb-link:hover{color:var(--bs-primary)}.x-docs-breadcrumb-current{color:var(--bs-body-color);font-weight:500}.x-docs-content{line-height:1.7;color:var(--bs-body-color)}:host ::ng-deep .x-docs-content h1{font-size:2rem;font-weight:700;margin-top:0;margin-bottom:1.5rem;color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content h2{font-size:1.5rem;font-weight:600;margin-top:2.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--bs-border-color-translucent);color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content h3{font-size:1.25rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem;color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content h4,:host ::ng-deep .x-docs-content h5,:host ::ng-deep .x-docs-content h6{font-size:1rem;font-weight:600;margin-top:1.5rem;margin-bottom:.5rem;color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content p{margin-bottom:1rem}:host ::ng-deep .x-docs-content a{color:var(--bs-primary);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s ease}:host ::ng-deep .x-docs-content a:hover{border-bottom-color:var(--bs-primary)}:host ::ng-deep .x-docs-content ul,:host ::ng-deep .x-docs-content ol{margin-bottom:1rem;padding-left:1.5rem}:host ::ng-deep .x-docs-content li{margin-bottom:.375rem}:host ::ng-deep .x-docs-content code{font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:.875em;padding:.2em .4em;background-color:var(--bs-body-bg);border-radius:.25rem;color:var(--bs-code-color, #d63384)}:host ::ng-deep .x-docs-content pre{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:.5rem;padding:1rem;margin-bottom:1.25rem;overflow-x:auto;font-size:.8125rem;line-height:1.5}:host ::ng-deep .x-docs-content pre code{background:transparent;padding:0;border-radius:0;color:inherit;font-size:inherit}:host ::ng-deep .x-docs-content blockquote{margin:1.25rem 0;padding:1rem 1.25rem;border-left:4px solid var(--bs-primary);background-color:var(--bs-body-bg);border-radius:0 .5rem .5rem 0;color:var(--bs-secondary-color)}:host ::ng-deep .x-docs-content blockquote p:last-child{margin-bottom:0}:host ::ng-deep .x-docs-content table{width:100%;margin-bottom:1.25rem;border-collapse:collapse;font-size:.875rem}:host ::ng-deep .x-docs-content th,:host ::ng-deep .x-docs-content td{padding:.625rem .75rem;border:1px solid var(--bs-border-color);text-align:left}:host ::ng-deep .x-docs-content th{background-color:var(--bs-body-bg);font-weight:600}:host ::ng-deep .x-docs-content img{max-width:100%;height:auto;border-radius:.5rem;margin:.75rem 0}:host ::ng-deep .x-docs-content hr{margin:2rem 0;border:none;border-top:1px solid var(--bs-border-color)}.x-docs-toc{max-height:calc(100vh - 160px);overflow-y:auto;padding-left:1rem!important}.x-docs-toc-wrapper{padding:1rem;background-color:var(--bs-body-bg);border-radius:.5rem;border:1px solid var(--bs-border-color-translucent)}.x-docs-toc-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--bs-secondary-color);margin-bottom:.75rem}.x-docs-toc-list{list-style:none;padding:0;margin:0}.x-docs-toc-item{margin-bottom:.125rem}.x-docs-toc-link{display:block;padding:.375rem 0 .375rem .75rem;font-size:.8125rem;color:var(--bs-secondary-color);text-decoration:none;border-left:2px solid transparent;transition:color .15s ease,border-color .15s ease}.x-docs-toc-link:hover{color:var(--bs-body-color)}.x-docs-header-nav.active{color:var(--bs-primary);border-left-color:var(--bs-primary);font-weight:500}@media(max-width:575.98px){.x-docs-main{padding:1rem!important;border-radius:0}.x-docs-article{padding-right:0!important}.x-docs-breadcrumb{margin-bottom:1rem;padding-bottom:.75rem}.x-docs-breadcrumb .breadcrumb{font-size:.8125rem;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}.x-docs-breadcrumb .breadcrumb::-webkit-scrollbar{display:none}:host ::ng-deep .x-docs-content h1{font-size:1.5rem}:host ::ng-deep .x-docs-content h2{font-size:1.25rem;margin-top:1.75rem}:host ::ng-deep .x-docs-content h3{font-size:1.125rem}:host ::ng-deep .x-docs-content pre{padding:.75rem;font-size:.75rem;border-radius:.375rem}:host ::ng-deep .x-docs-content table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}:host ::ng-deep .x-docs-content th,:host ::ng-deep .x-docs-content td{padding:.5rem}}@media(min-width:576px)and (max-width:991.98px){.x-docs-main{padding:1.5rem!important}.x-docs-article{padding-right:1rem!important}}@media(min-width:992px){.x-docs-sidebar{padding-right:1.5rem!important}}@media(hover:none)and (pointer:coarse){.x-docs-nav-link{padding:.625rem .75rem;min-height:44px;display:flex;align-items:center}.x-docs-nav-sublink{padding:.5rem .75rem;min-height:40px;display:flex;align-items:center}.x-docs-toc-link{padding:.5rem 0 .5rem .75rem;min-height:40px;display:flex;align-items:center}.x-docs-mobile-select{min-height:48px;font-size:1rem}}@media print{.x-docs-mobile-nav,.x-docs-sidebar,.x-docs-toc{display:none!important}.x-docs-main{padding:0!important;background:none!important}.x-docs-article{width:100%!important;max-width:100%!important;flex:0 0 100%!important}:host ::ng-deep .x-docs-content pre{white-space:pre-wrap;word-wrap:break-word}}\n"], dependencies: [{ kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i2.BlankComponent, selector: "x-element-blank", inputs: ["image", "icon", "type"] }, { kind: "component", type: i2.LoaderComponent, selector: "x-element-loader", inputs: ["data"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SafeHtmlPipe, name: "xSafeHtml" }] }); }
441
+ }
442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DocsComponent, decorators: [{
443
+ type: Component,
444
+ args: [{ standalone: false, selector: 'x-docs', template: `
445
+ <div class="x-docs row m-0 p-0">
446
+ <!-- Mobile Navigation Dropdown -->
447
+ @if (nav$ | async; as nav) {
448
+ <div
449
+ class="x-docs-mobile-nav col-12 col-lg-3 p-0 mb-3 sticky-top d-block d-lg-none"
450
+ >
451
+ @if (nav?.length) {
452
+ <div class="x-docs-mobile-nav-wrapper">
453
+ <i class="fa-solid fa-book-open x-docs-mobile-nav-icon"></i>
454
+ <select
455
+ (change)="onSelectChange($event)"
456
+ class="form-select x-docs-mobile-select"
457
+ >
458
+ <option value="" disabled selected>
459
+ Navigate Documentation
460
+ </option>
461
+ @for (a of nav; track a) {
462
+ <optgroup [label]="a.title">
463
+ @if (!a?.links?.length) {
464
+ <option [value]="a.url">
465
+ {{ a.title }}
466
+ </option>
467
+ }
468
+ @if (a?.links?.length) {
469
+ @for (b of a.links; track b) {
470
+ <option [value]="b.url">
471
+ {{ b.title }}
472
+ </option>
473
+ }
474
+ @for (b of a.links; track b) {
475
+ @for (c of b.links; track c) {
476
+ <option [value]="c.url">— {{ c.title }}</option>
477
+ }
478
+ }
479
+ }
480
+ </optgroup>
481
+ }
482
+ </select>
483
+ </div>
484
+ }
485
+ </div>
486
+ } @else {
487
+ <x-element-loader></x-element-loader>
488
+ }
489
+
490
+ <!-- Desktop Sidebar Navigation -->
491
+ @if (nav$ | async; as nav) {
492
+ <aside
493
+ class="x-docs-sidebar col-12 col-lg-3 sticky-top d-none d-lg-block p-0 m-0"
494
+ >
495
+ <nav class="x-docs-sidebar-nav" aria-label="Documentation navigation">
496
+ @if (nav?.length) {
497
+ @for (a of nav; track a; let i = $index) {
498
+ <div
499
+ class="x-docs-nav-section"
500
+ [class.collapsed]="expandedSection !== i"
501
+ >
502
+ <button
503
+ class="x-docs-nav-title-btn"
504
+ type="button"
505
+ (click)="toggleSection(i)"
506
+ [attr.aria-expanded]="expandedSection === i"
507
+ aria-controls="nav-section-{{ i }}"
508
+ >
509
+ <span
510
+ class="x-docs-nav-title-text"
511
+ [innerHTML]="a.title"
512
+ ></span>
513
+ <i
514
+ class="fa-solid x-docs-nav-chevron"
515
+ [class.fa-chevron-down]="expandedSection !== i"
516
+ [class.fa-chevron-up]="expandedSection === i"
517
+ ></i>
518
+ </button>
519
+ @if (a?.links?.length) {
520
+ <ul class="x-docs-nav-list" [id]="'nav-section-' + i">
521
+ @for (b of a?.links; track b; let j = $index) {
522
+ <li
523
+ class="x-docs-nav-item"
524
+ [class.collapsed]="
525
+ b?.links?.length &&
526
+ expandedSubSection !== i + '-' + j
527
+ "
528
+ >
529
+ @if (b?.links?.length) {
530
+ <button
531
+ class="x-docs-nav-link x-docs-nav-link-btn"
532
+ type="button"
533
+ (click)="toggleSubSection(i, j)"
534
+ [attr.aria-expanded]="
535
+ expandedSubSection === i + '-' + j
536
+ "
537
+ [class.has-children]="true"
538
+ >
539
+ <span [innerHTML]="b.title"></span>
540
+ <i
541
+ class="fa-solid x-docs-nav-sub-chevron"
542
+ [class.fa-chevron-down]="
543
+ expandedSubSection !== i + '-' + j
544
+ "
545
+ [class.fa-chevron-up]="
546
+ expandedSubSection === i + '-' + j
547
+ "
548
+ ></i>
549
+ </button>
550
+ <ul class="x-docs-nav-sublist">
551
+ @for (c of b.links; track c) {
552
+ <li class="x-docs-nav-subitem">
553
+ <a
554
+ class="x-docs-child-nav x-docs-nav-sublink"
555
+ [routerLink]="c.url"
556
+ [routerLinkActive]="'active'"
557
+ [innerHTML]="c.title"
558
+ ></a>
559
+ </li>
560
+ }
561
+ </ul>
562
+ } @else {
563
+ <a
564
+ class="x-docs-parent-nav x-docs-nav-link"
565
+ [routerLink]="b.url"
566
+ [routerLinkActive]="'active'"
567
+ [innerHTML]="b.title"
568
+ ></a>
569
+ }
570
+ </li>
571
+ }
572
+ </ul>
573
+ }
574
+ </div>
575
+ }
576
+ }
577
+ </nav>
578
+ </aside>
579
+ } @else {
580
+ <x-element-loader></x-element-loader>
581
+ }
582
+
583
+ <!-- Main Content Area -->
584
+ <main class="x-docs-main col-12 col-lg-9">
585
+ @if (docs$ | async; as docs) {
586
+ <div class="row">
587
+ <article class="x-docs-article col-12 col-lg-9">
588
+ <!-- Breadcrumbs -->
589
+ @if (breadcrumbs$ | async; as breadcrumbs) {
590
+ <nav class="x-docs-breadcrumb" aria-label="Breadcrumb">
591
+ <ol class="breadcrumb mb-0">
592
+ @for (
593
+ breadcrumb of breadcrumbs;
594
+ track breadcrumb;
595
+ let last = $last
596
+ ) {
597
+ <li class="breadcrumb-item" [class.active]="last">
598
+ @if (breadcrumb?.url) {
599
+ <a
600
+ [routerLink]="breadcrumb.url"
601
+ class="x-docs-breadcrumb-link"
602
+ >
603
+ {{ breadcrumb.title }}
604
+ </a>
605
+ }
606
+ @if (!breadcrumb?.url) {
607
+ <span class="x-docs-breadcrumb-current">{{
608
+ breadcrumb.title
609
+ }}</span>
610
+ }
611
+ </li>
612
+ }
613
+ </ol>
614
+ </nav>
615
+ }
616
+
617
+ <!-- Documentation Content -->
618
+ @if (docs?.html) {
619
+ <div
620
+ class="x-docs-content"
621
+ data-bs-spy="scroll"
622
+ data-bs-target="#x-docs-nav"
623
+ data-bs-root-margin="0px 0px -40%"
624
+ data-bs-smooth-scroll="true"
625
+ tabindex="0"
626
+ >
627
+ <div [innerHTML]="docs.html | xSafeHtml"></div>
628
+ </div>
629
+ } @else {
630
+ <x-element-blank></x-element-blank>
631
+ }
632
+ </article>
633
+
634
+ <!-- Table of Contents (On This Page) -->
635
+ @if (showHeaders && docs?.headers?.length) {
636
+ <aside class="x-docs-toc col-lg-3 sticky-top d-none d-lg-block">
637
+ <div class="x-docs-toc-wrapper">
638
+ <h4 class="x-docs-toc-title">On This Page</h4>
639
+ <nav class="x-docs-toc-nav" aria-label="Table of contents">
640
+ <ul class="x-docs-toc-list">
641
+ @for (h of getLowestLevelHeaders(docs.headers); track h) {
642
+ <li class="x-docs-toc-item">
643
+ <a
644
+ class="x-docs-header-nav x-docs-toc-link"
645
+ [routerLink]="['./']"
646
+ [routerLinkActive]="'active'"
647
+ [fragment]="h.id"
648
+ [innerHTML]="h.text"
649
+ ></a>
650
+ </li>
651
+ }
652
+ </ul>
653
+ </nav>
654
+ </div>
655
+ </aside>
656
+ }
657
+ </div>
658
+ } @else {
659
+ <x-element-loader></x-element-loader>
660
+ }
661
+ </main>
662
+ </div>
663
+ `, styles: [":host{display:block}.x-docs{min-height:calc(100vh - 120px)}.x-docs-mobile-nav{z-index:100;background:var(--bs-body-bg);padding:.75rem!important;border-bottom:1px solid var(--bs-border-color-translucent)}.x-docs-mobile-nav-wrapper{position:relative;display:flex;align-items:center}.x-docs-mobile-nav-icon{position:absolute;left:1rem;color:var(--bs-secondary-color);pointer-events:none;z-index:1}.x-docs-mobile-select{padding-left:2.5rem!important;font-size:.9375rem;border-radius:.5rem;border-color:var(--bs-border-color);background-color:var(--bs-body-bg);transition:border-color .15s ease,box-shadow .15s ease}.x-docs-mobile-select:focus{border-color:var(--bs-primary);box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.15)}.x-docs-sidebar{max-height:calc(100vh - 80px);overflow-y:auto;padding:1.5rem 1rem 1.5rem 0!important;scrollbar-width:thin;scrollbar-color:var(--bs-border-color) transparent}.x-docs-sidebar::-webkit-scrollbar{width:4px}.x-docs-sidebar::-webkit-scrollbar-track{background:transparent}.x-docs-sidebar::-webkit-scrollbar-thumb{background-color:var(--bs-border-color);border-radius:4px}.x-docs-nav-section:last-child{margin-bottom:0}.x-docs-nav-title-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .75rem;margin-bottom:.5rem;background:transparent;border:none;border-radius:.375rem;cursor:pointer;transition:background-color .15s ease}.x-docs-nav-title-btn:hover{background-color:var(--bs-tertiary-bg)}.x-docs-nav-title-btn:focus{outline:none;box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.15)}.x-docs-nav-title-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--bs-secondary-color)}.x-docs-nav-chevron{font-size:.625rem;color:var(--bs-secondary-color);transition:transform .2s ease}.x-docs-nav-list{list-style:none;padding:0;margin:0;max-height:1000px;overflow:hidden;transition:max-height .3s ease,opacity .2s ease;opacity:1;margin-left:1rem!important}.x-docs-nav-section.collapsed .x-docs-nav-list{max-height:0;opacity:0;margin:0}.x-docs-nav-item{margin-bottom:.125rem}.x-docs-nav-link-btn{display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:none;cursor:pointer;text-align:left}.x-docs-nav-link-btn:focus{outline:none;box-shadow:0 0 0 .15rem rgba(var(--bs-primary-rgb),.15)}.x-docs-nav-sub-chevron{font-size:.5rem;color:var(--bs-secondary-color);margin-left:.5rem;flex-shrink:0;transition:transform .2s ease}.x-docs-nav-link{display:block;padding:.5rem .75rem;font-size:.875rem;color:var(--bs-body-color);text-decoration:none;border-radius:.375rem;transition:background-color .15s ease,color .15s ease}.x-docs-nav-link:hover{background-color:var(--bs-tertiary-bg);color:var(--bs-body-color)}.x-docs-parent-nav.active{background-color:var(--bs-primary-bg-subtle);color:var(--bs-primary);font-weight:600}.x-docs-nav-sublist{list-style:none;padding:0;margin:.25rem 0 .5rem .75rem;border-left:1px solid var(--bs-border-color);max-height:500px;overflow:hidden;transition:max-height .25s ease,opacity .2s ease,margin .25s ease;opacity:1}.x-docs-nav-item.collapsed .x-docs-nav-sublist{max-height:0;opacity:0;margin:0 0 0 .75rem}.x-docs-nav-subitem{margin:0}.x-docs-nav-sublink{display:block;padding:.375rem .75rem;font-size:.8125rem;color:var(--bs-secondary-color);text-decoration:none;border-left:2px solid transparent;margin-left:-1px;transition:color .15s ease,border-color .15s ease}.x-docs-nav-sublink:hover{color:var(--bs-body-color);border-left-color:var(--bs-border-color)}.x-docs-child-nav.active{color:var(--bs-primary);border-left-color:var(--bs-primary);font-weight:500}.x-docs-main{background-color:var(--bs-tertiary-bg);border-radius:1rem 0 0;padding:2rem!important}.x-docs-article{padding-right:2rem!important}.x-docs-breadcrumb{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--bs-border-color-translucent)}.x-docs-breadcrumb .breadcrumb{font-size:.875rem;margin:0}.x-docs-breadcrumb-link{color:var(--bs-secondary-color);text-decoration:none;transition:color .15s ease}.x-docs-breadcrumb-link:hover{color:var(--bs-primary)}.x-docs-breadcrumb-current{color:var(--bs-body-color);font-weight:500}.x-docs-content{line-height:1.7;color:var(--bs-body-color)}:host ::ng-deep .x-docs-content h1{font-size:2rem;font-weight:700;margin-top:0;margin-bottom:1.5rem;color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content h2{font-size:1.5rem;font-weight:600;margin-top:2.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--bs-border-color-translucent);color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content h3{font-size:1.25rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem;color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content h4,:host ::ng-deep .x-docs-content h5,:host ::ng-deep .x-docs-content h6{font-size:1rem;font-weight:600;margin-top:1.5rem;margin-bottom:.5rem;color:var(--bs-heading-color, var(--bs-body-color))}:host ::ng-deep .x-docs-content p{margin-bottom:1rem}:host ::ng-deep .x-docs-content a{color:var(--bs-primary);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s ease}:host ::ng-deep .x-docs-content a:hover{border-bottom-color:var(--bs-primary)}:host ::ng-deep .x-docs-content ul,:host ::ng-deep .x-docs-content ol{margin-bottom:1rem;padding-left:1.5rem}:host ::ng-deep .x-docs-content li{margin-bottom:.375rem}:host ::ng-deep .x-docs-content code{font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:.875em;padding:.2em .4em;background-color:var(--bs-body-bg);border-radius:.25rem;color:var(--bs-code-color, #d63384)}:host ::ng-deep .x-docs-content pre{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:.5rem;padding:1rem;margin-bottom:1.25rem;overflow-x:auto;font-size:.8125rem;line-height:1.5}:host ::ng-deep .x-docs-content pre code{background:transparent;padding:0;border-radius:0;color:inherit;font-size:inherit}:host ::ng-deep .x-docs-content blockquote{margin:1.25rem 0;padding:1rem 1.25rem;border-left:4px solid var(--bs-primary);background-color:var(--bs-body-bg);border-radius:0 .5rem .5rem 0;color:var(--bs-secondary-color)}:host ::ng-deep .x-docs-content blockquote p:last-child{margin-bottom:0}:host ::ng-deep .x-docs-content table{width:100%;margin-bottom:1.25rem;border-collapse:collapse;font-size:.875rem}:host ::ng-deep .x-docs-content th,:host ::ng-deep .x-docs-content td{padding:.625rem .75rem;border:1px solid var(--bs-border-color);text-align:left}:host ::ng-deep .x-docs-content th{background-color:var(--bs-body-bg);font-weight:600}:host ::ng-deep .x-docs-content img{max-width:100%;height:auto;border-radius:.5rem;margin:.75rem 0}:host ::ng-deep .x-docs-content hr{margin:2rem 0;border:none;border-top:1px solid var(--bs-border-color)}.x-docs-toc{max-height:calc(100vh - 160px);overflow-y:auto;padding-left:1rem!important}.x-docs-toc-wrapper{padding:1rem;background-color:var(--bs-body-bg);border-radius:.5rem;border:1px solid var(--bs-border-color-translucent)}.x-docs-toc-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--bs-secondary-color);margin-bottom:.75rem}.x-docs-toc-list{list-style:none;padding:0;margin:0}.x-docs-toc-item{margin-bottom:.125rem}.x-docs-toc-link{display:block;padding:.375rem 0 .375rem .75rem;font-size:.8125rem;color:var(--bs-secondary-color);text-decoration:none;border-left:2px solid transparent;transition:color .15s ease,border-color .15s ease}.x-docs-toc-link:hover{color:var(--bs-body-color)}.x-docs-header-nav.active{color:var(--bs-primary);border-left-color:var(--bs-primary);font-weight:500}@media(max-width:575.98px){.x-docs-main{padding:1rem!important;border-radius:0}.x-docs-article{padding-right:0!important}.x-docs-breadcrumb{margin-bottom:1rem;padding-bottom:.75rem}.x-docs-breadcrumb .breadcrumb{font-size:.8125rem;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}.x-docs-breadcrumb .breadcrumb::-webkit-scrollbar{display:none}:host ::ng-deep .x-docs-content h1{font-size:1.5rem}:host ::ng-deep .x-docs-content h2{font-size:1.25rem;margin-top:1.75rem}:host ::ng-deep .x-docs-content h3{font-size:1.125rem}:host ::ng-deep .x-docs-content pre{padding:.75rem;font-size:.75rem;border-radius:.375rem}:host ::ng-deep .x-docs-content table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}:host ::ng-deep .x-docs-content th,:host ::ng-deep .x-docs-content td{padding:.5rem}}@media(min-width:576px)and (max-width:991.98px){.x-docs-main{padding:1.5rem!important}.x-docs-article{padding-right:1rem!important}}@media(min-width:992px){.x-docs-sidebar{padding-right:1.5rem!important}}@media(hover:none)and (pointer:coarse){.x-docs-nav-link{padding:.625rem .75rem;min-height:44px;display:flex;align-items:center}.x-docs-nav-sublink{padding:.5rem .75rem;min-height:40px;display:flex;align-items:center}.x-docs-toc-link{padding:.5rem 0 .5rem .75rem;min-height:40px;display:flex;align-items:center}.x-docs-mobile-select{min-height:48px;font-size:1rem}}@media print{.x-docs-mobile-nav,.x-docs-sidebar,.x-docs-toc{display:none!important}.x-docs-main{padding:0!important;background:none!important}.x-docs-article{width:100%!important;max-width:100%!important;flex:0 0 100%!important}:host ::ng-deep .x-docs-content pre{white-space:pre-wrap;word-wrap:break-word}}\n"] }]
664
+ }], propDecorators: { onContentClick: [{
665
+ type: HostListener,
666
+ args: ['click', ['$event']]
667
+ }] } });
668
+
669
+ class DocsModule {
670
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DocsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
671
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: DocsModule, declarations: [DocsComponent], imports: [SharedModule, i1$1.RouterModule, LayoutsModule,
672
+ ElementsModule,
673
+ ToolbarModule,
674
+ PipesModule] }); }
675
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DocsModule, imports: [SharedModule,
676
+ RouterModule.forChild([
677
+ { path: ':sub1/:sub2/:sub3/:sub4/:sub5', component: DocsComponent },
678
+ { path: ':sub1/:sub2/:sub3/:sub4', component: DocsComponent },
679
+ { path: ':sub1/:sub2/:sub3', component: DocsComponent },
680
+ { path: ':sub1/:sub2', component: DocsComponent },
681
+ { path: ':sub1', component: DocsComponent },
682
+ ]),
683
+ LayoutsModule,
684
+ ElementsModule,
685
+ ToolbarModule,
686
+ PipesModule] }); }
687
+ }
688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DocsModule, decorators: [{
689
+ type: NgModule,
690
+ args: [{
691
+ declarations: [DocsComponent],
692
+ imports: [
693
+ SharedModule,
694
+ RouterModule.forChild([
695
+ { path: ':sub1/:sub2/:sub3/:sub4/:sub5', component: DocsComponent },
696
+ { path: ':sub1/:sub2/:sub3/:sub4', component: DocsComponent },
697
+ { path: ':sub1/:sub2/:sub3', component: DocsComponent },
698
+ { path: ':sub1/:sub2', component: DocsComponent },
699
+ { path: ':sub1', component: DocsComponent },
700
+ ]),
701
+ LayoutsModule,
702
+ ElementsModule,
703
+ ToolbarModule,
704
+ PipesModule,
705
+ ],
706
+ }]
707
+ }] });
708
+
709
+ export { DocsModule };
710
+ //# sourceMappingURL=thescaffold-ngx-apps-blog-docs.module-CLrP53Ce.mjs.map