import { RootPresTemplate } from './root-pres-template'; import { FindElementSelector, GenerateElements, GenerateOnSlideCallback, ModificationCallback, SlideModificationCallback, SourceIdentifier } from '../types/types'; import IArchive from './iarchive'; import { ElementInfo, ModifyXmlCallback } from '../types/xml-types'; export interface ISlide { sourceArchive: IArchive; sourceNumber: SourceIdentifier; /** Will be executed before any shape modifications callback */ prepare(callback: SlideModificationCallback): void; /** Will be executed after shape modification callbacks were executed */ modify(callback: SlideModificationCallback): void; modifyRelations(callback: ModifyXmlCallback): void; append(targetTemplate: RootPresTemplate): Promise; /** * Add an element from one of the loaded templates to this slide. * @param presName Filename or custom name of source template * @param slideNumber The slide number or slide creationID where the source element can be found on * @param selector The name or element creationID of the source element * @param callback You can pass a callback to modify the element on the target slide after insertion. */ addElement(presName: string, slideNumber: number, selector: FindElementSelector, callback?: ModificationCallback | ModificationCallback[]): ISlide; /** * Modify an element on the current slide. * @param selector The name or element creationID of the element on current slide * @param callback Pass a callback to modify the element. */ modifyElement(selector: FindElementSelector, callback: ModificationCallback | ModificationCallback[]): ISlide; /** * Use PptxGenJs to generate a new element from scratch on this slide. * @param generate Pass a callback to create an element on current slide * @param objectName Give a custom name for this element or automizer will create a random uuid */ generate(generate: GenerateOnSlideCallback, objectName?: string): ISlide; /** * You can remove an element on the current slide. * @param selector Pass element name or creationId to find target element. */ removeElement(selector: FindElementSelector): ISlide; useSlideLayout(targetLayout?: number | string): ISlide; /** * Merges slide content into a specified slide layout by matching placeholders. * @param targetLayout - The layout identifier to merge into * @returns Promise resolving to the updated slide instance */ mergeIntoSlideLayout(targetLayout: number | string): ISlide; getElement(selector: FindElementSelector): Promise; getAllElements(filterTags?: string[]): Promise; getAllTextElementIds(): Promise; getGeneratedElements(): GenerateElements[]; /** * Asynchronously retrieves the dimensions of a slide. */ getDimensions(): Promise<{ width: number; height: number; }>; /** * Remove a slide from output. The slide will be calculated, but * eventually withdrawn from slide list. * Slide number starts by 1. */ remove(number: number): void; }