/** * * Layout calculation inspired by flexbox. The elements may have an * absolute size (in pixels) and a growth component for filling the * remaining space. Spacing around zero-sized items are collapsed. * * Read more at https://css-tricks.com/flex-grow-is-weird/ * * @typedef {object} SizeDef Size definition inspired by CSS flexbox * @prop {number} [px] Size in pixels * @prop {number} [grow] Share of remaining space * * @typedef {object} LocSize One-dimensional location and size * @prop {number} location * @prop {number} size * * @typedef {object} FlexOptions * @prop {number} [spacing] gap between items in pixels * @prop {number} [devicePixelRatio] allows for snapping to "retina" pixels. * Default: `undefined`, which disables the snapping. * @prop {number} [offset] add the offset to all locations. Default: `0`. * @prop {boolean} [reverse] fill from "right to left". * * @param {SizeDef[]} items * @param {number} containerSize in pixels * @param {FlexOptions} [options] * @returns {LocSize[]} */ export function mapToPixelCoords(items: SizeDef[], containerSize: number, { spacing, devicePixelRatio, offset, reverse }?: FlexOptions): LocSize[]; /** * Returns the minimum size (the sum of pixels sizes) for the flex items * * @param {Iterable} items * @param {FlexOptions} [options] */ export function getMinimumSize(items: Iterable, { spacing }?: FlexOptions): number; /** * @param {Iterable} items * @returns {SizeDef} */ export function getLargestSize(items: Iterable): SizeDef; /** * Returns true if relative (stretching) elements are present * @param {SizeDef[]} items */ export function isStretching(items: SizeDef[]): boolean; /** * * @param {SizeDef[]} sizeDefs */ export function sumSizeDefs(sizeDefs: SizeDef[]): { px: number; grow: number; }; /** * Is the sizeDef taking no space at all * * @param {SizeDef} sizeDef */ export function isZeroSizeDef(sizeDef: SizeDef): boolean; /** * * @param {*} spec * @returns {spec is SizeDef} */ export function isSizeDef(spec: any): spec is SizeDef; /** * * @param {"container" | number | SizeDef | import("../../spec/view.js").Step} size * @returns {SizeDef} */ export function parseSizeDef(size: "container" | number | SizeDef | import("../../spec/view.js").Step): SizeDef; export class FlexDimensions { /** * * @param {SizeDef} width * @param {SizeDef} height */ constructor(width: SizeDef, height: SizeDef); /** @readonly */ readonly width: SizeDef; /** @readonly */ readonly height: SizeDef; /** * Adds padding to absolute (px) dimensions * * @param {import("./padding.js").default} padding */ addPadding(padding: import("./padding.js").default): FlexDimensions; /** * Subtracts padding from absolute (px) dimensions * * @param {import("./padding.js").default} padding */ subtractPadding(padding: import("./padding.js").default): FlexDimensions; /** * Returns true if either of the dimensions is growing * * @returns {boolean} */ isGrowing(): boolean; #private; } /** * A sizedef that takes no space at all. * * @type {SizeDef} */ export const ZERO_SIZEDEF: SizeDef; export const ZERO_FLEXDIMENSIONS: FlexDimensions; /** * Size definition inspired by CSS flexbox */ export type SizeDef = { /** * Size in pixels */ px?: number; /** * Share of remaining space */ grow?: number; }; /** * One-dimensional location and size */ export type LocSize = { location: number; size: number; }; /** * * Layout calculation inspired by flexbox. The elements may have an * absolute size (in pixels) and a growth component for filling the * remaining space. Spacing around zero-sized items are collapsed. * * Read more at https://css-tricks.com/flex-grow-is-weird/ */ export type FlexOptions = { /** * gap between items in pixels */ spacing?: number; /** * allows for snapping to "retina" pixels. * Default: `undefined`, which disables the snapping. */ devicePixelRatio?: number; /** * add the offset to all locations. Default: `0`. */ offset?: number; /** * fill from "right to left". */ reverse?: boolean; }; //# sourceMappingURL=flexLayout.d.ts.map