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.
Files changed (76) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/components/chart-renderer/chart-renderer.component.mjs +75 -0
  3. package/esm2022/lib/components/complex-table-renderer/complex-table-renderer.component.mjs +155 -0
  4. package/esm2022/lib/components/component-renderer/component-renderer.component.mjs +158 -0
  5. package/esm2022/lib/components/container-renderer/container-renderer.component.mjs +53 -0
  6. package/esm2022/lib/components/image-renderer/image-renderer.component.mjs +67 -0
  7. package/esm2022/lib/components/line-renderer/line-renderer.component.mjs +94 -0
  8. package/esm2022/lib/components/list-renderer/list-renderer.component.mjs +96 -0
  9. package/esm2022/lib/components/qrcode-renderer/qrcode-renderer.component.mjs +67 -0
  10. package/esm2022/lib/components/shape-renderer/shape-renderer.component.mjs +133 -0
  11. package/esm2022/lib/components/table-renderer/table-renderer.component.mjs +148 -0
  12. package/esm2022/lib/components/text-renderer/text-renderer.component.mjs +33 -0
  13. package/esm2022/lib/constants/page-sizes.mjs +3 -0
  14. package/esm2022/lib/constants/report-tokens.mjs +21 -0
  15. package/esm2022/lib/layout/report-band.component.mjs +33 -0
  16. package/esm2022/lib/layout/report-page.component.mjs +159 -0
  17. package/esm2022/lib/models/component.model.mjs +3 -0
  18. package/esm2022/lib/models/report-template.model.mjs +19 -0
  19. package/esm2022/lib/page-container/page-container.component.mjs +248 -0
  20. package/esm2022/lib/report-viewer.component.mjs +393 -0
  21. package/esm2022/lib/services/chart-options-builder.service.mjs +749 -0
  22. package/esm2022/lib/services/data-resolver.service.mjs +385 -0
  23. package/esm2022/lib/services/export.service.mjs +82 -0
  24. package/esm2022/lib/services/formatting.service.mjs +59 -0
  25. package/esm2022/lib/services/print.service.mjs +133 -0
  26. package/esm2022/lib/services/search.service.mjs +117 -0
  27. package/esm2022/lib/services/style-mapper.service.mjs +247 -0
  28. package/esm2022/lib/services/template-normalizer.service.mjs +213 -0
  29. package/esm2022/lib/services/template-validator.service.mjs +293 -0
  30. package/esm2022/lib/services/token-resolver.service.mjs +14 -0
  31. package/esm2022/lib/services/viewer-state.service.mjs +155 -0
  32. package/esm2022/lib/sidebar/sidebar-container.component.mjs +86 -0
  33. package/esm2022/lib/sidebar/thumbnail-sidebar.component.mjs +110 -0
  34. package/esm2022/lib/sidebar/toc-sidebar.component.mjs +155 -0
  35. package/esm2022/lib/toolbar/viewer-toolbar.component.mjs +486 -0
  36. package/esm2022/public-api.mjs +43 -0
  37. package/esm2022/snap-report-viewer.mjs +5 -0
  38. package/fesm2022/snap-report-viewer.mjs +5110 -0
  39. package/fesm2022/snap-report-viewer.mjs.map +1 -0
  40. package/index.d.ts +5 -0
  41. package/lib/components/chart-renderer/chart-renderer.component.d.ts +14 -0
  42. package/lib/components/complex-table-renderer/complex-table-renderer.component.d.ts +17 -0
  43. package/lib/components/component-renderer/component-renderer.component.d.ts +14 -0
  44. package/lib/components/container-renderer/container-renderer.component.d.ts +11 -0
  45. package/lib/components/image-renderer/image-renderer.component.d.ts +14 -0
  46. package/lib/components/line-renderer/line-renderer.component.d.ts +10 -0
  47. package/lib/components/list-renderer/list-renderer.component.d.ts +16 -0
  48. package/lib/components/qrcode-renderer/qrcode-renderer.component.d.ts +16 -0
  49. package/lib/components/shape-renderer/shape-renderer.component.d.ts +11 -0
  50. package/lib/components/table-renderer/table-renderer.component.d.ts +20 -0
  51. package/lib/components/text-renderer/text-renderer.component.d.ts +13 -0
  52. package/lib/constants/page-sizes.d.ts +2 -0
  53. package/lib/constants/report-tokens.d.ts +8 -0
  54. package/lib/layout/report-band.component.d.ts +10 -0
  55. package/lib/layout/report-page.component.d.ts +21 -0
  56. package/lib/models/component.model.d.ts +315 -0
  57. package/lib/models/report-template.model.d.ts +122 -0
  58. package/lib/page-container/page-container.component.d.ts +29 -0
  59. package/lib/report-viewer.component.d.ts +51 -0
  60. package/lib/services/chart-options-builder.service.d.ts +31 -0
  61. package/lib/services/data-resolver.service.d.ts +27 -0
  62. package/lib/services/export.service.d.ts +11 -0
  63. package/lib/services/formatting.service.d.ts +10 -0
  64. package/lib/services/print.service.d.ts +12 -0
  65. package/lib/services/search.service.d.ts +13 -0
  66. package/lib/services/style-mapper.service.d.ts +14 -0
  67. package/lib/services/template-normalizer.service.d.ts +24 -0
  68. package/lib/services/template-validator.service.d.ts +19 -0
  69. package/lib/services/token-resolver.service.d.ts +6 -0
  70. package/lib/services/viewer-state.service.d.ts +49 -0
  71. package/lib/sidebar/sidebar-container.component.d.ts +8 -0
  72. package/lib/sidebar/thumbnail-sidebar.component.d.ts +15 -0
  73. package/lib/sidebar/toc-sidebar.component.d.ts +17 -0
  74. package/lib/toolbar/viewer-toolbar.component.d.ts +17 -0
  75. package/package.json +43 -0
  76. package/public-api.d.ts +35 -0
