UNPKG

react-grid-layout

Version:

A draggable and resizable grid layout with responsive breakpoints, for React.

161 lines (157 loc) 7.54 kB
import { f as LayoutConstraint, a as LayoutItem, g as ConstraintContext, d as ResizeHandleAxis } from './types-BiXsdXr7.mjs'; export { A as ArrayElement, B as Breakpoint, p as BreakpointCols, b as Breakpoints, C as CompactType, c as Compactor, r as DeepPartial, m as DragConfig, j as DragOverEvent, o as DropConfig, D as DroppingPosition, E as EventCallback, l as GridConfig, G as GridDragEvent, e as GridResizeEvent, L as Layout, M as Mutable, q as OnBreakpointChangeCallback, O as OnLayoutChangeCallback, h as PartialPosition, P as Position, k as PositionStrategy, i as ReactDraggableCallbackData, n as ResizeConfig, R as ResponsiveLayouts, S as Size, t as defaultDragConfig, v as defaultDropConfig, s as defaultGridConfig, u as defaultResizeConfig } from './types-BiXsdXr7.mjs'; export { c as collides, h as findOrGenerateResponsiveLayout, a as getAllCollisions, e as getBreakpointFromWidth, f as getColsFromBreakpoint, g as getFirstCollision, j as getIndentationValue, i as sortBreakpoints, s as sortLayoutItems, d as sortLayoutItemsByColRow, b as sortLayoutItemsByRowCol } from './responsive-T0N0GmBB.mjs'; export { A as absoluteStrategy, b as bottom, c as cloneLayout, a as cloneLayoutItem, u as compactItemHorizontal, t as compactItemVertical, k as correctBounds, B as createScaledStrategy, C as defaultPositionStrategy, d as getCompactor, g as getLayoutItem, i as getStatics, h as horizontalCompactor, p as horizontalOverlapCompactor, j as modifyLayout, m as moveElement, l as moveElementAwayFromCollision, n as noCompactor, q as noOverlapCompactor, x as perc, y as resizeItemInDirection, r as resolveCompactionCollision, f as setTopLeft, s as setTransform, z as transformStrategy, v as validateLayout, e as verticalCompactor, o as verticalOverlapCompactor, w as withLayoutItem } from './position-CetgOHhD.mjs'; export { d as GridCellConfig, G as GridCellDimensions, P as PositionParams, j as calcGridCellDimensions, e as calcGridColWidth, c as calcGridItemPosition, f as calcGridItemWHPx, b as calcWH, h as calcWHRaw, a as calcXY, g as calcXYRaw, i as clamp } from './calculate-FbCWy8x1.mjs'; /** * Pluggable layout constraints for react-grid-layout v2 * * Constraints control position and size limits during drag/resize operations. * They are composable, tree-shakeable, and can be applied at grid or item level. */ /** * Grid boundary constraint. * * Ensures items stay within the grid bounds (0 to cols-w for x, 0 to maxRows-h for y). * This is the default position constraint. */ declare const gridBounds: LayoutConstraint; /** * Min/max size constraint. * * Enforces per-item minW/maxW/minH/maxH properties. * This is applied by default after gridBounds. */ declare const minMaxSize: LayoutConstraint; /** * Container bounds constraint. * * Constrains items to stay within the visible container. * Use this as a replacement for the legacy `isBounded` prop. * * Unlike gridBounds which uses maxRows (which may be Infinity), * this constraint calculates visible rows from the actual container height. * Falls back to maxRows if containerHeight is 0 (auto-height grids). */ declare const containerBounds: LayoutConstraint; /** * Bounded X constraint. * * Only constrains horizontal position (x-axis). * Items can move freely in the vertical direction. */ declare const boundedX: LayoutConstraint; /** * Bounded Y constraint. * * Only constrains vertical position (y-axis). * Items can move freely in the horizontal direction. */ declare const boundedY: LayoutConstraint; /** * Create an aspect ratio constraint. * * Maintains a fixed width-to-height ratio **in pixels** during resize operations. * Accounts for the different pixel sizes of grid columns vs rows. * * @param ratio - Width-to-height ratio (e.g., 16/9 for widescreen, 1 for square) * @returns A constraint that enforces the aspect ratio * * @example * ```typescript * // 16:9 aspect ratio (actual pixel proportions) * const layout = [ * { i: 'video', x: 0, y: 0, w: 4, h: 2, constraints: [aspectRatio(16/9)] } * ]; * * // Square items (in pixels, not grid units) * <GridLayout constraints={[gridBounds, minMaxSize, aspectRatio(1)]} /> * ``` */ declare function aspectRatio(ratio: number): LayoutConstraint; /** * Create a snap-to-grid constraint. * * Snaps positions to multiples of the specified step values. * Useful for aligning items to a coarser grid. * * @param stepX - Horizontal snap step in grid units * @param stepY - Vertical snap step in grid units (defaults to stepX) * @returns A constraint that snaps positions to the grid * * @example * ```typescript * // Snap to every 2 grid units * <GridLayout constraints={[snapToGrid(2), gridBounds]} /> * * // Different horizontal and vertical snap * <GridLayout constraints={[snapToGrid(2, 3), gridBounds]} /> * ``` */ declare function snapToGrid(stepX: number, stepY?: number): LayoutConstraint; /** * Create a minimum size constraint. * * Sets minimum width and height for all items using this constraint. * Useful for grid-wide minimums without setting minW/minH on each item. * * @param minW - Minimum width in grid units * @param minH - Minimum height in grid units * @returns A constraint that enforces minimum size */ declare function minSize(minW: number, minH: number): LayoutConstraint; /** * Create a maximum size constraint. * * Sets maximum width and height for all items using this constraint. * Useful for grid-wide maximums without setting maxW/maxH on each item. * * @param maxW - Maximum width in grid units * @param maxH - Maximum height in grid units * @returns A constraint that enforces maximum size */ declare function maxSize(maxW: number, maxH: number): LayoutConstraint; /** * Default constraints applied when none are specified. * * Includes: * - gridBounds: Keep items within the grid * - minMaxSize: Respect per-item min/max constraints */ declare const defaultConstraints: LayoutConstraint[]; /** * Apply position constraints to a proposed position. * * Constraints are applied in array order, allowing composition. * Grid-level constraints are applied first, then per-item constraints. * * @param constraints - Array of constraints to apply * @param item - The layout item being positioned * @param x - Proposed x position * @param y - Proposed y position * @param context - Grid context (cols, maxRows, etc.) * @returns Constrained position */ declare function applyPositionConstraints(constraints: LayoutConstraint[], item: LayoutItem, x: number, y: number, context: ConstraintContext): { x: number; y: number; }; /** * Apply size constraints to a proposed size. * * Constraints are applied in array order, allowing composition. * Grid-level constraints are applied first, then per-item constraints. * * @param constraints - Array of constraints to apply * @param item - The layout item being resized * @param w - Proposed width * @param h - Proposed height * @param handle - Which resize handle is being used * @param context - Grid context (cols, maxRows, etc.) * @returns Constrained size */ declare function applySizeConstraints(constraints: LayoutConstraint[], item: LayoutItem, w: number, h: number, handle: ResizeHandleAxis, context: ConstraintContext): { w: number; h: number; }; export { ConstraintContext, LayoutConstraint, LayoutItem, ResizeHandleAxis, applyPositionConstraints, applySizeConstraints, aspectRatio, boundedX, boundedY, containerBounds, defaultConstraints, gridBounds, maxSize, minMaxSize, minSize, snapToGrid };