import { ComponentPortal, ComponentType, DomPortalOutlet } from '@angular/cdk/portal'; import { ComponentRef } from '@angular/core'; export interface EditorConfig { title?: string; file?: File; language?: string; } export interface RenderedPage { cssTransform: boolean; pageNumber: number; source: PDFPageView; portalOutlet: DomPortalOutlet; viewport: PageViewport; } export interface PDFPageView { canvas: HTMLCanvasElement; div: HTMLDivElement; id: number; pdfPage: any; renderer: string; renderingId: string; scale: number; viewport: PageViewport; } export interface PageViewport { viewBox: number[]; scale: number; rotation: number; offsetX: number; offsetY: number; transform: number[]; width: number; height: number; } export declare class Editor { tools: EditorTool[]; selectedTool: EditorTool | null; elements: PDFElement[]; pdf: string | null; pages: RenderedPage[]; pagesData: any[]; selectedPage: number; viewportScale: number; filename: string; mouseTracker: ComponentRef | null; } export declare class EditorTool { static count: number; id: number; type: string; name: string; icon: string; callback: (event: MouseEvent) => void; mouseTrackerType: ComponentType; constructor(_type: string, _name: string, _icon: string, _action: (event: MouseEvent) => void, _mouseTracker: ComponentType); } export interface PDFElement { id: number; value: string; width: string; height: string; x: string; y: string; page: number; type: string; parent: HTMLDivElement; componentRef: ComponentRef>; componentPortal: ComponentPortal; render: boolean; fontSize: string; textColor: string; props?: J; } export type PDFElementJSON = Omit, 'componentRef' | 'componentPortal' | 'parent' | 'width' | 'height' | 'x' | 'y' | 'fontSize'> & { width: number; height: number; x: number; y: number; fontSize: number; }; export interface PDFElementHost { element: PDFElement; left: string; top: string; export: (element: PDFElement) => PDFElementJSON; deleteElement: () => void; } export interface PDFRenderResult { pdf: string; json: PDFElementJSON[]; filename: string; }