@@ -0,0 +1,29 @@
1
+ import { QueryList, ElementRef, AfterViewInit, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { GlobalStyles, PageData } from '../models/report-template.model';
3
+ import { ViewerStateService } from '../services/viewer-state.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class PageContainerComponent implements AfterViewInit, OnDestroy, OnChanges {
6
+ pagesData: PageData[];
7
+ pageWidth: number;
8
+ pageHeight: number;
9
+ globalStyles: GlobalStyles;
10
+ data: any;
11
+ reportTitle: string;
12
+ pageContainerRef?: ElementRef<HTMLElement>;
13
+ pageWrapperRefs?: QueryList<ElementRef<HTMLElement>>;
14
+ state: ViewerStateService;
15
+ private intersectionObserver?;
16
+ zoomTransform: import("@angular/core").Signal<string>;
17
+ get currentPageData(): PageData | null;
18
+ ngOnChanges(changes: SimpleChanges): void;
19
+ ngAfterViewInit(): void;
20
+ ngOnDestroy(): void;
21
+ onScroll(_event: Event): void;
22
+ scrollToPage(pageIndex: number): void;
23
+ calculateFitZoom(): void;
24
+ getPageElement(pageIndex: number): HTMLElement | null;
25
+ private setupIntersectionObserver;
26
+ observePages(): void;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageContainerComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageContainerComponent, "rv-page-container", never, { "pagesData": { "alias": "pagesData"; "required": false; }; "pageWidth": { "alias": "pageWidth"; "required": false; }; "pageHeight": { "alias": "pageHeight"; "required": false; }; "globalStyles": { "alias": "globalStyles"; "required": false; }; "data": { "alias": "data"; "required": false; }; "reportTitle": { "alias": "reportTitle"; "required": false; }; }, {}, never, never, true, never>;
29
+ }
@@ -0,0 +1,51 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
2
+ import { ReportTemplate, InvoiceSchema, ReportSection, GlobalStyles, PageSetup, PageData, ExportEvent } from './models/report-template.model';
3
+ import { ComponentModel } from './models/component.model';
4
+ import { ViewerStateService } from './services/viewer-state.service';
5
+ import { PageContainerComponent } from './page-container/page-container.component';
6
+ import * as i0 from "@angular/core";
7
+ export declare class ReportViewerComponent implements OnChanges {
8
+ template: ReportTemplate | InvoiceSchema | any | null;
9
+ data: any;
10
+ zoom: number;
11
+ pageNumber: number;
12
+ totalPages: number;
13
+ showToolbar: boolean;
14
+ toolbarTheme: 'light' | 'dark';
15
+ initialViewMode: 'single' | 'continuous';
16
+ enableSearch: boolean;
17
+ enableExport: boolean;
18
+ enablePrint: boolean;
19
+ pageChange: EventEmitter<number>;
20
+ zoomChange: EventEmitter<number>;
21
+ printRequest: EventEmitter<void>;
22
+ exportRequest: EventEmitter<ExportEvent>;
23
+ fullScreenChange: EventEmitter<boolean>;
24
+ viewModeChange: EventEmitter<string>;
25
+ themeChange: EventEmitter<string>;
26
+ viewerRootRef?: ElementRef<HTMLElement>;
27
+ pageContainerRef?: PageContainerComponent;
28
+ state: ViewerStateService;
29
+ private searchService;
30
+ private exportService;
31
+ private printService;
32
+ private normalizer;
33
+ pageWidth: import("@angular/core").WritableSignal<number>;
34
+ pageHeight: import("@angular/core").WritableSignal<number>;
35
+ headerSection: import("@angular/core").WritableSignal<ReportSection | undefined>;
36
+ footerSection: import("@angular/core").WritableSignal<ReportSection | undefined>;
37
+ bodyComponents: import("@angular/core").WritableSignal<ComponentModel[]>;
38
+ currentGlobalStyles: import("@angular/core").WritableSignal<GlobalStyles>;
39
+ reportTitle: import("@angular/core").WritableSignal<string>;
40
+ currentPageSetup: import("@angular/core").WritableSignal<PageSetup>;
41
+ pagesData: import("@angular/core").Signal<PageData[]>;
42
+ constructor();
43
+ ngOnChanges(changes: SimpleChanges): void;
44
+ onPrint(): void;
45
+ onExport(format: string): void;
46
+ onSearchQueryChanged(query: string): void;
47
+ onPageSelected(page: number): void;
48
+ private parseTemplate;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<ReportViewerComponent, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<ReportViewerComponent, "rv-report-viewer", never, { "template": { "alias": "template"; "required": false; }; "data": { "alias": "data"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "pageNumber": { "alias": "pageNumber"; "required": false; }; "totalPages": { "alias": "totalPages"; "required": false; }; "showToolbar": { "alias": "showToolbar"; "required": false; }; "toolbarTheme": { "alias": "toolbarTheme"; "required": false; }; "initialViewMode": { "alias": "initialViewMode"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "enableExport": { "alias": "enableExport"; "required": false; }; "enablePrint": { "alias": "enablePrint"; "required": false; }; }, { "pageChange": "pageChange"; "zoomChange": "zoomChange"; "printRequest": "printRequest"; "exportRequest": "exportRequest"; "fullScreenChange": "fullScreenChange"; "viewModeChange": "viewModeChange"; "themeChange": "themeChange"; }, never, never, true, never>;
51
+ }
@@ -0,0 +1,31 @@
1
+ import type { EChartsOption } from 'echarts';
2
+ import { ChartConfig } from '../models/component.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ChartOptionsBuilderService {
5
+ buildOptions(config: ChartConfig, data?: any[]): EChartsOption;
6
+ generateSampleData(config: ChartConfig): any[];
7
+ resolveChartData(rawData: any, config: ChartConfig): any[];
8
+ private buildCartesianChart;
9
+ private buildPieChart;
10
+ private buildScatterChart;
11
+ private buildRadarChart;
12
+ private buildFunnelChart;
13
+ private buildGaugeChart;
14
+ private buildWaterfallChart;
15
+ private addTrendlines;
16
+ private extractCategories;
17
+ private extractSeriesValues;
18
+ private extractPieData;
19
+ private buildPercentStackedSeries;
20
+ private getFieldValue;
21
+ private getNestedValue;
22
+ private findFirstObjectArray;
23
+ private aggregate;
24
+ private linearRegression;
25
+ private exponentialRegression;
26
+ private polynomialRegression;
27
+ private polyFit;
28
+ private movingAverage;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChartOptionsBuilderService, never>;
30
+ static ɵprov: i0.ɵɵInjectableDeclaration<ChartOptionsBuilderService>;
31
+ }
@@ -0,0 +1,27 @@
1
+ import { ComponentModel, TableColumn } from '../models/component.model';
2
+ import { FormattingService } from './formatting.service';
3
+ import { TokenResolverService } from './token-resolver.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class DataResolverService {
6
+ private formatting;
7
+ private tokenResolver;
8
+ constructor(formatting: FormattingService, tokenResolver: TokenResolverService);
9
+ resolveContent(component: ComponentModel, data: any, pageNum: number, totalPages: number, reportTitle: string): string;
10
+ resolveFieldValue(data: any, path: string): any;
11
+ resolvePlaceholders(content: string, data: any): string;
12
+ getFieldValue(data: any, path: string): any;
13
+ resolveTableData(component: ComponentModel, data: any): any[];
14
+ resolveListData(component: ComponentModel, data: any): any[];
15
+ findFirstObjectArray(data: any, path?: string): any[];
16
+ shouldShowDynamicTable(component: ComponentModel, data: any): boolean;
17
+ getDynamicTableHeaders(component: ComponentModel, data: any): string[];
18
+ getDynamicCellValue(row: any, field: string): string;
19
+ formatCellValue(row: any, col: TableColumn): string;
20
+ formatListItem(item: any, component: ComponentModel): string;
21
+ resolveListHeader(component: ComponentModel, data: any): string;
22
+ getBulletChar(bulletStyle: string | undefined, index: number): string;
23
+ getNestedValue(obj: any, path: string): any;
24
+ getNestedItemValue(item: any, path: string): any;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataResolverService, never>;
26
+ static ɵprov: i0.ɵɵInjectableDeclaration<DataResolverService>;
27
+ }
@@ -0,0 +1,11 @@
1
+ import { PrintService } from './print.service';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ExportService {
4
+ private printService;
5
+ constructor(printService: PrintService);
6
+ exportToPDF(viewerElement: HTMLElement): void;
7
+ exportToPNG(pageElement: HTMLElement, fileName?: string): Promise<void>;
8
+ private exportToPNGFallback;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExportService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<ExportService>;
11
+ }
@@ -0,0 +1,10 @@
1
+ import { DataBinding } from '../models/component.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class FormattingService {
4
+ formatValue(value: any, binding: DataBinding): string;
5
+ formatDate(date: Date, format: string): string;
6
+ formatCurrency(value: number, symbol?: string, decimals?: number): string;
7
+ formatNumber(value: number, decimals?: number): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormattingService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<FormattingService>;
10
+ }
@@ -0,0 +1,12 @@
1
+ import { PageSetup } from '../models/report-template.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PrintService {
4
+ private printStyleId;
5
+ print(viewerElement: HTMLElement, pageSetup?: PageSetup): void;
6
+ private injectPrintStyles;
7
+ private buildPageRule;
8
+ private getPageSizeCSS;
9
+ private cleanupPrintStyles;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrintService, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<PrintService>;
12
+ }
@@ -0,0 +1,13 @@
1
+ import { SearchMatch } from '../models/report-template.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SearchService {
4
+ private highlights;
5
+ search(query: string, container: HTMLElement): SearchMatch[];
6
+ highlightCurrentMatch(index: number): void;
7
+ clearHighlights(): void;
8
+ private applyHighlights;
9
+ private getPageIndex;
10
+ private escapeRegex;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<SearchService, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<SearchService>;
13
+ }
@@ -0,0 +1,14 @@
1
+ import { ComponentModel, StyleProperties, TableColumn, ComplexTableCell, ComplexTableConfig } from '../models/component.model';
2
+ import { ReportSection } from '../models/report-template.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class StyleMapperService {
5
+ mapComponentStyles(style: StyleProperties): Record<string, string>;
6
+ mapTableStyle(component: ComponentModel): Record<string, string>;
7
+ mapHeaderStyle(component: ComponentModel, colIndex: number, col?: TableColumn): Record<string, string>;
8
+ mapRowStyle(component: ComponentModel, rowIndex: number, totalRows: number): Record<string, string>;
9
+ mapCellStyle(component: ComponentModel, colIndex: number, col?: TableColumn): Record<string, string>;
10
+ mapBandStyle(section: ReportSection): Record<string, string>;
11
+ mapComplexCellStyle(cell: ComplexTableCell, config: ComplexTableConfig, isHeader: boolean): Record<string, string>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<StyleMapperService, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<StyleMapperService>;
14
+ }
@@ -0,0 +1,24 @@
1
+ import { ReportTemplate } from '../models/report-template.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TemplateNormalizerService {
4
+ /**
5
+ * Normalizes a template JSON by filling in missing optional fields with defaults.
6
+ * This ensures the template works correctly in both the Report Viewer and Report Designer.
7
+ * The input object is not mutated; a new object is returned.
8
+ */
9
+ normalize(template: any): ReportTemplate;
10
+ private normalizeMetadata;
11
+ private normalizePageSetup;
12
+ private normalizeGlobalStyles;
13
+ private normalizeSection;
14
+ private normalizeComponents;
15
+ private normalizeComponent;
16
+ private normalizePosition;
17
+ private normalizeSize;
18
+ private normalizeComponentMetadata;
19
+ private normalizeDataBinding;
20
+ private createEmptyTemplate;
21
+ private generateId;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<TemplateNormalizerService, never>;
23
+ static ɵprov: i0.ɵɵInjectableDeclaration<TemplateNormalizerService>;
24
+ }
@@ -0,0 +1,19 @@
1
+ import { ValidationResult } from '../models/report-template.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TemplateValidatorService {
4
+ /**
5
+ * Validates a template JSON object and returns detailed errors/warnings.
6
+ * Use this to check compatibility before passing to ReportViewerComponent.
7
+ */
8
+ validate(template: any): ValidationResult;
9
+ /**
10
+ * Validates a raw JSON string. Returns parse errors if invalid JSON.
11
+ */
12
+ validateJSON(json: string): ValidationResult;
13
+ private validatePageSetup;
14
+ private validateComponent;
15
+ private validateTypeSpecific;
16
+ private validateSection;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TemplateValidatorService, never>;
18
+ static ɵprov: i0.ɵɵInjectableDeclaration<TemplateValidatorService>;
19
+ }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class TokenResolverService {
3
+ resolve(content: string, pageNum: number, totalPages: number, reportTitle: string): string;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<TokenResolverService, never>;
5
+ static ɵprov: i0.ɵɵInjectableDeclaration<TokenResolverService>;
6
+ }
@@ -0,0 +1,49 @@
1
+ import { SearchMatch } from '../models/report-template.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ViewerStateService {
4
+ readonly currentPage: import("@angular/core").WritableSignal<number>;
5
+ readonly totalPages: import("@angular/core").WritableSignal<number>;
6
+ readonly zoom: import("@angular/core").WritableSignal<number>;
7
+ readonly fitMode: import("@angular/core").WritableSignal<"none" | "width" | "page">;
8
+ readonly viewMode: import("@angular/core").WritableSignal<"single" | "continuous">;
9
+ readonly isFullScreen: import("@angular/core").WritableSignal<boolean>;
10
+ readonly tocSidebarOpen: import("@angular/core").WritableSignal<boolean>;
11
+ readonly thumbnailSidebarOpen: import("@angular/core").WritableSignal<boolean>;
12
+ readonly searchQuery: import("@angular/core").WritableSignal<string>;
13
+ readonly searchMatches: import("@angular/core").WritableSignal<SearchMatch[]>;
14
+ readonly currentMatchIndex: import("@angular/core").WritableSignal<number>;
15
+ readonly searchOpen: import("@angular/core").WritableSignal<boolean>;
16
+ readonly ribbonTheme: import("@angular/core").WritableSignal<"light" | "dark">;
17
+ readonly pageDisplay: import("@angular/core").Signal<string>;
18
+ readonly zoomDisplay: import("@angular/core").Signal<string>;
19
+ readonly matchDisplay: import("@angular/core").Signal<string>;
20
+ readonly isFirstPage: import("@angular/core").Signal<boolean>;
21
+ readonly isLastPage: import("@angular/core").Signal<boolean>;
22
+ readonly hasSidebarOpen: import("@angular/core").Signal<boolean>;
23
+ readonly isDarkTheme: import("@angular/core").Signal<boolean>;
24
+ goToPage(page: number): void;
25
+ nextPage(): void;
26
+ previousPage(): void;
27
+ firstPage(): void;
28
+ lastPage(): void;
29
+ setZoom(level: number): void;
30
+ zoomIn(): void;
31
+ zoomOut(): void;
32
+ fitToWidth(): void;
33
+ fitToPage(): void;
34
+ toggleViewMode(): void;
35
+ setViewMode(mode: 'single' | 'continuous'): void;
36
+ toggleFullScreen(): void;
37
+ toggleTocSidebar(): void;
38
+ toggleThumbnailSidebar(): void;
39
+ closeSidebars(): void;
40
+ setSearchQuery(query: string): void;
41
+ nextMatch(): void;
42
+ previousMatch(): void;
43
+ clearSearch(): void;
44
+ toggleSearch(): void;
45
+ toggleTheme(): void;
46
+ setTheme(theme: 'light' | 'dark'): void;
47
+ static ɵfac: i0.ɵɵFactoryDeclaration<ViewerStateService, never>;
48
+ static ɵprov: i0.ɵɵInjectableDeclaration<ViewerStateService>;
49
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SidebarContainerComponent {
3
+ isOpen: boolean;
4
+ title: string;
5
+ closed: import("@angular/core").OutputEmitterRef<void>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidebarContainerComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarContainerComponent, "rv-sidebar-container", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
8
+ }
@@ -0,0 +1,15 @@
1
+ import { PageData, GlobalStyles } from '../models/report-template.model';
2
+ import { ViewerStateService } from '../services/viewer-state.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ThumbnailSidebarComponent {
5
+ pages: PageData[];
6
+ pageWidth: number;
7
+ pageHeight: number;
8
+ globalStyles: GlobalStyles;
9
+ data: any;
10
+ pageSelected: import("@angular/core").OutputEmitterRef<number>;
11
+ state: ViewerStateService;
12
+ onPageClick(page: number): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ThumbnailSidebarComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ThumbnailSidebarComponent, "rv-thumbnail-sidebar", never, { "pages": { "alias": "pages"; "required": false; }; "pageWidth": { "alias": "pageWidth"; "required": false; }; "pageHeight": { "alias": "pageHeight"; "required": false; }; "globalStyles": { "alias": "globalStyles"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "pageSelected": "pageSelected"; }, never, never, true, never>;
15
+ }
@@ -0,0 +1,17 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { PageData, TocItem } from '../models/report-template.model';
3
+ import { ViewerStateService } from '../services/viewer-state.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class TocSidebarComponent implements OnChanges {
6
+ pages: PageData[];
7
+ pageSelected: import("@angular/core").OutputEmitterRef<number>;
8
+ state: ViewerStateService;
9
+ tocItems: TocItem[];
10
+ ngOnChanges(changes: SimpleChanges): void;
11
+ onItemClick(item: TocItem): void;
12
+ private buildToc;
13
+ private componentToTocItem;
14
+ private parseFontSize;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<TocSidebarComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<TocSidebarComponent, "rv-toc-sidebar", never, { "pages": { "alias": "pages"; "required": false; }; }, { "pageSelected": "pageSelected"; }, never, never, true, never>;
17
+ }
@@ -0,0 +1,17 @@
1
+ import { ElementRef, AfterViewInit } from '@angular/core';
2
+ import { ViewerStateService } from '../services/viewer-state.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ViewerToolbarComponent implements AfterViewInit {
5
+ state: ViewerStateService;
6
+ printClicked: import("@angular/core").OutputEmitterRef<void>;
7
+ exportClicked: import("@angular/core").OutputEmitterRef<string>;
8
+ searchQueryChanged: import("@angular/core").OutputEmitterRef<string>;
9
+ searchInputRef?: ElementRef<HTMLInputElement>;
10
+ zoomLevels: number[];
11
+ ngAfterViewInit(): void;
12
+ openSearch(): void;
13
+ closeSearch(): void;
14
+ onSearchChange(query: string): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<ViewerToolbarComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<ViewerToolbarComponent, "rv-viewer-toolbar", never, {}, { "printClicked": "printClicked"; "exportClicked": "exportClicked"; "searchQueryChanged": "searchQueryChanged"; }, never, never, true, never>;
17
+ }
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "snap-report-viewer",
3
+ "version": "0.1.0",
4
+ "description": "Angular report viewer component that renders report templates with bound data. Design templates with the Report Designer, then display them anywhere with this viewer.",
5
+ "author": "Alixdra Nexus",
6
+ "peerDependencies": {
7
+ "@angular/common": "^17.0.0",
8
+ "@angular/core": "^17.0.0",
9
+ "@angular/animations": "^17.0.0",
10
+ "@angular/material": "^17.0.0",
11
+ "@angular/cdk": "^17.0.0",
12
+ "echarts": "^5.4.0",
13
+ "ngx-echarts": "^17.0.0",
14
+ "qrcode": "^1.5.0"
15
+ },
16
+ "dependencies": {
17
+ "tslib": "^2.3.0"
18
+ },
19
+ "keywords": [
20
+ "angular",
21
+ "report",
22
+ "viewer",
23
+ "template",
24
+ "invoice",
25
+ "report-designer",
26
+ "data-binding"
27
+ ],
28
+ "license": "MIT",
29
+ "sideEffects": false,
30
+ "module": "fesm2022/snap-report-viewer.mjs",
31
+ "typings": "index.d.ts",
32
+ "exports": {
33
+ "./package.json": {
34
+ "default": "./package.json"
35
+ },
36
+ ".": {
37
+ "types": "./index.d.ts",
38
+ "esm2022": "./esm2022/snap-report-viewer.mjs",
39
+ "esm": "./esm2022/snap-report-viewer.mjs",
40
+ "default": "./fesm2022/snap-report-viewer.mjs"
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,35 @@
1
+ export { ReportViewerComponent } from './lib/report-viewer.component';
2
+ export * from './lib/models/component.model';
3
+ export * from './lib/models/report-template.model';
4
+ export { DataResolverService } from './lib/services/data-resolver.service';
5
+ export { FormattingService } from './lib/services/formatting.service';
6
+ export { ChartOptionsBuilderService } from './lib/services/chart-options-builder.service';
7
+ export { TokenResolverService } from './lib/services/token-resolver.service';
8
+ export { StyleMapperService } from './lib/services/style-mapper.service';
9
+ export { TemplateValidatorService } from './lib/services/template-validator.service';
10
+ export { TemplateNormalizerService } from './lib/services/template-normalizer.service';
11
+ export { ViewerStateService } from './lib/services/viewer-state.service';
12
+ export { SearchService } from './lib/services/search.service';
13
+ export { ExportService } from './lib/services/export.service';
14
+ export { PrintService } from './lib/services/print.service';
15
+ export { REPORT_TOKENS, resolveTokens } from './lib/constants/report-tokens';
16
+ export type { ReportToken } from './lib/constants/report-tokens';
17
+ export { MM_TO_PX, PX_TO_MM } from './lib/constants/page-sizes';
18
+ export { ReportPageComponent } from './lib/layout/report-page.component';
19
+ export { ReportBandComponent } from './lib/layout/report-band.component';
20
+ export { ViewerToolbarComponent } from './lib/toolbar/viewer-toolbar.component';
21
+ export { PageContainerComponent } from './lib/page-container/page-container.component';
22
+ export { SidebarContainerComponent } from './lib/sidebar/sidebar-container.component';
23
+ export { ThumbnailSidebarComponent } from './lib/sidebar/thumbnail-sidebar.component';
24
+ export { TocSidebarComponent } from './lib/sidebar/toc-sidebar.component';
25
+ export { ComponentRendererComponent } from './lib/components/component-renderer/component-renderer.component';
26
+ export { TextRendererComponent } from './lib/components/text-renderer/text-renderer.component';
27
+ export { TableRendererComponent } from './lib/components/table-renderer/table-renderer.component';
28
+ export { ChartRendererComponent } from './lib/components/chart-renderer/chart-renderer.component';
29
+ export { ImageRendererComponent } from './lib/components/image-renderer/image-renderer.component';
30
+ export { QrcodeRendererComponent } from './lib/components/qrcode-renderer/qrcode-renderer.component';
31
+ export { ListRendererComponent } from './lib/components/list-renderer/list-renderer.component';
32
+ export { LineRendererComponent } from './lib/components/line-renderer/line-renderer.component';
33
+ export { ShapeRendererComponent } from './lib/components/shape-renderer/shape-renderer.component';
34
+ export { ContainerRendererComponent } from './lib/components/container-renderer/container-renderer.component';
35
+ export { ComplexTableRendererComponent } from './lib/components/complex-table-renderer/complex-table-renderer.component';