/** * Options for `pptx.addFont()` — opt-in embed of a caller-supplied font. * The library ships no fonts. Callers must have a license that permits * embedding the supplied `fontFile` into a PPTX. */ declare interface AddFontOptions { /** Font family name referenced by `fontFace` on text/shapes */ fontFace: string; /** Raw font file bytes (caller-supplied; not bundled with this library) */ fontFile: ArrayBuffer; /** Source font format */ fontType: EmbedFontType; } declare interface AddSlideProps { masterName?: string; sectionTitle?: string; /** Optional slide transition applied at creation (same as `slide.addTransition()`). */ transition?: SlideTransitionProps; } declare enum AlignH { 'left' = "left", 'center' = "center", 'right' = "right", 'justify' = "justify" } declare enum AlignV { 'top' = "top", 'middle' = "middle", 'bottom' = "bottom" } /** * Connection site index helpers for connector lines (ZentoSoft connectors) * - Maps to OOXML `stCxn`/`endCxn` `idx` on common rectangular shapes * - Other presets may use different site indices — pass a raw number when needed */ declare enum ANCHOR { TOP = 0, LEFT = 1, BOTTOM = 2, RIGHT = 3 } declare type AnimationConfig = BaseAnimationConfig | FlyAnimationConfig | FloatAnimationConfig | SplitAnimationConfig | WipeAnimationConfig | ShapeAnimationConfig | WheelAnimationConfig | RandomBarsAnimationConfig | ZoomAnimationConfig | SpinAnimationConfig | GrowShrinkAnimationConfig | ColorAnimationConfig | TransparencyAnimationConfig; /** * Curated object-animation presets emitted as `` (ECMA-376 §19.3.1.48). * Additional names from `AnimationType` are accepted on `options.animation`. */ declare enum AnimationPreset { appear = "appear", fadein = "fadein", fadeout = "fadeout", flyin = "flyin", flyout = "flyout", zoom = "zoom", disappear = "disappear" } /** * Animation Properties * @see https://github.com/BapunHansdah/PptxGenJS/tree/release/pptxgenjs-animations */ declare type AnimationTrigger = 'onClick' | 'withPrevious' | 'afterPrevious'; declare type AnimationType = EntranceAnimation | EmphasisAnimation | ExitAnimation | PathAnimation; /** * Convenience entrance animation: appear on click * - Alias for `animation: { type: 'appear', trigger: 'onClick' }` * - Ignored when `animation` is also set * @see MelleB/feat/appear-on-click (PR #1202) */ declare interface AppearOnClickProps { /** * Appear on click * @default false * @example true // entrance "Appear" triggered by click */ appearOnClick?: boolean; } /** * CD audio source (`a:audioCd`, ECMA-376 Part 1 §20.1.3.3 CT_AudioCD) * - references the listener's CD drive, so it embeds nothing and needs no relationship */ declare interface AudioCdProps { start: AudioCdTimeProps; end: AudioCdTimeProps; } /** * A point on an audio CD (`a:st`/`a:end`, ECMA-376 Part 1 §20.1.3.4 CT_AudioCDTime) */ declare interface AudioCdTimeProps { /** CD track number (0-255) - required by the schema */ track: number; /** * Offset into the track, in seconds * @default 0 */ time?: number; } declare interface BackgroundProps extends DataOrPathProps, ShapeFillProps { /** * Color (hex format) * @deprecated v3.6.0 - use `ShapeFillProps` instead */ fill?: HexColor; /** * source URL * @deprecated v3.6.0 - use `DataOrPathProps` instead - remove in v4.0.0 */ src?: string; /** * Recolor and correction effects applied to a background image (`a:blip` children) * - distinct from SVG `fill` path recolor * @example { grayscale: true, brightness: -20 } */ recolor?: ImageRecolorProps; } declare interface BaseAnimationConfig { type: AnimationType; trigger?: AnimationTrigger; /** Duration in milliseconds */ duration?: number; /** Delay in milliseconds */ delay?: number; /** Advanced: override animation class */ class?: 'entr' | 'emph' | 'exit' | 'path'; /** Advanced: override PowerPoint preset ID */ presetID?: number; /** Advanced: override PowerPoint preset subtype */ presetSubtype?: number; } /** * Blur effect (`a:blur`) — ECMA-376 `CT_BlurEffect` / `CT_EffectList` first child. * - `radius` in points (written as `rad` in EMUs) * - `grow` expands the visual bounds (`a:blur@grow`, schema default true) */ declare interface BlurProps { /** * Blur radius (points) * @example 6 */ radius: number; /** * Whether the effect grows the shape bounds * - OOXML `a:blur@grow` (optional, default true) */ grow?: boolean; } declare interface BorderProps { /** * Border type * @default solid */ type?: 'none' | 'dash' | 'solid'; /** * Border color (hex) * @example 'FF3399' * @default '666666' */ color?: HexColor; /** * Border transparency (percent) * - range: 0-100 * - DrawingML `a:srgbClr/a:alpha` on the border `a:solidFill` * @default 0 */ transparency?: number; /** * Border width (points) * - same name and unit as `ShapeLineProps.width` * @default 1 */ width?: number; /** * Border size (points) * @deprecated v4.1.0 - use `width` * @default 1 */ pt?: number; } /** * 3-D properties of a table cell (`a:cell3D`, ECMA-376 Part 1 §21.1.3.1 CT_Cell3D) */ declare interface Cell3DProps { /** * Cell bevel * - `a:bevel` is required by the schema, so an `a:bevel` with schema defaults is written * whenever `cell3D` is set */ bevel?: CellBevelProps; /** * Surface material * @default plastic */ material?: 'legacyMatte' | 'legacyPlastic' | 'legacyMetal' | 'legacyWireframe' | 'matte' | 'plastic' | 'metal' | 'warmMatte' | 'translucentPowder' | 'powder' | 'dkEdge' | 'softEdge' | 'clear' | 'flat' | 'softmetal'; /** Light rig - dropped unless both `rig` and `dir` are set */ lightRig?: CellLightRigProps; } /** * 3-D bevel applied to a table cell (`a:bevel`, ECMA-376 Part 1 §20.1.5.3 CT_Bevel) */ declare interface CellBevelProps { /** * Bevel shape * @default circle */ preset?: 'relaxedInset' | 'circle' | 'slope' | 'cross' | 'angle' | 'softRound' | 'convex' | 'coolSlant' | 'divot' | 'riblet' | 'hardEdge' | 'artDeco'; /** * Bevel width (inches) * @default 0.083 */ width?: number; /** * Bevel height (inches) * @default 0.083 */ height?: number; } /** * Light rig for a 3-D table cell (`a:lightRig`, ECMA-376 Part 1 §20.1.5.5 CT_LightRig) * - both properties are required by the schema, so a partial value is not emitted */ declare interface CellLightRigProps { rig: 'legacyFlat1' | 'legacyFlat2' | 'legacyFlat3' | 'legacyFlat4' | 'legacyNormal1' | 'legacyNormal2' | 'legacyNormal3' | 'legacyNormal4' | 'legacyHarsh1' | 'legacyHarsh2' | 'legacyHarsh3' | 'legacyHarsh4' | 'threePt' | 'balanced' | 'soft' | 'harsh' | 'flood' | 'contrasting' | 'morning' | 'sunrise' | 'sunset' | 'chilly' | 'freezing' | 'flat' | 'twoPt' | 'glow' | 'brightRoom'; dir: 'tl' | 't' | 'tr' | 'l' | 'r' | 'bl' | 'b' | 'br'; } /** Changes Information part payload (MS-PPTX §2.12.1.1 `chgInfo`). Empty object emits a valid empty part. */ declare type ChangesInfoProps = Record; declare type CHART_NAME = 'area' | 'bar' | 'bar3D' | 'bubble' | 'bubble3D' | 'doughnut' | 'line' | 'pie' | 'radar' | 'scatter'; declare enum CHART_TYPE { 'AREA' = "area", 'BAR' = "bar", 'BAR3D' = "bar3D", 'BOX_WHISKER' = "boxWhisker", 'BUBBLE' = "bubble", 'BUBBLE3D' = "bubble3D", 'DOUGHNUT' = "doughnut", 'FUNNEL' = "funnel", 'HISTOGRAM' = "histogram", 'LINE' = "line", 'PIE' = "pie", 'RADAR' = "radar", 'SCATTER' = "scatter", 'SUNBURST' = "sunburst", 'TREEMAP' = "treemap", 'WATERFALL' = "waterfall" } declare type ChartAxisTickMark = 'none' | 'inside' | 'outside' | 'cross'; /** * Chart colour style (`cs:colorStyle` in `ppt/charts/colorsN.xml`) * - the palette PowerPoint's Change Colors gallery offers for the chart */ declare interface ChartColorStyleProps { /** * How the palette is walked * @default cycle */ method?: 'cycle' | 'withinLinear' | 'acrossLinear' | 'withinLinearReversed' | 'acrossLinearReversed'; /** * Which entry of the Change Colors gallery is selected * @default 10 */ id?: number; /** * The palette itself * @default the theme's six accent colours */ colors?: Color[]; } /** PowerPoint 2016+ chart types; emitted as a `cx:chartSpace` part (MS-ODRAWXML 2.1) rather than ECMA-376 `c:chartSpace` */ declare type CHARTEX_NAME = 'boxWhisker' | 'funnel' | 'histogram' | 'sunburst' | 'treemap' | 'waterfall'; declare type ChartLineCap = 'flat' | 'round' | 'square'; declare enum ChartType { 'area' = "area", 'bar' = "bar", 'bar3d' = "bar3D", 'bubble' = "bubble", 'bubble3d' = "bubble3D", 'doughnut' = "doughnut", 'line' = "line", 'pie' = "pie", 'radar' = "radar", 'scatter' = "scatter", 'boxWhisker' = "boxWhisker", 'funnel' = "funnel", 'histogram' = "histogram", 'sunburst' = "sunburst", 'treemap' = "treemap", 'waterfall' = "waterfall" } /** * MS-PPTX classification outcome (`ST_ClassificationOutcomeType`, §2.15). * Compliance metadata — emit only when explicitly set. */ declare type ClassificationOutcome = 'none' | 'hdr' | 'ftr' | 'watermark'; /** * Color value: hex RGB, scheme token, `ModifiedThemeColor`, or a DrawingML color object * (`{ hex }`, `{ scheme }`, `{ system }`, `{ preset }`, `{ hsl }`, `{ scrgb }`) */ declare type Color = HexColor | ThemeColor | ModifiedThemeColor | ColorProps; declare interface ColorAnimationConfig extends BaseAnimationConfig { type: 'colorpulse' | 'objectcolor' | 'linecolor' | 'fillcolor'; /** Hex color without '#', e.g. 'FFFF00' */ color?: string; } /** * Per-layout colour map override (`p:clrMapOvr` > `a:overrideClrMapping`) * - remaps the presentation's colour slots for one layout * - all twelve attributes are required by the schema, so anything left unset is filled from the * identity map (which is what inheriting the master's mapping means) */ declare interface ColorMapOverrideProps { bg1?: ColorSchemeIndex; tx1?: ColorSchemeIndex; bg2?: ColorSchemeIndex; tx2?: ColorSchemeIndex; accent1?: ColorSchemeIndex; accent2?: ColorSchemeIndex; accent3?: ColorSchemeIndex; accent4?: ColorSchemeIndex; accent5?: ColorSchemeIndex; accent6?: ColorSchemeIndex; hlink?: ColorSchemeIndex; folHlink?: ColorSchemeIndex; } /** * A color given as an object so the non-hex DrawingML color kinds are reachable * - exactly one specification field identifies the color; that is what distinguishes a color * object from a fill object at runtime * @example { hex: 'FF0000', alpha: 50 } * @example { scheme: 'accent1', lumMod: 60, lumOff: 40 } * @example { preset: 'cornflowerBlue' } * @example { hsl: { hue: 210, sat: 80, lum: 50 }, shade: 25 } */ declare type ColorProps = /** 6-digit hex (`a:srgbClr`) */ ({ hex: HexColor; } & ColorTransformProps) /** theme slot (`a:schemeClr`) */ | ({ scheme: SchemeColorValue; } & ColorTransformProps) /** system color such as `windowText`, with an optional last-known value (`a:sysClr`) */ | ({ system: string; lastColor?: HexColor; } & ColorTransformProps) /** one of the 140 preset color names (`a:prstClr`) */ | ({ preset: string; } & ColorTransformProps) /** hue/saturation/luminance; hue in degrees, the rest percent (`a:hslClr`) */ | ({ hsl: { hue: number; sat: number; lum: number; }; } & ColorTransformProps) /** linear-gamma RGB percentages (`a:scrgbClr`) */ | ({ scrgb: { r: number; g: number; b: number; }; } & ColorTransformProps); /** * ECMA-376 20.1.10.14 ST_ColorSchemeIndex - a slot in the theme's colour scheme */ declare type ColorSchemeIndex = 'dk1' | 'lt1' | 'dk2' | 'lt2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6' | 'hlink' | 'folHlink'; /** * Color transforms on a `ColorProps` object (ECMA-376 20.1.2.3, `EG_ColorTransform`) * - `tint`/`shade`/`alpha` are 0-100; `*Off` are -100-100; `*Mod` are unbounded scales * - `hueOff` is in degrees */ declare interface ColorTransformProps { /** lighten toward white (percent) */ tint?: number; /** darken toward black (percent) */ shade?: number; /** opacity (percent); 100 is opaque */ alpha?: number; /** shift opacity (percent, -100 to 100) */ alphaOff?: number; /** scale opacity (percent) */ alphaMod?: number; /** scale luminance (percent) */ lumMod?: number; /** shift luminance (percent, -100 to 100) */ lumOff?: number; /** scale saturation (percent) */ satMod?: number; /** shift saturation (percent, -100 to 100) */ satOff?: number; /** scale hue (percent) */ hueMod?: number; /** shift hue (degrees, -360 to 360) */ hueOff?: number; /** use the complement */ complement?: boolean; /** use the inverse */ inverse?: boolean; /** convert to grayscale */ grayscale?: boolean; /** apply gamma */ gamma?: boolean; /** apply inverse gamma */ inverseGamma?: boolean; } /** A modern-comment author. MS-PPTX §2.16.3.1 `CT_Author`. */ declare interface CommentAuthorProps { /** Author display name (required). */ name: string; /** Author initials. */ initials?: string; /** Stable GUID. Auto-generated if omitted. */ id?: string; /** Unique user id (presence). Defaults to `id`. */ userId?: string; /** Identity provider that produced userId. @default 'None' */ providerId?: string; } /** Author index into `pptx.commentAuthors` (0-based), display name, or author GUID. */ declare type CommentAuthorRef = number | string; /** Comment-level change bits. MS-PPTX §2.19 `ST_CommentV2ChangeBit`. */ declare type CommentChangeBit = 'add' | 'del' | 'mod' | 'modTsk' | 'modRxn'; /** Edits to a comment. MS-PPTX §2.19 `CT_CommentV2Changes` / `cmChg`. */ declare interface CommentChangeProps { chg: CommentChangeBit | CommentChangeBit[]; replies?: CommentReplyChangeProps[]; } /** A threaded comment on a slide. MS-PPTX §2.16.3.3 `CT_Comment`. */ declare interface CommentProps { /** Comment body text. */ text: string; /** Author index into `pptx.commentAuthors` (0-based), name, or GUID. @default 0 */ author?: CommentAuthorRef; /** Stable GUID. Auto-generated if omitted. */ id?: string; /** X position (inches) of the comment badge. */ x?: number; /** Y position (inches) of the comment badge. */ y?: number; /** Replies to this comment. */ replies?: CommentReplyProps[]; /** Required `created` timestamp. Defaults to `startDate` or now. */ created?: string; /** Optional thread start date. */ startDate?: string; /** Comment status. @default 'active' */ status?: CommentStatus; /** Task due date. */ dueDate?: string; /** Authors assigned to this comment-as-task. */ assignedTo?: CommentAuthorRef | CommentAuthorRef[]; /** Percent complete 0–100 (or `"50%"`). */ complete?: number | string; /** Task title. */ title?: string; /** Reactions on this comment. MS-PPTX §2.21. */ reactions?: CommentReactionProps[]; /** Task history (`taskDetails`). MS-PPTX §2.20. */ task?: CommentTaskProps; /** Comment-change records (`cmChg`). MS-PPTX §2.19. */ changes?: CommentChangeProps[]; } /** One user's instance of a reaction. MS-PPTX §2.21 `CT_ReactionInstance`. */ declare interface CommentReactionInstanceProps { /** Author index, name, or GUID. */ author?: CommentAuthorRef; /** ISO date; defaults to now. */ time?: string; } /** A reaction on a comment or reply. MS-PPTX §2.21 `CT_Reaction`. */ declare interface CommentReactionProps { /** Reaction type. SHOULD be a Unicode emoji. */ type: string; /** Authors who reacted (shorthand for one instance each). */ authors?: CommentAuthorRef[]; /** ISO date applied to shorthand `authors` instances. */ time?: string; /** Explicit per-author instances (wins over `authors` when both are set). */ instances?: CommentReactionInstanceProps[]; } /** Reply-level change bits. MS-PPTX §2.19 `ST_CommentReplyV2ChangeBit`. */ declare type CommentReplyChangeBit = 'add' | 'del' | 'mod' | 'modRxn'; /** Edits to a reply. MS-PPTX §2.19 `CT_CommentReplyV2Changes`. */ declare interface CommentReplyChangeProps { chg: CommentReplyChangeBit | CommentReplyChangeBit[]; /** Reply GUID. Defaults to the matching reply's `id`. */ replyId?: string; } /** A reply on a threaded comment. MS-PPTX §2.16.3.4 `CT_CommentReply`. */ declare interface CommentReplyProps { /** Reply body text. */ text: string; /** Author index, name, or GUID. @default 0 */ author?: CommentAuthorRef; /** Stable GUID. Auto-generated if omitted. */ id?: string; /** ISO created date; defaults to the parent comment date. */ created?: string; /** Reply status. @default 'active' */ status?: CommentStatus; /** Reactions on this reply. MS-PPTX §2.21. */ reactions?: CommentReactionProps[]; } /** Modern comment status. MS-PPTX §2.16 `ST_CommentStatus`. @default 'active' */ declare type CommentStatus = 'active' | 'resolved' | 'closed'; /** Task history event kinds. MS-PPTX §2.20 `CT_TaskHistoryEvent`. */ declare type CommentTaskEventKind = 'add' | 'asgn' | 'title' | 'date' | 'pcntCmplt' | 'unasgnAll' | 'undo' | 'unknown'; /** One task-history event. MS-PPTX §2.20 `CT_TaskHistoryEvent`. */ declare interface CommentTaskEventProps { kind: CommentTaskEventKind; /** Author who initiated the change (`atrbtn`). */ author?: CommentAuthorRef; /** ISO date; defaults to now. */ time?: string; /** Event GUID. Auto-generated if omitted. */ id?: string; /** Assignee for `asgn`. */ assignTo?: CommentAuthorRef; /** Title for `title`. */ title?: string; /** Schedule start for `date`. */ startDate?: string; /** Schedule due for `date`. */ endDate?: string; /** Percent complete 0–100 (or `"50%"`) for `pcntCmplt`. */ complete?: number | string; /** History-event GUID undone by `undo`. */ undoId?: string; } /** Extra task history (`taskDetails`). MS-PPTX §2.20. */ declare interface CommentTaskProps { history: CommentTaskEventProps[]; } /** * Zip compression applied to the exported file * - 'none': store uncompressed (fastest) * - 'fast': DEFLATE level 1 (quick, decent savings) * - 'best': DEFLATE level 9 (smallest file, slowest) */ declare type CompressionLevel = 'none' | 'fast' | 'best'; /** * Where a connector attaches to a shape (`a:stCxn`/`a:endCxn`) * - maps onto existing `line.sourceId`/`targetId` via `objectName` at emit time */ declare interface ConnectionProps { /** `objectName` of the shape to glue to */ shape: string; /** * Which connection site on that shape * - a rectangle has 0 (top), 1 (left), 2 (bottom), 3 (right) * @default 0 */ site?: number; } /** * Additive connector convenience (`slide.addConnector`) * - maps onto `addShape` + `line.isConnector` / sourceId / targetId */ declare interface ConnectorProps extends PositionProps, ObjectNameProps { /** * Connector geometry * @default straightConnector1 */ type?: 'line' | 'straightConnector1' | 'bentConnector2' | 'bentConnector3' | 'bentConnector4' | 'bentConnector5' | 'curvedConnector2' | 'curvedConnector3' | 'curvedConnector4' | 'curvedConnector5'; /** line formatting, including arrow heads */ line?: ShapeLineProps; /** * Rotation in degrees * @default 0 */ rotate?: number; flipH?: boolean; flipV?: boolean; /** glue the start of the connector to a shape (`objectName`) */ start?: ConnectionProps; /** glue the end of the connector to a shape (`objectName`) */ end?: ConnectionProps; /** theme style references (`p:style`) */ styleRef?: ShapeStyleProps; shadow?: ShadowProps; fill?: ShapeFillProps; } /** ST_BlackWhiteMode values accepted on `p:contentPart` (MS-PPTX §2.3.2.2). */ declare type ContentPartBwMode = 'clr' | 'auto' | 'gray' | 'ltGray' | 'invGray' | 'grayWhite' | 'blackGray' | 'blackWhite' | 'black' | 'white' | 'hidden'; /** A content part (MS-PPTX §2.2.3). Opt-in; emits `mc:AlternateContent` with an `sp` fallback. */ declare interface ContentPartProps extends PositionProps, ObjectNameProps { /** XML payload written as the related package part. */ data: string; /** Part content type. @default 'application/xml' */ contentType?: string; /** Optional file name (used as the part leaf). */ fileName?: string; /** Black/white render mode (MS-PPTX §2.3.2.2). */ bwMode?: ContentPartBwMode | string; /** Optional alt text. */ altText?: string; } declare type Coord = number | `${number}%` | UnitLength; /** * Either `data` or `path` is required */ declare interface DataOrPathProps { /** * URL or relative path * * @example 'https://onedrives.com/myimg.png` // retrieve image via URL * @example '/home/gitbrent/images/myimg.png` // retrieve image via local path */ path?: string; /** * base64-encoded string * - Useful for avoiding potential path/server issues * * @example 'image/png;base64,iVtDafDrBF[...]=' // pre-encoded image in base-64 */ data?: string; } /** * Argument to `defineLayout()` - dimensions may be given as `width`/`height` or as `w`/`h` */ declare interface DefineLayoutProps { /** * Layout name * @example 'A3' */ name: string; /** Layout width (inches) - or use `w` */ width?: number; /** Layout height (inches) - or use `h` */ height?: number; /** Layout width (inches) - alias of `width` */ w?: number; /** Layout height (inches) - alias of `height` */ h?: number; } /** Designer properties on a shape (`CT_DesignerDrawingProps`, MS-PPTX §2.17.1.1). */ declare interface DesignerProps { /** Whether a design element is editable. @default false */ edtDesignElem?: boolean; /** Designer Service tags nested under `designPr`. */ tags?: DesignerTag[]; } /** Designer Service name/value tag (`CT_DesignerTag`, MS-PPTX §2.17.3.2). */ declare interface DesignerTag { name: string; val: string; } /** * Additional document properties (ECMA-376 15.2 and the OPC core properties) * - each is omitted when unset, so `docProps` output is unchanged by default */ declare interface DocumentProps { /** `dc:description` - the Comments field in PowerPoint's Info pane */ description?: string; /** `dc:language`, ex: 'en-US' */ language?: string; /** `dc:identifier` */ identifier?: string; /** `cp:keywords`, comma-separated */ keywords?: string; /** `cp:category` */ category?: string; /** `cp:contentStatus`, ex: 'Draft' */ contentStatus?: string; /** `cp:version` */ version?: string; /** `cp:lastPrinted`, ISO 8601 */ lastPrinted?: string; /** `Manager` in app.xml */ manager?: string; /** `Template` in app.xml */ template?: string; /** `HyperlinkBase` in app.xml - the base for relative hyperlinks */ hyperlinkBase?: string; /** `TotalTime` in app.xml - editing time in minutes */ totalEditTime?: number; } /** * Composed effect graph (`a:effectDag`, ECMA-376 Part 1 §20.1.8.25 CT_EffectContainer) * - `a:effectLst` and `a:effectDag` are alternatives in the schema, so setting this emits the * shape's effects inside `a:effectDag` instead of `a:effectLst` */ declare interface EffectDagProps { /** * Whether the contained effects apply to siblings or to the whole tree * @default sib */ type?: 'sib' | 'tree'; } /** Font file formats supported by embedded TrueType fonts (`addFont`) */ declare type EmbedFontType = 'ttf' | 'otf' | 'woff' | 'eot'; declare type EmphasisAnimation = 'pulse' | 'colorpulse' | 'teeter' | 'spin' | 'growshrink' | 'desaturate' | 'darken' | 'lighten' | 'transparency' | 'objectcolor' | 'complementarycolor' | 'linecolor' | 'fillcolor'; declare type EntranceAnimation = 'appear' | 'fadein' | 'flyin' | 'floatin' | 'split' | 'wipe' | 'shape' | 'wheel' | 'randombars' | 'zoom' | 'growandturn' | 'swivel' | 'bounce'; declare type ExitAnimation = 'disappear' | 'fadeout' | 'flyout' | 'floatout' | 'splitexit' | 'wipeexit' | 'shapeexit' | 'wheelexit' | 'randombarsexit' | 'shrinkandturn' | 'zoomexit' | 'swivelexit' | 'bounceexit'; /** * Fill-overlay effect (`a:fillOverlay`, ECMA-376 Part 1 §20.1.8.29 CT_FillOverlayEffect) * - blends a second fill over the shape's own fill * - both properties are required by the schema, so a partial value is not emitted */ declare interface FillOverlayProps { /** Blend mode */ blend: 'over' | 'mult' | 'screen' | 'darken' | 'lighten'; /** The fill blended over the shape */ fill: ShapeFillProps; } declare interface FloatAnimationConfig extends BaseAnimationConfig { type: 'floatin' | 'floatout'; direction?: FloatDirection; } declare type FloatDirection = 'floatUp' | 'floatDown'; declare interface FlyAnimationConfig extends BaseAnimationConfig { type: 'flyin' | 'flyout'; direction?: FlyDirection; } declare type FlyDirection = 'top' | 'bottom' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'; /** * Builder passed to `slide.addGroup(opts, group => { ... })`. * Child `x`/`y` are relative to the group origin. */ declare interface Group { addShape(shapeName: SHAPE_NAME, options?: ShapeProps): Group; addText(text: string | TextProps[], options?: TextPropsOptions): Group; addImage(options: ImageProps): Group; addGroup(options: GroupProps, build?: (group: Group) => void): Group; addConnector(options?: ConnectorProps): Group; } /** * Group shape (`p:grpSp` / ECMA-376 PresentationML §19.3.1.22). * Child object coordinates are relative to the group origin. */ declare interface GroupProps extends PositionProps, ObjectNameProps { /** * Group rotation in degrees * @default 0 */ rotate?: number; /** * Group shadow (`a:effectLst` on `p:grpSpPr`) */ shadow?: ShadowProps; /** * Group fill (`EG_FillProperties` on `p:grpSpPr`) * - child shapes can inherit this with `fill: { type: 'group' }` */ fill?: ShapeFillProps; /** @internal child objects collected by `addGroup` */ _objects?: ISlideObject[]; } declare type GrowShrinkAmount = 'tiny' | 'smaller' | 'larger' | 'huge'; declare interface GrowShrinkAnimationConfig extends BaseAnimationConfig { type: 'growshrink'; direction?: GrowShrinkDirection; amount?: GrowShrinkAmount; } declare type GrowShrinkDirection = 'horizontal' | 'vertical' | 'both'; /** * An editor alignment guide. MS-PPTX §2.4.3.3 `CT_ExtendedGuide` / §2.4.3.4 `CT_ExtendedGuideList`. */ declare interface GuideProps { /** Unique id within the parent guide list (MS-PPTX §2.4.3.3). Auto-assigned 1-based if omitted. */ id?: number; /** Guide orientation. @default 'vert' */ orient?: 'horz' | 'vert'; /** Position from the left (vert) or top (horz) edge of the slide, in inches. @default 0 */ pos?: number; /** Guide line color (hex). @default theme accent */ color?: HexColor; /** Optional guide name. */ name?: string; /** Mark as user-drawn. @default true */ userDrawn?: boolean; } declare type HAlign = 'left' | 'center' | 'right' | 'justify'; /** * Color in Hex format * @example 'FF3399' */ declare type HexColor = string; declare interface HyperlinkProps { /** * Relationship id - set by the library during export * @internal */ _rId?: number; /** * Slide number to link to */ slide?: number; /** * Url to link to */ url?: string; /** * Hyperlink Tooltip */ tooltip?: string; /** * Highlight the link when clicked * @default false */ highlightClick?: boolean; /** * Stop any playing sounds when the link is clicked * @default false */ stopSoundsOnClick?: boolean; /** * Sound played when the link is triggered (`a:snd`) * - must be WAV data; ECMA-376 20.1.2.2.32 allows no other format here */ sound?: HyperlinkSoundProps; } declare interface HyperlinkSoundProps { /** * WAV audio data (base64), with a mime header * - one of `data` or `path` is required * @example 'audio/wav;base64,UklGRi...' */ data?: string; /** * WAV file path or URL * - one of `data` or `path` is required */ path?: string; /** * Sound name PowerPoint shows in the Action dialog * @default 'sound.wav' */ name?: string; /** relationship id resolved when the object is created @internal */ _sndRId?: number; } declare interface IChartAreaProps extends IChartPropsFillLine { /** * Whether the chart area has rounded corners * - only applies when either `fill` or `border` is used * @default true * @since v3.11 */ roundedCorners?: boolean; } declare interface IChartMulti { type: CHART_NAME; data: IOptsChartData[]; options: IChartOptsLib; } declare interface IChartOpts extends IChartPropsAxisCat, IChartPropsAxisSer, IChartPropsAxisVal, IChartPropsBase, IChartPropsChartBar, IChartPropsChartDoughnut, IChartPropsChartEx, IChartPropsChartLine, IChartPropsChartPie, IChartPropsChartRadar, IChartPropsDataLabel, IChartPropsDataTable, IChartPropsLegend, IChartPropsTitle, ObjectNameProps, OptsChartGridLine, PositionProps { /** * Alt Text value ("How would you describe this object and its contents to someone who is blind?") * - PowerPoint: [right-click on a chart] > "Edit Alt Text..." */ altText?: string; /** * Which entry of PowerPoint's Chart Styles gallery is selected (`cs:chartStyle@id`) * - the style *definitions* written are Office's defaults regardless of this id, so it selects * the gallery entry rather than changing the formatting * - opt-in for classic `c:chart` parts; ChartEx layouts always emit style/colors parts * @default 201 */ chartStyle?: number; /** * Chart colour style (`ppt/charts/colorsN.xml`) * - distinct from `chartColors`, which sets the series colours directly on the chart * - opt-in for classic `c:chart` parts; ChartEx layouts always emit style/colors parts */ chartColorStyle?: ChartColorStyleProps; /** * Animation configuration * - Can be a simple animation name or full configuration object * @example 'fadein' * @example { type: 'flyin', direction: 'left', duration: 1000 } */ animation?: string | AnimationConfig; /** Opt-in MS-PPTX nvPr design/classification extensions. */ designElem?: boolean; classification?: ClassificationOutcome; designPr?: DesignerProps; } declare interface IChartOptsLib extends IChartOpts { _type?: CHART_NAME | CHARTEX_NAME | IChartMulti[]; } declare interface IChartPropsAxisCat { /** * Multi-Chart prop: array of cat axes */ catAxes?: IChartPropsAxisCat[]; catAxisBaseTimeUnit?: string; catAxisCrossesAt?: number | 'autoZero'; catAxisHidden?: boolean; catAxisLabelColor?: string; catAxisLabelFontBold?: boolean; catAxisLabelFontFace?: string; catAxisLabelFontItalic?: boolean; catAxisLabelFontSize?: number; catAxisLabelFrequency?: string; catAxisLabelPos?: 'none' | 'low' | 'high' | 'nextTo'; catAxisLabelRotate?: number; catAxisLineColor?: string; catAxisLineShow?: boolean; catAxisLineSize?: number; catAxisLineStyle?: 'solid' | 'dash' | 'dot'; catAxisMajorTickMark?: ChartAxisTickMark; catAxisMajorTimeUnit?: string; catAxisMajorUnit?: number; catAxisMaxVal?: number; catAxisMinorTickMark?: ChartAxisTickMark; catAxisMinorTimeUnit?: string; catAxisMinorUnit?: number; catAxisMinVal?: number; /** @since v3.11.0 */ catAxisMultiLevelLabels?: boolean; catAxisOrientation?: 'minMax'; catAxisTitle?: string; catAxisTitleColor?: string; catAxisTitleFontFace?: string; catAxisTitleFontSize?: number; catAxisTitleRotate?: number; catGridLine?: OptsChartGridLine; catLabelFormatCode?: string; /** * Whether data should use secondary category axis (instead of primary) * @default false */ secondaryCatAxis?: boolean; showCatAxisTitle?: boolean; } declare interface IChartPropsAxisSer { serAxisBaseTimeUnit?: string; serAxisHidden?: boolean; serAxisLabelColor?: string; serAxisLabelFontBold?: boolean; serAxisLabelFontFace?: string; serAxisLabelFontItalic?: boolean; serAxisLabelFontSize?: number; serAxisLabelFrequency?: string; serAxisLabelPos?: 'none' | 'low' | 'high' | 'nextTo'; serAxisLineColor?: string; serAxisLineShow?: boolean; serAxisMajorTimeUnit?: string; serAxisMajorUnit?: number; serAxisMinorTimeUnit?: string; serAxisMinorUnit?: number; serAxisOrientation?: string; serAxisTitle?: string; serAxisTitleColor?: string; serAxisTitleFontFace?: string; serAxisTitleFontSize?: number; serAxisTitleRotate?: number; serGridLine?: OptsChartGridLine; serLabelFormatCode?: string; showSerAxisTitle?: boolean; } declare interface IChartPropsAxisVal { /** * Whether data should use secondary value axis (instead of primary) * @default false */ secondaryValAxis?: boolean; showValAxisTitle?: boolean; /** * Multi-Chart prop: array of val axes */ valAxes?: IChartPropsAxisVal[]; valAxisCrossesAt?: number | 'autoZero'; valAxisDisplayUnit?: 'billions' | 'hundredMillions' | 'hundreds' | 'hundredThousands' | 'millions' | 'tenMillions' | 'tenThousands' | 'thousands' | 'trillions'; valAxisDisplayUnitLabel?: boolean; valAxisHidden?: boolean; valAxisLabelColor?: string; valAxisLabelFontBold?: boolean; valAxisLabelFontFace?: string; valAxisLabelFontItalic?: boolean; valAxisLabelFontSize?: number; valAxisLabelFormatCode?: string; valAxisLabelPos?: 'none' | 'low' | 'high' | 'nextTo'; valAxisLabelRotate?: number; valAxisLineColor?: string; valAxisLineShow?: boolean; valAxisLineSize?: number; valAxisLineStyle?: 'solid' | 'dash' | 'dot'; /** * PowerPoint: Format Axis > Axis Options > Logarithmic scale - Base * - range: 2-99 * @since v3.5.0 */ valAxisLogScaleBase?: number; valAxisMajorTickMark?: ChartAxisTickMark; valAxisMajorUnit?: number; valAxisMaxVal?: number; valAxisMinorTickMark?: ChartAxisTickMark; valAxisMinVal?: number; valAxisOrientation?: 'minMax'; valAxisTitle?: string; valAxisTitleColor?: string; valAxisTitleFontFace?: string; valAxisTitleFontSize?: number; valAxisTitleRotate?: number; valGridLine?: OptsChartGridLine; /** * Value label format code * - this also directs Data Table formatting * @since v3.3.0 * @example '#%' // round percent * @example '0.00%' // shows values as '0.00%' * @example '$0.00' // shows values as '$0.00' */ valLabelFormatCode?: string; } declare interface IChartPropsBase { /** * Axis position */ axisPos?: 'b' | 'l' | 'r' | 't'; /** * Series / marker colors * - use `'transparent'` for no fill on series and line/radar/scatter markers * @example ['4472C4', 'transparent', 'ED7D31'] */ chartColors?: Color[]; /** * opacity (0 - 100) * @example 50 // 50% opaque */ chartColorsOpacity?: number; dataBorder?: BorderProps; displayBlanksAs?: string; invertedColors?: Color[]; lang?: string; layout?: PositionProps; shadow?: ShadowProps; /** * @default false */ showLabel?: boolean; showLeaderLines?: boolean; /** * Show "Value From Cells" data labels (`c15:showDataLabelsRange`) * - auto-enabled when a series has `labelsRange` * @default false * @see Toukyh/fix-custom-label */ showDataLabelsRange?: boolean; /** * @default false */ showLegend?: boolean; /** * @default false */ showPercent?: boolean; /** * @default false */ showSerName?: boolean; /** * @default false */ showTitle?: boolean; /** * @default false */ showValue?: boolean; /** * 3D Perspecitve * - range: 0-120 * @default 30 */ v3DPerspective?: number; /** * Right Angle Axes * - Shows chart from first-person perspective * - Overrides `v3DPerspective` when true * - PowerPoint: Chart Options > 3-D Rotation * @default false */ v3DRAngAx?: boolean; /** * X Rotation * - PowerPoint: Chart Options > 3-D Rotation * - range: 0-359.9 * @default 30 */ v3DRotX?: number; /** * Y Rotation * - range: 0-359.9 * @default 30 */ v3DRotY?: number; /** * PowerPoint: Format Chart Area (Fill & Border/Line) * @since v3.11 */ chartArea?: IChartAreaProps; /** * PowerPoint: Format Plot Area (Fill & Border/Line) * @since v3.11 */ plotArea?: IChartPropsFillLine; /** * @deprecated v3.11.0 - use `plotArea.border` */ border?: BorderProps; /** * @deprecated v3.11.0 - use `plotArea.fill` */ fill?: HexColor; } declare interface IChartPropsChartBar { /** * 3D bar shape * @default 'box' */ bar3DShape?: 'box' | 'cone' | 'coneToMax' | 'cylinder' | 'pyramid' | 'pyramidToMax'; /** * Bar direction - horizontal bars or vertical columns * @default 'col' */ barDir?: 'bar' | 'col'; barGapDepthPct?: number; /** * MS-PPT > Format chart > Format Data Point > Series Options > "Gap Width" * - width (percent) * - range: `0`-`500` * @default 150 */ barGapWidthPct?: number; /** * Bar grouping * @default 'clustered' */ barGrouping?: 'clustered' | 'percentStacked' | 'stacked' | 'standard'; /** * MS-PPT > Format chart > Format Data Point > Series Options > "Series Overlap" * - overlap (percent) * - range: `-100`-`100` * @since v3.9.0 * @default 0 */ barOverlapPct?: number; } declare interface IChartPropsChartDoughnut { dataNoEffects?: boolean; holeSize?: number; } /** * Options for the PowerPoint 2016+ chartex layouts (waterfall, funnel, treemap, sunburst, histogram, * box & whisker). Each is ignored by every other chart type. * @see MS-ODRAWXML 2.1 */ declare interface IChartPropsChartEx { /** * MS-PPT > Chart Type > Histogram > Format Axis > "Number of bins" * - fixed bin count; ignored when `chartExBinSize` is set * - omit both to let PowerPoint choose the bins * @example 8 */ chartExBinCount?: number; /** * MS-PPT > Chart Type > Histogram > Format Axis > "Bin width" * - fixed bin width, in value-axis units; takes precedence over `chartExBinCount` * @example 5 */ chartExBinSize?: number; /** * MS-PPT > Chart Type > Box & Whisker > Format Data Series > "Show mean line" * @default false */ chartExMeanLine?: boolean; /** * MS-PPT > Chart Type > Treemap > Format Data Series > "Treemap Label Options" * - how a parent category label is drawn over its children * @default overlapping */ chartExParentLabels?: 'none' | 'overlapping' | 'banner'; /** * MS-PPT > Chart Type > Waterfall > "Set as Total" * - zero-based indexes of the data points drawn as absolute totals rather than deltas * @example [0, 4] // first and fifth bars are totals */ chartExSubtotals?: number[]; } declare interface IChartPropsChartLine { /** * MS-PPT > Chart format > Format Data Series > Line > Cap type * - line cap type * @default flat */ lineCap?: ChartLineCap; /** * MS-PPT > Chart format > Format Data Series > Marker Options > Built-in > Type * - line dash type * @default solid */ lineDash?: 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'solid' | 'sysDash' | 'sysDot'; /** * MS-PPT > Chart format > Format Data Series > Marker Options > Built-in > Type * - marker type * @default circle */ lineDataSymbol?: 'circle' | 'dash' | 'diamond' | 'dot' | 'none' | 'square' | 'triangle'; /** * MS-PPT > Chart format > Format Data Series > [Marker Options] > Border > Color * - border color * @default circle */ lineDataSymbolLineColor?: string; /** * MS-PPT > Chart format > Format Data Series > [Marker Options] > Border > Width * - border width (points) * @default 0.75 */ lineDataSymbolLineSize?: number; /** * MS-PPT > Chart format > Format Data Series > Marker Options > Built-in > Size * - marker size * - range: 2-72 * @default 6 */ lineDataSymbolSize?: number; /** * MS-PPT > Chart format > Format Data Series > Line > Width * - line width (points) * - range: 0-1584 * @default 2 */ lineSize?: number; /** * MS-PPT > Chart format > Format Data Series > Line > Smoothed line * - "Smoothed line" * @default false */ lineSmooth?: boolean; } declare interface IChartPropsChartPie { dataNoEffects?: boolean; /** * MS-PPT > Format chart > Format Data Series > Series Options > "Angle of first slice" * - angle (degrees) * - range: 0-359 * @since v3.4.0 * @default 0 */ firstSliceAng?: number; } declare interface IChartPropsChartRadar { /** * MS-PPT > Chart Type > Waterfall * - radar chart type * @default standard */ radarStyle?: 'standard' | 'marker' | 'filled'; } declare interface IChartPropsDataLabel { dataLabelBkgrdColors?: boolean; dataLabelColor?: string; dataLabelFontBold?: boolean; dataLabelFontFace?: string; dataLabelFontItalic?: boolean; dataLabelFontSize?: number; /** * Data label format code * @example '#%' // round percent * @example '0.00%' // shows values as '0.00%' * @example '$0.00' // shows values as '$0.00' */ dataLabelFormatCode?: string; dataLabelFormatScatter?: 'custom' | 'customXY' | 'XY'; /** * Data label position * - friendly names are translated to their OOXML codes; the codes themselves are still accepted * - valid values differ per chart type: a value the chart type does not support is dropped with a * console warning rather than producing a file PowerPoint asks to repair * @example 'outsideEnd' // bar/column, pie * @example 'top' // line, scatter, radar */ dataLabelPosition?: 'bottom' | 'center' | 'left' | 'right' | 'top' | 'insideEnd' | 'insideBase' | 'outsideEnd' | 'bestFit' | 'b' | 'ctr' | 'l' | 'r' | 't' | 'inEnd' | 'inBase' | 'outEnd'; } declare interface IChartPropsDataTable { dataTableFontSize?: number; /** * Data table format code * @since v3.3.0 * @example '#%' // round percent * @example '0.00%' // shows values as '0.00%' * @example '$0.00' // shows values as '$0.00' */ dataTableFormatCode?: string; /** * Whether to show a data table adjacent to the chart * @default false */ showDataTable?: boolean; showDataTableHorzBorder?: boolean; showDataTableKeys?: boolean; showDataTableOutline?: boolean; showDataTableVertBorder?: boolean; } declare interface IChartPropsFillLine { /** * PowerPoint: Format Chart Area/Plot > Border ["Line"] * @example border: {color: 'FF0000', pt: 1} // hex RGB color, 1 pt line */ border?: BorderProps; /** * PowerPoint: Format Chart Area/Plot Area > Fill * @example fill: {color: '696969'} // hex RGB color value * @example fill: {color: pptx.SchemeColor.background2} // Theme color value * @example fill: {transparency: 50} // 50% transparency */ fill?: ShapeFillProps; } declare interface IChartPropsLegend { legendColor?: string; legendFontFace?: string; legendFontSize?: number; legendPos?: 'b' | 'l' | 'r' | 't' | 'tr'; } declare interface IChartPropsTitle extends TextBaseProps { title?: string; titleAlign?: string; titleBold?: boolean; titleColor?: string; titleFontFace?: string; titleFontSize?: number; titleItalic?: boolean; titlePos?: { x: number; y: number; }; titleRotate?: number; } /** * Alpha (transparency) effects applied to an image's `a:blip` * - allowed on `a:blip` and inside `a:effectDag`, not in `a:effectLst` */ declare interface ImageAlphaEffectProps { /** * Replace every alpha value with this one (`a:alphaRepl`) * - percent, 0 (fully transparent) to 100 (fully opaque) */ replace?: number; /** Invert the alpha channel (`a:alphaInv`) */ invert?: boolean; /** Force alpha values below 100% to fully transparent (`a:alphaFloor`) */ floor?: boolean; /** Force alpha values above 0% to fully opaque (`a:alphaCeiling`) */ ceiling?: boolean; } declare interface ImageProps extends PositionProps, DataOrPathProps, ObjectNameProps, AppearOnClickProps, NvPrExtensionProps { /** * Alt Text value ("How would you describe this object and its contents to someone who is blind?") * - PowerPoint: [right-click on an image] > "Edit Alt Text..." */ altText?: string; /** * Flip horizontally? * @default false */ flipH?: boolean; /** * Flip vertical? * @default false */ flipV?: boolean; hyperlink?: HyperlinkProps; /** * Mouse-over action, configured like `hyperlink` but triggered on hover * - PowerPoint's Insert > Action > Mouse Over tab * @example { hyperlinkHover: { slide: 3, tooltip: 'Jump to results' } } */ hyperlinkHover?: HyperlinkProps; /** * Image outline/border (a picture frame) * @example { color: '696969', width: 2 } // 2pt dim-gray border */ line?: ShapeLineProps; /** * Alias of `line` (atomisystems image-border API). Same union as table `border` so `ObjectOptions` stays compatible. * @example { color: 'FF0000', pt: 2 } */ border?: BorderProps | [BorderProps, BorderProps, BorderProps, BorderProps]; /** * Placeholder type * - values: 'body' | 'header' | 'footer' | 'title' | et. al. * @example 'body' * @see https://docs.microsoft.com/en-us/office/vba/api/powerpoint.ppplaceholdertype */ placeholder?: string; /** * Image rotation (degrees) * - range: -360 to 360 * @default 0 * @example 180 // rotate image 180 degrees */ rotate?: number; /** * Enable elliptical (circle/oval) image cropping * - When `rectRadius` is set, that takes precedence (rounded rectangle) * @default false */ rounding?: boolean; /** * Crop image to a rounded rectangle (from niranjan-uma-shankar/feature/html-to-pptx) * - values: 0.0 to 1.0 (0 = sharp corners, 1 = maximum rounding) * - when set, emits `prst="roundRect"` with an adjustment guide * @example 0.2 // 20% corner radius */ rectRadius?: number; /** * Shadow Props * - MS-PPT > Format Picture > Shadow * @example * { type: 'outer', color: '000000', opacity: 0.5, blur: 20, offset: 20, angle: 270 } */ shadow?: ShadowProps; /** * Glow effect (`a:glow` in shape `effectLst`) */ glow?: TextGlowProps; /** * Soft-edge effect (`a:softEdge`) */ softEdge?: SoftEdgeProps; /** * Reflection effect (`a:reflection`) */ reflection?: ReflectionProps; /** * Blur effect (`a:blur` in picture `effectLst`) */ blur?: BlurProps; /** * Fill blended over the image's own fill (`a:fillOverlay`) * @example { blend: 'mult', fill: { color: 'FF0000', transparency: 50 } } */ fillOverlay?: FillOverlayProps; /** * Emit the effects as a composed effect graph (`a:effectDag`) rather than an `a:effectLst` */ effectDag?: EffectDagProps; /** * Alpha (transparency) effects applied to the image itself (`a:blip`) * @example { invert: true } */ alphaEffects?: ImageAlphaEffectProps; /** * Recolor and correction effects applied to the image itself (`a:blip`) * - distinct from SVG path `fill` recolor * @example { grayscale: true, brightness: 20, contrast: -10 } */ recolor?: ImageRecolorProps; /** * Theme style references (`p:style`) * @example { fill: 1, line: 2, effect: 0, font: 'minor' } */ styleRef?: ShapeStyleProps; /** * Image sizing options */ sizing?: { /** * Sizing type */ type: 'contain' | 'cover' | 'crop'; /** * Image width * - inches or percentage * @example 10.25 // position in inches * @example '75%' // position as percentage of slide size */ w: Coord; /** * Image height * - inches or percentage * @example 10.25 // position in inches * @example '75%' // position as percentage of slide size */ h: Coord; /** * Offset from left to crop image * - `crop` only * - inches or percentage * @example 10.25 // position in inches * @example '75%' // position as percentage of slide size */ x?: Coord; /** * Offset from top to crop image * - `crop` only * - inches or percentage * @example 10.25 // position in inches * @example '75%' // position as percentage of slide size */ y?: Coord; }; /** * Transparency (percent) * - MS-PPT > Format Picture > Picture > Picture Transparency > Transparency * - range: 0-100 * @default 0 * @example 25 // 25% transparent */ transparency?: number; /** * Recolor SVG paths (Martin-N) * - Hex `color` only; replaces existing `#RRGGBB` fills, or adds `fill` on bare `` elements * @example { color: 'FF0000' } */ fill?: ShapeFillProps; /** * Animation configuration * - Can be a simple animation name or full configuration object * @example 'fadein' * @example { type: 'flyin', direction: 'left', duration: 1000 } */ animation?: string | AnimationConfig; } /** * Recolor and correction effects applied to an image's `a:blip` * - PowerPoint Picture Format > Color / Corrections * - named `recolor` so it does not collide with SVG path `fill` recolor * - artistic effects are not implemented (MS-ODRAWXML + required pre-rendered `a14:imgLayer`) */ declare interface ImageRecolorProps { /** * Map the image onto two colours (`a:duotone`) * - the schema requires exactly two, so anything else is dropped * @example ['000000', 'FFFFFF'] */ duotone?: [Color, Color]; /** Convert to greyscale (`a:grayscl`) */ grayscale?: boolean; /** * Brightness, percent -100 to 100 (`a:lum@bright`) * @default 0 */ brightness?: number; /** * Contrast, percent -100 to 100 (`a:lum@contrast`) * @default 0 */ contrast?: number; /** * Reduce to two tones at this threshold, percent 0 to 100 (`a:biLevel@thresh`) */ blackWhiteThreshold?: number; /** * Replace one colour with another (`a:clrChange`) * - both colours are required by the schema */ colorChange?: { from: Color; to: Color; /** * Whether the alpha channel takes part in the comparison (`@useA`) * @default true */ useAlpha?: boolean; }; } /** Ink content part (MS-PPTX §2.2.3.1). Opt-in; emits `mc:AlternateContent` with a `pic` fallback. */ declare interface InkProps extends ContentPartProps { /** Cover/thumbnail image for the mandated `pic` fallback (base64 data URI). */ cover?: string; } declare interface IOptsChartData extends OptsChartData { labels?: string[][]; } declare interface IPresentationProps extends PresentationProps { sections: SectionProps[]; slideLayouts: SlideLayout[]; slides: PresSlide[]; } declare interface ISlideObject { _type: SLIDE_OBJECT_TYPES; options?: ObjectOptions; text?: TextProps[]; arrTabRows?: TableCell[][]; chartRid?: number; image?: string; imageRid?: number; hyperlink?: HyperlinkProps; /** * Mouse-over action, configured like `hyperlink` but triggered on hover * - PowerPoint's Insert > Action > Mouse Over tab */ hyperlinkHover?: HyperlinkProps; media?: string; mtype?: MediaType; mediaRid?: number; /** * rId of the media frame's preview image - the media source kinds push different numbers of * relationships, so the cover cannot be derived from `mediaRid` * @internal */ _coverRid?: number; shape?: SHAPE_NAME; /** @internal group children (`p:grpSp`) */ _objects?: ISlideObject[]; /** zoom kind: slide | section | summary @internal */ zoomKind?: 'slide' | 'section' | 'summary'; /** 1-based target slide number (slide zoom) @internal */ zoomSlideNum?: number; /** target section title (section/summary zoom) @internal */ zoomSectionTitle?: string; /** extra summary-zoom section titles (`sectionTitles`) @internal */ zoomSectionTitles?: string[]; /** resolved target section GUID (braced `{…}`), set at build @internal */ zoomSectionId?: string; /** resolved extra summary-zoom section GUIDs @internal */ zoomSectionIds?: string[]; /** cover/thumbnail image rId @internal */ zoomRid?: number; /** content-part / ink / Office App relationship id @internal */ contentPartRid?: number; /** content-part kind: generic (`sp` fallback) or ink (`pic` fallback) @internal */ contentPartKind?: 'content' | 'ink'; /** cover/thumbnail image rId for ink / Office App pic fallback @internal */ coverRid?: number; /** MS-PPTX §2.3.2.2 bwMode on contentPart @internal */ contentPartBwMode?: string; } declare interface ISlideRel { type: SLIDE_OBJECT_TYPES; Target: string; fileName?: string; data: any[] | string; opts?: IChartOpts; path?: string; extn?: string; globalId?: number; rId: number; /** Override content type for extension parts (content-part / ink / Office App) */ contentType?: string; } declare interface ISlideRelChart extends OptsChartData { type: CHART_NAME | CHARTEX_NAME | IChartMulti[]; opts: IChartOptsLib; data: IOptsChartData[]; rId: number; Target: string; globalId: number; fileName: string; } declare interface ISlideRelMedia { type: string; opts?: MediaProps; path?: string; extn?: string; data?: string | ArrayBuffer; /** used to indicate that a media file has already been read/enocded (PERF) */ isDuplicate?: boolean; /** * Media referenced rather than embedded: the relationship is written `TargetMode="External"` * and no part is added to the package * @internal */ isLinked?: boolean; isSvgPng?: boolean; /** SVG path recolor (Martin-N) — applied when encoding SVG media */ fill?: ShapeFillProps; svgSize?: { w: number; h: number; }; rId: number; Target: string; } declare type JSZIP_OUTPUT_TYPE = 'arraybuffer' | 'base64' | 'binarystring' | 'blob' | 'nodebuffer' | 'uint8array'; /** * East Asian line-breaking rules (`p:kinsoku`) */ declare interface KinsokuProps { /** language the rules apply to, ex: 'ja-JP' */ lang?: string; /** characters that may not start a line */ invalidStartChars?: string; /** characters that may not end a line */ invalidEndChars?: string; } /** A laser-pointer sample. MS-PPTX §2.3.3.9 `CT_LaserTracePoint`. `t` is ms; `x`/`y` are EMU. */ declare interface LaserTracePoint { /** Time from the start of the slide timeline, in milliseconds. */ t: number; /** Horizontal location in EMU from the top-left of the slide. */ x: number; /** Vertical location in EMU from the top-left of the slide. */ y: number; } /** ECMA-376 ST_LineEndWidth / ST_LineEndLength */ declare type LineArrowSize = 'sm' | 'med' | 'lg'; declare type Margin = number | [number, number, number, number]; /** * Failed media/image load policy. * `'placeholder'` isolates one asset; it does not swallow invalid API usage. */ declare type MediaOnError = 'throw' | 'placeholder'; /** * Add media (audio/video) to slide * @requires either `link` or `path` */ declare interface MediaProps extends PositionProps, DataOrPathProps, ObjectNameProps, AppearOnClickProps, NvPrExtensionProps { /** * Media type * - Use 'online' to embed a YouTube video (only supported in recent versions of PowerPoint) */ type: MediaType; /** * Cover image * @since 3.9.0 * @default "play button" image, gray background */ cover?: string; /** * media file extension * - use when the media file path does not already have an extension, ex: "/folder/SomeSong" * @since 3.9.0 * @default extension from file provided */ extn?: string; /** * Animation configuration * - Can be a simple animation name or full configuration object * @example 'fadein' * @example { type: 'flyin', direction: 'left', duration: 1000 } */ animation?: string | AnimationConfig; /** * video embed link * - works with YouTube * - other sites may not show correctly in PowerPoint * @example 'https://www.youtube.com/embed/Dph6ynRVyUc' // embed a youtube video */ link?: string; /** * full or local path * @example 'https://freesounds/simpsons/bart.mp3' // embed mp3 audio clip from server * @example '/sounds/simpsons_haha.mp3' // embed mp3 audio clip from local directory */ path?: string; /** * Trim playback start/end (milliseconds). MS-PPTX §2.3.3.18 `p14:media/p14:trim`. * @example { st: 1000, end: 500 } // skip first 1s and last 0.5s */ trim?: { st?: number; end?: number; }; /** * Audio fade in/out durations (milliseconds). MS-PPTX §2.3.3.15 `p14:media/p14:fade`. * @example { in: 500, out: 1000 } */ fade?: { in?: number; out?: number; }; /** * Media bookmarks (name + ms timestamp). MS-PPTX §2.3.3.11/12 `p14:media/p14:bmkLst`. * @example [{ name: 'chorus', time: 30000 }] */ bookmarks?: { name: string; time: number; }[]; /** * Mark the shape as a narration recording. MS-PPTX §2.2.14 `isNarration`. * @default false */ isNarration?: boolean; /** * Start playing the media automatically when the slide is shown (no click needed). * Implemented via the slide timing tree (`p:timing`) as a `p:video`/`p:audio` media node * whose start condition has `delay="0"` (ECMA-376 §19.5 `CT_TLMediaNode` / MS-PPTX §2.3.3). * * Playback options (`autoplay`, `loop`, `fullScreen`, `mute`) are additive. Omitted/`false` * is the default: click-to-play (`delay="indefinite"`), play once, windowed, unmuted. * A timing-tree media node is emitted only when at least one option is `true`. * * Invalid (thrown by `addMedia`): `fullScreen` on `type: 'audio'` (`fullScrn` exists only on * `CT_TLMediaNodeVideo`); any of these four on `type: 'online'` (linked videos have no * embedded timing-tree media node). * @default false (plays on click) */ autoplay?: boolean; /** * Loop the media until stopped ("Loop until Stopped" in the PowerPoint Playback tab). * Sets `repeatCount="indefinite"` on the media node's `cTn` (ECMA-376 §19.5.33). * @default false */ loop?: boolean; /** * Play the video full-screen (`p:video@fullScrn`, ECMA-376 §19.5.92 `CT_TLMediaNodeVideo`). * Invalid on `type: 'audio'` and `type: 'online'`. * @default false */ fullScreen?: boolean; /** * Mute the media's audio (`p:cMediaNode@mute`, ECMA-376 §19.5.30 `CT_TLCommonMediaNodeData`). * Invalid on `type: 'online'`. * @default false */ mute?: boolean; /** * MIME type of the referenced media (`a:audioFile@contentType`, `a:videoFile@contentType`) * @example 'video/mp4' */ contentType?: string; /** * CD audio track range - required when `type` is `audioCd` * @example { start: { track: 1 }, end: { track: 1, time: 30 } } */ audioCd?: AudioCdProps; /** * Mark the media frame as a photo (`p:nvPr@isPhoto`) * @default false */ isPhoto?: boolean; /** * Mark the media frame as author-placed rather than layout furniture (`p:nvPr@userDrawn`) * @default false */ userDrawn?: boolean; } declare type MediaType = 'audio' | 'online' | 'video' | 'audioCd' | 'wav'; /** * Theme/hex color with DrawingML color transforms (`a:tint`, `a:shade`, `a:lumMod`, …) * - Percent fields are 0-100 (written as OOXML 0-100000) * - `hue` / `hueOff` are degrees (written as OOXML fixed-angle = deg × 60000) * @example { baseColor: 'accent1', tint: 40 } * @example { baseColor: 'FF0000', shade: 50, alpha: 80 } */ declare interface ModifiedThemeColor { baseColor: HexColor | ThemeColor; /** Opacity percent 0-100 (OOXML `a:alpha`) */ alpha?: number; alphaMod?: number; alphaOff?: number; blue?: number; blueMod?: number; blueOff?: number; green?: number; greenMod?: number; greenOff?: number; red?: number; redMod?: number; redOff?: number; /** Hue in degrees 0-359 (OOXML `a:hue`) */ hue?: number; /** Hue modulation percent 0-100 */ hueMod?: number; /** Hue offset in degrees */ hueOff?: number; lum?: number; lumMod?: number; lumOff?: number; sat?: number; satMod?: number; satOff?: number; shade?: number; tint?: number; comp?: boolean; gray?: boolean; inv?: boolean; gamma?: boolean; } /** * Non-visual drawing properties beyond the name (ECMA-376 19.3.1.12 `p:cNvPr`) */ declare interface NonVisualProps { /** * Alt-text *title*, distinct from the description * - PowerPoint: right-click > Edit Alt Text */ title?: string; /** * Hide the shape * - it stays in the file and can be re-shown from the selection pane * @default false */ hidden?: boolean; /** * Editing locks for this shape */ lock?: ShapeLockProps; } /** * Opt-in MS-PPTX nvPr extensions: designElem (§2.2.17), classification (§2.2.18), * designPr (§2.2.19), and phTypeExt (§2.22). Classification is never defaulted. */ declare interface NvPrExtensionProps { /** * Mark the object as a Designer design element. MS-PPTX §2.5.1.1 `designElem`. * Emitted on `p:nvPr` extLst URI `{386F3935-93C4-4BCD-93E2-E3B085C9AB24}`. */ designElem?: boolean; /** * Classification / compliance outcome. MS-PPTX §2.15.1.1 `classification`. * Emitted only when set. URI `{1162E1C5-73C7-4A58-AE30-91384D911F3F}`. */ classification?: ClassificationOutcome; /** * Designer drawing properties. MS-PPTX §2.17.1.1 `designPr`. * URI `{E7BDC344-281C-4309-B0C6-D0EE65EED2A8}`. */ designPr?: DesignerProps; /** * Modern placeholder type (`cameo` / `unknown`). MS-PPTX §2.22.1.1 `phTypeExt`. * Nested under `p:ph` extLst URI `{56F484CC-4922-43CF-B6FB-B326C6A72FC8}`. */ phTypeExt?: PlaceholderTypeExt; } declare interface ObjectNameProps extends NonVisualProps { /** * Object name * - used instead of default "Object N" name * - PowerPoint: Home > Arrange > Selection Pane... * @since v3.10.0 * @default 'Object 1' * @example 'Antenna Design 9' */ objectName?: string; /** * Explicit DrawingML shape id (`p:cNvPr@id`) * - Required when other shapes attach connectors via `line.sourceId` / `line.targetId` * - Must be unique on the slide; defaults to `slideObjectIndex + 2` when omitted * @see ZentoSoft/PptxGenJS connectors * @example 20 */ sId?: number; /** * Shape modification identifier (MS-PPTX §2.3.1.19 `p14:modId` on `nvPr`). * Updated each time the shape is modified; MUST be unique on the slide. * Opt-in — omitted unless set. @example 1579011935 */ modId?: number; } declare interface ObjectOptions extends ImageProps, PositionProps, ShapeProps, TableCellProps, TextPropsOptions { _placeholderIdx?: number; _placeholderType?: PLACEHOLDER_TYPE; /** placeholder text direction (`p:ph@orient`) */ orient?: 'horz' | 'vert'; /** placeholder size (`p:ph@sz`) */ sz?: 'full' | 'half' | 'quarter'; /** author-placed rather than layout furniture (`p:nvPr@userDrawn`) */ userDrawn?: boolean; /** image added without `w`/`h`: size it from the image itself during export @internal */ _sizeFromImage?: boolean; /** Caller set this axis; placeholder geometry must not overwrite it. */ _explicitX?: boolean; _explicitY?: boolean; _explicitW?: boolean; _explicitH?: boolean; cx?: Coord; cy?: Coord; margin?: Margin; colW?: number | number[]; rowH?: number | number[]; trim?: { st?: number; end?: number; }; fade?: { in?: number; out?: number; }; bookmarks?: { name: string; time: number; }[]; isNarration?: boolean; autoplay?: boolean; loop?: boolean; fullScreen?: boolean; mute?: boolean; /** MIME type of referenced media (`a:audioFile@contentType`) @internal */ contentType?: string; /** CD audio track range (`a:audioCd`) @internal */ audioCd?: AudioCdProps; /** media frame marked as a photo (`p:nvPr@isPhoto`) @internal */ isPhoto?: boolean; /** media referenced rather than embedded @internal */ isLinked?: boolean; returnToParent?: boolean; showBg?: boolean; transitionDur?: number; zoomTitle?: string; zoomDescr?: string; offsetFactorX?: number; offsetFactorY?: number; scaleFactorX?: number; scaleFactorY?: number; designElem?: boolean; classification?: ClassificationOutcome; designPr?: DesignerProps; phTypeExt?: PlaceholderTypeExt; } /** An Office App / content add-in (MS-PPTX §2.2.13, MS-OWEXML webextensionref). */ declare interface OfficeAppProps extends PositionProps, ObjectNameProps { /** Instance id on `we:webextension`. Generated when omitted. */ id?: string; /** Primary catalog reference (required). */ reference: OfficeAppReference; /** Custom properties written to `we:properties`. */ properties?: Record | Array<{ name: string; value: string; }>; /** When true, the add-in is non-interactive (`frozen`). */ frozen?: boolean; /** Cover/thumbnail image for the mandated `pic` fallback (base64 data URI). */ cover?: string; /** Optional alt text. */ altText?: string; } /** Catalog reference for an Office Add-in (MS-OWEXML CT_OsfWebExtensionReference). */ declare interface OfficeAppReference { /** Add-in id within the catalog provider. */ id: string; /** Add-in version. @default '1.0.0.0' */ version?: string; /** Marketplace / store instance. */ store?: string; /** Marketplace type. @default SPCatalog */ storeType?: OfficeAppStoreType | string; } /** MS-OWEXML CT_OsfWebExtensionReference `storeType` values. */ declare type OfficeAppStoreType = 'OMEX' | 'SPCatalog' | 'SPApp' | 'Exchange' | 'FileSystem' | 'Registry' | 'ExCatalog' | 'WOPICatalog'; declare interface OptsChartData { _dataIndex?: number; /** * category labels * @example ['Year 2000', 'Year 2010', 'Year 2020'] // single-level category axes labels * @example [['Year 2000', 'Year 2010', 'Year 2020'], ['Decades', '', '']] // multi-level category axes labels * @since `labels` string[][] type added v3.11.0 */ labels?: string[] | string[][]; /** * series name * @example 'Locations' */ name?: string; /** * bubble sizes * @example [5, 1, 5, 1] */ sizes?: number[]; /** * category values * @example [2000, 2010, 2020] */ values?: number[]; /** * Per-point custom Y error-bar magnitudes (symmetric plus/minus) * - emits DrawingML `` with `errValType="cust"` * - values are packed into columns after all series in the embedded workbook * @example [0.5, 0.3, 0.8] * @see LanPodder/master */ errorrate?: number[]; /** * Series color - overrides the `chartColors` cycle for this series only * - hex color or the string `'transparent'` * - pie/doughnut charts colour each data point rather than each series: use `chartColors` for those * @example 'FF0000' // this series is red, the rest follow `chartColors` */ color?: string; /** * Per-point custom data label text (replaces the numeric value label for that index) * - sparse arrays are allowed: only defined string entries emit a custom `` * - other points keep series-level `` defaults * @example ['Q1', 'Q2', 'Q3', 'Q4'] * @example [undefined, 'Peak'] // only the second point is overridden * @since v4.1.2 */ dataLabels?: Array; /** * "Value From Cells" data labels (DrawingML `c15:datalabelsRange`) * - PowerPoint: Chart Design > Add Chart Element > Data Labels > More Options > Value From Cells * - distinct from `dataLabels` (rich-text ``); use this for the Excel-linked range path * @example ['10 units', '20 units', '30 units'] * @see Toukyh/fix-custom-label */ labelsRange?: string[]; /** * Per-series line dash for line/scatter/bubble (overrides chart-level `lineDash`) * - DrawingML `a:prstDash` / ST_PresetLineDashVal * @example 'dash' */ lineDash?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; } declare interface OptsChartGridLine { /** * MS-PPT > Chart format > Format Major Gridlines > Line > Cap type * - line cap type * @default flat */ cap?: ChartLineCap; /** * Gridline color (`HexColor`, `ThemeColor`, or `ModifiedThemeColor`) * - widened to `Color` so `IChartOpts` can extend both this and `IChartPropsTitle` * (`TextBaseProps.color` is also `Color` after theme-color support) * @example 'FF3399' */ color?: Color; /** * Gridline size (points) */ size?: number; /** * Gridline style */ style?: 'solid' | 'dash' | 'dot' | 'none'; } declare enum OutputType { 'arraybuffer' = "arraybuffer", 'base64' = "base64", 'binarystring' = "binarystring", 'blob' = "blob", 'nodebuffer' = "nodebuffer", 'uint8array' = "uint8array" } /** * Paragraph attributes beyond margins/alignment (`a:pPr`, ECMA-376 21.1.2.2.7) */ declare interface ParagraphProps { /** * Right margin in inches (`a:pPr@marR`) */ marR?: number; /** * Default tab stop interval in inches (`a:pPr@defTabSz`) */ defTabSz?: number; /** * Baseline alignment of glyphs within the line (`a:pPr@fontAlgn`) */ fontAlgn?: 'auto' | 't' | 'ctr' | 'base' | 'b'; /** * Apply East Asian line-breaking rules (`a:pPr@eaLnBrk`) * - schema default is true; written only when turned off * @default true */ eaLnBrk?: boolean; /** * Allow Latin words to break across lines (`a:pPr@latinLnBrk`) * - schema default is true; written only when turned off * @default true */ latinLnBrk?: boolean; /** * Apply hanging punctuation (`a:pPr@hangingPunct`) * - schema default is true; written only when turned off * @default true */ hangingPunct?: boolean; } declare type PathAnimation = 'pathdown' | 'patharcdown' | 'pathturnright' | 'pathcircle' | 'pathzigzag'; /** * Photo-album mode (`p:photoAlbum`) */ declare interface PhotoAlbumProps { /** render in black and white */ blackWhite?: boolean; /** show captions below each picture */ showCaptions?: boolean; /** pictures per slide and orientation */ layout?: 'fitToSlide' | '1pic' | '2pic' | '4pic' | '1picTitle' | '2picTitle' | '4picTitle'; /** frame style drawn around each picture */ frame?: 'frameStyle1' | 'frameStyle2' | 'frameStyle3' | 'frameStyle4' | 'frameStyle5' | 'frameStyle6' | 'frameStyle7'; } declare type PLACEHOLDER_TYPE = 'title' | 'body' | 'ctrTitle' | 'subTitle' | 'dt' | 'sldNum' | 'ftr' | 'hdr' | 'obj' | 'chart' | 'tbl' | 'clipArt' | 'dgm' | 'media' | 'sldImg' | 'pic'; declare interface PlaceholderProps extends PositionProps, TextBaseProps, NvPrExtensionProps { name: string; type: PLACEHOLDER_TYPE; /** * margin (points) */ margin?: Margin; /** * Placeholder background fill. Kept when a slide inherits layout defaults (caller fill wins). */ fill?: ShapeFillProps; /** * Text direction inside the placeholder (`p:ph@orient`) * @default horz */ orient?: 'horz' | 'vert'; /** * How much of the layout the placeholder covers (`p:ph@sz`) * @default full */ sz?: 'full' | 'half' | 'quarter'; /** * Mark the placeholder as drawn by the author rather than inherited layout furniture * (`p:nvPr@userDrawn`) * @default false */ userDrawn?: boolean; } /** Modern placeholder type extension (`CT_PlaceholderTypeACB`, MS-PPTX §2.22). */ declare type PlaceholderTypeExt = 'cameo' | 'unknown'; declare interface PositionProps { /** * Horizontal position * - inches or percentage * @example 10.25 // position in inches * @example '75%' // position as percentage of slide size */ x?: Coord; /** * Vertical position * - inches or percentage * @example 10.25 // position in inches * @example '75%' // position as percentage of slide size */ y?: Coord; /** * Height * - inches or percentage * @example 10.25 // height in inches * @example '75%' // height as percentage of slide size */ h?: Coord; /** * Width * - inches or percentage * @example 10.25 // width in inches * @example '75%' // width as percentage of slide size */ w?: Coord; } declare class PptxGenJS implements IPresentationProps { /** * Presentation layout name * Standard layouts: * - 'LAYOUT_4x3' (10" x 7.5") * - 'LAYOUT_16x9' (10" x 5.625") * - 'LAYOUT_16x10' (10" x 6.25") * - 'LAYOUT_WIDE' (13.33" x 7.5") * Custom layouts: * Use `pptx.defineLayout()` to create custom layouts (e.g.: 'A4') * @type {string} * @see https://support.office.com/en-us/article/Change-the-size-of-your-slides-040a811c-be43-40b9-8d04-0de5ed79987e */ private _layout; set layout(value: string); get layout(): string; /** * PptxGenJS Library Version */ private readonly _version; get version(): string; /** * @type {string} */ private _author; set author(value: string); get author(): string; /** * OPC `dcterms:created` written to `docProps/core.xml`. */ private _created?; set created(value: Date); get created(): Date | undefined; /** * OPC `dcterms:modified` written to `docProps/core.xml`. */ private _modified?; set modified(value: Date); get modified(): Date | undefined; /** * Failed image/media load policy. Default throws so invalid input still fails the export. */ private _mediaOnError; set mediaOnError(value: MediaOnError); get mediaOnError(): MediaOnError; /** * @type {string} */ private _company; set company(value: string); get company(): string; /** * @type {string} * @note the `revision` value must be a whole number only (without "." or "," - otherwise, PPT will throw errors upon opening!) */ private _revision; set revision(value: string); get revision(): string; /** * @type {string} */ private _subject; set subject(value: string); get subject(): string; /** * @type {ThemeProps} */ private _theme?; set theme(value: ThemeProps); get theme(): ThemeProps | undefined; /** * @type {string} */ private _title; set title(value: string); get title(): string; /** * Whether Right-to-Left (RTL) mode is enabled * @type {boolean} */ private _rtlMode; set rtlMode(value: boolean); get rtlMode(): boolean; /** tableStyles - custom table style definitions written into `ppt/tableStyles.xml` */ private _tableStyles?; set tableStyles(value: TableStyleProps[] | undefined); get tableStyles(): TableStyleProps[] | undefined; /** * Starting slide number (`p:presentation@firstSlideNum`) * @default 1 * @example pptx.firstSlideNum = 0 */ private _firstSlideNum; get firstSlideNum(): number; set firstSlideNum(value: number); /** * Zip compression for exported files - document config applied by every export method * @default 'none' * @since v4.1.0 */ private _compression; set compression(value: CompressionLevel); get compression(): CompressionLevel; /** master slide layout object */ private readonly _masterSlide; get masterSlide(): PresSlide; /** this Presentation's Slide objects */ private readonly _slides; get slides(): PresSlide[]; /** this Presentation's sections */ private readonly _sections; get sections(): SectionProps[]; /** * Editor alignment guides (MS-PPTX §2.4.3.3). Emitted as `p15:sldGuideLst`. * @example pptx.guides = [{ orient: 'vert', pos: 3.5 }, { orient: 'horz', pos: 2 }] */ guides: GuideProps[]; /** Default image DPI. MS-PPTX §2.3.1.5 `p14:defaultImageDpi` on `presentationPr`. */ defaultImageDpi?: number; /** Discard image edit data on save. MS-PPTX §2.3.1.6 `p14:discardImageEditData`. */ discardImageEditData?: boolean; /** Recommend opening read-only. MS-PPTX §2.14.1.1 `p1710:readonlyRecommended`. */ readonlyRecommended?: boolean; /** Browse-mode status bar. MS-PPTX §2.3.1.2 `p14:browseMode` on `showPr`. */ browseMode?: boolean; /** Laser-pointer color. MS-PPTX §2.3.1.16 `p14:laserClr` on `showPr`. */ laserColor?: string; /** * Slide-show options (`p:showPr`). Opt-in — omitted unless set. * @example pptx.slideShow = { mode: 'kiosk', loop: true } */ slideShow?: SlideShowProps; /** * Chart data-point properties and datalabels follow their cell references. * MS-PPTX §2.4.1.1 `chartTrackingRefBased` on `presentationPr` extLst. * @example pptx.chartTrackingRefBased = true */ chartTrackingRefBased?: boolean; /** * Notes-page alignment guides (MS-PPTX §2.4.1.3). Emitted as `p15:notesGuideLst`. * @example pptx.notesGuides = [{ orient: 'horz', pos: 2 }] */ notesGuides: GuideProps[]; /** Additional document properties written to `docProps`. */ documentProps?: DocumentProps; /** Slide-size preset (`p:sldSz@type`). */ slideSizeType?: SlideSizeType; /** Photo-album mode (`p:photoAlbum`). */ photoAlbum?: PhotoAlbumProps; /** East Asian line-breaking rules (`p:kinsoku`). */ kinsoku?: KinsokuProps; /** Print defaults (`p:prnPr` on `presentationPr`). */ printProps?: PrintProps; /** Recently-used colours (`p:clrMru` on `presentationPr`). */ recentColors?: Color[]; /** View properties (`ppt/viewProps.xml`). Unset keeps the previous hardcoded viewPr. */ viewProps?: ViewProps; /** * Modern comment authors (MS-PPTX §2.16). Emitted to `ppt/authors.xml`. * Auto-populated from slide `addComment` author names if left empty. * @example pptx.commentAuthors = [{ name: 'Ada Lovelace', initials: 'AL' }] */ commentAuthors: CommentAuthorProps[]; /** * Revision Information part (MS-PPTX §2.1.2). Opt-in — not emitted unless set. * @example pptx.revisionInfo = { clients: [{ id: 'app-1', v: 1, dt: '2024-08-15T00:00:00Z' }] } */ revisionInfo?: boolean | RevisionInfoProps; /** * Changes Information part (MS-PPTX §2.1.4). Opt-in — not emitted unless set. * @example pptx.changesInfo = true */ changesInfo?: boolean | ChangesInfoProps; /** slide layout definition objects, used for generating slide layout files */ private readonly _slideLayouts; get slideLayouts(): SlideLayout[]; private LAYOUTS; /** Fonts registered via addFont() — embedded into the PPTX on export */ private readonly _embedFonts; private readonly _alignH; get AlignH(): typeof AlignH; private readonly _alignV; get AlignV(): typeof AlignV; private readonly _chartType; get ChartType(): typeof ChartType; private readonly _outputType; get OutputType(): typeof OutputType; private _presLayout; get presLayout(): PresLayout; private readonly _schemeColor; get SchemeColor(): typeof SchemeColor; private readonly _shapeType; get ShapeType(): typeof ShapeType; private readonly _transitionType; get TransitionType(): typeof TransitionType; private readonly _animationPreset; get AnimationPreset(): typeof AnimationPreset; /** * @depricated use `ChartType` */ private readonly _charts; get charts(): typeof CHART_TYPE; /** * @depricated use `SchemeColor` */ private readonly _colors; get colors(): typeof SCHEME_COLOR_NAMES; /** * @depricated use `ShapeType` */ private readonly _shapes; get shapes(): typeof SHAPE_TYPE; /** Connection-site helpers for connectors (`line.sourceAnchorPos` / `targetAnchorPos`) — ZentoSoft */ private readonly _anchor; get anchor(): typeof ANCHOR; /** Alias of `anchor` (PascalCase, matches `ShapeType`) */ get Anchor(): typeof ANCHOR; private _chartCounter; private readonly allocChartId; constructor(); /** * Provides an API for `addTableDefinition` to create slides as needed for auto-paging * @param {AddSlideProps} options - slide masterName and/or sectionTitle * @return {PresSlide} new Slide */ private readonly addNewSlide; /** * Provides an API for `addTableDefinition` to get slide reference by number * @param {number} slideNum - slide number * @return {PresSlide} Slide * @since 3.0.0 */ private readonly getSlide; /** * Enables the `Slide` class to set PptxGenJS [Presentation] master/layout slidenumbers * @param {SlideNumberProps} slideNum - slide number config */ private readonly setSlideNumber; /** * Create all chart and media rels for this Presentation * @param {PresSlide | SlideLayout} slide - slide with rels * @param {JSZip} zip - JSZip instance * @param {Promise[]} chartPromises - promise array */ private readonly createChartMediaRels; /** * Create and export the .pptx file * @param {string} exportName - output file type * @param {Blob} blobContent - Blob content * @return {Promise} Promise with file name */ private readonly writeFileToBrowser; /** * Create and export the .pptx file * @param {WRITE_OUTPUT_TYPE} outputType - output file type * @return {Promise} Promise with data or stream (node) or filename (browser) */ private readonly exportPresentation; /** * Export the current Presentation to stream * @param {WriteBaseProps} props - output properties * @returns {Promise} file stream */ stream(props?: WriteBaseProps): Promise; /** * Export the current Presentation as JSZip content with the selected type * @param {WriteProps} props output properties * @returns {Promise} file content in selected type */ write(props?: WriteProps | WRITE_OUTPUT_TYPE): Promise; /** * Export the current Presentation. * Write the generated presentation to disk (Node) or trigger a download (browser). * @param {WriteFileProps} props - output file properties * @returns {Promise} the presentation name */ writeFile(props?: WriteFileProps | string): Promise; /** * Opt-in: register a custom font to embed in the exported PPTX. * Nothing is embedded unless this is called — the default write path * writes no Font parts, no fntdata content type, and no font relationships. * - Call before `write` / `writeFile` / `stream` * - Use the same `fontFace` name on text/shape options * - Caller must have a third-party license that permits embedding `fontFile` * @param {AddFontOptions} options - font face, file bytes, and format * @example await pptx.addFont({ fontFace: 'MyFont', fontFile: ttfBuffer, fontType: 'ttf' }) */ addFont(options: AddFontOptions): Promise; /** * Add a new Section to Presentation * @param {ISectionProps} section - section properties * @example pptx.addSection({ title:'Charts' }); */ addSection(section: SectionProps): void; /** * Add a new Slide to Presentation * @param {AddSlideProps} options - slide options * @returns {PresSlide} the new Slide */ addSlide(options?: AddSlideProps): PresSlide; /** * Create a custom Slide Layout in any size * @param {DefineLayoutProps} layout - layout properties (`width`/`height` or `w`/`h`) * @example pptx.defineLayout({ name:'A3', width:16.5, height:11.7 }); */ defineLayout(layout: DefineLayoutProps): void; /** * Create a new slide master [layout] for the Presentation * @param {SlideMasterProps} props - layout properties */ defineSlideMaster(props: SlideMasterProps): void; /** * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed * @param {string} eleId - table HTML element ID * @param {TableToSlidesProps} options - generation options */ tableToSlides(eleId: string, options?: TableToSlidesProps): void; } export default PptxGenJS; declare interface PresentationProps { author: string; company: string; /** * OPC core property `dcterms:created` (W3CDTF). Defaults to export time. */ created?: Date; /** * OPC core property `dcterms:modified` (W3CDTF). Defaults to export time. */ modified?: Date; /** * How a failed image/media load is handled. * - `'throw'` (default): abort the export (invalid paths, HTTP errors, decode failures) * - `'placeholder'`: keep going and embed the broken-image sentinel for that asset only * @default 'throw' */ mediaOnError?: MediaOnError; /** * Zip compression for exported files * @default 'none' * @since v4.1.0 */ compression: CompressionLevel; layout: string; masterSlide: PresSlide; /** * Presentation's layout * read-only */ presLayout: PresLayout; revision: string; /** * Whether to enable right-to-left mode * @default false */ rtlMode: boolean; /** * Custom table style definitions written into `ppt/tableStyles.xml` * - reference one from a table with `tableStyleId` */ tableStyles?: TableStyleProps[]; /** * Starting slide number written to `ppt/presentation.xml` (`firstSlideNum`) * - PowerPoint: Design > Slide Size > Custom Slide Size > Number slides from * @default 1 * @example 0 // first slide displays as "0" */ firstSlideNum: number; /** * Alignment guides shown in PowerPoint's editor (ruler guides). MS-PPTX §2.4.3.3 `CT_ExtendedGuide`. * Emitted as `p15:sldGuideLst` under `` extLst. * @example [{ orient: 'vert', pos: 3.5 }, { orient: 'horz', pos: 2, color: 'FF0000' }] // pos in inches */ guides?: GuideProps[]; /** * Alignment guides for notes page view. MS-PPTX §2.4.1.3 `notesGuideLst`. * Emitted as `p15:notesGuideLst` under `` extLst. * @example [{ orient: 'vert', pos: 3.5 }] */ notesGuides?: GuideProps[]; /** * Default DPI used when compressing/saving images. MS-PPTX §2.3.1.5 `defaultImageDpi`. * Only applies when image compression is on. `0` means "do not compress". * @example 220 * @example 0 */ defaultImageDpi?: number; /** * Slide-show options (`p:showPr`). Opt-in — omitted unless set. * Emits the required present/browse/kiosk choice plus optional loop/narration/animation flags. * Flat `browseMode` / `laserColor` still work and merge into this `showPr`. * @example { mode: 'kiosk', loop: true } */ slideShow?: SlideShowProps; /** * Discard image editing data (crop info, imgProps) on save. MS-PPTX §2.3.1.6 `discardImageEditData`. * @default false */ discardImageEditData?: boolean; /** * Recommend the document open read-only. MS-PPTX §2.14.1.1 `readonlyRecommended`. * @default false */ readonlyRecommended?: boolean; /** * Chart data-point properties and datalabels follow their cell references. * MS-PPTX §2.4.1.1 `chartTrackingRefBased` on `presentationPr` extLst * (`uri="{FD5EFAAD-0ECE-453E-9831-46B23BE46B34}"`). Opt-in; unset is not emitted. * @default unset */ chartTrackingRefBased?: boolean; /** * Status-bar visibility when the slide show is in browse mode. * MS-PPTX §2.3.1.2 `p14:browseMode` on `presentationPr/showPr`. */ browseMode?: boolean; /** * Laser-pointer color. MS-PPTX §2.3.1.16 `p14:laserClr` on `presentationPr/showPr`. * @example 'FF0000' */ laserColor?: HexColor; /** * Modern comment authors (MS-PPTX §2.16 `authorLst`). Emitted to `ppt/authors.xml`. * Comments reference authors by index. Auto-populated from slide comments if left empty. * @example [{ name: 'Ada Lovelace', initials: 'AL' }] */ commentAuthors?: CommentAuthorProps[]; /** * Revision Information part (MS-PPTX §2.1.2 `revInfo`). Opt-in — omitted unless set. * `true` or `{}` emits an empty valid part; `clients` records collaborative revisions. * @example { clients: [{ id: 'app-1', v: 1, dt: '2024-08-15T00:00:00Z' }] } */ revisionInfo?: boolean | RevisionInfoProps; /** * Changes Information part (MS-PPTX §2.1.4 `chgInfo`). Opt-in — omitted unless set. * `true` or `{}` emits an empty valid part (zero-or-one cardinality). */ changesInfo?: boolean | ChangesInfoProps; subject: string; theme?: ThemeProps; title: string; /** * Additional document properties written to `docProps` */ documentProps?: DocumentProps; /** * Slide-size preset (`p:sldSz@type`) * - the dimensions come from the layout; this records which preset they match */ slideSizeType?: SlideSizeType; /** * Photo-album mode (`p:photoAlbum`) */ photoAlbum?: PhotoAlbumProps; /** * East Asian line-breaking rules (`p:kinsoku`) */ kinsoku?: KinsokuProps; /** * Print defaults stored with the deck (`p:prnPr` on `presentationPr`) */ printProps?: PrintProps; /** * Recently-used colours shown in the colour picker (`p:clrMru` on `presentationPr`) */ recentColors?: Color[]; /** * View properties (`ppt/viewProps.xml`). Unset keeps the previous hardcoded viewPr. */ viewProps?: ViewProps; } /** * OOXML preset pattern values for `a:pattFill` * @see ECMA-376 ST_PresetPatternVal * @see https://github.com/hakrueger/PptxGenJS/tree/pattern */ declare type PresetPatternValues = 'cross' | 'dkDnDiag' | 'dkHorz' | 'dkUpDiag' | 'dkVert' | 'dashDnDiag' | 'dashHorz' | 'dashUpDiag' | 'dashVert' | 'diagBrick' | 'diagCross' | 'divot' | 'dotGrid' | 'dotDmnd' | 'dnDiag' | 'horz' | 'horzBrick' | 'lgCheck' | 'lgConfetti' | 'lgGrid' | 'ltDnDiag' | 'ltHorz' | 'ltUpDiag' | 'ltVert' | 'narHorz' | 'narVert' | 'openDmnd' | 'pct5' | 'pct10' | 'pct20' | 'pct25' | 'pct30' | 'pct40' | 'pct50' | 'pct60' | 'pct70' | 'pct75' | 'pct80' | 'pct90' | 'plaid' | 'shingle' | 'smCheck' | 'smConfetti' | 'smGrid' | 'solidDmnd' | 'sphere' | 'trellis' | 'upDiag' | 'vert' | 'wave' | 'weave' | 'wdDnDiag' | 'wdUpDiag' | 'zigZag'; declare interface PresLayout { _sizeW?: number; _sizeH?: number; /** * Layout Name * @example 'LAYOUT_WIDE' */ name: string; width: number; height: number; } declare interface PresSlide extends SlideBaseProps { _rId: number; _slideLayout: SlideLayout; _slideId: number; addChart: (type: CHART_NAME | CHARTEX_NAME | IChartMulti[], data: IOptsChartData[], options?: IChartOpts) => PresSlide; addImage: (options: ImageProps) => PresSlide; addMedia: (options: MediaProps) => PresSlide; addNotes: (notes: string) => PresSlide; addShape: (shapeName: SHAPE_NAME, options?: ShapeProps) => PresSlide; addTable: (tableRows: TableRow[], options?: TableProps) => PresSlide; addText: (text: string | TextProps[], options?: TextPropsOptions) => PresSlide; /** * Group shape (`p:grpSp`). Child `x`/`y` are relative to the group origin. * Holds shapes, text, images, and nested groups — not tables, charts, or media. */ addGroup: (options: GroupProps, build?: (group: Group) => void) => PresSlide; /** * Connector shape (`p:cxnSp`). Additive convenience over `line.isConnector`. * Glue with `start`/`end` `objectName`s, or pass numeric `line.sourceId`/`targetId`. */ addConnector: (options?: ConnectorProps) => PresSlide; /** * WordArt: text with a warp (`presetShape` / `a:prstTxWarp`) and/or a gradient run fill. * Defaults to centered `textNoShape` (no transform) unless `options` override them. */ addWordArt: (text: string | TextProps[], options?: TextPropsOptions) => PresSlide; /** * Background color or image (`color` | `path` | `data`) * @example { color: 'FF3399' } - hex color * @example { color: 'FF3399', transparency:50 } - hex color with 50% transparency * @example { path: 'https://onedrives.com/myimg.png` } - retrieve image via URL * @example { path: '/home/gitbrent/images/myimg.png` } - retrieve image via local path * @example { data: 'image/png;base64,iVtDaDrF[...]=' } - base64 string * @since v3.3.0 */ background?: BackgroundProps; /** * Default text color (hex format) * @example 'FF3399' * @default '000000' (DEF_FONT_COLOR) */ color?: HexColor; /** * Whether slide is hidden * @default false */ hidden?: boolean; /** * Slide number options */ slideNumber?: SlideNumberProps; /** * Slide transition. Emitted as `` (ECMA-376 §19.3.1.50 `CT_SlideTransition`). * @example { type: 'fade', duration: 700 } * @example { type: 'push', direction: 'l', advClick: false, advTm: 3000 } */ transition?: SlideTransitionProps; /** * Add a slide transition (convenience method; sets `transition`). * @example slide.addTransition({ type: 'morph', duration: 800 }) */ addTransition: (options: SlideTransitionProps) => PresSlide; /** * Attach an object animation to the most recently added shape/text/image. * Equivalent to passing `animation` on that object's options. * @example slide.addText('Hello', { x: 0.5, y: 0.5, w: 3, h: 0.5 }).addAnimation('fadein') */ addAnimation: (animation: string | AnimationConfig) => PresSlide; /** * Threaded comments on this slide (MS-PPTX §2.16). Emitted to `ppt/comments/commentSlide.xml`. */ comments?: CommentProps[]; /** * Add a threaded comment to this slide. * @example slide.addComment({ text: 'Review this', author: 'Ada', x: 1, y: 1 }) */ addComment: (comment: CommentProps) => PresSlide; /** * Slide creation identifier (MS-PPTX §2.3.1.4 `p14:creationId` on `cSld`). * Opt-in — omitted unless set. `true` assigns a reproducible id from the slide number. * @example 123456789 * @example true */ creationId?: number | true; /** * Add a Slide Zoom object linking to another slide (MS-PPTX §2.10 `p16:sldZm`). * Rendered inside `mc:AlternateContent` with a `pic` fallback for older readers. * @example slide.addZoom({ slideNum: 3, x: 1, y: 4, w: 2, h: 1.13 }) */ addZoom: (options: ZoomProps) => PresSlide; /** * Add a Section Zoom object linking to a section's first slide (MS-PPTX §2.9 `p16:sectionZm`). * Rendered inside `mc:AlternateContent` with a `pic` fallback. * @example slide.addSectionZoom({ sectionTitle: 'Intro', x: 1, y: 4, w: 2, h: 1.13 }) */ addSectionZoom: (options: SectionZoomProps) => PresSlide; /** * Add a Summary Zoom object linking to a section (MS-PPTX §2.11 `p16:summaryZm`). * Rendered inside `mc:AlternateContent` with a `grpSp` fallback. * @example slide.addSummaryZoom({ sectionTitle: 'Intro', x: 1, y: 4, w: 2, h: 1.13 }) */ addSummaryZoom: (options: SummaryZoomProps) => PresSlide; /** * Recorded laser traces. MS-PPTX §2.3.1.17 `p14:laserTraceLst` on `sld`. * Each inner array is one `tracePtLst`. `t` is milliseconds; `x`/`y` are EMU. */ laserTraces?: LaserTracePoint[][]; /** * Recorded slide-show events. MS-PPTX §2.3.1.26 `p14:showEvtLst` on `sld`. */ showEvents?: SlideShowEvent[]; /** * Embed a content part (MS-PPTX §2.2.3 `p:contentPart`). * Emitted inside `mc:AlternateContent` with an `sp` fallback. Opt-in — not written unless called. * @example slide.addContentPart({ data: '', x: 1, y: 1, w: 2, h: 1 }) */ addContentPart: (options: ContentPartProps) => PresSlide; /** * Embed ink as a content part (MS-PPTX §2.2.3.1). * Emitted inside `mc:AlternateContent` with a `pic` fallback. Opt-in — not written unless called. * @example slide.addInk({ data: inkMl, cover: 'data:image/png;base64,...', x: 1, y: 1, w: 2, h: 1 }) */ addInk: (options: InkProps) => PresSlide; /** * Reference an Office App / web extension (MS-PPTX §2.2.13, MS-OWEXML `webextensionref`). * Emitted inside `mc:AlternateContent` with a `pic` fallback. Opt-in — not written unless called. * @example slide.addOfficeApp({ reference: { id: 'WA00000', version: '1.0.0.0', store: 'en-US', storeType: 'OMEX' }, x: 1, y: 1, w: 3, h: 2 }) */ addOfficeApp: (options: OfficeAppProps) => PresSlide; /** * Designer Service tags on this slide's `p:sldId`. MS-PPTX §2.2.20 `designTagLst`. * Emitted only when set. URI `{E3EDB536-0D56-4F60-86BA-61A60CA02DAB}`. */ designTags?: DesignerTag[]; } /** * Print defaults stored with the deck (`p:prnPr` on `presentationPr`) */ declare interface PrintProps { /** what to print */ what?: 'slides' | 'handouts1' | 'handouts2' | 'handouts3' | 'handouts4' | 'handouts6' | 'handouts9' | 'notes' | 'outline'; /** colour mode */ colorMode?: 'bw' | 'gray' | 'clr'; /** include hidden slides */ hiddenSlides?: boolean; /** scale to fit the paper */ scaleToFitPaper?: boolean; /** draw a frame around each slide */ frameSlides?: boolean; } declare interface RandomBarsAnimationConfig extends BaseAnimationConfig { type: 'randombars' | 'randombarsexit'; direction?: 'horizontal' | 'vertical'; } /** * Reflection effect (`a:reflection`) — Mona/PPTist-compatible subset. * Units: blur/distance in points; direction in degrees; opacity 0–1; scaleY as ratio (e.g. -1). */ declare interface ReflectionProps { /** * Blur radius (points) * @default 0 */ blur?: number; /** * Offset distance (points) * @default 0 */ distance?: number; /** * Direction (degrees) * @default 0 */ direction?: number; /** * Start opacity (0.0–1.0) * @default 0.5 */ opacity?: number; /** * Vertical scale ratio (`sy` / 100000). Negative flips the reflection. * @default -1 */ scaleY?: number; } /** One collaborating application instance in `revInfo` (MS-PPTX §2.7.3.1 `CT_ClientRevision`). */ declare interface RevisionClientProps { /** Unique application-instance id (`ST_ClientID`). */ id: string; /** Latest revision saved by this instance (`ST_ClientRevisionNumber`). */ v?: number; /** Latest revision saved by another instance on this client's behalf. */ vWet?: number; /** Date/time of the later of `v` / `vWet` (`xsd:dateTime`). Defaults to now. */ dt?: string; } /** Revision Information part payload (MS-PPTX §2.7.1.1 `revInfo`). */ declare interface RevisionInfoProps { /** Collaborative client revisions (`revLst`). Omit for an empty `revInfo`. */ clients?: RevisionClientProps[]; } declare enum SCHEME_COLOR_NAMES { 'TEXT1' = "tx1", 'TEXT2' = "tx2", 'BACKGROUND1' = "bg1", 'BACKGROUND2' = "bg2", 'ACCENT1' = "accent1", 'ACCENT2' = "accent2", 'ACCENT3' = "accent3", 'ACCENT4' = "accent4", 'ACCENT5' = "accent5", 'ACCENT6' = "accent6" } /** * TODO: FUTURE: v4.0: rename to `ThemeColor` */ declare enum SchemeColor { 'text1' = "tx1", 'text2' = "tx2", 'background1' = "bg1", 'background2' = "bg2", 'accent1' = "accent1", 'accent2' = "accent2", 'accent3' = "accent3", 'accent4' = "accent4", 'accent5' = "accent5", 'accent6' = "accent6", 'dk1' = "dk1", 'lt1' = "lt1", 'dk2' = "dk2", 'lt2' = "lt2", 'hlink' = "hlink", 'folHlink' = "folHlink", 'phClr' = "phClr" } /** Every `a:schemeClr@val` slot (ECMA-376 20.1.10.51 ST_SchemeColorVal) */ declare type SchemeColorValue = ThemeColor; declare interface SectionProps { /** @internal managed by the library; consumers only pass `{ title, order? }` */ _type?: 'user' | 'default'; /** @internal slides in this section, populated at build time */ _slides?: PresSlide[]; /** Stable GUID for section-zoom anchors (MS-PPTX §2.9). Auto-assigned at build if unset. @internal */ _id?: string; /** * Section title */ title: string; /** * Section order - uses to add section at any index * - values: 1-n */ order?: number; /** * Optional stable GUID written to `p14:section/@id` (MS-PPTX §2.3.3.21). * Accepts with or without braces. Auto-generated at build if omitted. */ id?: string; } /** A Section Zoom navigation object. MS-PPTX §2.9 `CT_SectionZoom`. */ declare interface SectionZoomProps extends ZoomBaseProps { /** Title of the target section (must match an `addSection({ title })`). */ sectionTitle: string; } declare interface ShadowProps { /** * shadow type * @default 'none' */ type: 'outer' | 'inner' | 'none' | 'preset'; /** * Preset shadow name, required when `type` is `preset` (`a:prstShdw@prst`) * - PowerPoint's twenty built-in shadow presets */ preset?: 'shdw1' | 'shdw2' | 'shdw3' | 'shdw4' | 'shdw5' | 'shdw6' | 'shdw7' | 'shdw8' | 'shdw9' | 'shdw10' | 'shdw11' | 'shdw12' | 'shdw13' | 'shdw14' | 'shdw15' | 'shdw16' | 'shdw17' | 'shdw18' | 'shdw19' | 'shdw20'; /** * opacity (percent) * - range: 0.0-1.0 * @example 0.5 // 50% opaque */ opacity?: number; /** * blur (points) * - range: 0-100 * @default 0 */ blur?: number; /** * angle (degrees) * - range: 0-359 * @default 0 */ angle?: number; /** * shadow offset (points) * - range: 0-200 * @default 0 */ offset?: number; /** * shadow color (hex format) * @example 'FF3399' */ color?: HexColor; /** * whether to rotate shadow with shape * @default false */ rotateWithShape?: boolean; } declare type SHAPE_NAME = 'accentBorderCallout1' | 'accentBorderCallout2' | 'accentBorderCallout3' | 'accentCallout1' | 'accentCallout2' | 'accentCallout3' | 'accentCallout4' | 'accentBorderCallout4' | 'actionButtonBackPrevious' | 'actionButtonBeginning' | 'actionButtonBlank' | 'actionButtonDocument' | 'actionButtonEnd' | 'actionButtonForwardNext' | 'actionButtonHelp' | 'actionButtonHome' | 'actionButtonInformation' | 'actionButtonMovie' | 'actionButtonReturn' | 'actionButtonSound' | 'arc' | 'bentArrow' | 'bentConnector2' | 'bentConnector3' | 'bentConnector4' | 'bentConnector5' | 'bentUpArrow' | 'bevel' | 'blockArc' | 'borderCallout1' | 'borderCallout2' | 'borderCallout3' | 'borderCallout4' | 'bracePair' | 'bracketPair' | 'callout1' | 'callout2' | 'callout3' | 'callout4' | 'can' | 'chartPlus' | 'chartStar' | 'chartX' | 'chevron' | 'chord' | 'circularArrow' | 'cloud' | 'cloudCallout' | 'corner' | 'cornerTabs' | 'cube' | 'curvedConnector2' | 'curvedConnector3' | 'curvedConnector4' | 'curvedConnector5' | 'curvedDownArrow' | 'curvedLeftArrow' | 'curvedRightArrow' | 'curvedUpArrow' | 'custGeom' | 'decagon' | 'diagStripe' | 'diamond' | 'dodecagon' | 'donut' | 'doubleWave' | 'downArrow' | 'downArrowCallout' | 'ellipse' | 'ellipseRibbon' | 'ellipseRibbon2' | 'flowChartAlternateProcess' | 'flowChartCollate' | 'flowChartConnector' | 'flowChartDecision' | 'flowChartDelay' | 'flowChartDisplay' | 'flowChartDocument' | 'flowChartExtract' | 'flowChartInputOutput' | 'flowChartInternalStorage' | 'flowChartMagneticDisk' | 'flowChartMagneticDrum' | 'flowChartMagneticTape' | 'flowChartManualInput' | 'flowChartManualOperation' | 'flowChartMerge' | 'flowChartMultidocument' | 'flowChartOfflineStorage' | 'flowChartOffpageConnector' | 'flowChartOnlineStorage' | 'flowChartOr' | 'flowChartPredefinedProcess' | 'flowChartPreparation' | 'flowChartProcess' | 'flowChartPunchedCard' | 'flowChartPunchedTape' | 'flowChartSort' | 'flowChartSummingJunction' | 'flowChartTerminator' | 'folderCorner' | 'frame' | 'funnel' | 'gear6' | 'gear9' | 'halfFrame' | 'heart' | 'heptagon' | 'hexagon' | 'homePlate' | 'horizontalScroll' | 'irregularSeal1' | 'irregularSeal2' | 'leftArrow' | 'leftArrowCallout' | 'leftBrace' | 'leftBracket' | 'leftCircularArrow' | 'leftRightArrow' | 'leftRightArrowCallout' | 'leftRightCircularArrow' | 'leftRightRibbon' | 'leftRightUpArrow' | 'leftUpArrow' | 'lightningBolt' | 'line' | 'lineInv' | 'mathDivide' | 'mathEqual' | 'mathMinus' | 'mathMultiply' | 'mathNotEqual' | 'mathPlus' | 'moon' | 'noSmoking' | 'nonIsoscelesTrapezoid' | 'notchedRightArrow' | 'octagon' | 'parallelogram' | 'pentagon' | 'pie' | 'pieWedge' | 'plaque' | 'plaqueTabs' | 'plus' | 'quadArrow' | 'quadArrowCallout' | 'rect' | 'ribbon' | 'ribbon2' | 'rightArrow' | 'rightArrowCallout' | 'rightBrace' | 'rightBracket' | 'round1Rect' | 'round2DiagRect' | 'round2SameRect' | 'roundRect' | 'rtTriangle' | 'smileyFace' | 'snip1Rect' | 'snip2DiagRect' | 'snip2SameRect' | 'snipRoundRect' | 'squareTabs' | 'star10' | 'star12' | 'star16' | 'star24' | 'star32' | 'star4' | 'star5' | 'star6' | 'star7' | 'star8' | 'straightConnector1' | 'stripedRightArrow' | 'sun' | 'swooshArrow' | 'teardrop' | 'trapezoid' | 'triangle' | 'upArrow' | 'upArrowCallout' | 'upDownArrow' | 'upDownArrowCallout' | 'uturnArrow' | 'verticalScroll' | 'wave' | 'wedgeEllipseCallout' | 'wedgeRectCallout' | 'wedgeRoundRectCallout'; declare enum SHAPE_TYPE { ACTION_BUTTON_BACK_OR_PREVIOUS = "actionButtonBackPrevious", ACTION_BUTTON_BEGINNING = "actionButtonBeginning", ACTION_BUTTON_CUSTOM = "actionButtonBlank", ACTION_BUTTON_DOCUMENT = "actionButtonDocument", ACTION_BUTTON_END = "actionButtonEnd", ACTION_BUTTON_FORWARD_OR_NEXT = "actionButtonForwardNext", ACTION_BUTTON_HELP = "actionButtonHelp", ACTION_BUTTON_HOME = "actionButtonHome", ACTION_BUTTON_INFORMATION = "actionButtonInformation", ACTION_BUTTON_MOVIE = "actionButtonMovie", ACTION_BUTTON_RETURN = "actionButtonReturn", ACTION_BUTTON_SOUND = "actionButtonSound", ARC = "arc", BALLOON = "wedgeRoundRectCallout", BENT_ARROW = "bentArrow", BENT_CONNECTOR_2 = "bentConnector2", BENT_CONNECTOR_3 = "bentConnector3", BENT_CONNECTOR_4 = "bentConnector4", BENT_CONNECTOR_5 = "bentConnector5", BENT_UP_ARROW = "bentUpArrow", BEVEL = "bevel", BLOCK_ARC = "blockArc", CAN = "can", CHART_PLUS = "chartPlus", CHART_STAR = "chartStar", CHART_X = "chartX", CHEVRON = "chevron", CHORD = "chord", CIRCULAR_ARROW = "circularArrow", CLOUD = "cloud", CLOUD_CALLOUT = "cloudCallout", CORNER = "corner", CORNER_TABS = "cornerTabs", CROSS = "plus", CUBE = "cube", CURVED_CONNECTOR_2 = "curvedConnector2", CURVED_CONNECTOR_3 = "curvedConnector3", CURVED_CONNECTOR_4 = "curvedConnector4", CURVED_CONNECTOR_5 = "curvedConnector5", CURVED_DOWN_ARROW = "curvedDownArrow", CURVED_DOWN_RIBBON = "ellipseRibbon", CURVED_LEFT_ARROW = "curvedLeftArrow", CURVED_RIGHT_ARROW = "curvedRightArrow", CURVED_UP_ARROW = "curvedUpArrow", CURVED_UP_RIBBON = "ellipseRibbon2", CUSTOM_GEOMETRY = "custGeom", DECAGON = "decagon", DIAGONAL_STRIPE = "diagStripe", DIAMOND = "diamond", DODECAGON = "dodecagon", DONUT = "donut", DOUBLE_BRACE = "bracePair", DOUBLE_BRACKET = "bracketPair", DOUBLE_WAVE = "doubleWave", DOWN_ARROW = "downArrow", DOWN_ARROW_CALLOUT = "downArrowCallout", DOWN_RIBBON = "ribbon", EXPLOSION1 = "irregularSeal1", EXPLOSION2 = "irregularSeal2", FLOWCHART_ALTERNATE_PROCESS = "flowChartAlternateProcess", FLOWCHART_CARD = "flowChartPunchedCard", FLOWCHART_COLLATE = "flowChartCollate", FLOWCHART_CONNECTOR = "flowChartConnector", FLOWCHART_DATA = "flowChartInputOutput", FLOWCHART_DECISION = "flowChartDecision", FLOWCHART_DELAY = "flowChartDelay", FLOWCHART_DIRECT_ACCESS_STORAGE = "flowChartMagneticDrum", FLOWCHART_DISPLAY = "flowChartDisplay", FLOWCHART_DOCUMENT = "flowChartDocument", FLOWCHART_EXTRACT = "flowChartExtract", FLOWCHART_INTERNAL_STORAGE = "flowChartInternalStorage", FLOWCHART_MAGNETIC_DISK = "flowChartMagneticDisk", FLOWCHART_MANUAL_INPUT = "flowChartManualInput", FLOWCHART_MANUAL_OPERATION = "flowChartManualOperation", FLOWCHART_MERGE = "flowChartMerge", FLOWCHART_MULTIDOCUMENT = "flowChartMultidocument", FLOWCHART_OFFLINE_STORAGE = "flowChartOfflineStorage", FLOWCHART_OFFPAGE_CONNECTOR = "flowChartOffpageConnector", FLOWCHART_OR = "flowChartOr", FLOWCHART_PREDEFINED_PROCESS = "flowChartPredefinedProcess", FLOWCHART_PREPARATION = "flowChartPreparation", FLOWCHART_PROCESS = "flowChartProcess", FLOWCHART_PUNCHED_TAPE = "flowChartPunchedTape", FLOWCHART_SEQUENTIAL_ACCESS_STORAGE = "flowChartMagneticTape", FLOWCHART_SORT = "flowChartSort", FLOWCHART_STORED_DATA = "flowChartOnlineStorage", FLOWCHART_SUMMING_JUNCTION = "flowChartSummingJunction", FLOWCHART_TERMINATOR = "flowChartTerminator", FOLDED_CORNER = "folderCorner", FRAME = "frame", FUNNEL = "funnel", GEAR_6 = "gear6", GEAR_9 = "gear9", HALF_FRAME = "halfFrame", HEART = "heart", HEPTAGON = "heptagon", HEXAGON = "hexagon", HORIZONTAL_SCROLL = "horizontalScroll", ISOSCELES_TRIANGLE = "triangle", LEFT_ARROW = "leftArrow", LEFT_ARROW_CALLOUT = "leftArrowCallout", LEFT_BRACE = "leftBrace", LEFT_BRACKET = "leftBracket", LEFT_CIRCULAR_ARROW = "leftCircularArrow", LEFT_RIGHT_ARROW = "leftRightArrow", LEFT_RIGHT_ARROW_CALLOUT = "leftRightArrowCallout", LEFT_RIGHT_CIRCULAR_ARROW = "leftRightCircularArrow", LEFT_RIGHT_RIBBON = "leftRightRibbon", LEFT_RIGHT_UP_ARROW = "leftRightUpArrow", LEFT_UP_ARROW = "leftUpArrow", LIGHTNING_BOLT = "lightningBolt", LINE_CALLOUT_1 = "borderCallout1", LINE_CALLOUT_1_ACCENT_BAR = "accentCallout1", LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR = "accentBorderCallout1", LINE_CALLOUT_1_NO_BORDER = "callout1", LINE_CALLOUT_2 = "borderCallout2", LINE_CALLOUT_2_ACCENT_BAR = "accentCallout2", LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR = "accentBorderCallout2", LINE_CALLOUT_2_NO_BORDER = "callout2", LINE_CALLOUT_3 = "borderCallout3", LINE_CALLOUT_3_ACCENT_BAR = "accentCallout3", LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR = "accentBorderCallout3", LINE_CALLOUT_3_NO_BORDER = "callout3", LINE_CALLOUT_4 = "borderCallout4", LINE_CALLOUT_4_ACCENT_BAR = "accentCallout4", LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR = "accentBorderCallout4", LINE_CALLOUT_4_NO_BORDER = "callout4", LINE = "line", LINE_INVERSE = "lineInv", MATH_DIVIDE = "mathDivide", MATH_EQUAL = "mathEqual", MATH_MINUS = "mathMinus", MATH_MULTIPLY = "mathMultiply", MATH_NOT_EQUAL = "mathNotEqual", MATH_PLUS = "mathPlus", MOON = "moon", NON_ISOSCELES_TRAPEZOID = "nonIsoscelesTrapezoid", NOTCHED_RIGHT_ARROW = "notchedRightArrow", NO_SYMBOL = "noSmoking", OCTAGON = "octagon", OVAL = "ellipse", OVAL_CALLOUT = "wedgeEllipseCallout", PARALLELOGRAM = "parallelogram", PENTAGON = "homePlate", PIE = "pie", PIE_WEDGE = "pieWedge", PLAQUE = "plaque", PLAQUE_TABS = "plaqueTabs", QUAD_ARROW = "quadArrow", QUAD_ARROW_CALLOUT = "quadArrowCallout", RECTANGLE = "rect", RECTANGULAR_CALLOUT = "wedgeRectCallout", REGULAR_PENTAGON = "pentagon", RIGHT_ARROW = "rightArrow", RIGHT_ARROW_CALLOUT = "rightArrowCallout", RIGHT_BRACE = "rightBrace", RIGHT_BRACKET = "rightBracket", RIGHT_TRIANGLE = "rtTriangle", ROUNDED_RECTANGLE = "roundRect", ROUNDED_RECTANGULAR_CALLOUT = "wedgeRoundRectCallout", ROUND_1_RECTANGLE = "round1Rect", ROUND_2_DIAG_RECTANGLE = "round2DiagRect", ROUND_2_SAME_RECTANGLE = "round2SameRect", SMILEY_FACE = "smileyFace", SNIP_1_RECTANGLE = "snip1Rect", SNIP_2_DIAG_RECTANGLE = "snip2DiagRect", SNIP_2_SAME_RECTANGLE = "snip2SameRect", SNIP_ROUND_RECTANGLE = "snipRoundRect", SQUARE_TABS = "squareTabs", STAR_10_POINT = "star10", STAR_12_POINT = "star12", STAR_16_POINT = "star16", STAR_24_POINT = "star24", STAR_32_POINT = "star32", STAR_4_POINT = "star4", STAR_5_POINT = "star5", STAR_6_POINT = "star6", STAR_7_POINT = "star7", STAR_8_POINT = "star8", STRAIGHT_CONNECTOR_1 = "straightConnector1", STRIPED_RIGHT_ARROW = "stripedRightArrow", SUN = "sun", SWOOSH_ARROW = "swooshArrow", TEAR = "teardrop", TRAPEZOID = "trapezoid", UP_ARROW = "upArrow", UP_ARROW_CALLOUT = "upArrowCallout", UP_DOWN_ARROW = "upDownArrow", UP_DOWN_ARROW_CALLOUT = "upDownArrowCallout", UP_RIBBON = "ribbon2", U_TURN_ARROW = "uturnArrow", VERTICAL_SCROLL = "verticalScroll", WAVE = "wave" } declare interface ShapeAnimationConfig extends BaseAnimationConfig { type: 'shape' | 'shapeexit'; shape?: ShapeMaskType; direction?: ShapeDirection; } declare type ShapeDirection = 'in' | 'out'; declare interface ShapeFillProps { /** * Fill color * - `HexColor` or `ThemeColor` * - for `type:'pattern'`, used as the foreground color when `pattern.color` is omitted * @example 'FF0000' // hex color (red) * @example pptx.SchemeColor.text1 // Theme color (Text1) */ color?: Color; /** * Transparency (percent) * - MS-PPT > Format Shape > Fill & Line > Fill > Transparency * - range: 0-100 * @default 0 */ transparency?: number; /** * Fill type * @default 'solid' * - `'gradient'` — nested definition via `gradient` (linear + radial) * - `'linearGradient'` — flat sambauers/gradients API (`stops`/`angle`/… on this object) * - `'pattern'` — pattern fill via `pattern` * - `'image'` — picture fill via `image` (`a:blipFill`) * - `'group'` — inherit the parent group's fill (`a:grpFill`) */ type?: 'none' | 'solid' | 'gradient' | 'linearGradient' | 'pattern' | 'image' | 'group'; /** * Gradient fill definition * - required when `type` is `'gradient'` (ignored otherwise) * @example { type:'gradient', gradient:{ angle:90, stops:[{pos:0,color:'FF0000'},{pos:100,color:'0000FF'}] } } */ gradient?: ShapeGradientProps; /** * Pattern fill definition (from hakrueger/pattern) * - used when `type` is `'pattern'` * @example { type:'pattern', pattern:{ prst:'ltHorz', color:'000000', bgColor:'FFFFFF' } } */ pattern?: ShapePatternProps; /** * Picture fill definition * - required when `type` is `'image'` * @example { type:'image', image:{ data:'image/png;base64,iV[...]', sizing:'tile' } } */ image?: ShapeImageFillProps; /** relationship id for a picture fill without a nested `image` object @internal */ _rId?: number; /** * Flat linear-gradient stops (`type: 'linearGradient'`, sambauers/gradients) * @example { type:'linearGradient', angle:45, stops:[{position:0,color:'000000'},{position:100,color:'333333'}] } */ stops?: ShapeGradientStopProps[]; /** Linear gradient angle in degrees (`type: 'linearGradient'`) */ angle?: number; /** Whether the gradient angle scales with the fill region (`type: 'linearGradient'`) */ scaled?: boolean; /** * Whether the gradient rotates with its shape (`type: 'linearGradient'`) * @default true */ rotWithShape?: boolean; /** Gradient flip (`type: 'linearGradient'` / nested `gradient.flip`) */ flip?: ShapeGradientFlip; /** Tile rectangle percents 0-100 (`type: 'linearGradient'` / nested `gradient.tileRect`) */ tileRect?: ShapeGradientTileRect; /** * Transparency (percent) * @deprecated v3.3.0 - use `transparency` */ alpha?: number; /** * Image data URI for a DrawingML `a:blipFill` (table cells and other solid-fill sites). * @example 'image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAIAAADwyuo0...' */ data?: string; /** * Image path/URL for a DrawingML `a:blipFill`. * @example '/images/cell-bg.png' */ path?: string; } declare type ShapeGradientFlip = 'none' | 'x' | 'xy' | 'y'; declare interface ShapeGradientProps { /** * Gradient geometry * @default 'linear' */ type?: 'linear' | 'radial'; /** * Gradient angle (degrees, clockwise) * - 0 = left-to-right, 90 = top-to-bottom * - normalized into the range 0-359 * @default 0 */ angle?: number; /** * Whether the gradient angle scales with the fill region * @default false */ scaled?: boolean; /** * Whether the gradient rotates with its shape * @default true */ rotateWithShape?: boolean; /** * Alias of `rotateWithShape` (sambauers/gradients API) * @default true */ rotWithShape?: boolean; /** * Gradient flip direction (DrawingML `a:gradFill@flip`) * @default 'none' */ flip?: ShapeGradientFlip; /** * Tile rectangle insets (percent 0-100) — DrawingML `a:tileRect` */ tileRect?: ShapeGradientTileRect; /** * Gradient color stops * - MS-PPT requires **at least 2 stops**; fewer degrades to a solid fill * - stops are sorted by `pos`/`position` before being written */ stops: ShapeGradientStopProps[]; } declare interface ShapeGradientStopProps { /** * Stop color * - `HexColor`, `ThemeColor`, or `ModifiedThemeColor` (DrawingML color transforms on `EG_ColorChoice`) */ color: Color; /** * Stop position along the gradient (percent) * - range: 0-100 (values outside the range are clamped) */ pos?: number; /** * Alias of `pos` (sambauers/gradients API) * - range: 0-100 */ position?: number; /** * Stop transparency (percent) * - range: 0-100 * @default 0 */ transparency?: number; } declare interface ShapeGradientTileRect { /** Top inset percent 0-100 */ t?: number; /** Right inset percent 0-100 */ r?: number; /** Bottom inset percent 0-100 */ b?: number; /** Left inset percent 0-100 */ l?: number; } /** * Picture fill (`a:blipFill`) for shapes and table cells * - stretch (ECMA-376 20.1.8.56) or tile (20.1.8.58) */ declare interface ShapeImageFillProps { /** * Image data (base64), with a mime header * - one of `data` or `path` is required * @example 'image/png;base64,iVBORw0KGgo...' */ data?: string; /** * Image path or URL * - one of `data` or `path` is required */ path?: string; /** * How the image fills the shape * @default 'stretch' */ sizing?: 'stretch' | 'tile'; /** * `tile` only: scale applied to each tile (percent) * @default 100 */ scale?: number; /** * `tile` only: where tiling starts * @default 'tl' */ alignment?: 'tl' | 't' | 'tr' | 'l' | 'ctr' | 'r' | 'bl' | 'b' | 'br'; /** * Whether the fill rotates with the shape * @default true */ rotateWithShape?: boolean; /** relationship id resolved when the object is created @internal */ _rId?: number; } declare interface ShapeLineProps extends ShapeFillProps { /** * Line width (pt) * @default 1 */ width?: number; /** * Dash type * @default 'solid' */ dashType?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; /** * Line ending cap style. ECMA-376 §5.1.2.1.34 `@cap` / ST_LineCap: `flat` (default), `sq` (square, extends half width), `rnd` (round). * @since v4.1.0 (issue #782) * @default 'flat' */ cap?: 'flat' | 'sq' | 'rnd'; /** * Begin arrow type * @since v3.3.0 */ beginArrowType?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; /** * End arrow type * @since v3.3.0 */ endArrowType?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; /** * Emit as a PowerPoint connector (`p:cxnSp`) attached to other shapes * - Auto-set when `sourceId` / `targetId` are provided * @see ZentoSoft/PptxGenJS connectors */ isConnector?: boolean; /** * Connected source shape id (`cNvPr` / `sId` of the start shape) */ sourceId?: number; /** * Connected target shape id (`cNvPr` / `sId` of the end shape) */ targetId?: number; /** * Source connection site index (see `pptx.anchor` for rect helpers) */ sourceAnchorPos?: number; /** * Target connection site index (see `pptx.anchor` for rect helpers) */ targetAnchorPos?: number; /** * Preset geometry adjustment values for bent/curved connectors * @example [50000] // mid bend for bentConnector3 */ curveadjust?: number[]; /** `objectName` of the start shape (resolved to `sourceId` at emit) @internal */ _sourceName?: string; /** `objectName` of the end shape (resolved to `targetId` at emit) @internal */ _targetName?: string; /** * Compound line type (`a:ln@cmpd`) * @default 'sng' */ compound?: 'sng' | 'dbl' | 'thickThin' | 'thinThick' | 'tri'; /** * How line segments join at a corner (`a:round` / `a:bevel` / `a:miter`) */ join?: 'round' | 'bevel' | 'miter'; /** * `join: 'miter'` only: how far the miter may extend, as a percent of line width (`a:miter@lim`) * @default 800 */ miterLimit?: number; /** * Custom dash pattern (`a:custDash`), overriding `dashType` * - each stop is a dash length and the gap after it, as a percent of line width * @example [{ dash: 400, space: 300 }, { dash: 100, space: 300 }] */ custDash?: Array<{ dash: number; space: number; }>; /** * Arrow head size (`a:headEnd@w` / `@len`) * - `beginArrowType` selects the shape; this sizes it * - a string applies to both width and length */ beginArrowSize?: LineArrowSize | { width?: LineArrowSize; length?: LineArrowSize; }; /** * Arrow tail size (`a:tailEnd@w` / `@len`) */ endArrowSize?: LineArrowSize | { width?: LineArrowSize; length?: LineArrowSize; }; /** * Dash type * @deprecated v3.3.0 - use `dashType` */ lineDash?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; /** * @deprecated v3.3.0 - use `beginArrowType` */ lineHead?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; /** * @deprecated v3.3.0 - use `endArrowType` */ lineTail?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; /** * Line width (pt) * @deprecated v3.3.0 - use `width` */ pt?: number; /** * Line size (pt) * @deprecated v3.3.0 - use `width` */ size?: number; } /** * Editing locks (ECMA-376 20.1.2.2.34 `a:spLocks` and its siblings) * - each is omitted unless set, so the values the library emits today are unchanged */ declare interface ShapeLockProps { /** prevent grouping with other shapes */ noGroup?: boolean; /** prevent selection */ noSelect?: boolean; /** prevent rotation */ noRotate?: boolean; /** prevent changing the aspect ratio */ noChangeAspect?: boolean; /** prevent moving */ noMove?: boolean; /** prevent resizing */ noResize?: boolean; /** prevent editing the geometry points */ noEditPoints?: boolean; /** prevent dragging the adjust handles */ noAdjustHandles?: boolean; /** prevent changing arrowheads */ noChangeArrowheads?: boolean; /** prevent changing the preset geometry */ noChangeShapeType?: boolean; /** prevent editing the text */ noTextEdit?: boolean; /** pictures only: prevent cropping */ noCrop?: boolean; /** pictures only: prefer resizing relative to the original size */ preferRelativeResize?: boolean; } declare type ShapeMaskType = 'circle' | 'box' | 'diamond' | 'plus'; declare interface ShapePatternProps { /** * Preset pattern * @default 'cross' */ prst?: PresetPatternValues; /** * Foreground (pattern) color * - falls back to top-level `ShapeFillProps.color` when omitted * @example '000000' */ color?: Color; /** * Background color * @default 'FFFFFF' * @example 'FFFFFF' */ bgColor?: Color; } declare interface ShapeProps extends PositionProps, ObjectNameProps, AppearOnClickProps, NvPrExtensionProps { /** * Horizontal alignment * @default 'left' */ align?: HAlign; /** * Radius (only for pptx.shapes.PIE, pptx.shapes.ARC, pptx.shapes.BLOCK_ARC) * - In the case of pptx.shapes.BLOCK_ARC you have to setup the arcThicknessRatio * - values: [0-359, 0-359] * @since v3.4.0 * @default [270, 0] */ angleRange?: [number, number]; /** * Radius (only for pptx.shapes.BLOCK_ARC) * - You have to setup the angleRange values too * - values: 0.0-1.0 * @since v3.4.0 * @default 0.5 */ arcThicknessRatio?: number; /** * Shape fill color properties * @example { color:'FF0000' } // hex color (red) * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent * @example { color:pptx.SchemeColor.accent1 } // Theme color Accent1 */ fill?: ShapeFillProps; /** * Flip shape horizontally? * @default false */ flipH?: boolean; /** * Flip shape vertical? * @default false */ flipV?: boolean; /** * Add hyperlink to shape * @example hyperlink: { url: "https://github.com/gitbrent/pptxgenjs", tooltip: "Visit Homepage" }, */ hyperlink?: HyperlinkProps; /** * Mouse-over action, configured like `hyperlink` but triggered on hover * - PowerPoint's Insert > Action > Mouse Over tab * @example { hyperlinkHover: { slide: 3, tooltip: 'Jump to results' } } */ hyperlinkHover?: HyperlinkProps; /** * Line options */ line?: ShapeLineProps; /** * Points (only for pptx.shapes.CUSTOM_GEOMETRY) * - type: 'arc' * - `hR` Shape Arc Height Radius * - `wR` Shape Arc Width Radius * - `stAng` Shape Arc Start Angle * - `swAng` Shape Arc Swing Angle * @see http://www.datypic.com/sc/ooxml/e-a_arcTo-1.html * @example [{ x: 0, y: 0 }, { x: 10, y: 10 }] // draw a line between those two points */ points?: Array<{ x: Coord; y: Coord; moveTo?: boolean; } | { x: Coord; y: Coord; curve: { type: 'arc'; hR: Coord; wR: Coord; stAng: number; swAng: number; }; } | { x: Coord; y: Coord; curve: { type: 'cubic'; x1: Coord; y1: Coord; x2: Coord; y2: Coord; }; } | { x: Coord; y: Coord; curve: { type: 'quadratic'; x1: Coord; y1: Coord; }; } | { close: true; }>; /** * Multiple path arrays for `custGeom` (SVG-derived shapes). Each inner array becomes one `a:path`. */ paths?: Array>; /** * Custom `a:path@w` in EMU. When set, `points`/`paths` coordinates are used as-is (already EMU). */ pathW?: number; /** * Custom `a:path@h` in EMU. When set with `pathW`, `points`/`paths` coordinates are used as-is. */ pathH?: number; /** * Rounded rectangle radius (only for pptx.shapes.ROUNDED_RECTANGLE) * - values: 0.0 to 1.0 * @default 0 */ rectRadius?: number; /** * Rotation (degrees) * - range: -360 to 360 * @default 0 * @example 180 // rotate 180 degrees */ rotate?: number; /** * Shadow options * TODO: need new demo.js entry for shape shadow */ shadow?: ShadowProps; /** * Glow effect (`a:glow` in shape `effectLst`) */ glow?: TextGlowProps; /** * Soft-edge effect (`a:softEdge`) */ softEdge?: SoftEdgeProps; /** * Reflection effect (`a:reflection`) */ reflection?: ReflectionProps; /** * Blur effect (`a:blur` in shape `effectLst`) */ blur?: BlurProps; /** * Fill blended over the shape's own fill (`a:fillOverlay`) * @example { blend: 'mult', fill: { color: 'FF0000', transparency: 50 } } */ fillOverlay?: FillOverlayProps; /** * Emit the effects as a composed effect graph (`a:effectDag`) rather than an `a:effectLst` */ effectDag?: EffectDagProps; /** * Theme style references (`p:style`) * @example { fill: 1, line: 2, effect: 0, font: 'minor' } */ styleRef?: ShapeStyleProps; /** * @deprecated v3.3.0 */ lineSize?: number; /** * @deprecated v3.3.0 */ lineDash?: 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'solid' | 'sysDash' | 'sysDot'; /** * @deprecated v3.3.0 */ lineHead?: 'arrow' | 'diamond' | 'none' | 'oval' | 'stealth' | 'triangle'; /** * @deprecated v3.3.0 */ lineTail?: 'arrow' | 'diamond' | 'none' | 'oval' | 'stealth' | 'triangle'; /** * Shape name (used instead of default "Shape N" name) * @deprecated v3.10.0 - use `objectName` */ shapeName?: string; /** * Animation configuration * - Can be a simple animation name or full configuration object * @example 'fadein' * @example { type: 'flyin', direction: 'left', duration: 1000 } */ animation?: string | AnimationConfig; } /** * Theme style references for a shape (`p:style`, ECMA-376 Part 1 §20.1.4.1.25 CT_ShapeStyle) * - named `styleRef` because `style` is already used by chart gridlines * - each index points into the matching list in the theme's `a:fmtScheme`, 1-based */ declare interface ShapeStyleProps { /** Index into the theme's `a:lnStyleLst` (1-based) */ line?: number; /** Index into the theme's `a:fillStyleLst` (1-based) */ fill?: number; /** Index into the theme's `a:effectStyleLst` (1-based) */ effect?: number; /** * Which of the theme's font collections the shape's text follows * @default none */ font?: 'major' | 'minor' | 'none'; /** * Colour the referenced line, fill and effect resolve the theme's `phClr` against * @default 'accent1' */ color?: Color; /** * Colour the referenced font resolves against * - defaults to `lt1` because a font sharing the fill's colour renders as invisible text * @default 'lt1' */ fontColor?: Color; } declare enum ShapeType { 'accentBorderCallout1' = "accentBorderCallout1", 'accentBorderCallout2' = "accentBorderCallout2", 'accentBorderCallout3' = "accentBorderCallout3", 'accentCallout1' = "accentCallout1", 'accentCallout2' = "accentCallout2", 'accentCallout3' = "accentCallout3", 'accentCallout4' = "accentCallout4", 'accentBorderCallout4' = "accentBorderCallout4", 'borderCallout4' = "borderCallout4", 'callout4' = "callout4", 'actionButtonBackPrevious' = "actionButtonBackPrevious", 'actionButtonBeginning' = "actionButtonBeginning", 'actionButtonBlank' = "actionButtonBlank", 'actionButtonDocument' = "actionButtonDocument", 'actionButtonEnd' = "actionButtonEnd", 'actionButtonForwardNext' = "actionButtonForwardNext", 'actionButtonHelp' = "actionButtonHelp", 'actionButtonHome' = "actionButtonHome", 'actionButtonInformation' = "actionButtonInformation", 'actionButtonMovie' = "actionButtonMovie", 'actionButtonReturn' = "actionButtonReturn", 'actionButtonSound' = "actionButtonSound", 'arc' = "arc", 'bentArrow' = "bentArrow", 'bentConnector2' = "bentConnector2", 'bentConnector3' = "bentConnector3", 'bentConnector4' = "bentConnector4", 'bentConnector5' = "bentConnector5", 'bentUpArrow' = "bentUpArrow", 'bevel' = "bevel", 'blockArc' = "blockArc", 'borderCallout1' = "borderCallout1", 'borderCallout2' = "borderCallout2", 'borderCallout3' = "borderCallout3", 'bracePair' = "bracePair", 'bracketPair' = "bracketPair", 'callout1' = "callout1", 'callout2' = "callout2", 'callout3' = "callout3", 'can' = "can", 'chartPlus' = "chartPlus", 'chartStar' = "chartStar", 'chartX' = "chartX", 'chevron' = "chevron", 'chord' = "chord", 'circularArrow' = "circularArrow", 'cloud' = "cloud", 'cloudCallout' = "cloudCallout", 'corner' = "corner", 'cornerTabs' = "cornerTabs", 'cube' = "cube", 'curvedConnector2' = "curvedConnector2", 'curvedConnector3' = "curvedConnector3", 'curvedConnector4' = "curvedConnector4", 'curvedConnector5' = "curvedConnector5", 'curvedDownArrow' = "curvedDownArrow", 'curvedLeftArrow' = "curvedLeftArrow", 'curvedRightArrow' = "curvedRightArrow", 'curvedUpArrow' = "curvedUpArrow", 'custGeom' = "custGeom", 'decagon' = "decagon", 'diagStripe' = "diagStripe", 'diamond' = "diamond", 'dodecagon' = "dodecagon", 'donut' = "donut", 'doubleWave' = "doubleWave", 'downArrow' = "downArrow", 'downArrowCallout' = "downArrowCallout", 'ellipse' = "ellipse", 'ellipseRibbon' = "ellipseRibbon", 'ellipseRibbon2' = "ellipseRibbon2", 'flowChartAlternateProcess' = "flowChartAlternateProcess", 'flowChartCollate' = "flowChartCollate", 'flowChartConnector' = "flowChartConnector", 'flowChartDecision' = "flowChartDecision", 'flowChartDelay' = "flowChartDelay", 'flowChartDisplay' = "flowChartDisplay", 'flowChartDocument' = "flowChartDocument", 'flowChartExtract' = "flowChartExtract", 'flowChartInputOutput' = "flowChartInputOutput", 'flowChartInternalStorage' = "flowChartInternalStorage", 'flowChartMagneticDisk' = "flowChartMagneticDisk", 'flowChartMagneticDrum' = "flowChartMagneticDrum", 'flowChartMagneticTape' = "flowChartMagneticTape", 'flowChartManualInput' = "flowChartManualInput", 'flowChartManualOperation' = "flowChartManualOperation", 'flowChartMerge' = "flowChartMerge", 'flowChartMultidocument' = "flowChartMultidocument", 'flowChartOfflineStorage' = "flowChartOfflineStorage", 'flowChartOffpageConnector' = "flowChartOffpageConnector", 'flowChartOnlineStorage' = "flowChartOnlineStorage", 'flowChartOr' = "flowChartOr", 'flowChartPredefinedProcess' = "flowChartPredefinedProcess", 'flowChartPreparation' = "flowChartPreparation", 'flowChartProcess' = "flowChartProcess", 'flowChartPunchedCard' = "flowChartPunchedCard", 'flowChartPunchedTape' = "flowChartPunchedTape", 'flowChartSort' = "flowChartSort", 'flowChartSummingJunction' = "flowChartSummingJunction", 'flowChartTerminator' = "flowChartTerminator", 'folderCorner' = "folderCorner", 'frame' = "frame", 'funnel' = "funnel", 'gear6' = "gear6", 'gear9' = "gear9", 'halfFrame' = "halfFrame", 'heart' = "heart", 'heptagon' = "heptagon", 'hexagon' = "hexagon", 'homePlate' = "homePlate", 'horizontalScroll' = "horizontalScroll", 'irregularSeal1' = "irregularSeal1", 'irregularSeal2' = "irregularSeal2", 'leftArrow' = "leftArrow", 'leftArrowCallout' = "leftArrowCallout", 'leftBrace' = "leftBrace", 'leftBracket' = "leftBracket", 'leftCircularArrow' = "leftCircularArrow", 'leftRightArrow' = "leftRightArrow", 'leftRightArrowCallout' = "leftRightArrowCallout", 'leftRightCircularArrow' = "leftRightCircularArrow", 'leftRightRibbon' = "leftRightRibbon", 'leftRightUpArrow' = "leftRightUpArrow", 'leftUpArrow' = "leftUpArrow", 'lightningBolt' = "lightningBolt", 'line' = "line", 'lineInv' = "lineInv", 'mathDivide' = "mathDivide", 'mathEqual' = "mathEqual", 'mathMinus' = "mathMinus", 'mathMultiply' = "mathMultiply", 'mathNotEqual' = "mathNotEqual", 'mathPlus' = "mathPlus", 'moon' = "moon", 'noSmoking' = "noSmoking", 'nonIsoscelesTrapezoid' = "nonIsoscelesTrapezoid", 'notchedRightArrow' = "notchedRightArrow", 'octagon' = "octagon", 'parallelogram' = "parallelogram", 'pentagon' = "pentagon", 'pie' = "pie", 'pieWedge' = "pieWedge", 'plaque' = "plaque", 'plaqueTabs' = "plaqueTabs", 'plus' = "plus", 'quadArrow' = "quadArrow", 'quadArrowCallout' = "quadArrowCallout", 'rect' = "rect", 'ribbon' = "ribbon", 'ribbon2' = "ribbon2", 'rightArrow' = "rightArrow", 'rightArrowCallout' = "rightArrowCallout", 'rightBrace' = "rightBrace", 'rightBracket' = "rightBracket", 'round1Rect' = "round1Rect", 'round2DiagRect' = "round2DiagRect", 'round2SameRect' = "round2SameRect", 'roundRect' = "roundRect", 'rtTriangle' = "rtTriangle", 'smileyFace' = "smileyFace", 'snip1Rect' = "snip1Rect", 'snip2DiagRect' = "snip2DiagRect", 'snip2SameRect' = "snip2SameRect", 'snipRoundRect' = "snipRoundRect", 'squareTabs' = "squareTabs", 'star10' = "star10", 'star12' = "star12", 'star16' = "star16", 'star24' = "star24", 'star32' = "star32", 'star4' = "star4", 'star5' = "star5", 'star6' = "star6", 'star7' = "star7", 'star8' = "star8", 'straightConnector1' = "straightConnector1", 'stripedRightArrow' = "stripedRightArrow", 'sun' = "sun", 'swooshArrow' = "swooshArrow", 'teardrop' = "teardrop", 'trapezoid' = "trapezoid", 'triangle' = "triangle", 'upArrow' = "upArrow", 'upArrowCallout' = "upArrowCallout", 'upDownArrow' = "upDownArrow", 'upDownArrowCallout' = "upDownArrowCallout", 'uturnArrow' = "uturnArrow", 'verticalScroll' = "verticalScroll", 'wave' = "wave", 'wedgeEllipseCallout' = "wedgeEllipseCallout", 'wedgeRectCallout' = "wedgeRectCallout", 'wedgeRoundRectCallout' = "wedgeRoundRectCallout" } declare enum SLIDE_OBJECT_TYPES { 'chart' = "chart", 'group' = "group", 'hyperlink' = "hyperlink", 'image' = "image", 'media' = "media", 'online' = "online", 'placeholder' = "placeholder", 'table' = "table", 'tablecell' = "tablecell", 'text' = "text", 'notes' = "notes", 'zoom' = "zoom", 'contentPart' = "contentPart", 'officeApp' = "officeApp" } declare interface SlideBaseProps { _allocChartId: () => number; _bkgdImgRid?: number; _margin?: Margin; _name?: string; _presLayout: PresLayout; _rels: ISlideRel[]; _relsChart: ISlideRelChart[]; _relsMedia: ISlideRelMedia[]; _slideNum: number | null; _slideNumberProps?: SlideNumberProps; _slideObjects: ISlideObject[]; background?: BackgroundProps; /** * @deprecated v3.3.0 - use `background` */ bkgd?: string | BackgroundProps; } declare interface SlideLayout extends SlideBaseProps { layoutType?: SlideLayoutType; matchingName?: string; preserve?: boolean; showMasterShapes?: boolean; showMasterPlaceholderAnimation?: boolean; userDrawn?: boolean; colorMapOverride?: ColorMapOverrideProps; transition?: SlideTransitionProps; _slide?: { _bkgdImgRid?: number; back: string; color: string; hidden?: boolean; }; } /** * ECMA-376 19.7.15 ST_SlideLayoutType - the placeholder arrangement a layout describes * - PowerPoint's layout gallery and its Reset Layout command read this */ declare type SlideLayoutType = 'title' | 'tx' | 'twoColTx' | 'tbl' | 'txAndChart' | 'chartAndTx' | 'dgm' | 'chart' | 'txAndClipArt' | 'clipArtAndTx' | 'titleOnly' | 'blank' | 'txAndObj' | 'objAndTx' | 'objOnly' | 'obj' | 'txAndMedia' | 'mediaAndTx' | 'objOverTx' | 'txOverObj' | 'txAndTwoObj' | 'twoObjAndTx' | 'twoObjOverTx' | 'fourObj' | 'vertTx' | 'clipArtAndVertTx' | 'vertTitleAndTx' | 'vertTitleAndTxOverChart' | 'twoObj' | 'objAndTwoObj' | 'twoObjAndObj' | 'cust' | 'secHead' | 'twoTxTwoObj' | 'objTx' | 'picTx'; declare interface SlideMasterProps { /** * Unique name for this master */ title: string; /** * Which placeholder arrangement this layout describes (`p:sldLayout@type`) * - PowerPoint's New Slide gallery groups layouts by this, and Reset Layout trusts it * @default cust */ layoutType?: SlideLayoutType; /** * Name shown for the layout in PowerPoint's gallery (`@matchingName`) * - unset writes nothing; PowerPoint then falls back to the layout name from `title` */ matchingName?: string; /** * Keep the layout in the deck even when no slide uses it (`@preserve`) * @default true */ preserve?: boolean; /** * Draw the master's shapes behind slides using this layout (`@showMasterSp`) * @default true */ showMasterShapes?: boolean; /** * Play the master's placeholder animations on slides using this layout (`@showMasterPhAnim`) * @default true */ showMasterPlaceholderAnimation?: boolean; /** * Mark the layout as drawn by the author rather than generated (`@userDrawn`) * @default false */ userDrawn?: boolean; /** * Remap the theme's colour slots for this layout only (`p:clrMapOvr`) * - with none set the layout inherits the master's mapping, which is today's behaviour */ colorMapOverride?: ColorMapOverrideProps; /** * Transition applied to slides using this layout (`p:transition`) */ transition?: SlideTransitionProps; background?: BackgroundProps; margin?: Margin; slideNumber?: SlideNumberProps; objects?: Array<{ chart: IChartOpts; } | { image: ImageProps; } | { line: ShapeProps; } | { rect: ShapeProps; } | { roundRect: ShapeProps; } | { text: { text?: string | TextProps[]; options?: TextPropsOptions; }; } /** any of the 180+ shape types (`line`/`rect` above are shorthands) */ | { shape: { type: SHAPE_NAME; options?: ShapeProps; }; } | { table: { rows: TableRow[]; options?: TableProps; }; } | { media: MediaProps; } | { placeholder: { options: PlaceholderProps; /** * Text to be shown in placeholder (shown until user focuses textbox or adds text) * - Leave blank to have powerpoint show default phrase (ex: "Click to add title") * - `TextProps[]` for mixed runs (bold/color/etc.) */ text?: string | TextProps[]; }; }>; /** * @deprecated v3.3.0 - use `background` */ bkgd?: string | BackgroundProps; } declare interface SlideNumberProps extends PositionProps, TextBaseProps { /** * margin (points) */ margin?: Margin; } /** * A recorded slide-show event. MS-PPTX §2.3.3.28 `CT_ShowEventRecordList`. * `time` is milliseconds from the slide timeline; `objId` is the drawing element id. */ declare interface SlideShowEvent { type: 'trigger' | 'play' | 'stop' | 'pause' | 'resume' | 'seek' | 'null'; time: number; objId: number; /** `triggerEvt` only. @default 'onClick' */ trigger?: SlideShowTriggerType; /** `seekEvt` only. Seek offset in milliseconds. */ seek?: number; } /** * Slide-show options written to `ppt/presProps.xml` as `p:showPr` (ECMA-376 §19.2.1.30). * Opt-in: unset writes no `showPr`. The present/browse/kiosk choice is required when `showPr` is emitted. */ declare interface SlideShowProps { /** * How the slide show runs (`p:showPr` choice). * - `present`: full screen, presenter-driven * - `browse`: windowed, viewer-driven * - `kiosk`: full screen, self-running * @default 'present' */ mode?: 'present' | 'browse' | 'kiosk'; /** Restart the show after the last slide. @default false */ loop?: boolean; /** Play recorded narration. @default true */ showNarration?: boolean; /** Play animations. @default true */ showAnimation?: boolean; /** Use the slide timings recorded in the file. @default true */ useTimings?: boolean; /** * Show the scrollbar when `mode` is `browse` (`p:browse@showScrollbar`). * Distinct from `browseMode` (MS-PPTX status-bar `p14:browseMode@showStatus`). */ showScrollbar?: boolean; /** * Status-bar visibility in browse mode (MS-PPTX §2.3.1.2 `p14:browseMode@showStatus`). * Merges with the presentation-level `browseMode` property. */ browseMode?: boolean; /** * Laser-pointer color (MS-PPTX §2.3.1.16 `p14:laserClr`). * Merges with the presentation-level `laserColor` property. */ laserColor?: Color; } /** ECMA-376 `ST_TLTriggerEvent` values used by `p14:triggerEvt`. */ declare type SlideShowTriggerType = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onDblClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio'; /** * Slide-size preset (`p:sldSz@type`) */ declare type SlideSizeType = 'screen4x3' | 'screen16x9' | 'screen16x10' | 'letter' | 'ledger' | 'a3' | 'a4' | 'b4ISO' | 'b5ISO' | 'b4JIS' | 'b5JIS' | 'hagakiCard' | '35mm' | 'overhead' | 'banner' | 'custom'; /** * Slide transition options. ECMA-376 §19.3.1.50 `CT_SlideTransition`. * Modern (MS-PPTX) transition types are emitted inside `` with a base-type fallback. */ declare interface SlideTransitionProps { /** * Transition type. * ECMA-376 base: 'blinds'|'checker'|'circle'|'comb'|'cover'|'cut'|'diamond'|'dissolve'|'fade'| * 'newsflash'|'none'|'plus'|'pull'|'push'|'random'|'randomBar'|'split'|'strips'|'wedge'|'wheel'|'wipe'|'zoom'. * MS-PPTX 2010+ (emitted via AlternateContent): 'conveyor'|'doors'|'ferris'|'flash'|'flip'|'flythrough'| * 'gallery'|'glitter'|'honeycomb'|'morph'|'pan'|'prism'|'reveal'|'ripple'|'shred'|'switch'|'vortex'|'warp'|'wheelReverse'|'window'. */ type: TRANSITION_TYPE; /** * Transition direction. OOXML tokens or friendly aliases (`left`→`l`, `up`→`u`, `horizontal`→`horz`). * side (push/wipe/vortex/pan): 'l'|'r'|'u'|'d'; orientation (blinds/checker/comb/randomBar/doors): 'horz'|'vert'; * eight-dir (cover/pull/ferris/gallery/conveyor/flip/switch): 'l'|'r'|'u'|'d'|'lu'|'ru'|'ld'|'rd'; * corner (strips): 'lu'|'ru'|'ld'|'rd' (ECMA-376 §19.5.74 / ST_TransitionCornerDirectionType); * in/out (split `dir` / zoom / warp): 'in'|'out'. */ direction?: string; /** * Split-only orientation (`CT_SplitTransition@orient`, ECMA-376 §19.5.71). * Accepts 'horz'|'vert' or 'horizontal'|'vertical'. When omitted, `direction` of horz/vert is used. */ orient?: 'horz' | 'vert' | 'horizontal' | 'vertical'; /** * Transition speed. * @default 'fast' */ speed?: 'slow' | 'med' | 'fast'; /** * Duration in milliseconds (MS-PPTX `p14:dur` extension; overrides `speed`). */ duration?: number; /** Advance on mouse click. @default true */ advClick?: boolean; /** Auto-advance after N milliseconds. */ advTm?: number; /** `wheel` only: number of spokes. @default 4 */ spokes?: number; /** `fade`/`cut` only: transition through black. @default false */ thruBlk?: boolean; } /** * Soft-edge effect (`a:softEdge`) — blur the shape outline. * - radius in points */ declare interface SoftEdgeProps { /** * Soft-edge radius (points) * @example 8 */ radius: number; } declare type SpinAmount = 'quarterSpin' | 'halfSpin' | 'fullSpin' | 'twoSpins'; declare interface SpinAnimationConfig extends BaseAnimationConfig { type: 'spin'; direction?: SpinDirection; amount?: SpinAmount; } declare type SpinDirection = 'clockwise' | 'counterClockwise'; declare interface SplitAnimationConfig extends BaseAnimationConfig { type: 'split' | 'splitexit'; direction?: SplitDirection; } declare type SplitDirection = 'horizontalIn' | 'horizontalOut' | 'verticalIn' | 'verticalOut'; /** A Summary Zoom navigation object. MS-PPTX §2.11 `CT_SummaryZoom`. */ declare interface SummaryZoomProps extends ZoomBaseProps { /** Title of the target section (must match an `addSection({ title })`). */ sectionTitle?: string; /** Additional section titles (each emits a `p16:summaryZmObj`). */ sectionTitles?: string[]; /** Alt-text title on the zoom object. */ title?: string; /** Alt-text description on the zoom object. */ descr?: string; /** X offset from default layout (percent, 100000 = 100%). @default 0 */ offsetFactorX?: number; /** Y offset from default layout (percent). @default 0 */ offsetFactorY?: number; /** X scale from default layout (percent). @default 100000 */ scaleFactorX?: number; /** Y scale from default layout (percent). @default 100000 */ scaleFactorY?: number; } declare interface TableCell { /** @internal assigned by the table builder; consumers pass plain `{ text, options }` objects */ _type?: SLIDE_OBJECT_TYPES.tablecell; /** lines in this cell (autoPage) */ _lines?: TableCell[][]; /** `text` prop but guaranteed to hold "TableCell[]" */ _tableCells?: TableCell[]; /** height in EMU */ _lineHeight?: number; _hmerge?: boolean; _vmerge?: boolean; _rowContinue?: number; _optImp?: any; text?: string | TableCell[]; options?: TableCellProps; } declare interface TableCellProps extends TextBaseProps { /** * Auto-paging character weight * - adjusts how many characters are used before lines wrap * - range: -1.0 to 1.0 * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html * @default 0.0 * @example 0.5 // lines are longer (increases the number of characters that can fit on a given line) */ autoPageCharWeight?: number; /** * Auto-paging line weight * - adjusts how many lines are used before slides wrap * - range: -1.0 to 1.0 * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html * @default 0.0 * @example 0.5 // tables are taller (increases the number of lines that can fit on a given slide) */ autoPageLineWeight?: number; /** * Whether text is centered both horizontally and vertically in the cell * @default false */ anchorCtr?: boolean; /** * Cell border */ border?: BorderProps | [BorderProps, BorderProps, BorderProps, BorderProps]; /** * Diagonal border running bottom-left to top-right (`a:lnBlToTr`) * - independent of `border`, which only covers the four edges */ borderDiagonalUp?: BorderProps; /** * Diagonal border running top-left to bottom-right (`a:lnTlToBr`) * - independent of `border`, which only covers the four edges */ borderDiagonalDown?: BorderProps; /** * 3-D bevel and lighting for the cell * @example { bevel: { preset: 'circle', width: 0.05, height: 0.05 }, material: 'metal' } */ cell3D?: Cell3DProps; /** * Cell colspan */ colspan?: number; /** * Whether text wider than the cell is clipped or allowed to overflow it * @default clip */ horzOverflow?: 'clip' | 'overflow'; /** * Fill color * @example { color:'FF0000' } // hex color (red) * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent * @example { color:pptx.SchemeColor.accent1 } // theme color Accent1 */ fill?: ShapeFillProps; /** @internal rId of a cell `a:blipFill` image (registered at addTable) */ _fillRid?: number; hyperlink?: HyperlinkProps; /** * Mouse-over action, configured like `hyperlink` but triggered on hover * - PowerPoint's Insert > Action > Mouse Over tab * @example { hyperlinkHover: { slide: 3, tooltip: 'Jump to results' } } */ hyperlinkHover?: HyperlinkProps; /** * Cell margin (inches) * @default 0 */ margin?: Margin; /** * Cell rowspan */ rowspan?: number; /** * Text direction (Martin-N alias of `textDirection`) * @deprecated use `textDirection` */ vert?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; } declare interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps, AppearOnClickProps, NvPrExtensionProps { _arrObjTabHeadRows?: TableRow[]; /** * Whether to enable auto-paging * - auto-paging creates new slides as content overflows a slide * @default false */ autoPage?: boolean; /** * Auto-paging character weight * - adjusts how many characters are used before lines wrap * - range: -1.0 to 1.0 * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html * @default 0.0 * @example 0.5 // lines are longer (increases the number of characters that can fit on a given line) */ autoPageCharWeight?: number; /** * Auto-paging line weight * - adjusts how many lines are used before slides wrap * - range: -1.0 to 1.0 * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html * @default 0.0 * @example 0.5 // tables are taller (increases the number of lines that can fit on a given slide) */ autoPageLineWeight?: number; /** * Whether table header row(s) should be repeated on each new slide creating by autoPage. * Use `autoPageHeaderRows` to designate how many rows comprise the table header (1+). * @default false * @since v3.3.0 */ autoPageRepeatHeader?: boolean; /** * Number of rows that comprise table headers * - required when `autoPageRepeatHeader` is set to true. * @example 2 - repeats the first two table rows on each new slide created * @default 1 * @since v3.3.0 */ autoPageHeaderRows?: number; /** * The `y` location to use on subsequent slides created by autopaging * @default (top margin of Slide) */ autoPageSlideStartY?: number; /** * Table border * - single value is applied to all 4 sides * - array of values in TRBL order for individual sides */ border?: BorderProps | [BorderProps, BorderProps, BorderProps, BorderProps]; /** * Width of table columns (inches) * - single value is applied to every column equally based upon `w` * - array of values in applied to each column in order * @default columns of equal width based upon `w` */ colW?: number | number[]; /** * Cell background color * @example { color:'FF0000' } // hex color (red) * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent * @example { color:pptx.SchemeColor.accent1 } // theme color Accent1 */ fill?: ShapeFillProps; /** * Cell margin (inches) * - affects all table cells, is superceded by cell options */ margin?: Margin; /** * Height of table rows (inches) * - single value is applied to every row equally based upon `h` * - array of values in applied to each row in order * @default rows of equal height based upon `h` */ rowH?: number | number[]; /** * Apply special formatting to the first row (header emphasis) * - only renders when a table style is in effect (see `tableStyleId`) * @default false */ firstRow?: boolean; /** * Apply special formatting to the last row (totals emphasis) * @default false */ lastRow?: boolean; /** * Apply special formatting to the first column * @default false */ firstCol?: boolean; /** * Apply special formatting to the last column * @default false */ lastCol?: boolean; /** * Band (alternate the fill of) the rows * @default false */ bandRow?: boolean; /** * Band (alternate the fill of) the columns * @default false */ bandCol?: boolean; /** * Lay the table out right-to-left (column order reversed) - ECMA-376 §5.1.6.13 `a:tblPr@rtl` * @default false */ rtlMode?: boolean; /** * Table style id (GUID of a built-in PowerPoint table style, or a custom style from `pptx.tableStyles`) * - required for `bandRow`/`firstRow`/etc. to have a visible effect * @example '{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}' // "Medium Style 2 - Accent 1" */ tableStyleId?: string; /** * Placeholder name to bind this table to (from a slide master/layout `placeholder` object of `type:'tbl'`). * Emits `` on the graphicFrame and inherits the placeholder geometry (ECMA-376 §4.4.1.33/§4.8.14, issue #856). */ placeholder?: string; /** * Animation configuration * - Can be a simple animation name or full configuration object * @example 'fadein' * @example { type: 'flyin', direction: 'left', duration: 1000 } */ animation?: string | AnimationConfig; /** * @deprecated v3.3.0 - use `autoPageSlideStartY` */ newSlideStartY?: number; } declare type TableRow = TableCell[]; /** * Borders of one part of a table style (`a:tcBdr`, ECMA-376 Part 1 §21.1.3.11) */ declare interface TableStyleBorderProps { left?: ShapeLineProps; right?: ShapeLineProps; top?: ShapeLineProps; bottom?: ShapeLineProps; /** horizontal borders between rows */ insideH?: ShapeLineProps; /** vertical borders between columns */ insideV?: ShapeLineProps; } /** * How one part of a table looks in a table style (`a:wholeTbl`, `a:band1H`, `a:firstRow`, ...) * - `a:tcTxStyle` carries the text half, `a:tcStyle` the cell half */ declare interface TableStylePartProps { /** bold text - omitted leaves it to the theme */ bold?: boolean; /** italic text - omitted leaves it to the theme */ italic?: boolean; /** text colour */ color?: Color; /** cell fill */ fill?: ShapeFillProps; /** cell borders */ borders?: TableStyleBorderProps; } /** * A custom table style, written into `ppt/tableStyles.xml` (ECMA-376 Part 1 §14.2.9) * - reference it from a table with `tableStyleId: ''` * - `id` and `name` are both required by the schema */ declare interface TableStyleProps { /** Style GUID, braced and upper-case, e.g. `{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}` */ id: string; /** Name shown in PowerPoint's table-style gallery */ name: string; /** applies to every cell */ wholeTable?: TableStylePartProps; /** first banded row */ band1H?: TableStylePartProps; /** second banded row */ band2H?: TableStylePartProps; /** first banded column */ band1V?: TableStylePartProps; /** second banded column */ band2V?: TableStylePartProps; firstRow?: TableStylePartProps; lastRow?: TableStylePartProps; firstCol?: TableStylePartProps; lastCol?: TableStylePartProps; /** top-left cell */ nwCell?: TableStylePartProps; /** top-right cell */ neCell?: TableStylePartProps; /** bottom-left cell */ swCell?: TableStylePartProps; /** bottom-right cell */ seCell?: TableStylePartProps; } declare interface TableToSlidesProps extends TableProps { _arrObjTabHeadRows?: TableRow[]; /** * Add an image to slide(s) created during autopaging * - `image` prop requires either `path` or `data` * - see `DataOrPathProps` for details on `image` props * - see `PositionProps` for details on `options` props */ addImage?: { image: DataOrPathProps; options: PositionProps; }; /** * Add a shape to slide(s) created during autopaging */ addShape?: { shapeName: SHAPE_NAME; options: ShapeProps; }; /** * Add a table to slide(s) created during autopaging */ addTable?: { rows: TableRow[]; options: TableProps; }; /** * Add a text object to slide(s) created during autopaging */ addText?: { text: TextProps[]; options: TextPropsOptions; }; /** * Whether to enable auto-paging * - auto-paging creates new slides as content overflows a slide * @default true */ autoPage?: boolean; /** * Auto-paging character weight * - adjusts how many characters are used before lines wrap * - range: -1.0 to 1.0 * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html * @default 0.0 * @example 0.5 // lines are longer (increases the number of characters that can fit on a given line) */ autoPageCharWeight?: number; /** * Auto-paging line weight * - adjusts how many lines are used before slides wrap * - range: -1.0 to 1.0 * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html * @default 0.0 * @example 0.5 // tables are taller (increases the number of lines that can fit on a given slide) */ autoPageLineWeight?: number; /** * Whether to repeat head row(s) on new tables created by autopaging * @since v3.3.0 * @default false */ autoPageRepeatHeader?: boolean; /** * The `y` location to use on subsequent slides created by autopaging * @default (top margin of Slide) */ autoPageSlideStartY?: number; /** * Column widths (inches) */ colW?: number | number[]; /** * Master slide name * - define a master slide to have your auto-paged slides have corporate design, etc. * @see https://gitbrent.github.io/PptxGenJS/docs/masters.html */ masterSlideName?: string; /** * Slide margin * - this margin will be across all slides created by auto-paging */ slideMargin?: Margin; /** * @deprecated v3.3.0 - use `autoPageRepeatHeader` */ addHeaderToEach?: boolean; /** * @deprecated v3.3.0 - use `autoPageSlideStartY` */ newSlideStartY?: number; } declare enum TEXT_HALIGN { 'left' = "left", 'center' = "center", 'right' = "right", 'justify' = "justify" } declare enum TEXT_VALIGN { 'b' = "b", 'ctr' = "ctr", 't' = "t" } declare interface TextBaseProps { /** * Horizontal alignment * @default 'left' */ align?: HAlign; /** * Bold style * @default false */ bold?: boolean; /** * Add a line-break * @default false */ breakLine?: boolean; /** * Add standard or custom bullet * - use `true` for standard bullet * - pass object options for custom bullet * @default false */ bullet?: boolean | { /** * Bullet type * @default bullet */ type?: 'bullet' | 'number'; /** * Bullet character code (unicode) * @since v3.3.0 * @example '25BA' // 'BLACK RIGHT-POINTING POINTER' (U+25BA) */ characterCode?: string; /** * Bullet color (`HexColor`, `ThemeColor`, or `ModifiedThemeColor`) * @example 'FF0000' // red * @example pptx.SchemeColor.accent1 */ color?: Color; /** * Bullet size as a percent of the text size (`a:buSzPct`) * - range: 25-400 * @default 100 */ size?: number; /** * Bullet size in points (`a:buSzPts`), instead of a percent */ sizePts?: number; /** * Typeface for the bullet glyph (`a:buFont`) * - needed for Wingdings-style character bullets */ fontFace?: string; /** * Picture bullet (`a:buBlip`) - base64 image data with a mime header * - takes precedence over a character or number bullet */ image?: string; /** relationship id of the picture bullet, resolved when the object is created @internal */ _imageRId?: number; /** * Indentation (space between bullet and text) (points) * @since v3.3.0 * @default 27 // DEF_BULLET_MARGIN * @example 10 // Indents text 10 points from bullet */ indent?: number; /** * Number type * @since v3.3.0 * @example 'romanLcParenR' // roman numerals lower-case with paranthesis right */ numberType?: 'alphaLcParenBoth' | 'alphaLcParenR' | 'alphaLcPeriod' | 'alphaUcParenBoth' | 'alphaUcParenR' | 'alphaUcPeriod' | 'arabicParenBoth' | 'arabicParenR' | 'arabicPeriod' | 'arabicPlain' | 'romanLcParenBoth' | 'romanLcParenR' | 'romanLcPeriod' | 'romanUcParenBoth' | 'romanUcParenR' | 'romanUcPeriod'; /** * Number bullets start at * @since v3.3.0 * @default 1 * @example 10 // numbered bullets start with 10 */ numberStartAt?: number; /** * Bullet code (unicode) * @deprecated v3.3.0 - use `characterCode` */ code?: string; /** * Margin between bullet and text * @since v3.2.1 * @deplrecated v3.3.0 - use `indent` */ marginPt?: number; /** * Number to start with (only applies to type:number) * @deprecated v3.3.0 - use `numberStartAt` */ startAt?: number; /** * Number type * @deprecated v3.3.0 - use `numberType` */ style?: string; }; /** * Text color * - `HexColor` or `ThemeColor` * - MS-PPT > Format Shape > Text Options > Text Fill & Outline > Text Fill > Color * @example 'FF0000' // hex color (red) * @example pptx.SchemeColor.text1 // Theme color (Text1) */ color?: Color; /** * Font face name * @example 'Arial' // Arial font */ fontFace?: string; /** * East-Asian typeface (`a:ea`). Falls back to `fontFace` when omitted. * @example 'Microsoft YaHei' */ fontFaceEa?: string; /** * Complex-script typeface (`a:cs`). Falls back to `fontFace` when omitted. * @example 'Arial' */ fontFaceCs?: string; /** * Symbol typeface (`a:sym`), for Wingdings-style glyphs * @example 'Wingdings' */ fontFaceSym?: string; /** * Gradient text fill (`a:gradFill` on `a:rPr`). When set, overrides solid `color`. * @example { type:'linear', angle:45, stops:[{ pos:0, color:'FF0000' }, { pos:100, color:'0000FF' }] } */ gradient?: ShapeGradientProps; /** * Font size * @example 12 // Font size 12 */ fontSize?: number; /** * Text highlight color (hex format) * @example 'FFFF00' // yellow */ highlight?: HexColor; /** * italic style * @default false */ italic?: boolean; /** * language * - ISO 639-1 standard language code * @default 'en-US' // english US * @example 'fr-CA' // french Canadian */ lang?: string; /** * Add a soft line-break (shift+enter) before line text content * @default false * @since v3.5.0 */ softBreakBefore?: boolean; /** * tab stops * - PowerPoint: Paragraph > Tabs > Tab stop position * @example [{ position:1 }, { position:3 }] // Set first tab stop to 1 inch, set second tab stop to 3 inches */ tabStops?: Array<{ position: number; alignment?: 'l' | 'r' | 'ctr' | 'dec'; }>; /** * text direction * `horz` = horizontal * `vert` = rotate 90^ * `vert270` = rotate 270^ * `wordArtVert` = stacked * @default 'horz' */ textDirection?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; /** * Transparency (percent) * - MS-PPT > Format Shape > Text Options > Text Fill & Outline > Text Fill > Transparency * - range: 0-100 * @default 0 */ transparency?: number; /** * underline properties * - PowerPoint: Font > Color & Underline > Underline Style/Underline Color * @default (none) */ underline?: { style?: 'dash' | 'dashHeavy' | 'dashLong' | 'dashLongHeavy' | 'dbl' | 'dotDash' | 'dotDashHeave' | 'dotDotDash' | 'dotDotDashHeavy' | 'dotted' | 'dottedHeavy' | 'heavy' | 'none' | 'sng' | 'wavy' | 'wavyDbl' | 'wavyHeavy'; color?: Color; }; /** * vertical alignment * @default 'top' */ valign?: VAlign; } /** * Text-body attributes beyond wrap/insets/anchor (`a:bodyPr`, ECMA-376 21.1.2.1.1) * - omitted unless set, so default output does not change * - overflow uses the existing `vertOverflow` / `horzOverflow` options */ declare interface TextBodyProps { /** * Keep text upright when the shape is rotated (`a:bodyPr@upright`) * @default false */ upright?: boolean; /** * Rotate the text body independently of the shape, in degrees (`a:bodyPr@rot`) * - distinct from the shape's own `rotate` */ textRotate?: number; /** * Center the anchor point as well as the text (`a:bodyPr@anchorCtr`) * @default false */ anchorCtr?: boolean; /** * Respect paragraph spacing before the first and after the last line (`a:bodyPr@spcFirstLastPara`) * @default false */ spcFirstLastPara?: boolean; /** * Use legacy line-spacing rules (`a:bodyPr@compatLnSpc`) * @default false */ compatLnSpc?: boolean; /** * Force anti-aliasing regardless of size (`a:bodyPr@forceAA`) * @default false */ forceAA?: boolean; } /** * Refreshable text-run field type (`a:fld@type`, ECMA-376 21.1.2.2.4) */ declare type TextFieldType = 'slidenum' | 'datetime' | 'datetimeFigureOut' | 'datetime1' | 'datetime2' | 'datetime3' | 'datetime4' | 'datetime5' | 'datetime6' | 'datetime7' | 'datetime8' | 'datetime9' | 'datetime10' | 'datetime11' | 'datetime12' | 'datetime13' | 'headerfooter' | 'hdr' | 'ftr'; declare interface TextGlowProps { /** * Border color (hex format) * @example 'FF3399' */ color?: HexColor; /** * opacity (0.0 - 1.0) * @example 0.5 * 50% opaque */ opacity?: number; /** * size (points) */ size: number; } declare interface TextProps { text?: string; options?: TextPropsOptions; } declare interface TextPropsOptions extends PositionProps, DataOrPathProps, TextBaseProps, ObjectNameProps, AppearOnClickProps, NvPrExtensionProps, TextBodyProps, ParagraphProps, TextRunProps { _bodyProp?: { autoFit?: boolean; align?: TEXT_HALIGN; anchor?: TEXT_VALIGN; lIns?: number; rIns?: number; tIns?: number; bIns?: number; numCol?: number; spcCol?: number; vert?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; wrap?: boolean; vertOverflow?: 'overflow' | 'ellipsis' | 'clip'; horzOverflow?: 'overflow' | 'clip'; }; _lineIdx?: number; baseline?: number; /** * Number of text columns (>=2 flows text across columns). ECMA-376 §5.1.5.1.4 `@numCol` (issue #1320) * @default undefined (single column) */ columns?: number; /** * Gap between text columns in inches. ECMA-376 §5.1.5.1.4 `@spcCol` (issue #1320) * @default 0 */ columnGap?: number; /** * Text capitalization applied at render time (does not change stored characters). * ECMA-376 §5.1.5.2.1 `CT_TextCharacterProperties@cap` / §5.1.12.64 `ST_TextCapsType`: * - `none` no capitalization, `small` small caps, `all` all caps * @default undefined (no cap attribute) */ caps?: 'none' | 'small' | 'all'; /** * Character spacing */ charSpacing?: number; /** * Text fit options * * MS-PPT > Format Shape > Shape Options > Text Box > "[unlabeled group]": [3 options below] * - 'none' = Do not Autofit * - 'shrink' = Shrink text on overflow * - 'resize' = Resize shape to fit text * * **Note** 'shrink' and 'resize' only take effect after editing text/resize shape. * Both PowerPoint and Word dynamically calculate a scaling factor and apply it when edit/resize occurs. * * There is no way for this library to trigger that behavior, sorry. * * Pass an object `{ type:'shrink', fontScale?, lnSpcReduction? }` to write explicit * `` scaling attributes (ECMA-376 §5.1.5.1.3): `fontScale` and `lnSpcReduction` * are percentages 0–100 (issue #1199). * @since v3.3.0 * @default "none" */ fit?: 'none' | 'shrink' | 'resize' | { type: 'shrink'; fontScale?: number; lnSpcReduction?: number; }; /** * Shape fill * @example { color:'FF0000' } // hex color (red) * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent * @example { color:pptx.SchemeColor.accent1 } // theme color Accent1 */ fill?: ShapeFillProps; /** * Flip shape horizontally? * @default false */ flipH?: boolean; /** * Flip shape vertical? * @default false */ flipV?: boolean; glow?: TextGlowProps; hyperlink?: HyperlinkProps; /** * Mouse-over action, configured like `hyperlink` but triggered on hover * - PowerPoint's Insert > Action > Mouse Over tab * @example { hyperlinkHover: { slide: 3, tooltip: 'Jump to results' } } */ hyperlinkHover?: HyperlinkProps; indentLevel?: number; isTextBox?: boolean; line?: ShapeLineProps; /** * Line spacing (pt) * - PowerPoint: Paragraph > Indents and Spacing > Line Spacing: > "Exactly" * @example 28 // 28pt */ lineSpacing?: number; /** * line spacing multiple (percent) * - range: 0.0-9.99 * - PowerPoint: Paragraph > Indents and Spacing > Line Spacing: > "Multiple" * @example 1.5 // 1.5X line spacing * @since v3.5.0 */ lineSpacingMultiple?: number; /** * Text box margin — array is **TRBL** (top, right, bottom, left), same as table margins. * Maps to DrawingML `a:bodyPr` insets `tIns`/`rIns`/`bIns`/`lIns` * (ECMA-376 Part 1 §5.1.5.1.1 `CT_TextBodyProperties`, `ST_Coordinate32` EMUs). * Schema attribute order is lIns,tIns,rIns,bIns — that is XML order, not the API array. * - values `>= 1` are points; values `< 1` are inches (same dual-unit rule as table cells) * - PowerPoint: Format Shape > Shape Options > Size & Properties > Text Box > margins * @example 0 // no margin * @example 10 // 10pt on all sides * @example 0.1 // 0.1" on all sides * @example [10, 5, 10, 5] // T=10pt R=5pt B=10pt L=5pt * @example [0.05, 0.1, 0.05, 0.1] // inches (PowerPoint "Normal") */ margin?: Margin; outline?: { color: Color; size: number; transparency?: number; }; paraSpaceAfter?: number; paraSpaceBefore?: number; placeholder?: string; /** * WordArt text warp preset (`a:prstTxWarp` on `a:bodyPr`) * @example 'textArchUp' */ presetShape?: TextShapeType; /** * Rounded rectangle radius (only for pptx.shapes.ROUNDED_RECTANGLE) * - values: 0.0 to 1.0 * @default 0 */ rectRadius?: number; /** * Rotation (degrees) * - range: -360 to 360 * @default 0 * @example 180 // rotate 180 degrees */ rotate?: number; /** * Whether to enable right-to-left mode * @default false */ rtlMode?: boolean; /** * Lay columns out right-to-left (`a:bodyPr@rtlCol`) * - defaults to this text box's `rtlMode` when unset */ rtlColumns?: boolean; /** * Render this run as a field the consumer refreshes, rather than literal text (`a:fld`) * - the run's `text` becomes the cached value, so consumers that do not refresh still show something * @example { text: '22/08/2026', options: { field: 'datetime1' } } */ field?: TextFieldType; /** * Horizontal-in-vertical numerals for East Asian vertical text (`a:rPr@kumimoji`) * @default false */ kumimoji?: boolean; shadow?: ShadowProps; /** * Soft-edge effect (`a:softEdge` on the text shape) */ softEdge?: SoftEdgeProps; /** * Reflection effect (`a:reflection` on the text shape) */ reflection?: ReflectionProps; /** * Blur effect (`a:blur` on the text shape) */ blur?: BlurProps; /** * Fill blended over the text shape's own fill (`a:fillOverlay`) */ fillOverlay?: FillOverlayProps; /** * Emit the effects as a composed effect graph (`a:effectDag`) rather than an `a:effectLst` */ effectDag?: EffectDagProps; /** * Theme style references (`p:style`) */ styleRef?: ShapeStyleProps; shape?: SHAPE_NAME; /** * Strikethrough style * - `boolean` form is deprecated (v4.1.0): `true` maps to `'sngStrike'` - pass the string value instead */ strike?: boolean | 'dblStrike' | 'sngStrike'; subscript?: boolean; superscript?: boolean; /** * Vertical alignment * @default middle */ valign?: VAlign; vert?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; /** * Text wrap * @since v3.3.0 * @default true */ wrap?: boolean; /** * Vertical overflow of text that does not fit the shape. * ECMA-376 §5.1.5.1.1 `CT_TextBodyProperties@vertOverflow`. * @default overflow * @since v4.1.17 */ vertOverflow?: 'overflow' | 'ellipsis' | 'clip'; /** * Horizontal overflow of text that does not fit the shape. * ECMA-376 §5.1.5.1.1 `CT_TextBodyProperties@horzOverflow`. * @default overflow * @since v4.1.17 */ horzOverflow?: 'overflow' | 'clip'; /** * Prebuilt Office Math (OMML) fragment for this text run. * Emitted as PowerPoint math: `` interleaved * with surrounding `` text runs. Bare `m:oMath` (without `a14:m`) is * silently stripped by PowerPoint on open — the library wraps it for you. * Callers convert LaTeX/MathML → OMML themselves (e.g. MathLive + mathml2omml). * Use `text: ''` for math-only runs; surrounding runs can still hold plain text. * @example { text: '', options: { omml: '' } } * @since v4.1.0 */ omml?: string; /** * Whether "Fit to Shape?" is enabled * @deprecated v3.3.0 - use `fit` */ autoFit?: boolean; /** * Whather "Shrink Text on Overflow?" is enabled * @deprecated v3.3.0 - use `fit` */ shrinkText?: boolean; /** * Inset * @deprecated v3.10.0 - use `margin` */ inset?: number; /** * Dash type * @deprecated v3.3.0 - use `line.dashType` */ lineDash?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; /** * @deprecated v3.3.0 - use `line.beginArrowType` */ lineHead?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; /** * @deprecated v3.3.0 - use `line.width` */ lineSize?: number; /** * @deprecated v3.3.0 - use `line.endArrowType` */ lineTail?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; /** * Animation configuration * - Can be a simple animation name or full configuration object * @example 'fadein' * @example { type: 'flyin', direction: 'left', duration: 1000 } */ animation?: string | AnimationConfig; } /** * Run attributes beyond bold/italic/size (`a:rPr`, ECMA-376 21.1.2.3.9) * - `caps` lives on `TextPropsOptions` (already present) */ declare interface TextRunProps { /** * Normalise glyph heights (`a:rPr@normalizeH`) * @default false */ normalizeH?: boolean; /** * Exclude the run from spelling and grammar checking (`a:rPr@noProof`) * @default false */ noProof?: boolean; /** * Mark the run as needing re-inspection (`a:rPr@dirty`) * - previously hardcoded to `0` * @default false */ dirty?: boolean; /** * Underline line properties (`a:uLn`), distinct from the underline colour * - pass `'text'` to follow the run's own line (`a:uLnTx`) */ underlineLine?: 'text' | ShapeLineProps; } /** * WordArt / preset text warp (`a:prstTxWarp@prst`, ECMA-376 `ST_TextShapeType`) * @see standards/ecma/part-22_drawingml-reference-material-drawingml-main.txt §5.1.12.76 */ declare type TextShapeType = 'textNoShape' | 'textPlain' | 'textStop' | 'textTriangle' | 'textTriangleInverted' | 'textChevron' | 'textChevronInverted' | 'textRingInside' | 'textRingOutside' | 'textArchUp' | 'textArchDown' | 'textCircle' | 'textButton' | 'textArchUpPour' | 'textArchDownPour' | 'textCirclePour' | 'textButtonPour' | 'textCurveUp' | 'textCurveDown' | 'textCanUp' | 'textCanDown' | 'textWave1' | 'textWave2' | 'textDoubleWave1' | 'textWave4' | 'textInflate' | 'textDeflate' | 'textInflateBottom' | 'textDeflateBottom' | 'textInflateTop' | 'textDeflateTop' | 'textDeflateInflate' | 'textDeflateInflateDeflate' | 'textFadeRight' | 'textFadeLeft' | 'textFadeUp' | 'textFadeDown' | 'textSlantUp' | 'textSlantDown' | 'textCascadeUp' | 'textCascadeDown'; declare type ThemeColor = 'tx1' | 'tx2' | 'bg1' | 'bg2' | 'dk1' | 'lt1' | 'dk2' | 'lt2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6' | 'hlink' | 'folHlink' | 'phClr'; declare interface ThemeProps { /** * Headings font face name * @example 'Arial Narrow' * @default 'Calibri Light' */ headFontFace?: string; /** * Body font face name * @example 'Arial' * @default 'Calibri' */ bodyFontFace?: string; /** * East-Asian theme typeface (`a:ea` on major/minor `fontScheme`) * @example 'Microsoft YaHei' */ eaFontFace?: string; /** * Complex-script theme typeface (`a:cs` on major/minor `fontScheme`) * @example 'Arial' */ csFontFace?: string; /** * Custom theme color scheme — exactly 12 hex colors, in order: * dk1, lt1, dk2, lt2, accent1–6, hlink, folHlink * @example ['1B1B1B','FFFFFF','44546A','E7E6E6','0B5FFF','ED7D31','A5A5A5','FFC000','5B9BD5','70AD47','0563C1','954F72'] */ themeColors?: HexColor[]; /** * Hyperlink scheme color (`a:hlink` / `a:srgbClr`) as 6-digit hex, with or without `#`. * Overrides `themeColors[10]` when both are set. Invalid values are ignored. * @example 'FF0000' * @default '0563C1' */ hlinkColor?: string; } declare type TRANSITION_TYPE = `${TransitionType}`; /** * Slide transition type. * Base set is ECMA-376 §19.3.1.50; the rest are MS-PPTX §2.2.1 modern transitions (emitted via mc:AlternateContent). */ declare enum TransitionType { blinds = "blinds", checker = "checker", circle = "circle", comb = "comb", cover = "cover", cut = "cut", diamond = "diamond", dissolve = "dissolve", fade = "fade", newsflash = "newsflash", none = "none", plus = "plus", pull = "pull", push = "push", random = "random", randomBar = "randomBar", split = "split", strips = "strips", wedge = "wedge", wheel = "wheel", wipe = "wipe", zoom = "zoom", conveyor = "conveyor", doors = "doors", ferris = "ferris", flash = "flash", flip = "flip", flythrough = "flythrough", gallery = "gallery", glitter = "glitter", honeycomb = "honeycomb", morph = "morph", pan = "pan", prism = "prism", reveal = "reveal", ripple = "ripple", shred = "shred", switch = "switch", vortex = "vortex", warp = "warp", wheelReverse = "wheelReverse", window = "window" } declare interface TransparencyAnimationConfig extends BaseAnimationConfig { type: 'transparency'; level?: TransparencyLevel; } declare type TransparencyLevel = '25%' | '50%' | '75%' | '100%' | number; /** * Coordinate number - either: * - Inches (0-n) * - Percentage (0-100) * - Unit-suffixed length (`in` / `cm` / `mm` / `pt`) * * @example 10.25 // coordinate in inches * @example '2.5cm' // coordinate with an explicit unit * @example '75%' // coordinate as percentage of slide size */ declare type UnitLength = `${number}in` | `${number}cm` | `${number}mm` | `${number}pt`; declare type VAlign = 'top' | 'middle' | 'bottom'; /** * View properties stored in `ppt/viewProps.xml` (`p:viewPr`) * - unset values keep the literal prior versions wrote */ declare interface ViewProps { /** zoom percent in the normal slide view @default 136 */ zoom?: number; /** snap objects to the grid @default false */ snapToGrid?: boolean; /** snap objects to each other @default true */ snapToObjects?: boolean; /** show drawing guides */ showGuides?: boolean; /** show comments and ink markup */ showComments?: boolean; /** grid spacing in inches @default 0.0833 (76200 EMU) */ gridSpacing?: number; /** view PowerPoint opens the deck in */ lastView?: 'sldView' | 'sldMasterView' | 'notesView' | 'handoutView' | 'notesMasterView' | 'outlineView' | 'sldSorterView' | 'sldThumbnailView'; /** classic drawing guides (`p:guideLst`), positioned in inches */ guides?: GuideProps[]; } declare interface WheelAnimationConfig extends BaseAnimationConfig { type: 'wheel' | 'wheelexit'; spokes?: 1 | 2 | 3 | 4 | 8; } declare interface WipeAnimationConfig extends BaseAnimationConfig { type: 'wipe' | 'wipeexit'; direction?: WipeDirection; } /** Matches PowerPoint wipe presetSubtype directions used by gen-animations */ declare type WipeDirection = 'bottom' | 'top' | 'left' | 'right'; declare type WRITE_OUTPUT_TYPE = JSZIP_OUTPUT_TYPE | 'STREAM'; declare interface WriteBaseProps { /** * Whether to compress export (can save substantial space, but takes a bit longer to export) * @default false * @since v3.5.0 * @deprecated v4.1.0 - set `compression` on the presentation instead (`pptx.compression = 'best'`) - a * boolean per-write flag cannot express a level and compression is document config, not a per-call concern */ compression?: boolean; } declare interface WriteFileProps extends WriteBaseProps { /** * Export file name * @default 'Presentation.pptx' */ fileName?: string; } declare interface WriteProps extends WriteBaseProps { /** * Output type * - values: 'arraybuffer' | 'base64' | 'binarystring' | 'blob' | 'nodebuffer' | 'uint8array' | 'STREAM' * @default 'blob' */ outputType?: WRITE_OUTPUT_TYPE; } declare interface ZoomAnimationConfig extends BaseAnimationConfig { type: 'zoom' | 'zoomexit'; direction?: ZoomDirection; } /** Base Zoom navigation options. MS-PPTX §2.8 `CT_ZoomObjectProperties`. */ declare interface ZoomBaseProps extends PositionProps, ObjectNameProps { /** Cover/thumbnail image (base64 data URI or path). Defaults to a plain preview tile. */ cover?: string; /** Return to the zoom-source slide after viewing the target. @default true */ returnToParent?: boolean; /** Use the destination slide's background. @default true */ showBg?: boolean; /** Zoom transition duration (ms). Omit to use the destination slide's own transition. */ transitionDur?: number; /** Optional alt text. */ altText?: string; } declare type ZoomDirection = 'slideCenter' | 'objectCenter'; /** A Slide Zoom navigation object. MS-PPTX §2.10 `CT_SlideZoom`. */ declare interface ZoomProps extends ZoomBaseProps { /** 1-based slide number to zoom to. */ slideNum: number; } export { } export { ANCHOR } export { ARROW_SIZES } export { AXIS_ID_CATEGORY_PRIMARY } export { AXIS_ID_CATEGORY_SECONDARY } export { AXIS_ID_SERIES_PRIMARY } export { AXIS_ID_VALUE_PRIMARY } export { AXIS_ID_VALUE_SECONDARY } export { AddFontOptions } export { AddSlideProps } export { AlignH } export { AlignV } export { AnimationConfig } export { AnimationPreset } export { AnimationTrigger } export { AnimationType } export { AppearOnClickProps } export { AudioCdProps } export { AudioCdTimeProps } export { BARCHART_COLORS } export { BULLET_TYPES } export { BackgroundProps } export { BaseAnimationConfig } export { BlurProps } export { BorderProps } export { CHARTEX_LAYOUT_ID } export { CHARTEX_NAME } export { CHART_NAME } export { CHART_STYLE } export { CHART_TYPE } export { COMPOUND_TYPES } export { CRLF } export { Cell3DProps } export { CellBevelProps } export { CellLightRigProps } export { ChangesInfoProps } export { ChartAxisTickMark } export { ChartColorStyleProps } export { ChartLineCap } export { ChartType } export { ClassificationOutcome } export { Color } export { ColorAnimationConfig } export { ColorMapOverrideProps } export { ColorProps } export { ColorSchemeIndex } export { ColorTransformProps } export { CommentAuthorProps } export { CommentAuthorRef } export { CommentChangeBit } export { CommentChangeProps } export { CommentProps } export { CommentReactionInstanceProps } export { CommentReactionProps } export { CommentReplyChangeBit } export { CommentReplyChangeProps } export { CommentReplyProps } export { CommentStatus } export { CommentTaskEventKind } export { CommentTaskEventProps } export { CommentTaskProps } export { CompressionLevel } export { ConnectionProps } export { ConnectorProps } export { ContentPartBwMode } export { ContentPartProps } export { Coord } export { DEF_BULLET_MARGIN } export { DEF_CELL_BORDER } export { DEF_CELL_MARGIN_IN } export { DEF_CELL_MARGIN_PT } export { DEF_CHART_BORDER } export { DEF_CHART_GRIDLINE } export { DEF_COLOR_MAP } export { DEF_FONT_COLOR } export { DEF_FONT_SIZE } export { DEF_FONT_TITLE_SIZE } export { DEF_PRES_LAYOUT } export { DEF_PRES_LAYOUT_NAME } export { DEF_SHAPE_LINE_COLOR } export { DEF_SHAPE_SHADOW } export { DEF_SLIDE_BKGD } export { DEF_SLIDE_MARGIN_IN } export { DEF_TEXT_GLOW } export { DEF_TEXT_SHADOW } export { DataOrPathProps } export { DefineLayoutProps } export { DesignerProps } export { DesignerTag } export { DocumentProps } export { EMU } export { EffectDagProps } export { EmbedFontType } export { EmphasisAnimation } export { EntranceAnimation } export { ExitAnimation } export { FillOverlayProps } export { FloatAnimationConfig } export { FloatDirection } export { FlyAnimationConfig } export { FlyDirection } export { Group } export { GroupProps } export { GrowShrinkAmount } export { GrowShrinkAnimationConfig } export { GrowShrinkDirection } export { GuideProps } export { HAlign } export { HexColor } export { HyperlinkProps } export { HyperlinkSoundProps } export { IChartAreaProps } export { IChartMulti } export { IChartOpts } export { IChartOptsLib } export { IChartPropsAxisCat } export { IChartPropsAxisSer } export { IChartPropsAxisVal } export { IChartPropsBase } export { IChartPropsChartBar } export { IChartPropsChartDoughnut } export { IChartPropsChartEx } export { IChartPropsChartLine } export { IChartPropsChartPie } export { IChartPropsChartRadar } export { IChartPropsDataLabel } export { IChartPropsDataTable } export { IChartPropsFillLine } export { IChartPropsLegend } export { IChartPropsTitle } export { IMG_BROKEN } export { IMG_PLAYBTN } export { IOptsChartData } export { IPresentationProps } export { ISlideObject } export { ISlideRel } export { ISlideRelChart } export { ISlideRelMedia } export { ImageAlphaEffectProps } export { ImageProps } export { ImageRecolorProps } export { InkProps } export { JSZIP_OUTPUT_TYPE } export { KinsokuProps } export { LAYOUT_IDX_SERIES_BASE } export { LETTERS } export { LINEH_MODIFIER } export { LaserTracePoint } export { LineArrowSize } export { MASTER_OBJECTS } export { Margin } export { MediaOnError } export { MediaProps } export { MediaType } export { ModifiedThemeColor } export { NonVisualProps } export { NvPrExtensionProps } export { ONEPT } export { OOXML_CHARTEX } export { ObjectNameProps } export { ObjectOptions } export { OfficeAppProps } export { OfficeAppReference } export { OfficeAppStoreType } export { OptsChartData } export { OptsChartGridLine } export { OptsDataLabelPosition } export { OutputType } export { PIECHART_COLORS } export { PLACEHOLDER_TYPE } export { PLACEHOLDER_TYPES } export { PRESET_COLOR_VALUES } export { ParagraphProps } export { PathAnimation } export { PhotoAlbumProps } export { PlaceholderProps } export { PlaceholderTypeExt } export { PositionProps } export { PresLayout } export { PresSlide } export { PresentationProps } export { PresetPatternValues } export { PrintProps } export { REGEX_HEX_COLOR } export { RandomBarsAnimationConfig } export { ReflectionProps } export { RevisionClientProps } export { RevisionInfoProps } export { SCHEME_COLORS } export { SCHEME_COLOR_NAMES } export { SCHEME_COLOR_VALUES } export { SHAPE_NAME } export { SHAPE_TYPE } export { SLDNUMFLDID } export { SLIDE_OBJECT_TYPES } export { SYSTEM_COLOR_VALUES } export { SchemeColor } export { SchemeColorValue } export { SectionProps } export { SectionZoomProps } export { ShadowProps } export { ShapeAnimationConfig } export { ShapeDirection } export { ShapeFillProps } export { ShapeGradientFlip } export { ShapeGradientProps } export { ShapeGradientStopProps } export { ShapeGradientTileRect } export { ShapeImageFillProps } export { ShapeLineProps } export { ShapeLockProps } export { ShapeMaskType } export { ShapePatternProps } export { ShapeProps } export { ShapeStyleProps } export { ShapeType } export { SlideBaseProps } export { SlideLayout } export { SlideLayoutType } export { SlideMasterProps } export { SlideNumberProps } export { SlideObjectAnimation } export { SlideShowEvent } export { SlideShowProps } export { SlideShowTriggerType } export { SlideSizeType } export { SlideTransitionProps } export { SoftEdgeProps } export { SpinAmount } export { SpinAnimationConfig } export { SpinDirection } export { SplitAnimationConfig } export { SplitDirection } export { SummaryZoomProps } export { TEXT_FIELD_TYPES } export { TEXT_HALIGN } export { TEXT_VALIGN } export { TILE_ALIGNMENTS } export { TRANSITION_TYPE } export { TableCell } export { TableCellProps } export { TableProps } export { TableRow } export { TableRowSlide } export { TableStyleBorderProps } export { TableStylePartProps } export { TableStyleProps } export { TableToSlidesProps } export { TextBaseProps } export { TextBodyProps } export { TextFieldType } export { TextGlowProps } export { TextProps } export { TextPropsOptions } export { TextRunProps } export { TextShapeType } export { ThemeColor } export { ThemeProps } export { TransitionType } export { TransparencyAnimationConfig } export { TransparencyLevel } export { UnitLength } export { VAlign } export { ViewProps } export { WRITE_OUTPUT_TYPE } export { WheelAnimationConfig } export { WipeAnimationConfig } export { WipeDirection } export { WriteBaseProps } export { WriteFileProps } export { WriteProps } export { ZoomAnimationConfig } export { ZoomDirection } export { ZoomProps } export { chartExRequiresNs } export { isChartexType } export as namespace PptxGenJS declare namespace PptxGenJS { export { ANCHOR } export { ARROW_SIZES } export { AXIS_ID_CATEGORY_PRIMARY } export { AXIS_ID_CATEGORY_SECONDARY } export { AXIS_ID_SERIES_PRIMARY } export { AXIS_ID_VALUE_PRIMARY } export { AXIS_ID_VALUE_SECONDARY } export { AddFontOptions } export { AddSlideProps } export { AlignH } export { AlignV } export { AnimationConfig } export { AnimationPreset } export { AnimationTrigger } export { AnimationType } export { AppearOnClickProps } export { AudioCdProps } export { AudioCdTimeProps } export { BARCHART_COLORS } export { BULLET_TYPES } export { BackgroundProps } export { BaseAnimationConfig } export { BlurProps } export { BorderProps } export { CHARTEX_LAYOUT_ID } export { CHARTEX_NAME } export { CHART_NAME } export { CHART_STYLE } export { CHART_TYPE } export { COMPOUND_TYPES } export { CRLF } export { Cell3DProps } export { CellBevelProps } export { CellLightRigProps } export { ChangesInfoProps } export { ChartAxisTickMark } export { ChartColorStyleProps } export { ChartLineCap } export { ChartType } export { ClassificationOutcome } export { Color } export { ColorAnimationConfig } export { ColorMapOverrideProps } export { ColorProps } export { ColorSchemeIndex } export { ColorTransformProps } export { CommentAuthorProps } export { CommentAuthorRef } export { CommentChangeBit } export { CommentChangeProps } export { CommentProps } export { CommentReactionInstanceProps } export { CommentReactionProps } export { CommentReplyChangeBit } export { CommentReplyChangeProps } export { CommentReplyProps } export { CommentStatus } export { CommentTaskEventKind } export { CommentTaskEventProps } export { CommentTaskProps } export { CompressionLevel } export { ConnectionProps } export { ConnectorProps } export { ContentPartBwMode } export { ContentPartProps } export { Coord } export { DEF_BULLET_MARGIN } export { DEF_CELL_BORDER } export { DEF_CELL_MARGIN_IN } export { DEF_CELL_MARGIN_PT } export { DEF_CHART_BORDER } export { DEF_CHART_GRIDLINE } export { DEF_COLOR_MAP } export { DEF_FONT_COLOR } export { DEF_FONT_SIZE } export { DEF_FONT_TITLE_SIZE } export { DEF_PRES_LAYOUT } export { DEF_PRES_LAYOUT_NAME } export { DEF_SHAPE_LINE_COLOR } export { DEF_SHAPE_SHADOW } export { DEF_SLIDE_BKGD } export { DEF_SLIDE_MARGIN_IN } export { DEF_TEXT_GLOW } export { DEF_TEXT_SHADOW } export { DataOrPathProps } export { DefineLayoutProps } export { DesignerProps } export { DesignerTag } export { DocumentProps } export { EMU } export { EffectDagProps } export { EmbedFontType } export { EmphasisAnimation } export { EntranceAnimation } export { ExitAnimation } export { FillOverlayProps } export { FloatAnimationConfig } export { FloatDirection } export { FlyAnimationConfig } export { FlyDirection } export { Group } export { GroupProps } export { GrowShrinkAmount } export { GrowShrinkAnimationConfig } export { GrowShrinkDirection } export { GuideProps } export { HAlign } export { HexColor } export { HyperlinkProps } export { HyperlinkSoundProps } export { IChartAreaProps } export { IChartMulti } export { IChartOpts } export { IChartOptsLib } export { IChartPropsAxisCat } export { IChartPropsAxisSer } export { IChartPropsAxisVal } export { IChartPropsBase } export { IChartPropsChartBar } export { IChartPropsChartDoughnut } export { IChartPropsChartEx } export { IChartPropsChartLine } export { IChartPropsChartPie } export { IChartPropsChartRadar } export { IChartPropsDataLabel } export { IChartPropsDataTable } export { IChartPropsFillLine } export { IChartPropsLegend } export { IChartPropsTitle } export { IMG_BROKEN } export { IMG_PLAYBTN } export { IOptsChartData } export { IPresentationProps } export { ISlideObject } export { ISlideRel } export { ISlideRelChart } export { ISlideRelMedia } export { ImageAlphaEffectProps } export { ImageProps } export { ImageRecolorProps } export { InkProps } export { JSZIP_OUTPUT_TYPE } export { KinsokuProps } export { LAYOUT_IDX_SERIES_BASE } export { LETTERS } export { LINEH_MODIFIER } export { LaserTracePoint } export { LineArrowSize } export { MASTER_OBJECTS } export { Margin } export { MediaOnError } export { MediaProps } export { MediaType } export { ModifiedThemeColor } export { NonVisualProps } export { NvPrExtensionProps } export { ONEPT } export { OOXML_CHARTEX } export { ObjectNameProps } export { ObjectOptions } export { OfficeAppProps } export { OfficeAppReference } export { OfficeAppStoreType } export { OptsChartData } export { OptsChartGridLine } export { OptsDataLabelPosition } export { OutputType } export { PIECHART_COLORS } export { PLACEHOLDER_TYPE } export { PLACEHOLDER_TYPES } export { PRESET_COLOR_VALUES } export { ParagraphProps } export { PathAnimation } export { PhotoAlbumProps } export { PlaceholderProps } export { PlaceholderTypeExt } export { PositionProps } export { PresLayout } export { PresSlide } export { PresentationProps } export { PresetPatternValues } export { PrintProps } export { REGEX_HEX_COLOR } export { RandomBarsAnimationConfig } export { ReflectionProps } export { RevisionClientProps } export { RevisionInfoProps } export { SCHEME_COLORS } export { SCHEME_COLOR_NAMES } export { SCHEME_COLOR_VALUES } export { SHAPE_NAME } export { SHAPE_TYPE } export { SLDNUMFLDID } export { SLIDE_OBJECT_TYPES } export { SYSTEM_COLOR_VALUES } export { SchemeColor } export { SchemeColorValue } export { SectionProps } export { SectionZoomProps } export { ShadowProps } export { ShapeAnimationConfig } export { ShapeDirection } export { ShapeFillProps } export { ShapeGradientFlip } export { ShapeGradientProps } export { ShapeGradientStopProps } export { ShapeGradientTileRect } export { ShapeImageFillProps } export { ShapeLineProps } export { ShapeLockProps } export { ShapeMaskType } export { ShapePatternProps } export { ShapeProps } export { ShapeStyleProps } export { ShapeType } export { SlideBaseProps } export { SlideLayout } export { SlideLayoutType } export { SlideMasterProps } export { SlideNumberProps } export { SlideObjectAnimation } export { SlideShowEvent } export { SlideShowProps } export { SlideShowTriggerType } export { SlideSizeType } export { SlideTransitionProps } export { SoftEdgeProps } export { SpinAmount } export { SpinAnimationConfig } export { SpinDirection } export { SplitAnimationConfig } export { SplitDirection } export { SummaryZoomProps } export { TEXT_FIELD_TYPES } export { TEXT_HALIGN } export { TEXT_VALIGN } export { TILE_ALIGNMENTS } export { TRANSITION_TYPE } export { TableCell } export { TableCellProps } export { TableProps } export { TableRow } export { TableRowSlide } export { TableStyleBorderProps } export { TableStylePartProps } export { TableStyleProps } export { TableToSlidesProps } export { TextBaseProps } export { TextBodyProps } export { TextFieldType } export { TextGlowProps } export { TextProps } export { TextPropsOptions } export { TextRunProps } export { TextShapeType } export { ThemeColor } export { ThemeProps } export { TransitionType } export { TransparencyAnimationConfig } export { TransparencyLevel } export { UnitLength } export { VAlign } export { ViewProps } export { WRITE_OUTPUT_TYPE } export { WheelAnimationConfig } export { WipeAnimationConfig } export { WipeDirection } export { WriteBaseProps } export { WriteFileProps } export { WriteProps } export { ZoomAnimationConfig } export { ZoomDirection } export { ZoomProps } export { chartExRequiresNs } export { isChartexType } }