export interface XCoordConfig { xMargin: number; elWidth: number; initialX?: number; containerRect: DOMRect | ClientRect; } export interface YCoordConfig { yMargin: number; elHeight: number; initialY?: number; containerRect: DOMRect | ClientRect; } declare type Left = number; declare type Top = number; /** * Creates the `left` style value for an element that should be fixed to the * (outer) left of the container element. So the right bounds of the fixed * element will be equal to the left bounds of the container element (before the * xMargin is applied). * @private */ export declare function getLeftCoord({ xMargin, elWidth, initialX, containerRect, }: XCoordConfig): Left; /** * Creates the `left` style value for an element that should be fixed to the * inner-left of the container element. So the left bounds of both the container * and fixed elements will overlap (before the xMargin is applied) * @private */ export declare function getInnerLeftCoord({ xMargin, initialX, containerRect, }: XCoordConfig): Left; /** * Creates the `left` style value for an element that should be fixed to the * center of the container element. So the center point of the fixed element * should be the center point of the container element. * * Note: Unlike all the other horizontal positioning logic, the center position * does not use the xMargin. * @private */ export declare function getCenterXCoord({ elWidth, initialX, containerRect, }: XCoordConfig): Left; /** * Creates the `left` style value for an element that should be fixed to the * inner-right of the container element. So the right bounds for both the * container and fixed elements will overlap (before the xMargin is applied). * @private */ export declare function getInnerRightCoord({ xMargin, elWidth, initialX, containerRect, }: XCoordConfig): Left; /** * Creates the `left` style value for an element that should be fixed to the * (outer) right of the container element. So the left bounds of the fixed * element will overlap with the right bounds of the container element (before * the xMargin is applied). * @private */ export declare function getRightCoord({ xMargin, initialX, containerRect, }: XCoordConfig): Left; /** * Creates the `top` style value for an element that should be fixed above the * container element. So the bottom bounds of the fixed element will overlap * with the top bounds of the container element (before the yMargin is applied). * @private */ export declare function getAboveCoord({ yMargin, initialY, elHeight, containerRect, }: YCoordConfig): Top; /** * Creates the `top` style value for an element that should be fixed to the top * of the container element. So the top bounds for both the container and fixed * elements will overlap (before the yMargin is applied). * @private */ export declare function getTopCoord({ yMargin, initialY, containerRect, }: YCoordConfig): Top; /** * Creates the `top` style value for an element that should be fixed vertically * centered relative to the container element. So the vertical center point for * the fixed element should overlap the vertical center point of the container * element. * * Note: Unlike all the other vertical positioning logic, the center position * does not use the yMargin. */ export declare function getCenterYCoord({ elHeight, initialY, containerRect, }: YCoordConfig): Top; /** * Creates the `top` style value for an element that should be fixed to the * bottom of the container element. So the top bounds of the fixed element * should overlap the bottom bounds of the container element (before the yMargin * is applied). * @private */ export declare function getBottomCoord({ yMargin, initialY, elHeight, containerRect, }: YCoordConfig): Top; /** * Creates the `top` style value for an element that should be fixed to the * bottom of the container element. So the bottom bounds of both the container * and fixed elements should overlap (before the yMargin is applied). * @private */ export declare function getBelowCoord({ yMargin, initialY, containerRect, }: YCoordConfig): Top; export {};