import * as i0 from '@angular/core';
import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, Type, ViewContainerRef } from '@angular/core';
import { ReportDesignerOptions, ReportDesignerApi, ReportDesignerInstance } from '@broadpaper/editor';
export { ExportContext, FeatureFlags, ReportDesignerInstance, ReportDesignerOptions, SampleDataSet } from '@broadpaper/editor';
import { PreviewOptions, LayoutResult, ReportViewerOptions, ReportViewer } from '@broadpaper/renderer';
import { ReportTemplate, AnyVersionTemplate, DataSource, Theme, BlockDefinition, Issue, ReportData, InspectorApi, InspectorComponent } from '@broadpaper/core';
/**
* The BroadPaper designer as an Angular standalone component.
*
*
*
* Runs outside Angular's zone so editor interactions never trigger host change detection.
*/
declare class ReportDesignerComponent implements OnInit, OnChanges, OnDestroy {
template?: ReportTemplate | AnyVersionTemplate;
dataSources?: DataSource[];
sampleData?: ReportDesignerOptions["sampleData"];
theme?: Theme;
themes?: Theme[];
blocks?: Array>;
library?: ReportDesignerOptions["library"];
features?: ReportDesignerOptions["features"];
enabledTiers?: ReportDesignerOptions["enabledTiers"];
locale?: string;
currency?: string;
timeZone?: string;
appearance?: ReportDesignerOptions["appearance"];
zoom?: ReportDesignerOptions["zoom"];
pdfService?: ReportDesignerOptions["pdfService"];
onExportPdf?: ReportDesignerOptions["onExportPdf"];
onSave?: ReportDesignerOptions["onSave"];
/** AI template design: the host's provider. The panel is hidden without one. See the "AI template design" guide. */
ai?: ReportDesignerOptions["ai"];
templateChange: EventEmitter;
selectionChange: EventEmitter;
validate: EventEmitter;
modeChange: EventEmitter<"design" | "preview">;
themeChange: EventEmitter;
ready: EventEmitter;
private readonly host;
private readonly zone;
private instance;
private lastEmitted;
/** The underlying framework-neutral API (available after `ready`). */
get api(): ReportDesignerInstance | null;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
private options;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
/** Read-only paginated preview: the same pipeline the editor and the PDF use. */
declare class ReportPreviewComponent implements OnInit, OnChanges, OnDestroy {
template: ReportTemplate;
data?: ReportData;
theme?: Theme;
dataSources?: DataSource[];
blocks?: Array>;
mode: PreviewOptions["mode"];
zoom?: number;
locale?: string;
currency?: string;
layout: EventEmitter;
private readonly host;
private readonly zone;
private handle;
private registry;
ngOnInit(): void;
ngOnChanges(): void;
ngOnDestroy(): void;
private options;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
/**
* The report as a page a reader can read.
*
*
*
* Read-only and page-shaped, with charts a reader can point at — the same
* pipeline the PDF uses, so the screen and the file agree. Give the host
* element a height: the viewer fills it and scrolls inside itself, and in a box
* with no height it collapses to its toolbar.
*
* Like the designer, it runs outside Angular's zone. Scrolling a long report
* fires a page-position event per frame, and running change detection on each
* of them would make the host application's performance this component's fault.
*/
declare class ReportViewerComponent implements OnInit, OnChanges, OnDestroy {
template: ReportTemplate;
data?: ReportData;
theme?: Theme;
dataSources?: DataSource[];
blocks?: Array>;
/** "width" (default), "page" or "actual". Ignored when `zoom` is set. */
fit?: ReportViewerOptions["fit"];
zoom?: number;
toolbar?: boolean;
interactions?: ReportViewerOptions["interactions"];
locale?: string;
currency?: string;
label?: string;
pageChange: EventEmitter;
layout: EventEmitter;
private readonly host;
private readonly zone;
private handle;
private registry;
/** The underlying framework-neutral viewer, for `goToPage`, `setZoom` and `print`. */
get api(): ReportViewer | null;
ngOnInit(): void;
ngOnChanges(): void;
ngOnDestroy(): void;
private options;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
/**
* Wraps an Angular component as a custom inspector field for `defineBlock`.
* The component receives the InspectorApi via an `api` input (setter or signal).
*/
declare function angularInspector(component: Type, vcr: ViewContainerRef): InspectorComponent;
export { ReportDesignerComponent, ReportPreviewComponent, ReportViewerComponent, angularInspector };