snap-report-viewer 0.1.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.
- package/README.md +24 -0
- package/esm2022/lib/components/chart-renderer/chart-renderer.component.mjs +75 -0
- package/esm2022/lib/components/complex-table-renderer/complex-table-renderer.component.mjs +155 -0
- package/esm2022/lib/components/component-renderer/component-renderer.component.mjs +158 -0
- package/esm2022/lib/components/container-renderer/container-renderer.component.mjs +53 -0
- package/esm2022/lib/components/image-renderer/image-renderer.component.mjs +67 -0
- package/esm2022/lib/components/line-renderer/line-renderer.component.mjs +94 -0
- package/esm2022/lib/components/list-renderer/list-renderer.component.mjs +96 -0
- package/esm2022/lib/components/qrcode-renderer/qrcode-renderer.component.mjs +67 -0
- package/esm2022/lib/components/shape-renderer/shape-renderer.component.mjs +133 -0
- package/esm2022/lib/components/table-renderer/table-renderer.component.mjs +148 -0
- package/esm2022/lib/components/text-renderer/text-renderer.component.mjs +33 -0
- package/esm2022/lib/constants/page-sizes.mjs +3 -0
- package/esm2022/lib/constants/report-tokens.mjs +21 -0
- package/esm2022/lib/layout/report-band.component.mjs +33 -0
- package/esm2022/lib/layout/report-page.component.mjs +159 -0
- package/esm2022/lib/models/component.model.mjs +3 -0
- package/esm2022/lib/models/report-template.model.mjs +19 -0
- package/esm2022/lib/page-container/page-container.component.mjs +248 -0
- package/esm2022/lib/report-viewer.component.mjs +393 -0
- package/esm2022/lib/services/chart-options-builder.service.mjs +749 -0
- package/esm2022/lib/services/data-resolver.service.mjs +385 -0
- package/esm2022/lib/services/export.service.mjs +82 -0
- package/esm2022/lib/services/formatting.service.mjs +59 -0
- package/esm2022/lib/services/print.service.mjs +133 -0
- package/esm2022/lib/services/search.service.mjs +117 -0
- package/esm2022/lib/services/style-mapper.service.mjs +247 -0
- package/esm2022/lib/services/template-normalizer.service.mjs +213 -0
- package/esm2022/lib/services/template-validator.service.mjs +293 -0
- package/esm2022/lib/services/token-resolver.service.mjs +14 -0
- package/esm2022/lib/services/viewer-state.service.mjs +155 -0
- package/esm2022/lib/sidebar/sidebar-container.component.mjs +86 -0
- package/esm2022/lib/sidebar/thumbnail-sidebar.component.mjs +110 -0
- package/esm2022/lib/sidebar/toc-sidebar.component.mjs +155 -0
- package/esm2022/lib/toolbar/viewer-toolbar.component.mjs +486 -0
- package/esm2022/public-api.mjs +43 -0
- package/esm2022/snap-report-viewer.mjs +5 -0
- package/fesm2022/snap-report-viewer.mjs +5110 -0
- package/fesm2022/snap-report-viewer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/chart-renderer/chart-renderer.component.d.ts +14 -0
- package/lib/components/complex-table-renderer/complex-table-renderer.component.d.ts +17 -0
- package/lib/components/component-renderer/component-renderer.component.d.ts +14 -0
- package/lib/components/container-renderer/container-renderer.component.d.ts +11 -0
- package/lib/components/image-renderer/image-renderer.component.d.ts +14 -0
- package/lib/components/line-renderer/line-renderer.component.d.ts +10 -0
- package/lib/components/list-renderer/list-renderer.component.d.ts +16 -0
- package/lib/components/qrcode-renderer/qrcode-renderer.component.d.ts +16 -0
- package/lib/components/shape-renderer/shape-renderer.component.d.ts +11 -0
- package/lib/components/table-renderer/table-renderer.component.d.ts +20 -0
- package/lib/components/text-renderer/text-renderer.component.d.ts +13 -0
- package/lib/constants/page-sizes.d.ts +2 -0
- package/lib/constants/report-tokens.d.ts +8 -0
- package/lib/layout/report-band.component.d.ts +10 -0
- package/lib/layout/report-page.component.d.ts +21 -0
- package/lib/models/component.model.d.ts +315 -0
- package/lib/models/report-template.model.d.ts +122 -0
- package/lib/page-container/page-container.component.d.ts +29 -0
- package/lib/report-viewer.component.d.ts +51 -0
- package/lib/services/chart-options-builder.service.d.ts +31 -0
- package/lib/services/data-resolver.service.d.ts +27 -0
- package/lib/services/export.service.d.ts +11 -0
- package/lib/services/formatting.service.d.ts +10 -0
- package/lib/services/print.service.d.ts +12 -0
- package/lib/services/search.service.d.ts +13 -0
- package/lib/services/style-mapper.service.d.ts +14 -0
- package/lib/services/template-normalizer.service.d.ts +24 -0
- package/lib/services/template-validator.service.d.ts +19 -0
- package/lib/services/token-resolver.service.d.ts +6 -0
- package/lib/services/viewer-state.service.d.ts +49 -0
- package/lib/sidebar/sidebar-container.component.d.ts +8 -0
- package/lib/sidebar/thumbnail-sidebar.component.d.ts +15 -0
- package/lib/sidebar/toc-sidebar.component.d.ts +17 -0
- package/lib/toolbar/viewer-toolbar.component.d.ts +17 -0
- package/package.json +43 -0
- package/public-api.d.ts +35 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ViewerStateService {
|
|
4
|
+
constructor() {
|
|
5
|
+
// Pagination
|
|
6
|
+
this.currentPage = signal(1);
|
|
7
|
+
this.totalPages = signal(1);
|
|
8
|
+
// Zoom
|
|
9
|
+
this.zoom = signal(100);
|
|
10
|
+
this.fitMode = signal('none');
|
|
11
|
+
// View modes
|
|
12
|
+
this.viewMode = signal('single');
|
|
13
|
+
this.isFullScreen = signal(false);
|
|
14
|
+
// Sidebars
|
|
15
|
+
this.tocSidebarOpen = signal(false);
|
|
16
|
+
this.thumbnailSidebarOpen = signal(false);
|
|
17
|
+
// Search
|
|
18
|
+
this.searchQuery = signal('');
|
|
19
|
+
this.searchMatches = signal([]);
|
|
20
|
+
this.currentMatchIndex = signal(-1);
|
|
21
|
+
this.searchOpen = signal(false);
|
|
22
|
+
// Theme
|
|
23
|
+
this.ribbonTheme = signal('light');
|
|
24
|
+
// Computed
|
|
25
|
+
this.pageDisplay = computed(() => `${this.currentPage()} of ${this.totalPages()}`);
|
|
26
|
+
this.zoomDisplay = computed(() => `${this.zoom()}%`);
|
|
27
|
+
this.matchDisplay = computed(() => {
|
|
28
|
+
const matches = this.searchMatches();
|
|
29
|
+
const idx = this.currentMatchIndex();
|
|
30
|
+
if (matches.length === 0)
|
|
31
|
+
return 'No matches';
|
|
32
|
+
return `${idx + 1} of ${matches.length}`;
|
|
33
|
+
});
|
|
34
|
+
this.isFirstPage = computed(() => this.currentPage() <= 1);
|
|
35
|
+
this.isLastPage = computed(() => this.currentPage() >= this.totalPages());
|
|
36
|
+
this.hasSidebarOpen = computed(() => this.tocSidebarOpen() || this.thumbnailSidebarOpen());
|
|
37
|
+
this.isDarkTheme = computed(() => this.ribbonTheme() === 'dark');
|
|
38
|
+
}
|
|
39
|
+
// Navigation
|
|
40
|
+
goToPage(page) {
|
|
41
|
+
const clamped = Math.max(1, Math.min(page, this.totalPages()));
|
|
42
|
+
this.currentPage.set(clamped);
|
|
43
|
+
}
|
|
44
|
+
nextPage() {
|
|
45
|
+
if (!this.isLastPage()) {
|
|
46
|
+
this.currentPage.update(p => p + 1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
previousPage() {
|
|
50
|
+
if (!this.isFirstPage()) {
|
|
51
|
+
this.currentPage.update(p => p - 1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
firstPage() {
|
|
55
|
+
this.currentPage.set(1);
|
|
56
|
+
}
|
|
57
|
+
lastPage() {
|
|
58
|
+
this.currentPage.set(this.totalPages());
|
|
59
|
+
}
|
|
60
|
+
// Zoom
|
|
61
|
+
setZoom(level) {
|
|
62
|
+
this.zoom.set(Math.max(10, Math.min(400, level)));
|
|
63
|
+
this.fitMode.set('none');
|
|
64
|
+
}
|
|
65
|
+
zoomIn() {
|
|
66
|
+
const levels = [25, 50, 75, 100, 125, 150, 200, 300, 400];
|
|
67
|
+
const current = this.zoom();
|
|
68
|
+
const next = levels.find(l => l > current) || 400;
|
|
69
|
+
this.setZoom(next);
|
|
70
|
+
}
|
|
71
|
+
zoomOut() {
|
|
72
|
+
const levels = [25, 50, 75, 100, 125, 150, 200, 300, 400];
|
|
73
|
+
const current = this.zoom();
|
|
74
|
+
const prev = [...levels].reverse().find(l => l < current) || 25;
|
|
75
|
+
this.setZoom(prev);
|
|
76
|
+
}
|
|
77
|
+
fitToWidth() {
|
|
78
|
+
this.fitMode.set('width');
|
|
79
|
+
}
|
|
80
|
+
fitToPage() {
|
|
81
|
+
this.fitMode.set('page');
|
|
82
|
+
}
|
|
83
|
+
// View modes
|
|
84
|
+
toggleViewMode() {
|
|
85
|
+
this.viewMode.update(m => m === 'single' ? 'continuous' : 'single');
|
|
86
|
+
}
|
|
87
|
+
setViewMode(mode) {
|
|
88
|
+
this.viewMode.set(mode);
|
|
89
|
+
}
|
|
90
|
+
toggleFullScreen() {
|
|
91
|
+
this.isFullScreen.update(v => !v);
|
|
92
|
+
}
|
|
93
|
+
// Sidebars
|
|
94
|
+
toggleTocSidebar() {
|
|
95
|
+
const opening = !this.tocSidebarOpen();
|
|
96
|
+
this.tocSidebarOpen.set(opening);
|
|
97
|
+
if (opening) {
|
|
98
|
+
this.thumbnailSidebarOpen.set(false);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
toggleThumbnailSidebar() {
|
|
102
|
+
const opening = !this.thumbnailSidebarOpen();
|
|
103
|
+
this.thumbnailSidebarOpen.set(opening);
|
|
104
|
+
if (opening) {
|
|
105
|
+
this.tocSidebarOpen.set(false);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
closeSidebars() {
|
|
109
|
+
this.tocSidebarOpen.set(false);
|
|
110
|
+
this.thumbnailSidebarOpen.set(false);
|
|
111
|
+
}
|
|
112
|
+
// Search
|
|
113
|
+
setSearchQuery(query) {
|
|
114
|
+
this.searchQuery.set(query);
|
|
115
|
+
this.currentMatchIndex.set(query ? 0 : -1);
|
|
116
|
+
}
|
|
117
|
+
nextMatch() {
|
|
118
|
+
const total = this.searchMatches().length;
|
|
119
|
+
if (total > 0) {
|
|
120
|
+
this.currentMatchIndex.update(i => (i + 1) % total);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
previousMatch() {
|
|
124
|
+
const total = this.searchMatches().length;
|
|
125
|
+
if (total > 0) {
|
|
126
|
+
this.currentMatchIndex.update(i => (i - 1 + total) % total);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
clearSearch() {
|
|
130
|
+
this.searchQuery.set('');
|
|
131
|
+
this.searchMatches.set([]);
|
|
132
|
+
this.currentMatchIndex.set(-1);
|
|
133
|
+
this.searchOpen.set(false);
|
|
134
|
+
}
|
|
135
|
+
toggleSearch() {
|
|
136
|
+
const opening = !this.searchOpen();
|
|
137
|
+
this.searchOpen.set(opening);
|
|
138
|
+
if (!opening) {
|
|
139
|
+
this.clearSearch();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Theme
|
|
143
|
+
toggleTheme() {
|
|
144
|
+
this.ribbonTheme.update(t => t === 'light' ? 'dark' : 'light');
|
|
145
|
+
}
|
|
146
|
+
setTheme(theme) {
|
|
147
|
+
this.ribbonTheme.set(theme);
|
|
148
|
+
}
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewerStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
150
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewerStateService }); }
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewerStateService, decorators: [{
|
|
153
|
+
type: Injectable
|
|
154
|
+
}] });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnQtdmlld2VyL3NyYy9saWIvc2VydmljZXMvdmlld2VyLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUk3RCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRUUsYUFBYTtRQUNKLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEMsT0FBTztRQUNFLFNBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsWUFBTyxHQUFHLE1BQU0sQ0FBNEIsTUFBTSxDQUFDLENBQUM7UUFFN0QsYUFBYTtRQUNKLGFBQVEsR0FBRyxNQUFNLENBQTBCLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELGlCQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLFdBQVc7UUFDRixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQix5QkFBb0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsU0FBUztRQUNBLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLFFBQVE7UUFDQyxnQkFBVyxHQUFHLE1BQU0sQ0FBbUIsT0FBTyxDQUFDLENBQUM7UUFFekQsV0FBVztRQUNGLGdCQUFX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O0lBQ1IsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXVCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBM0tVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWFyY2hNYXRjaCB9IGZyb20gJy4uL21vZGVscy9yZXBvcnQtdGVtcGxhdGUubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVmlld2VyU3RhdGVTZXJ2aWNlIHtcclxuICAvLyBQYWdpbmF0aW9uXHJcbiAgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBzaWduYWwoMSk7XHJcbiAgcmVhZG9ubHkgdG90YWxQYWdlcyA9IHNpZ25hbCgxKTtcclxuXHJcbiAgLy8gWm9vbVxyXG4gIHJlYWRvbmx5IHpvb20gPSBzaWduYWwoMTAwKTtcclxuICByZWFkb25seSBmaXRNb2RlID0gc2lnbmFsPCdub25lJyB8ICd3aWR0aCcgfCAncGFnZSc+KCdub25lJyk7XHJcblxyXG4gIC8vIFZpZXcgbW9kZXNcclxuICByZWFkb25seSB2aWV3TW9kZSA9IHNpZ25hbDwnc2luZ2xlJyB8ICdjb250aW51b3VzJz4oJ3NpbmdsZScpO1xyXG4gIHJlYWRvbmx5IGlzRnVsbFNjcmVlbiA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gIC8vIFNpZGViYXJzXHJcbiAgcmVhZG9ubHkgdG9jU2lkZWJhck9wZW4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHJlYWRvbmx5IHRodW1ibmFpbFNpZGViYXJPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgLy8gU2VhcmNoXHJcbiAgcmVhZG9ubHkgc2VhcmNoUXVlcnkgPSBzaWduYWwoJycpO1xyXG4gIHJlYWRvbmx5IHNlYXJjaE1hdGNoZXMgPSBzaWduYWw8U2VhcmNoTWF0Y2hbXT4oW10pO1xyXG4gIHJlYWRvbmx5IGN1cnJlbnRNYXRjaEluZGV4ID0gc2lnbmFsKC0xKTtcclxuICByZWFkb25seSBzZWFyY2hPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgLy8gVGhlbWVcclxuICByZWFkb25seSByaWJib25UaGVtZSA9IHNpZ25hbDwnbGlnaHQnIHwgJ2RhcmsnPignbGlnaHQnKTtcclxuXHJcbiAgLy8gQ29tcHV0ZWRcclxuICByZWFkb25seSBwYWdlRGlzcGxheSA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuY3VycmVudFBhZ2UoKX0gb2YgJHt0aGlzLnRvdGFsUGFnZXMoKX1gKTtcclxuICByZWFkb25seSB6b29tRGlzcGxheSA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuem9vbSgpfSVgKTtcclxuICByZWFkb25seSBtYXRjaERpc3BsYXkgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5zZWFyY2hNYXRjaGVzKCk7XHJcbiAgICBjb25zdCBpZHggPSB0aGlzLmN1cnJlbnRNYXRjaEluZGV4KCk7XHJcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDApIHJldHVybiAnTm8gbWF0Y2hlcyc7XHJcbiAgICByZXR1cm4gYCR7aWR4ICsgMX0gb2YgJHttYXRjaGVzLmxlbmd0aH1gO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGlzRmlyc3RQYWdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50UGFnZSgpIDw9IDEpO1xyXG4gIHJlYWRvbmx5IGlzTGFzdFBhZ2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRQYWdlKCkgPj0gdGhpcy50b3RhbFBhZ2VzKCkpO1xyXG4gIHJlYWRvbmx5IGhhc1NpZGViYXJPcGVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50b2NTaWRlYmFyT3BlbigpIHx8IHRoaXMudGh1bWJuYWlsU2lkZWJhck9wZW4oKSk7XHJcbiAgcmVhZG9ubHkgaXNEYXJrVGhlbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJpYmJvblRoZW1lKCkgPT09ICdkYXJrJyk7XHJcblxyXG4gIC8vIE5hdmlnYXRpb25cclxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1heCgxLCBNYXRoLm1pbihwYWdlLCB0aGlzLnRvdGFsUGFnZXMoKSkpO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQoY2xhbXBlZCk7XHJcbiAgfVxyXG5cclxuICBuZXh0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xhc3RQYWdlKCkpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZS51cGRhdGUocCA9PiBwICsgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmV2aW91c1BhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNGaXJzdFBhZ2UoKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnVwZGF0ZShwID0+IHAgLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpcnN0UGFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KDEpO1xyXG4gIH1cclxuXHJcbiAgbGFzdFBhZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCh0aGlzLnRvdGFsUGFnZXMoKSk7XHJcbiAgfVxyXG5cclxuICAvLyBab29tXHJcbiAgc2V0Wm9vbShsZXZlbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnpvb20uc2V0KE1hdGgubWF4KDEwLCBNYXRoLm1pbig0MDAsIGxldmVsKSkpO1xyXG4gICAgdGhpcy5maXRNb2RlLnNldCgnbm9uZScpO1xyXG4gIH1cclxuXHJcbiAgem9vbUluKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbGV2ZWxzID0gWzI1LCA1MCwgNzUsIDEwMCwgMTI1LCAxNTAsIDIwMCwgMzAwLCA0MDBdO1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuem9vbSgpO1xyXG4gICAgY29uc3QgbmV4dCA9IGxldmVscy5maW5kKGwgPT4gbCA+IGN1cnJlbnQpIHx8IDQwMDtcclxuICAgIHRoaXMuc2V0Wm9vbShuZXh0KTtcclxuICB9XHJcblxyXG4gIHpvb21PdXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsZXZlbHMgPSBbMjUsIDUwLCA3NSwgMTAwLCAxMjUsIDE1MCwgMjAwLCAzMDAsIDQwMF07XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy56b29tKCk7XHJcbiAgICBjb25zdCBwcmV2ID0gWy4uLmxldmVsc10ucmV2ZXJzZSgpLmZpbmQobCA9PiBsIDwgY3VycmVudCkgfHwgMjU7XHJcbiAgICB0aGlzLnNldFpvb20ocHJldik7XHJcbiAgfVxyXG5cclxuICBmaXRUb1dpZHRoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maXRNb2RlLnNldCgnd2lkdGgnKTtcclxuICB9XHJcblxyXG4gIGZpdFRvUGFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZml0TW9kZS5zZXQoJ3BhZ2UnKTtcclxuICB9XHJcblxyXG4gIC8vIFZpZXcgbW9kZXNcclxuICB0b2dnbGVWaWV3TW9kZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld01vZGUudXBkYXRlKG0gPT4gbSA9PT0gJ3NpbmdsZScgPyAnY29udGludW91cycgOiAnc2luZ2xlJyk7XHJcbiAgfVxyXG5cclxuICBzZXRWaWV3TW9kZShtb2RlOiAnc2luZ2xlJyB8ICdjb250aW51b3VzJyk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3TW9kZS5zZXQobW9kZSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGdWxsU2NyZWVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Z1bGxTY3JlZW4udXBkYXRlKHYgPT4gIXYpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZWJhcnNcclxuICB0b2dnbGVUb2NTaWRlYmFyKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgb3BlbmluZyA9ICF0aGlzLnRvY1NpZGViYXJPcGVuKCk7XHJcbiAgICB0aGlzLnRvY1NpZGViYXJPcGVuLnNldChvcGVuaW5nKTtcclxuICAgIGlmIChvcGVuaW5nKSB7XHJcbiAgICAgIHRoaXMudGh1bWJuYWlsU2lkZWJhck9wZW4uc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZVRodW1ibmFpbFNpZGViYXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcGVuaW5nID0gIXRoaXMudGh1bWJuYWlsU2lkZWJhck9wZW4oKTtcclxuICAgIHRoaXMudGh1bWJuYWlsU2lkZWJhck9wZW4uc2V0KG9wZW5pbmcpO1xyXG4gICAgaWYgKG9wZW5pbmcpIHtcclxuICAgICAgdGhpcy50b2NTaWRlYmFyT3Blbi5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VTaWRlYmFycygpOiB2b2lkIHtcclxuICAgIHRoaXMudG9jU2lkZWJhck9wZW4uc2V0KGZhbHNlKTtcclxuICAgIHRoaXMudGh1bWJuYWlsU2lkZWJhck9wZW4uc2V0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8vIFNlYXJjaFxyXG4gIHNldFNlYXJjaFF1ZXJ5KHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KHF1ZXJ5KTtcclxuICAgIHRoaXMuY3VycmVudE1hdGNoSW5kZXguc2V0KHF1ZXJ5ID8gMCA6IC0xKTtcclxuICB9XHJcblxyXG4gIG5leHRNYXRjaCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5zZWFyY2hNYXRjaGVzKCkubGVuZ3RoO1xyXG4gICAgaWYgKHRvdGFsID4gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNYXRjaEluZGV4LnVwZGF0ZShpID0+IChpICsgMSkgJSB0b3RhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmV2aW91c01hdGNoKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnNlYXJjaE1hdGNoZXMoKS5sZW5ndGg7XHJcbiAgICBpZiAodG90YWwgPiAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE1hdGNoSW5kZXgudXBkYXRlKGkgPT4gKGkgLSAxICsgdG90YWwpICUgdG90YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5LnNldCgnJyk7XHJcbiAgICB0aGlzLnNlYXJjaE1hdGNoZXMuc2V0KFtdKTtcclxuICAgIHRoaXMuY3VycmVudE1hdGNoSW5kZXguc2V0KC0xKTtcclxuICAgIHRoaXMuc2VhcmNoT3Blbi5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgb3BlbmluZyA9ICF0aGlzLnNlYXJjaE9wZW4oKTtcclxuICAgIHRoaXMuc2VhcmNoT3Blbi5zZXQob3BlbmluZyk7XHJcbiAgICBpZiAoIW9wZW5pbmcpIHtcclxuICAgICAgdGhpcy5jbGVhclNlYXJjaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVGhlbWVcclxuICB0b2dnbGVUaGVtZSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmliYm9uVGhlbWUudXBkYXRlKHQgPT4gdCA9PT0gJ2xpZ2h0JyA/ICdkYXJrJyA6ICdsaWdodCcpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGhlbWUodGhlbWU6ICdsaWdodCcgfCAnZGFyaycpOiB2b2lkIHtcclxuICAgIHRoaXMucmliYm9uVGhlbWUuc2V0KHRoZW1lKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/icon";
|
|
8
|
+
import * as i2 from "@angular/material/button";
|
|
9
|
+
export class SidebarContainerComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.isOpen = false;
|
|
12
|
+
this.title = '';
|
|
13
|
+
this.closed = output();
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SidebarContainerComponent, isStandalone: true, selector: "rv-sidebar-container", inputs: { isOpen: "isOpen", title: "title" }, outputs: { closed: "closed" }, ngImport: i0, template: `
|
|
17
|
+
<div class="rv-sidebar-wrapper"
|
|
18
|
+
[class.rv-sidebar-hidden]="!isOpen"
|
|
19
|
+
[@sidebarSlide]="isOpen ? 'open' : 'closed'">
|
|
20
|
+
<div class="rv-sidebar-panel">
|
|
21
|
+
<div class="rv-sidebar-header">
|
|
22
|
+
<span class="rv-sidebar-title">{{ title }}</span>
|
|
23
|
+
<button mat-icon-button class="rv-sidebar-close" (click)="closed.emit()">
|
|
24
|
+
<mat-icon>close</mat-icon>
|
|
25
|
+
</button>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="rv-sidebar-body">
|
|
28
|
+
<ng-content></ng-content>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
`, isInline: true, styles: [":host{display:block;position:absolute;left:0;top:0;bottom:0;z-index:50;pointer-events:none}.rv-sidebar-wrapper{width:240px;height:100%;pointer-events:auto}.rv-sidebar-hidden{pointer-events:none}.rv-sidebar-panel{width:100%;height:100%;display:flex;flex-direction:column;background:var(--rv-sidebar-bg, #ffffff);border-right:1px solid var(--rv-sidebar-border, #e0e0e0);box-shadow:2px 0 8px #0000001a}:host-context(.rv-theme-dark) .rv-sidebar-panel{--rv-sidebar-bg: #1e1e2d;--rv-sidebar-border: #3a3a4a;box-shadow:2px 0 12px #0000004d}.rv-sidebar-header{display:flex;align-items:center;justify-content:space-between;height:40px;min-height:40px;padding:0 8px 0 16px;border-bottom:1px solid var(--rv-sidebar-border, #e0e0e0);background:var(--rv-sidebar-bg, #ffffff)}:host-context(.rv-theme-dark) .rv-sidebar-header{background:#252538}.rv-sidebar-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--rv-sidebar-text, #555555)}:host-context(.rv-theme-dark) .rv-sidebar-title{color:#b0b0c0}.rv-sidebar-close{width:28px!important;height:28px!important}.rv-sidebar-close .mat-icon{font-size:18px;width:18px;height:18px;color:var(--rv-sidebar-text, #555555)}:host-context(.rv-theme-dark) .rv-sidebar-close .mat-icon{color:#b0b0c0}.rv-sidebar-body{flex:1;overflow-y:auto;overflow-x:hidden}.rv-sidebar-body::-webkit-scrollbar{width:6px}.rv-sidebar-body::-webkit-scrollbar-track{background:transparent}.rv-sidebar-body::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}:host-context(.rv-theme-dark) .rv-sidebar-body::-webkit-scrollbar-thumb{background:#444}.rv-sidebar-body::-webkit-scrollbar-thumb:hover{background:#aaa}:host-context(.rv-theme-dark) .rv-sidebar-body::-webkit-scrollbar-thumb:hover{background:#555}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], animations: [
|
|
33
|
+
trigger('sidebarSlide', [
|
|
34
|
+
state('open', style({
|
|
35
|
+
transform: 'translateX(0)',
|
|
36
|
+
opacity: 1,
|
|
37
|
+
})),
|
|
38
|
+
state('closed', style({
|
|
39
|
+
transform: 'translateX(-100%)',
|
|
40
|
+
opacity: 0,
|
|
41
|
+
})),
|
|
42
|
+
transition('open <=> closed', [
|
|
43
|
+
animate('200ms ease-in-out')
|
|
44
|
+
]),
|
|
45
|
+
]),
|
|
46
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarContainerComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'rv-sidebar-container', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
51
|
+
trigger('sidebarSlide', [
|
|
52
|
+
state('open', style({
|
|
53
|
+
transform: 'translateX(0)',
|
|
54
|
+
opacity: 1,
|
|
55
|
+
})),
|
|
56
|
+
state('closed', style({
|
|
57
|
+
transform: 'translateX(-100%)',
|
|
58
|
+
opacity: 0,
|
|
59
|
+
})),
|
|
60
|
+
transition('open <=> closed', [
|
|
61
|
+
animate('200ms ease-in-out')
|
|
62
|
+
]),
|
|
63
|
+
]),
|
|
64
|
+
], template: `
|
|
65
|
+
<div class="rv-sidebar-wrapper"
|
|
66
|
+
[class.rv-sidebar-hidden]="!isOpen"
|
|
67
|
+
[@sidebarSlide]="isOpen ? 'open' : 'closed'">
|
|
68
|
+
<div class="rv-sidebar-panel">
|
|
69
|
+
<div class="rv-sidebar-header">
|
|
70
|
+
<span class="rv-sidebar-title">{{ title }}</span>
|
|
71
|
+
<button mat-icon-button class="rv-sidebar-close" (click)="closed.emit()">
|
|
72
|
+
<mat-icon>close</mat-icon>
|
|
73
|
+
</button>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="rv-sidebar-body">
|
|
76
|
+
<ng-content></ng-content>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
`, styles: [":host{display:block;position:absolute;left:0;top:0;bottom:0;z-index:50;pointer-events:none}.rv-sidebar-wrapper{width:240px;height:100%;pointer-events:auto}.rv-sidebar-hidden{pointer-events:none}.rv-sidebar-panel{width:100%;height:100%;display:flex;flex-direction:column;background:var(--rv-sidebar-bg, #ffffff);border-right:1px solid var(--rv-sidebar-border, #e0e0e0);box-shadow:2px 0 8px #0000001a}:host-context(.rv-theme-dark) .rv-sidebar-panel{--rv-sidebar-bg: #1e1e2d;--rv-sidebar-border: #3a3a4a;box-shadow:2px 0 12px #0000004d}.rv-sidebar-header{display:flex;align-items:center;justify-content:space-between;height:40px;min-height:40px;padding:0 8px 0 16px;border-bottom:1px solid var(--rv-sidebar-border, #e0e0e0);background:var(--rv-sidebar-bg, #ffffff)}:host-context(.rv-theme-dark) .rv-sidebar-header{background:#252538}.rv-sidebar-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--rv-sidebar-text, #555555)}:host-context(.rv-theme-dark) .rv-sidebar-title{color:#b0b0c0}.rv-sidebar-close{width:28px!important;height:28px!important}.rv-sidebar-close .mat-icon{font-size:18px;width:18px;height:18px;color:var(--rv-sidebar-text, #555555)}:host-context(.rv-theme-dark) .rv-sidebar-close .mat-icon{color:#b0b0c0}.rv-sidebar-body{flex:1;overflow-y:auto;overflow-x:hidden}.rv-sidebar-body::-webkit-scrollbar{width:6px}.rv-sidebar-body::-webkit-scrollbar-track{background:transparent}.rv-sidebar-body::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}:host-context(.rv-theme-dark) .rv-sidebar-body::-webkit-scrollbar-thumb{background:#444}.rv-sidebar-body::-webkit-scrollbar-thumb:hover{background:#aaa}:host-context(.rv-theme-dark) .rv-sidebar-body::-webkit-scrollbar-thumb:hover{background:#555}\n"] }]
|
|
81
|
+
}], propDecorators: { isOpen: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], title: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}] } });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0LXZpZXdlci9zcmMvbGliL3NpZGViYXIvc2lkZWJhci1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFDbEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQXdKakYsTUFBTSxPQUFPLHlCQUF5QjtJQXRKdEM7UUF1SlcsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFcEIsV0FBTSxHQUFHLE1BQU0sRUFBUSxDQUFDO0tBQ3pCOytHQUxZLHlCQUF5QjttR0FBekIseUJBQXlCLDZKQWxJMUI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQsbXlEQWpDUyxZQUFZLDhCQUFFLGFBQWEsbUxBQUUsZUFBZSw4SEFFMUM7WUFDVixPQUFPLENBQUMsY0FBYyxFQUFFO2dCQUN0QixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztvQkFDbEIsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLE9BQU8sRUFBRSxDQUFDO2lCQUNYLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztvQkFDcEIsU0FBUyxFQUFFLG1CQUFtQjtvQkFDOUIsT0FBTyxFQUFFLENBQUM7aUJBQ1gsQ0FBQyxDQUFDO2dCQUNILFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTtvQkFDNUIsT0FBTyxDQUFDLG1CQUFtQixDQUFDO2lCQUM3QixDQUFDO2FBQ0gsQ0FBQztTQUNIOzs0RkFtSVUseUJBQXlCO2tCQXRKckMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsbUJBQ3RDLHVCQUF1QixDQUFDLE1BQU0sY0FDbkM7d0JBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTs0QkFDdEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0NBQ2xCLFNBQVMsRUFBRSxlQUFlO2dDQUMxQixPQUFPLEVBQUUsQ0FBQzs2QkFDWCxDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7Z0NBQ3BCLFNBQVMsRUFBRSxtQkFBbUI7Z0NBQzlCLE9BQU8sRUFBRSxDQUFDOzZCQUNYLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsaUJBQWlCLEVBQUU7Z0NBQzVCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDN0IsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQ7OEJBbUhRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCwgb3V0cHV0LCBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdydi1zaWRlYmFyLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc2lkZWJhclNsaWRlJywgW1xuICAgICAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7XG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgfSkpLFxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgfSkpLFxuICAgICAgdHJhbnNpdGlvbignb3BlbiA8PT4gY2xvc2VkJywgW1xuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnYtc2lkZWJhci13cmFwcGVyXCJcbiAgICAgICAgIFtjbGFzcy5ydi1zaWRlYmFyLWhpZGRlbl09XCIhaXNPcGVuXCJcbiAgICAgICAgIFtAc2lkZWJhclNsaWRlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnYtc2lkZWJhci1wYW5lbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicnYtc2lkZWJhci1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ2LXNpZGViYXItdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJ2LXNpZGViYXItY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VkLmVtaXQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJydi1zaWRlYmFyLWJvZHlcIj5cbiAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICB6LWluZGV4OiA1MDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5ydi1zaWRlYmFyLXdyYXBwZXIge1xuICAgICAgd2lkdGg6IDI0MHB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgfVxuXG4gICAgLnJ2LXNpZGViYXItaGlkZGVuIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5ydi1zaWRlYmFyLXBhbmVsIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ydi1zaWRlYmFyLWJnLCAjZmZmZmZmKTtcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXJ2LXNpZGViYXItYm9yZGVyLCAjZTBlMGUwKTtcbiAgICAgIGJveC1zaGFkb3c6IDJweCAwIDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXNpZGViYXItcGFuZWwge1xuICAgICAgLS1ydi1zaWRlYmFyLWJnOiAjMWUxZTJkO1xuICAgICAgLS1ydi1zaWRlYmFyLWJvcmRlcjogIzNhM2E0YTtcbiAgICAgIGJveC1zaGFkb3c6IDJweCAwIDEycHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIH1cblxuICAgIC5ydi1zaWRlYmFyLWhlYWRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgICBwYWRkaW5nOiAwIDhweCAwIDE2cHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnYtc2lkZWJhci1ib3JkZXIsICNlMGUwZTApO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnYtc2lkZWJhci1iZywgI2ZmZmZmZik7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXNpZGViYXItaGVhZGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyNTI1Mzg7XG4gICAgfVxuXG4gICAgLnJ2LXNpZGViYXItdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgICBjb2xvcjogdmFyKC0tcnYtc2lkZWJhci10ZXh0LCAjNTU1NTU1KTtcbiAgICB9XG5cbiAgICA6aG9zdC1jb250ZXh0KC5ydi10aGVtZS1kYXJrKSAucnYtc2lkZWJhci10aXRsZSB7XG4gICAgICBjb2xvcjogI2IwYjBjMDtcbiAgICB9XG5cbiAgICAucnYtc2lkZWJhci1jbG9zZSB7XG4gICAgICB3aWR0aDogMjhweCAhaW1wb3J0YW50O1xuICAgICAgaGVpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnJ2LXNpZGViYXItY2xvc2UgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgY29sb3I6IHZhcigtLXJ2LXNpZGViYXItdGV4dCwgIzU1NTU1NSk7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXNpZGViYXItY2xvc2UgLm1hdC1pY29uIHtcbiAgICAgIGNvbG9yOiAjYjBiMGMwO1xuICAgIH1cblxuICAgIC5ydi1zaWRlYmFyLWJvZHkge1xuICAgICAgZmxleDogMTtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLyogU2Nyb2xsYmFyIHN0eWxpbmcgKi9cbiAgICAucnYtc2lkZWJhci1ib2R5Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICB3aWR0aDogNnB4O1xuICAgIH1cblxuICAgIC5ydi1zaWRlYmFyLWJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC5ydi1zaWRlYmFyLWJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6ICNjY2M7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXNpZGViYXItYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZDogIzQ0NDtcbiAgICB9XG5cbiAgICAucnYtc2lkZWJhci1ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjYWFhO1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoLnJ2LXRoZW1lLWRhcmspIC5ydi1zaWRlYmFyLWJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICM1NTU7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlYmFyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG5cbiAgY2xvc2VkID0gb3V0cHV0PHZvaWQ+KCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, inject, output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ViewerStateService } from '../services/viewer-state.service';
|
|
4
|
+
import { SidebarContainerComponent } from './sidebar-container.component';
|
|
5
|
+
import { ReportPageComponent } from '../layout/report-page.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ThumbnailSidebarComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.pages = [];
|
|
10
|
+
this.pageWidth = 210;
|
|
11
|
+
this.pageHeight = 297;
|
|
12
|
+
this.globalStyles = { fontFamily: 'Arial', fontSize: '11px', color: '#000', backgroundColor: '#fff' };
|
|
13
|
+
this.data = null;
|
|
14
|
+
this.pageSelected = output();
|
|
15
|
+
this.state = inject(ViewerStateService);
|
|
16
|
+
}
|
|
17
|
+
onPageClick(page) {
|
|
18
|
+
this.state.goToPage(page);
|
|
19
|
+
this.pageSelected.emit(page);
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThumbnailSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ThumbnailSidebarComponent, isStandalone: true, selector: "rv-thumbnail-sidebar", inputs: { pages: "pages", pageWidth: "pageWidth", pageHeight: "pageHeight", globalStyles: "globalStyles", data: "data" }, outputs: { pageSelected: "pageSelected" }, ngImport: i0, template: `
|
|
23
|
+
<rv-sidebar-container
|
|
24
|
+
[isOpen]="state.thumbnailSidebarOpen()"
|
|
25
|
+
title="Pages"
|
|
26
|
+
(closed)="state.toggleThumbnailSidebar()">
|
|
27
|
+
|
|
28
|
+
<div class="rv-thumbnail-list">
|
|
29
|
+
@for (page of pages; track page.index) {
|
|
30
|
+
<div class="rv-thumbnail-item"
|
|
31
|
+
[class.rv-thumb-active]="page.index === state.currentPage() - 1"
|
|
32
|
+
(click)="onPageClick(page.index + 1)">
|
|
33
|
+
<div class="rv-thumbnail-preview">
|
|
34
|
+
<div class="rv-thumbnail-scale">
|
|
35
|
+
<rv-report-page
|
|
36
|
+
[pageWidth]="pageWidth"
|
|
37
|
+
[pageHeight]="pageHeight"
|
|
38
|
+
[headerSection]="page.header"
|
|
39
|
+
[footerSection]="page.footer"
|
|
40
|
+
[bodyComponents]="page.components"
|
|
41
|
+
[globalStyles]="globalStyles"
|
|
42
|
+
[data]="data"
|
|
43
|
+
[pageNumber]="page.index + 1"
|
|
44
|
+
[totalPages]="pages.length">
|
|
45
|
+
</rv-report-page>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<span class="rv-thumb-label">{{ page.index + 1 }}</span>
|
|
49
|
+
</div>
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@if (!pages || pages.length === 0) {
|
|
53
|
+
<div class="rv-thumb-empty">No pages</div>
|
|
54
|
+
}
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
</rv-sidebar-container>
|
|
58
|
+
`, isInline: true, styles: [".rv-thumbnail-list{padding:12px 8px;display:flex;flex-direction:column;align-items:center;gap:12px}.rv-thumbnail-item{cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px;border-radius:6px;border:2px solid transparent;transition:all .15s ease}.rv-thumbnail-item:hover:not(.rv-thumb-active){background:#00000008;border-color:#00000014}:host-context(.rv-theme-dark) .rv-thumbnail-item:hover:not(.rv-thumb-active){background:#ffffff0a;border-color:#ffffff14}.rv-thumb-active{border-color:#1976d2;background:#1976d20f}:host-context(.rv-theme-dark) .rv-thumb-active{border-color:#64b5f6;background:#64b5f61a}.rv-thumbnail-preview{width:140px;height:198px;overflow:hidden;border-radius:3px;box-shadow:0 1px 4px #00000026;background:#fff}.rv-thumbnail-scale{transform:scale(.167);transform-origin:top left;width:600%;height:600%;pointer-events:none}.rv-thumb-label{font-size:11px;font-weight:500;color:#666}:host-context(.rv-theme-dark) .rv-thumb-label{color:#a0a0b0}.rv-thumb-active .rv-thumb-label{color:#1976d2;font-weight:600}:host-context(.rv-theme-dark) .rv-thumb-active .rv-thumb-label{color:#64b5f6}.rv-thumb-empty{padding:24px;color:#999;font-size:12px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SidebarContainerComponent, selector: "rv-sidebar-container", inputs: ["isOpen", "title"], outputs: ["closed"] }, { kind: "component", type: ReportPageComponent, selector: "rv-report-page", inputs: ["pageWidth", "pageHeight", "headerSection", "footerSection", "bodyComponents", "globalStyles", "data", "pageNumber", "totalPages", "reportTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThumbnailSidebarComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'rv-thumbnail-sidebar', standalone: true, imports: [CommonModule, SidebarContainerComponent, ReportPageComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
63
|
+
<rv-sidebar-container
|
|
64
|
+
[isOpen]="state.thumbnailSidebarOpen()"
|
|
65
|
+
title="Pages"
|
|
66
|
+
(closed)="state.toggleThumbnailSidebar()">
|
|
67
|
+
|
|
68
|
+
<div class="rv-thumbnail-list">
|
|
69
|
+
@for (page of pages; track page.index) {
|
|
70
|
+
<div class="rv-thumbnail-item"
|
|
71
|
+
[class.rv-thumb-active]="page.index === state.currentPage() - 1"
|
|
72
|
+
(click)="onPageClick(page.index + 1)">
|
|
73
|
+
<div class="rv-thumbnail-preview">
|
|
74
|
+
<div class="rv-thumbnail-scale">
|
|
75
|
+
<rv-report-page
|
|
76
|
+
[pageWidth]="pageWidth"
|
|
77
|
+
[pageHeight]="pageHeight"
|
|
78
|
+
[headerSection]="page.header"
|
|
79
|
+
[footerSection]="page.footer"
|
|
80
|
+
[bodyComponents]="page.components"
|
|
81
|
+
[globalStyles]="globalStyles"
|
|
82
|
+
[data]="data"
|
|
83
|
+
[pageNumber]="page.index + 1"
|
|
84
|
+
[totalPages]="pages.length">
|
|
85
|
+
</rv-report-page>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
<span class="rv-thumb-label">{{ page.index + 1 }}</span>
|
|
89
|
+
</div>
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@if (!pages || pages.length === 0) {
|
|
93
|
+
<div class="rv-thumb-empty">No pages</div>
|
|
94
|
+
}
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
</rv-sidebar-container>
|
|
98
|
+
`, styles: [".rv-thumbnail-list{padding:12px 8px;display:flex;flex-direction:column;align-items:center;gap:12px}.rv-thumbnail-item{cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px;border-radius:6px;border:2px solid transparent;transition:all .15s ease}.rv-thumbnail-item:hover:not(.rv-thumb-active){background:#00000008;border-color:#00000014}:host-context(.rv-theme-dark) .rv-thumbnail-item:hover:not(.rv-thumb-active){background:#ffffff0a;border-color:#ffffff14}.rv-thumb-active{border-color:#1976d2;background:#1976d20f}:host-context(.rv-theme-dark) .rv-thumb-active{border-color:#64b5f6;background:#64b5f61a}.rv-thumbnail-preview{width:140px;height:198px;overflow:hidden;border-radius:3px;box-shadow:0 1px 4px #00000026;background:#fff}.rv-thumbnail-scale{transform:scale(.167);transform-origin:top left;width:600%;height:600%;pointer-events:none}.rv-thumb-label{font-size:11px;font-weight:500;color:#666}:host-context(.rv-theme-dark) .rv-thumb-label{color:#a0a0b0}.rv-thumb-active .rv-thumb-label{color:#1976d2;font-weight:600}:host-context(.rv-theme-dark) .rv-thumb-active .rv-thumb-label{color:#64b5f6}.rv-thumb-empty{padding:24px;color:#999;font-size:12px;text-align:center}\n"] }]
|
|
99
|
+
}], propDecorators: { pages: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], pageWidth: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], pageHeight: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], globalStyles: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], data: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bWJuYWlsLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0LXZpZXdlci9zcmMvbGliL3NpZGViYXIvdGh1bWJuYWlsLXNpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQzFELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFpSXRFLE1BQU0sT0FBTyx5QkFBeUI7SUEvSHRDO1FBZ0lXLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNoQixlQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLGlCQUFZLEdBQWlCLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQy9HLFNBQUksR0FBUSxJQUFJLENBQUM7UUFFMUIsaUJBQVksR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUVoQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FNcEM7SUFKQyxXQUFXLENBQUMsSUFBWTtRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDOytHQWRVLHlCQUF5QjttR0FBekIseUJBQXlCLHFQQTFIMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DVCxvd0NBdENTLFlBQVksK0JBQUUseUJBQXlCLG1IQUFFLG1CQUFtQjs7NEZBNEgzRCx5QkFBeUI7a0JBL0hyQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUseUJBQXlCLEVBQUUsbUJBQW1CLENBQUMsbUJBQ3RELHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DVDs4QkF1RlEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBpbmplY3QsIG91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQYWdlRGF0YSwgR2xvYmFsU3R5bGVzIH0gZnJvbSAnLi4vbW9kZWxzL3JlcG9ydC10ZW1wbGF0ZS5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3ZXJTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy92aWV3ZXItc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBTaWRlYmFyQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9yZXBvcnQtcGFnZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdydi10aHVtYm5haWwtc2lkZWJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNpZGViYXJDb250YWluZXJDb21wb25lbnQsIFJlcG9ydFBhZ2VDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cnYtc2lkZWJhci1jb250YWluZXJcbiAgICAgIFtpc09wZW5dPVwic3RhdGUudGh1bWJuYWlsU2lkZWJhck9wZW4oKVwiXG4gICAgICB0aXRsZT1cIlBhZ2VzXCJcbiAgICAgIChjbG9zZWQpPVwic3RhdGUudG9nZ2xlVGh1bWJuYWlsU2lkZWJhcigpXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJydi10aHVtYm5haWwtbGlzdFwiPlxuICAgICAgICBAZm9yIChwYWdlIG9mIHBhZ2VzOyB0cmFjayBwYWdlLmluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ2LXRodW1ibmFpbC1pdGVtXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5ydi10aHVtYi1hY3RpdmVdPVwicGFnZS5pbmRleCA9PT0gc3RhdGUuY3VycmVudFBhZ2UoKSAtIDFcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUGFnZUNsaWNrKHBhZ2UuaW5kZXggKyAxKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ2LXRodW1ibmFpbC1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJydi10aHVtYm5haWwtc2NhbGVcIj5cbiAgICAgICAgICAgICAgICA8cnYtcmVwb3J0LXBhZ2VcbiAgICAgICAgICAgICAgICAgIFtwYWdlV2lkdGhdPVwicGFnZVdpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlSGVpZ2h0XT1cInBhZ2VIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2hlYWRlclNlY3Rpb25dPVwicGFnZS5oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgW2Zvb3RlclNlY3Rpb25dPVwicGFnZS5mb290ZXJcIlxuICAgICAgICAgICAgICAgICAgW2JvZHlDb21wb25lbnRzXT1cInBhZ2UuY29tcG9uZW50c1wiXG4gICAgICAgICAgICAgICAgICBbZ2xvYmFsU3R5bGVzXT1cImdsb2JhbFN0eWxlc1wiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlTnVtYmVyXT1cInBhZ2UuaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgICAgIFt0b3RhbFBhZ2VzXT1cInBhZ2VzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDwvcnYtcmVwb3J0LXBhZ2U+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ2LXRodW1iLWxhYmVsXCI+e3sgcGFnZS5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFwYWdlcyB8fCBwYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnYtdGh1bWItZW1wdHlcIj5ObyBwYWdlczwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgIDwvcnYtc2lkZWJhci1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAucnYtdGh1bWJuYWlsLWxpc3Qge1xuICAgICAgcGFkZGluZzogMTJweCA4cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDEycHg7XG4gICAgfVxuXG4gICAgLnJ2LXRodW1ibmFpbC1pdGVtIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNHB4O1xuICAgICAgcGFkZGluZzogNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICB9XG5cbiAgICAucnYtdGh1bWJuYWlsLWl0ZW06aG92ZXI6bm90KC5ydi10aHVtYi1hY3RpdmUpIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXRodW1ibmFpbC1pdGVtOmhvdmVyOm5vdCgucnYtdGh1bWItYWN0aXZlKSB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpO1xuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgIH1cblxuICAgIC5ydi10aHVtYi1hY3RpdmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMTk3NmQyO1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNSwgMTE4LCAyMTAsIDAuMDYpO1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoLnJ2LXRoZW1lLWRhcmspIC5ydi10aHVtYi1hY3RpdmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjNjRiNWY2O1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxMDAsIDE4MSwgMjQ2LCAwLjEpO1xuICAgIH1cblxuICAgIC5ydi10aHVtYm5haWwtcHJldmlldyB7XG4gICAgICB3aWR0aDogMTQwcHg7XG4gICAgICBoZWlnaHQ6IDE5OHB4OyAvKiBBNCByYXRpbyAoMjEwLzI5NyAqIDE0MCkgKi9cbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIH1cblxuICAgIC5ydi10aHVtYm5haWwtc2NhbGUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjE2Nyk7IC8qIDE0MHB4IC8gMjEwbW0gKiB+MC4yNSByb3VnaCBzY2FsZSAqL1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG4gICAgICB3aWR0aDogNjAwJTtcbiAgICAgIGhlaWdodDogNjAwJTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5ydi10aHVtYi1sYWJlbCB7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgY29sb3I6ICM2NjY7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXRodW1iLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAjYTBhMGIwO1xuICAgIH1cblxuICAgIC5ydi10aHVtYi1hY3RpdmUgLnJ2LXRodW1iLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAjMTk3NmQyO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICA6aG9zdC1jb250ZXh0KC5ydi10aGVtZS1kYXJrKSAucnYtdGh1bWItYWN0aXZlIC5ydi10aHVtYi1sYWJlbCB7XG4gICAgICBjb2xvcjogIzY0YjVmNjtcbiAgICB9XG5cbiAgICAucnYtdGh1bWItZW1wdHkge1xuICAgICAgcGFkZGluZzogMjRweDtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgVGh1bWJuYWlsU2lkZWJhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHBhZ2VzOiBQYWdlRGF0YVtdID0gW107XG4gIEBJbnB1dCgpIHBhZ2VXaWR0aCA9IDIxMDtcbiAgQElucHV0KCkgcGFnZUhlaWdodCA9IDI5NztcbiAgQElucHV0KCkgZ2xvYmFsU3R5bGVzOiBHbG9iYWxTdHlsZXMgPSB7IGZvbnRGYW1pbHk6ICdBcmlhbCcsIGZvbnRTaXplOiAnMTFweCcsIGNvbG9yOiAnIzAwMCcsIGJhY2tncm91bmRDb2xvcjogJyNmZmYnIH07XG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IG51bGw7XG5cbiAgcGFnZVNlbGVjdGVkID0gb3V0cHV0PG51bWJlcj4oKTtcblxuICBzdGF0ZSA9IGluamVjdChWaWV3ZXJTdGF0ZVNlcnZpY2UpO1xuXG4gIG9uUGFnZUNsaWNrKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuZ29Ub1BhZ2UocGFnZSk7XG4gICAgdGhpcy5wYWdlU2VsZWN0ZWQuZW1pdChwYWdlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, inject, output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { ViewerStateService } from '../services/viewer-state.service';
|
|
5
|
+
import { SidebarContainerComponent } from './sidebar-container.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/icon";
|
|
8
|
+
export class TocSidebarComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.pages = [];
|
|
11
|
+
this.pageSelected = output();
|
|
12
|
+
this.state = inject(ViewerStateService);
|
|
13
|
+
this.tocItems = [];
|
|
14
|
+
}
|
|
15
|
+
ngOnChanges(changes) {
|
|
16
|
+
if (changes['pages']) {
|
|
17
|
+
this.buildToc();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
onItemClick(item) {
|
|
21
|
+
this.state.goToPage(item.pageIndex + 1);
|
|
22
|
+
this.pageSelected.emit(item.pageIndex + 1);
|
|
23
|
+
}
|
|
24
|
+
buildToc() {
|
|
25
|
+
this.tocItems = [];
|
|
26
|
+
if (!this.pages || this.pages.length === 0)
|
|
27
|
+
return;
|
|
28
|
+
for (const page of this.pages) {
|
|
29
|
+
const components = [
|
|
30
|
+
...(page.header?.components || []),
|
|
31
|
+
...page.components,
|
|
32
|
+
...(page.footer?.components || []),
|
|
33
|
+
];
|
|
34
|
+
for (const comp of components) {
|
|
35
|
+
const tocItem = this.componentToTocItem(comp, page.index);
|
|
36
|
+
if (tocItem) {
|
|
37
|
+
this.tocItems.push(tocItem);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
componentToTocItem(comp, pageIndex) {
|
|
43
|
+
// Only create TOC items for text/field components with certain characteristics
|
|
44
|
+
if (comp.type !== 'text' && comp.type !== 'field')
|
|
45
|
+
return null;
|
|
46
|
+
const content = comp.content || '';
|
|
47
|
+
if (!content.trim())
|
|
48
|
+
return null;
|
|
49
|
+
// Detect headings by font size or bold style
|
|
50
|
+
const fontSize = this.parseFontSize(comp.style?.fontSize);
|
|
51
|
+
const isBold = comp.style?.fontWeight === 'bold' || comp.style?.fontWeight === '700';
|
|
52
|
+
const isLarge = fontSize >= 16;
|
|
53
|
+
const isMedium = fontSize >= 13;
|
|
54
|
+
// Only include text that looks like a heading
|
|
55
|
+
if (!isLarge && !isBold)
|
|
56
|
+
return null;
|
|
57
|
+
let level = 2;
|
|
58
|
+
let icon = 'text_fields';
|
|
59
|
+
if (isLarge && isBold) {
|
|
60
|
+
level = 0;
|
|
61
|
+
icon = 'title';
|
|
62
|
+
}
|
|
63
|
+
else if (isLarge) {
|
|
64
|
+
level = 1;
|
|
65
|
+
icon = 'text_fields';
|
|
66
|
+
}
|
|
67
|
+
else if (isBold) {
|
|
68
|
+
level = 2;
|
|
69
|
+
icon = 'short_text';
|
|
70
|
+
}
|
|
71
|
+
// Clean content - remove HTML tags and template tokens
|
|
72
|
+
const label = content
|
|
73
|
+
.replace(/<[^>]*>/g, '')
|
|
74
|
+
.replace(/\{\{[^}]*\}\}/g, '')
|
|
75
|
+
.trim();
|
|
76
|
+
if (!label || label.length < 2)
|
|
77
|
+
return null;
|
|
78
|
+
return {
|
|
79
|
+
id: comp.id,
|
|
80
|
+
label: label.substring(0, 60) + (label.length > 60 ? '...' : ''),
|
|
81
|
+
pageIndex,
|
|
82
|
+
level,
|
|
83
|
+
icon,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
parseFontSize(fontSize) {
|
|
87
|
+
if (!fontSize)
|
|
88
|
+
return 11;
|
|
89
|
+
const match = fontSize.match(/(\d+(?:\.\d+)?)/);
|
|
90
|
+
return match ? parseFloat(match[1]) : 11;
|
|
91
|
+
}
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TocSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TocSidebarComponent, isStandalone: true, selector: "rv-toc-sidebar", inputs: { pages: "pages" }, outputs: { pageSelected: "pageSelected" }, usesOnChanges: true, ngImport: i0, template: `
|
|
94
|
+
<rv-sidebar-container
|
|
95
|
+
[isOpen]="state.tocSidebarOpen()"
|
|
96
|
+
title="Document Map"
|
|
97
|
+
(closed)="state.toggleTocSidebar()">
|
|
98
|
+
|
|
99
|
+
<div class="rv-toc-tree">
|
|
100
|
+
@for (item of tocItems; track item.id) {
|
|
101
|
+
<div class="rv-toc-item"
|
|
102
|
+
[class.rv-toc-active]="item.pageIndex === state.currentPage() - 1"
|
|
103
|
+
[style.padding-left.px]="12 + item.level * 16"
|
|
104
|
+
(click)="onItemClick(item)">
|
|
105
|
+
<mat-icon class="rv-toc-icon">{{ item.icon }}</mat-icon>
|
|
106
|
+
<span class="rv-toc-label">{{ item.label }}</span>
|
|
107
|
+
<span class="rv-toc-page">{{ item.pageIndex + 1 }}</span>
|
|
108
|
+
</div>
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@if (tocItems.length === 0) {
|
|
112
|
+
<div class="rv-toc-empty">
|
|
113
|
+
<mat-icon>toc</mat-icon>
|
|
114
|
+
<p>No document structure found</p>
|
|
115
|
+
</div>
|
|
116
|
+
}
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
</rv-sidebar-container>
|
|
120
|
+
`, isInline: true, styles: [".rv-toc-tree{padding:8px 0}.rv-toc-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:12px;transition:background .12s ease;border-left:3px solid transparent}.rv-toc-item:hover{background:#0000000a}:host-context(.rv-theme-dark) .rv-toc-item:hover{background:#ffffff0a}.rv-toc-active{background:#1976d20f!important;border-left-color:#1976d2}:host-context(.rv-theme-dark) .rv-toc-active{background:#64b5f61a!important;border-left-color:#64b5f6}.rv-toc-icon{font-size:16px!important;width:16px!important;height:16px!important;color:#888;flex-shrink:0}:host-context(.rv-theme-dark) .rv-toc-icon{color:#889}.rv-toc-active .rv-toc-icon{color:#1976d2}:host-context(.rv-theme-dark) .rv-toc-active .rv-toc-icon{color:#64b5f6}.rv-toc-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}:host-context(.rv-theme-dark) .rv-toc-label{color:#d0d0d8}.rv-toc-active .rv-toc-label{color:#1976d2;font-weight:600}:host-context(.rv-theme-dark) .rv-toc-active .rv-toc-label{color:#64b5f6}.rv-toc-page{font-size:10px;color:#999;flex-shrink:0;min-width:18px;text-align:right}:host-context(.rv-theme-dark) .rv-toc-page{color:#777}.rv-toc-empty{display:flex;flex-direction:column;align-items:center;padding:32px 16px;color:#999;gap:8px}.rv-toc-empty .mat-icon{font-size:32px;width:32px;height:32px;opacity:.4}.rv-toc-empty p{margin:0;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SidebarContainerComponent, selector: "rv-sidebar-container", inputs: ["isOpen", "title"], outputs: ["closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TocSidebarComponent, decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{ selector: 'rv-toc-sidebar', standalone: true, imports: [CommonModule, MatIconModule, SidebarContainerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
125
|
+
<rv-sidebar-container
|
|
126
|
+
[isOpen]="state.tocSidebarOpen()"
|
|
127
|
+
title="Document Map"
|
|
128
|
+
(closed)="state.toggleTocSidebar()">
|
|
129
|
+
|
|
130
|
+
<div class="rv-toc-tree">
|
|
131
|
+
@for (item of tocItems; track item.id) {
|
|
132
|
+
<div class="rv-toc-item"
|
|
133
|
+
[class.rv-toc-active]="item.pageIndex === state.currentPage() - 1"
|
|
134
|
+
[style.padding-left.px]="12 + item.level * 16"
|
|
135
|
+
(click)="onItemClick(item)">
|
|
136
|
+
<mat-icon class="rv-toc-icon">{{ item.icon }}</mat-icon>
|
|
137
|
+
<span class="rv-toc-label">{{ item.label }}</span>
|
|
138
|
+
<span class="rv-toc-page">{{ item.pageIndex + 1 }}</span>
|
|
139
|
+
</div>
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@if (tocItems.length === 0) {
|
|
143
|
+
<div class="rv-toc-empty">
|
|
144
|
+
<mat-icon>toc</mat-icon>
|
|
145
|
+
<p>No document structure found</p>
|
|
146
|
+
</div>
|
|
147
|
+
}
|
|
148
|
+
</div>
|
|
149
|
+
|
|
150
|
+
</rv-sidebar-container>
|
|
151
|
+
`, styles: [".rv-toc-tree{padding:8px 0}.rv-toc-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:12px;transition:background .12s ease;border-left:3px solid transparent}.rv-toc-item:hover{background:#0000000a}:host-context(.rv-theme-dark) .rv-toc-item:hover{background:#ffffff0a}.rv-toc-active{background:#1976d20f!important;border-left-color:#1976d2}:host-context(.rv-theme-dark) .rv-toc-active{background:#64b5f61a!important;border-left-color:#64b5f6}.rv-toc-icon{font-size:16px!important;width:16px!important;height:16px!important;color:#888;flex-shrink:0}:host-context(.rv-theme-dark) .rv-toc-icon{color:#889}.rv-toc-active .rv-toc-icon{color:#1976d2}:host-context(.rv-theme-dark) .rv-toc-active .rv-toc-icon{color:#64b5f6}.rv-toc-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}:host-context(.rv-theme-dark) .rv-toc-label{color:#d0d0d8}.rv-toc-active .rv-toc-label{color:#1976d2;font-weight:600}:host-context(.rv-theme-dark) .rv-toc-active .rv-toc-label{color:#64b5f6}.rv-toc-page{font-size:10px;color:#999;flex-shrink:0;min-width:18px;text-align:right}:host-context(.rv-theme-dark) .rv-toc-page{color:#777}.rv-toc-empty{display:flex;flex-direction:column;align-items:center;padding:32px 16px;color:#999;gap:8px}.rv-toc-empty .mat-icon{font-size:32px;width:32px;height:32px;opacity:.4}.rv-toc-empty p{margin:0;font-size:12px}\n"] }]
|
|
152
|
+
}], propDecorators: { pages: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}] } });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0LXZpZXdlci9zcmMvbGliL3NpZGViYXIvdG9jLXNpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQzFELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQWdKMUUsTUFBTSxPQUFPLG1CQUFtQjtJQTlJaEM7UUErSVcsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUVoQyxpQkFBWSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBRWhDLFVBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVuQyxhQUFRLEdBQWMsRUFBRSxDQUFDO0tBc0YxQjtJQXBGQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsSUFBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVuRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixNQUFNLFVBQVUsR0FBRztnQkFDakIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsR0FBRyxJQUFJLENBQUMsVUFBVTtnQkFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQzthQUNuQyxDQUFDO1lBRUYsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFvQixFQUFFLFNBQWlCO1FBQ2hFLCtFQUErRTtRQUMvRSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRS9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFakMsNkNBQTZDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEtBQUssS0FBSyxDQUFDO1FBQ3JGLE1BQU0sT0FBTyxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUVoQyw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUVyQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksR0FBRyxhQUFhLENBQUM7UUFFekIsSUFBSSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdEIsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNWLElBQUksR0FBRyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDbkIsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNWLElBQUksR0FBRyxhQUFhLENBQUM7UUFDdkIsQ0FBQzthQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbEIsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNWLElBQUksR0FBRyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELHVEQUF1RDtRQUN2RCxNQUFNLEtBQUssR0FBRyxPQUFPO2FBQ2xCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7YUFDN0IsSUFBSSxFQUFFLENBQUM7UUFFVixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTVDLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEUsU0FBUztZQUNULEtBQUs7WUFDTCxJQUFJO1NBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsUUFBNEI7UUFDaEQsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7K0dBNUZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHNLQXpJcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCx1N0NBN0JTLFlBQVksOEJBQUUsYUFBYSxvTEFBRSx5QkFBeUI7OzRGQTJJckQsbUJBQW1CO2tCQTlJL0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixDQUFDLG1CQUNoRCx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7OEJBK0dRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBpbmplY3QsIG91dHB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IENvbXBvbmVudE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQgeyBQYWdlRGF0YSwgVG9jSXRlbSB9IGZyb20gJy4uL21vZGVscy9yZXBvcnQtdGVtcGxhdGUubW9kZWwnO1xuaW1wb3J0IHsgVmlld2VyU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlld2VyLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lkZWJhckNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci1jb250YWluZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnYtdG9jLXNpZGViYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBTaWRlYmFyQ29udGFpbmVyQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHJ2LXNpZGViYXItY29udGFpbmVyXG4gICAgICBbaXNPcGVuXT1cInN0YXRlLnRvY1NpZGViYXJPcGVuKClcIlxuICAgICAgdGl0bGU9XCJEb2N1bWVudCBNYXBcIlxuICAgICAgKGNsb3NlZCk9XCJzdGF0ZS50b2dnbGVUb2NTaWRlYmFyKClcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJ2LXRvYy10cmVlXCI+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdG9jSXRlbXM7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnYtdG9jLWl0ZW1cIlxuICAgICAgICAgICAgICAgW2NsYXNzLnJ2LXRvYy1hY3RpdmVdPVwiaXRlbS5wYWdlSW5kZXggPT09IHN0YXRlLmN1cnJlbnRQYWdlKCkgLSAxXCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiMTIgKyBpdGVtLmxldmVsICogMTZcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJydi10b2MtaWNvblwiPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ2LXRvYy1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ2LXRvYy1wYWdlXCI+e3sgaXRlbS5wYWdlSW5kZXggKyAxIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICh0b2NJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnYtdG9jLWVtcHR5XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+dG9jPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxwPk5vIGRvY3VtZW50IHN0cnVjdHVyZSBmb3VuZDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICA8L3J2LXNpZGViYXItY29udGFpbmVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLnJ2LXRvYy10cmVlIHtcbiAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgIH1cblxuICAgIC5ydi10b2MtaXRlbSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJzIGVhc2U7XG4gICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC5ydi10b2MtaXRlbTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoLnJ2LXRoZW1lLWRhcmspIC5ydi10b2MtaXRlbTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpO1xuICAgIH1cblxuICAgIC5ydi10b2MtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjUsIDExOCwgMjEwLCAwLjA2KSAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICMxOTc2ZDI7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXRvYy1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxMDAsIDE4MSwgMjQ2LCAwLjEpICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzY0YjVmNjtcbiAgICB9XG5cbiAgICAucnYtdG9jLWljb24ge1xuICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgaGVpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICBjb2xvcjogIzg4ODtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoLnJ2LXRoZW1lLWRhcmspIC5ydi10b2MtaWNvbiB7XG4gICAgICBjb2xvcjogIzg4ODg5OTtcbiAgICB9XG5cbiAgICAucnYtdG9jLWFjdGl2ZSAucnYtdG9jLWljb24ge1xuICAgICAgY29sb3I6ICMxOTc2ZDI7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dCgucnYtdGhlbWUtZGFyaykgLnJ2LXRvYy1hY3RpdmUgLnJ2LXRvYy1pY29uIHtcbiAgICAgIGNvbG9yOiAjNjRiNWY2O1xuICAgIH1cblxuICAgIC5ydi10b2MtbGFiZWwge1xuICAgICAgZmxleDogMTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBjb2xvcjogIzMzMztcbiAgICB9XG5cbiAgICA6aG9zdC1jb250ZXh0KC5ydi10aGVtZS1kYXJrKSAucnYtdG9jLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAjZDBkMGQ4O1xuICAgIH1cblxuICAgIC5ydi10b2MtYWN0aXZlIC5ydi10b2MtbGFiZWwge1xuICAgICAgY29sb3I6ICMxOTc2ZDI7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoLnJ2LXRoZW1lLWRhcmspIC5ydi10b2MtYWN0aXZlIC5ydi10b2MtbGFiZWwge1xuICAgICAgY29sb3I6ICM2NGI1ZjY7XG4gICAgfVxuXG4gICAgLnJ2LXRvYy1wYWdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBtaW4td2lkdGg6IDE4cHg7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICA6aG9zdC1jb250ZXh0KC5ydi10aGVtZS1kYXJrKSAucnYtdG9jLXBhZ2Uge1xuICAgICAgY29sb3I6ICM3Nzc7XG4gICAgfVxuXG4gICAgLnJ2LXRvYy1lbXB0eSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAzMnB4IDE2cHg7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICAgIGdhcDogOHB4O1xuICAgIH1cblxuICAgIC5ydi10b2MtZW1wdHkgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgIC5ydi10b2MtZW1wdHkgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBUb2NTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcGFnZXM6IFBhZ2VEYXRhW10gPSBbXTtcblxuICBwYWdlU2VsZWN0ZWQgPSBvdXRwdXQ8bnVtYmVyPigpO1xuXG4gIHN0YXRlID0gaW5qZWN0KFZpZXdlclN0YXRlU2VydmljZSk7XG5cbiAgdG9jSXRlbXM6IFRvY0l0ZW1bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncGFnZXMnXSkge1xuICAgICAgdGhpcy5idWlsZFRvYygpO1xuICAgIH1cbiAgfVxuXG4gIG9uSXRlbUNsaWNrKGl0ZW06IFRvY0l0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLmdvVG9QYWdlKGl0ZW0ucGFnZUluZGV4ICsgMSk7XG4gICAgdGhpcy5wYWdlU2VsZWN0ZWQuZW1pdChpdGVtLnBhZ2VJbmRleCArIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRvYygpOiB2b2lkIHtcbiAgICB0aGlzLnRvY0l0ZW1zID0gW107XG5cbiAgICBpZiAoIXRoaXMucGFnZXMgfHwgdGhpcy5wYWdlcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgcGFnZSBvZiB0aGlzLnBhZ2VzKSB7XG4gICAgICBjb25zdCBjb21wb25lbnRzID0gW1xuICAgICAgICAuLi4ocGFnZS5oZWFkZXI/LmNvbXBvbmVudHMgfHwgW10pLFxuICAgICAgICAuLi5wYWdlLmNvbXBvbmVudHMsXG4gICAgICAgIC4uLihwYWdlLmZvb3Rlcj8uY29tcG9uZW50cyB8fCBbXSksXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbXAgb2YgY29tcG9uZW50cykge1xuICAgICAgICBjb25zdCB0b2NJdGVtID0gdGhpcy5jb21wb25lbnRUb1RvY0l0ZW0oY29tcCwgcGFnZS5pbmRleCk7XG4gICAgICAgIGlmICh0b2NJdGVtKSB7XG4gICAgICAgICAgdGhpcy50b2NJdGVtcy5wdXNoKHRvY0l0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRUb1RvY0l0ZW0oY29tcDogQ29tcG9uZW50TW9kZWwsIHBhZ2VJbmRleDogbnVtYmVyKTogVG9jSXRlbSB8IG51bGwge1xuICAgIC8vIE9ubHkgY3JlYXRlIFRPQyBpdGVtcyBmb3IgdGV4dC9maWVsZCBjb21wb25lbnRzIHdpdGggY2VydGFpbiBjaGFyYWN0ZXJpc3RpY3NcbiAgICBpZiAoY29tcC50eXBlICE9PSAndGV4dCcgJiYgY29tcC50eXBlICE9PSAnZmllbGQnKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb21wLmNvbnRlbnQgfHwgJyc7XG4gICAgaWYgKCFjb250ZW50LnRyaW0oKSkgcmV0dXJuIG51bGw7XG5cbiAgICAvLyBEZXRlY3QgaGVhZGluZ3MgYnkgZm9udCBzaXplIG9yIGJvbGQgc3R5bGVcbiAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMucGFyc2VGb250U2l6ZShjb21wLnN0eWxlPy5mb250U2l6ZSk7XG4gICAgY29uc3QgaXNCb2xkID0gY29tcC5zdHlsZT8uZm9udFdlaWdodCA9PT0gJ2JvbGQnIHx8IGNvbXAuc3R5bGU/LmZvbnRXZWlnaHQgPT09ICc3MDAnO1xuICAgIGNvbnN0IGlzTGFyZ2UgPSBmb250U2l6ZSA+PSAxNjtcbiAgICBjb25zdCBpc01lZGl1bSA9IGZvbnRTaXplID49IDEzO1xuXG4gICAgLy8gT25seSBpbmNsdWRlIHRleHQgdGhhdCBsb29rcyBsaWtlIGEgaGVhZGluZ1xuICAgIGlmICghaXNMYXJnZSAmJiAhaXNCb2xkKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBsZXZlbCA9IDI7XG4gICAgbGV0IGljb24gPSAndGV4dF9maWVsZHMnO1xuXG4gICAgaWYgKGlzTGFyZ2UgJiYgaXNCb2xkKSB7XG4gICAgICBsZXZlbCA9IDA7XG4gICAgICBpY29uID0gJ3RpdGxlJztcbiAgICB9IGVsc2UgaWYgKGlzTGFyZ2UpIHtcbiAgICAgIGxldmVsID0gMTtcbiAgICAgIGljb24gPSAndGV4dF9maWVsZHMnO1xuICAgIH0gZWxzZSBpZiAoaXNCb2xkKSB7XG4gICAgICBsZXZlbCA9IDI7XG4gICAgICBpY29uID0gJ3Nob3J0X3RleHQnO1xuICAgIH1cblxuICAgIC8vIENsZWFuIGNvbnRlbnQgLSByZW1vdmUgSFRNTCB0YWdzIGFuZCB0ZW1wbGF0ZSB0b2tlbnNcbiAgICBjb25zdCBsYWJlbCA9IGNvbnRlbnRcbiAgICAgIC5yZXBsYWNlKC88W14+XSo+L2csICcnKVxuICAgICAgLnJlcGxhY2UoL1xce1xce1tefV0qXFx9XFx9L2csICcnKVxuICAgICAgLnRyaW0oKTtcblxuICAgIGlmICghbGFiZWwgfHwgbGFiZWwubGVuZ3RoIDwgMikgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbXAuaWQsXG4gICAgICBsYWJlbDogbGFiZWwuc3Vic3RyaW5nKDAsIDYwKSArIChsYWJlbC5sZW5ndGggPiA2MCA/ICcuLi4nIDogJycpLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgbGV2ZWwsXG4gICAgICBpY29uLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRm9udFNpemUoZm9udFNpemU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG4gICAgaWYgKCFmb250U2l6ZSkgcmV0dXJuIDExO1xuICAgIGNvbnN0IG1hdGNoID0gZm9udFNpemUubWF0Y2goLyhcXGQrKD86XFwuXFxkKyk/KS8pO1xuICAgIHJldHVybiBtYXRjaCA/IHBhcnNlRmxvYXQobWF0Y2hbMV0pIDogMTE7XG4gIH1cbn1cbiJdfQ==
|