import type { IOverlayBehavior } from '../../Abstracts/IOverlayBehavior'; import type { IDrawerOptions, IDrawerRef } from '../DrawerService'; import { type IDrawerStackBehaviorConfig } from './IDrawerStackBehaviorConfig'; /** * Behavior that manages a stack of drawers with decreasing widths. * Each drawer in the stack is offset from the previous one, creating * a cascading visual effect. * * @public */ export declare class DrawerStackBehavior implements IOverlayBehavior { private readonly _config; private readonly _stack; /** * Constructs a new instance of the `DrawerStackBehavior` class. * * @public * @param config - Optional configuration for stack behavior. */ constructor(config?: Partial); /** * Returns the current number of drawers in the stack. * * @public * @readonly */ get stackSize(): number; /** * Returns the current stack configuration. * * @public * @readonly */ get config(): Readonly; /** * Returns an array of all drawer references in stack order (oldest first). * * @public * @readonly */ get stack(): ReadonlyArray; /** * Configures the drawer options before opening. * Calculates the appropriate width based on stack position. * * @public * @param options - The drawer options to configure. */ configure(_options: Partial): void; /** * Attaches a drawer to the stack and applies stack styling. * * @public * @param ref - The drawer reference to attach. */ attach(ref: IDrawerRef): void; /** * Detaches a drawer from the stack. * * @public * @param ref - The drawer reference to detach. */ detach(ref: IDrawerRef): void; /** * Disposes of all resources and clears the stack. * * @public */ dispose(): void; /** * Calculates the width for a drawer at a specific stack level. * * @public * @param stackLevel - The zero-based index of the drawer in the stack. * @param baseWidthOverride - Optional override for the base width. * @returns The calculated CSS width string. */ calculateWidth(stackLevel: number, baseWidthOverride?: string): string; /** * Applies the stacked CSS class to all drawers except the topmost one. * * @private */ private applyStackedClasses; /** * Recalculates and applies widths for all remaining drawers in the stack. * After a drawer is closed, we need to restore each drawer to its original width * (which may have been grown when larger drawers were opened on top). * * @private */ private recalculateStackWidths; /** * Converts a CssLength to a string representation. * If the value is a number, it's treated as pixels and not suitable for percentage-based calculations. * * @private * @param value - The CssLength value to convert. * @returns The string representation, or undefined if it's a number (pixels). */ private cssLengthToString; /** * Parses a percentage-based width string into a numeric value. * * @private * @param width - The CSS width string (e.g. "50%"). * @returns The numeric percentage value, or null if not a percentage. */ private parseWidthToPercentage; /** * Grows smaller drawers in the stack to match the size of a newly opened larger drawer. * Each existing drawer gets the new base width plus an offset based on its distance from the top. * * @private * @param newDrawerBaseWidth - The base width of the newly opened drawer. */ private growSmallerDrawersToMatchLargest; /** * Calculates the z-index for a drawer at a specific stack level. * * @private * @param stackLevel - The zero-based index of the drawer in the stack. * @returns The calculated z-index value. */ private calculateZIndex; /** * Applies stack-related styles to a drawer element. * * @private * @param ref - The drawer reference. * @param stackLevel - The stack level for this drawer. * @param computedWidth - The computed width for this drawer. */ private applyStackStyles; } //# sourceMappingURL=DrawerStackBehavior.d.ts.map