{"version":3,"sources":["../src/react/components/GridItem.tsx","../src/react/components/GridLayout.tsx","../src/react/components/ResponsiveGridLayout.tsx"],"names":["pos","resizeHandle","React","useMemo","useState","useRef","useEffect","useCallback","jsx","clsx","noop","synchronizeLayoutWithChildren","deepEqual","currentMargin"],"mappings":"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","file":"chunk-R35HZZTA.mjs","sourcesContent":["/**\n * GridItem component\n *\n * An individual item within a grid layout. Handles dragging and resizing.\n */\n\nimport React, {\n  useRef,\n  useState,\n  useCallback,\n  useEffect,\n  useMemo,\n  type ReactElement,\n  type CSSProperties\n} from \"react\";\nimport { DraggableCore, type DraggableEventHandler } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport clsx from \"clsx\";\n\nimport type {\n  Position,\n  DroppingPosition,\n  ResizeHandleAxis,\n  GridDragEvent,\n  GridResizeEvent\n} from \"../../core/types.js\";\nimport type { PositionParams } from \"../../core/calculate.js\";\nimport {\n  calcGridItemPosition,\n  calcGridItemWHPx,\n  calcGridColWidth,\n  calcXY,\n  calcWH,\n  clamp\n} from \"../../core/calculate.js\";\nimport {\n  setTransform,\n  setTopLeft,\n  perc,\n  resizeItemInDirection\n} from \"../../core/position.js\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype PartialPosition = { top: number; left: number };\n\nexport type GridItemCallback<Data extends GridDragEvent | GridResizeEvent> = (\n  i: string,\n  w: number,\n  h: number,\n  data: Data\n) => void;\n\nexport type ResizeHandle =\n  | ReactElement\n  | ((\n      resizeHandleAxis: ResizeHandleAxis,\n      ref: React.Ref<HTMLElement>\n    ) => ReactElement);\n\n// Internal callback data type with typed handle\ninterface ResizeCallbackData {\n  node: HTMLElement;\n  size: { width: number; height: number };\n  handle: ResizeHandleAxis;\n}\n\n// react-resizable callback type (handle is string)\ntype ReactResizableCallback = (\n  e: React.SyntheticEvent,\n  data: {\n    node: HTMLElement;\n    size: { width: number; height: number };\n    handle: string;\n  }\n) => void;\n\nexport interface GridItemProps {\n  /** Child element to render */\n  children: ReactElement;\n  /** Number of columns in the grid */\n  cols: number;\n  /** Width of the container in pixels */\n  containerWidth: number;\n  /** Margin between items [x, y] */\n  margin: readonly [number, number];\n  /** Padding inside the container [x, y] */\n  containerPadding: readonly [number, number];\n  /** Height of each row in pixels */\n  rowHeight: number;\n  /** Maximum number of rows */\n  maxRows: number;\n  /** Whether the item can be dragged */\n  isDraggable: boolean;\n  /** Whether the item can be resized */\n  isResizable: boolean;\n  /** Whether the item is bounded within the container */\n  isBounded: boolean;\n  /** Whether the item is static (can't be moved/resized) */\n  static?: boolean;\n  /** Use CSS transforms instead of top/left */\n  useCSSTransforms?: boolean;\n  /** Use percentage widths for server rendering */\n  usePercentages?: boolean;\n  /** Scale factor for transforms */\n  transformScale?: number;\n  /** Current position of a dropping element */\n  droppingPosition?: DroppingPosition;\n\n  /** Additional class name */\n  className?: string;\n  /** Additional styles */\n  style?: CSSProperties;\n\n  /** CSS selector for draggable handle */\n  handle?: string;\n  /** CSS selector for cancel handle */\n  cancel?: string;\n\n  /** X position in grid units */\n  x: number;\n  /** Y position in grid units */\n  y: number;\n  /** Width in grid units */\n  w: number;\n  /** Height in grid units */\n  h: number;\n\n  /** Minimum width in grid units */\n  minW?: number;\n  /** Maximum width in grid units */\n  maxW?: number;\n  /** Minimum height in grid units */\n  minH?: number;\n  /** Maximum height in grid units */\n  maxH?: number;\n\n  /** Unique identifier */\n  i: string;\n\n  /** Which resize handles to show */\n  resizeHandles?: ResizeHandleAxis[];\n  /** Custom resize handle */\n  resizeHandle?: ResizeHandle;\n\n  /** Called when drag starts */\n  onDragStart?: GridItemCallback<GridDragEvent>;\n  /** Called during drag */\n  onDrag?: GridItemCallback<GridDragEvent>;\n  /** Called when drag stops */\n  onDragStop?: GridItemCallback<GridDragEvent>;\n  /** Called when resize starts */\n  onResizeStart?: GridItemCallback<GridResizeEvent>;\n  /** Called during resize */\n  onResize?: GridItemCallback<GridResizeEvent>;\n  /** Called when resize stops */\n  onResizeStop?: GridItemCallback<GridResizeEvent>;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * GridItem - An individual item within a grid layout.\n *\n * Wraps a child element with drag and resize functionality.\n */\nexport function GridItem(props: GridItemProps): ReactElement {\n  const {\n    children,\n    cols,\n    containerWidth,\n    margin,\n    containerPadding,\n    rowHeight,\n    maxRows,\n    isDraggable,\n    isResizable,\n    isBounded,\n    static: isStatic,\n    useCSSTransforms = true,\n    usePercentages = false,\n    transformScale = 1,\n    droppingPosition,\n    className = \"\",\n    style,\n    handle = \"\",\n    cancel = \"\",\n    x,\n    y,\n    w,\n    h,\n    minW = 1,\n    maxW = Infinity,\n    minH = 1,\n    maxH = Infinity,\n    i,\n    resizeHandles,\n    resizeHandle,\n    onDragStart: onDragStartProp,\n    onDrag: onDragProp,\n    onDragStop: onDragStopProp,\n    onResizeStart: onResizeStartProp,\n    onResize: onResizeProp,\n    onResizeStop: onResizeStopProp\n  } = props;\n\n  // State\n  const [dragging, setDragging] = useState(false);\n  const [resizing, setResizing] = useState(false);\n\n  // Refs for position tracking (avoid state for React 18 batching)\n  const elementRef = useRef<HTMLDivElement>(null);\n  const dragPositionRef = useRef<PartialPosition>({ left: 0, top: 0 });\n  const resizePositionRef = useRef<Position>({\n    top: 0,\n    left: 0,\n    width: 0,\n    height: 0\n  });\n\n  // Previous dropping position for comparison\n  const prevDroppingPositionRef = useRef<DroppingPosition | undefined>(\n    undefined\n  );\n\n  // Position parameters\n  const positionParams: PositionParams = useMemo(\n    () => ({\n      cols,\n      containerPadding: containerPadding as [number, number],\n      containerWidth,\n      margin: margin as [number, number],\n      maxRows,\n      rowHeight\n    }),\n    [cols, containerPadding, containerWidth, margin, maxRows, rowHeight]\n  );\n\n  // ============================================================================\n  // Style Creation\n  // ============================================================================\n\n  const createStyle = useCallback(\n    (pos: Position): CSSProperties => {\n      if (useCSSTransforms) {\n        return setTransform(pos) as CSSProperties;\n      }\n\n      const styleObj = setTopLeft(pos) as CSSProperties;\n\n      if (usePercentages) {\n        return {\n          ...styleObj,\n          left: perc(pos.left / containerWidth),\n          width: perc(pos.width / containerWidth)\n        };\n      }\n\n      return styleObj;\n    },\n    [useCSSTransforms, usePercentages, containerWidth]\n  );\n\n  // ============================================================================\n  // Drag Handlers\n  // ============================================================================\n\n  const onDragStart: DraggableEventHandler = useCallback(\n    (e, { node }) => {\n      if (!onDragStartProp) return;\n\n      const { offsetParent } = node;\n      if (!offsetParent) return;\n\n      const parentRect = offsetParent.getBoundingClientRect();\n      const clientRect = node.getBoundingClientRect();\n\n      const cLeft = clientRect.left / transformScale;\n      const pLeft = parentRect.left / transformScale;\n      const cTop = clientRect.top / transformScale;\n      const pTop = parentRect.top / transformScale;\n\n      const newPosition: PartialPosition = {\n        left: cLeft - pLeft + offsetParent.scrollLeft,\n        top: cTop - pTop + offsetParent.scrollTop\n      };\n\n      dragPositionRef.current = newPosition;\n      setDragging(true);\n\n      const { x: newX, y: newY } = calcXY(\n        positionParams,\n        newPosition.top,\n        newPosition.left,\n        w,\n        h\n      );\n\n      onDragStartProp(i, newX, newY, {\n        e: e as unknown as Event,\n        node,\n        newPosition\n      });\n    },\n    [onDragStartProp, transformScale, positionParams, w, h, i]\n  );\n\n  const onDrag: DraggableEventHandler = useCallback(\n    (e, { node, deltaX, deltaY }) => {\n      if (!onDragProp || !dragging) return;\n\n      let top = dragPositionRef.current.top + deltaY;\n      let left = dragPositionRef.current.left + deltaX;\n\n      // Boundary calculations\n      if (isBounded) {\n        const { offsetParent } = node;\n        if (offsetParent) {\n          const bottomBoundary =\n            offsetParent.clientHeight -\n            calcGridItemWHPx(h, rowHeight, margin[1]);\n          top = clamp(top, 0, bottomBoundary);\n\n          const colWidth = calcGridColWidth(positionParams);\n          const rightBoundary =\n            containerWidth - calcGridItemWHPx(w, colWidth, margin[0]);\n          left = clamp(left, 0, rightBoundary);\n        }\n      }\n\n      const newPosition: PartialPosition = { top, left };\n      dragPositionRef.current = newPosition;\n\n      const { x: newX, y: newY } = calcXY(positionParams, top, left, w, h);\n      onDragProp(i, newX, newY, {\n        e: e as unknown as Event,\n        node,\n        newPosition\n      });\n    },\n    [\n      onDragProp,\n      dragging,\n      isBounded,\n      h,\n      rowHeight,\n      margin,\n      positionParams,\n      containerWidth,\n      w,\n      i\n    ]\n  );\n\n  const onDragStop: DraggableEventHandler = useCallback(\n    (e, { node }) => {\n      if (!onDragStopProp || !dragging) return;\n\n      const { left, top } = dragPositionRef.current;\n      const newPosition: PartialPosition = { top, left };\n\n      setDragging(false);\n      dragPositionRef.current = { left: 0, top: 0 };\n\n      const { x: newX, y: newY } = calcXY(positionParams, top, left, w, h);\n      onDragStopProp(i, newX, newY, {\n        e: e as unknown as Event,\n        node,\n        newPosition\n      });\n    },\n    [onDragStopProp, dragging, positionParams, w, h, i]\n  );\n\n  // ============================================================================\n  // Resize Handlers\n  // ============================================================================\n\n  const onResizeHandler = useCallback(\n    (\n      e: React.SyntheticEvent,\n      { node, size, handle: resizeHandle }: ResizeCallbackData,\n      position: Position,\n      handlerName: \"onResizeStart\" | \"onResize\" | \"onResizeStop\"\n    ) => {\n      const handler =\n        handlerName === \"onResizeStart\"\n          ? onResizeStartProp\n          : handlerName === \"onResize\"\n            ? onResizeProp\n            : onResizeStopProp;\n\n      if (!handler) return;\n\n      // Sizing based on resize direction\n      let updatedSize: Position;\n      if (node) {\n        updatedSize = resizeItemInDirection(\n          resizeHandle,\n          position,\n          size as Position,\n          containerWidth\n        );\n      } else {\n        updatedSize = {\n          ...size,\n          top: position.top,\n          left: position.left\n        } as Position;\n      }\n\n      resizePositionRef.current = updatedSize;\n\n      // Calculate new grid dimensions\n      let { w: newW, h: newH } = calcWH(\n        positionParams,\n        updatedSize.width,\n        updatedSize.height,\n        x,\n        y,\n        resizeHandle\n      );\n\n      // Min/max capping\n      newW = clamp(newW, Math.max(minW, 1), maxW);\n      newH = clamp(newH, minH, maxH);\n\n      handler(i, newW, newH, {\n        e: e.nativeEvent,\n        node,\n        size: updatedSize,\n        handle: resizeHandle\n      });\n    },\n    [\n      onResizeStartProp,\n      onResizeProp,\n      onResizeStopProp,\n      containerWidth,\n      positionParams,\n      x,\n      y,\n      minW,\n      maxW,\n      minH,\n      maxH,\n      i\n    ]\n  );\n\n  const handleResizeStart: ReactResizableCallback = useCallback(\n    (e, data) => {\n      setResizing(true);\n      const pos = calcGridItemPosition(positionParams, x, y, w, h);\n      const typedData: ResizeCallbackData = {\n        ...data,\n        handle: data.handle as ResizeHandleAxis\n      };\n      onResizeHandler(e, typedData, pos, \"onResizeStart\");\n    },\n    [onResizeHandler, positionParams, x, y, w, h]\n  );\n\n  const handleResize: ReactResizableCallback = useCallback(\n    (e, data) => {\n      const pos = calcGridItemPosition(positionParams, x, y, w, h);\n      const typedData: ResizeCallbackData = {\n        ...data,\n        handle: data.handle as ResizeHandleAxis\n      };\n      onResizeHandler(e, typedData, pos, \"onResize\");\n    },\n    [onResizeHandler, positionParams, x, y, w, h]\n  );\n\n  const handleResizeStop: ReactResizableCallback = useCallback(\n    (e, data) => {\n      setResizing(false);\n      resizePositionRef.current = { top: 0, left: 0, width: 0, height: 0 };\n      const pos = calcGridItemPosition(positionParams, x, y, w, h);\n      const typedData: ResizeCallbackData = {\n        ...data,\n        handle: data.handle as ResizeHandleAxis\n      };\n      onResizeHandler(e, typedData, pos, \"onResizeStop\");\n    },\n    [onResizeHandler, positionParams, x, y, w, h]\n  );\n\n  // ============================================================================\n  // Dropping Item Support\n  // ============================================================================\n\n  useEffect(() => {\n    if (!droppingPosition) return;\n\n    const node = elementRef.current;\n    if (!node) return;\n\n    const prevDroppingPosition = prevDroppingPositionRef.current || {\n      left: 0,\n      top: 0\n    };\n\n    const shouldDrag =\n      dragging &&\n      (droppingPosition.left !== prevDroppingPosition.left ||\n        droppingPosition.top !== prevDroppingPosition.top);\n\n    if (!dragging) {\n      // Start drag - simulate the draggable callback data\n      const fakeData = {\n        node,\n        deltaX: droppingPosition.left,\n        deltaY: droppingPosition.top,\n        lastX: 0,\n        lastY: 0,\n        x: droppingPosition.left,\n        y: droppingPosition.top\n      };\n      onDragStart(droppingPosition.e as unknown as MouseEvent, fakeData);\n    } else if (shouldDrag) {\n      // Continue drag\n      const deltaX = droppingPosition.left - dragPositionRef.current.left;\n      const deltaY = droppingPosition.top - dragPositionRef.current.top;\n\n      const fakeData = {\n        node,\n        deltaX,\n        deltaY,\n        lastX: dragPositionRef.current.left,\n        lastY: dragPositionRef.current.top,\n        x: droppingPosition.left,\n        y: droppingPosition.top\n      };\n      onDrag(droppingPosition.e as unknown as MouseEvent, fakeData);\n    }\n\n    prevDroppingPositionRef.current = droppingPosition;\n  }, [droppingPosition, dragging, onDragStart, onDrag]);\n\n  // ============================================================================\n  // Render\n  // ============================================================================\n\n  const pos = calcGridItemPosition(\n    positionParams,\n    x,\n    y,\n    w,\n    h,\n    dragging ? dragPositionRef.current : null,\n    resizing ? resizePositionRef.current : null\n  );\n\n  const child = React.Children.only(children);\n\n  // Calculate constraints for resizing\n  const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols, 0).width;\n  const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH);\n  const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH);\n  const minConstraints: [number, number] = [mins.width, mins.height];\n  const maxConstraints: [number, number] = [\n    Math.min(maxes.width, maxWidth),\n    Math.min(maxes.height, Infinity)\n  ];\n\n  // Get child props safely\n  const childProps = (child as ReactElement<Record<string, unknown>>).props;\n  const childClassName = childProps[\"className\"] as string | undefined;\n  const childStyle = childProps[\"style\"] as CSSProperties | undefined;\n\n  // Create the child element with updated props\n  let newChild: ReactElement = React.cloneElement(child, {\n    ref: elementRef,\n    className: clsx(\"react-grid-item\", childClassName, className, {\n      static: isStatic,\n      resizing,\n      \"react-draggable\": isDraggable,\n      \"react-draggable-dragging\": dragging,\n      dropping: Boolean(droppingPosition),\n      cssTransforms: useCSSTransforms\n    }),\n    style: {\n      ...style,\n      ...childStyle,\n      ...createStyle(pos)\n    }\n  } as Record<string, unknown>);\n\n  // Wrap with Resizable\n  // Cast resizeHandle to match react-resizable's expected type (string instead of ResizeHandleAxis)\n  const resizableHandle = resizeHandle as\n    | ReactElement\n    | ((axis: string, ref: React.Ref<HTMLElement>) => ReactElement)\n    | undefined;\n\n  newChild = (\n    <Resizable\n      draggableOpts={{ disabled: !isResizable }}\n      className={isResizable ? undefined : \"react-resizable-hide\"}\n      width={pos.width}\n      height={pos.height}\n      minConstraints={minConstraints}\n      maxConstraints={maxConstraints}\n      onResizeStart={handleResizeStart}\n      onResize={handleResize}\n      onResizeStop={handleResizeStop}\n      transformScale={transformScale}\n      resizeHandles={resizeHandles}\n      handle={resizableHandle}\n    >\n      {newChild}\n    </Resizable>\n  );\n\n  // Wrap with DraggableCore\n  newChild = (\n    <DraggableCore\n      disabled={!isDraggable}\n      onStart={onDragStart}\n      onDrag={onDrag}\n      onStop={onDragStop}\n      handle={handle}\n      cancel={\".react-resizable-handle\" + (cancel ? \",\" + cancel : \"\")}\n      scale={transformScale}\n      nodeRef={elementRef}\n    >\n      {newChild}\n    </DraggableCore>\n  );\n\n  return newChild;\n}\n\nexport default GridItem;\n","/**\n * GridLayout component\n *\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nimport React, {\n  useState,\n  useCallback,\n  useEffect,\n  useRef,\n  useMemo,\n  type ReactElement,\n  type CSSProperties,\n  type DragEvent as ReactDragEvent\n} from \"react\";\nimport { deepEqual } from \"fast-equals\";\nimport clsx from \"clsx\";\n\nimport type {\n  Layout,\n  LayoutItem,\n  CompactType,\n  DroppingPosition,\n  GridDragEvent,\n  GridResizeEvent,\n  Mutable,\n  GridConfig,\n  DragConfig,\n  ResizeConfig,\n  DropConfig,\n  PositionStrategy,\n  Compactor\n} from \"../../core/types.js\";\nimport {\n  defaultGridConfig,\n  defaultDragConfig,\n  defaultResizeConfig,\n  defaultDropConfig\n} from \"../../core/types.js\";\nimport type { PositionParams } from \"../../core/calculate.js\";\nimport {\n  bottom,\n  cloneLayoutItem,\n  getLayoutItem,\n  moveElement,\n  withLayoutItem,\n  correctBounds\n} from \"../../core/layout.js\";\nimport { getAllCollisions } from \"../../core/collision.js\";\nimport { compact } from \"../../core/compact-compat.js\";\nimport { getCompactor } from \"../../core/compactors.js\";\nimport { calcXY } from \"../../core/calculate.js\";\nimport { defaultPositionStrategy } from \"../../core/position.js\";\n\nimport { GridItem, type ResizeHandle } from \"./GridItem.js\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type EventCallback = (\n  layout: Layout,\n  oldItem: LayoutItem | null,\n  newItem: LayoutItem | null,\n  placeholder: LayoutItem | null,\n  event: Event,\n  element?: HTMLElement\n) => void;\n\nexport interface GridLayoutProps {\n  // ===========================================================================\n  // Required Props\n  // ===========================================================================\n\n  /** Child elements to render in the grid */\n  children: React.ReactNode;\n\n  /** Width of the container in pixels */\n  width: number;\n\n  // ===========================================================================\n  // Composable Configuration Interfaces (v2 API)\n  // ===========================================================================\n\n  /**\n   * Grid measurement configuration.\n   * @see GridConfig\n   */\n  gridConfig?: Partial<GridConfig>;\n\n  /**\n   * Drag behavior configuration.\n   * @see DragConfig\n   */\n  dragConfig?: Partial<DragConfig>;\n\n  /**\n   * Resize behavior configuration.\n   * @see ResizeConfig\n   */\n  resizeConfig?: Partial<ResizeConfig>;\n\n  /**\n   * External drop configuration.\n   * @see DropConfig\n   */\n  dropConfig?: Partial<DropConfig>;\n\n  /**\n   * CSS positioning strategy.\n   * Use transformStrategy (default), absoluteStrategy, or createScaledStrategy(scale).\n   * @see PositionStrategy\n   */\n  positionStrategy?: PositionStrategy;\n\n  /**\n   * Layout compaction strategy.\n   * Use verticalCompactor (default), horizontalCompactor, or noCompactor.\n   * @see Compactor\n   */\n  compactor?: Compactor;\n\n  // ===========================================================================\n  // Layout Data\n  // ===========================================================================\n\n  /** Layout definition */\n  layout?: Layout;\n\n  /** Item to use when dropping from outside */\n  droppingItem?: LayoutItem;\n\n  // ===========================================================================\n  // Container Props\n  // ===========================================================================\n\n  /** Whether to auto-size the container height */\n  autoSize?: boolean;\n\n  /** Additional class name */\n  className?: string;\n\n  /** Additional styles */\n  style?: CSSProperties;\n\n  /** Ref to the container element */\n  innerRef?: React.Ref<HTMLDivElement>;\n\n  // ===========================================================================\n  // Callbacks\n  // ===========================================================================\n\n  /** Called when layout changes */\n  onLayoutChange?: (layout: Layout) => void;\n\n  /** Called when drag starts */\n  onDragStart?: EventCallback;\n\n  /** Called during drag */\n  onDrag?: EventCallback;\n\n  /** Called when drag stops */\n  onDragStop?: EventCallback;\n\n  /** Called when resize starts */\n  onResizeStart?: EventCallback;\n\n  /** Called during resize */\n  onResize?: EventCallback;\n\n  /** Called when resize stops */\n  onResizeStop?: EventCallback;\n\n  /** Called when an item is dropped from outside */\n  onDrop?: (layout: Layout, item: LayoutItem | undefined, e: Event) => void;\n\n  /** Called when dragging over the grid */\n  onDropDragOver?: (\n    e: ReactDragEvent\n  ) => { w?: number; h?: number } | false | void;\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\nconst noop = () => {};\n\nconst layoutClassName = \"react-grid-layout\";\n\n// Check for Firefox\nlet isFirefox = false;\ntry {\n  isFirefox = /firefox/i.test(navigator.userAgent);\n} catch {\n  /* Ignore */\n}\n\n/**\n * Compare children arrays for equality\n */\nfunction childrenEqual(a: React.ReactNode, b: React.ReactNode): boolean {\n  const aArr = React.Children.toArray(a);\n  const bArr = React.Children.toArray(b);\n\n  if (aArr.length !== bArr.length) return false;\n\n  for (let i = 0; i < aArr.length; i++) {\n    const aChild = aArr[i] as ReactElement;\n    const bChild = bArr[i] as ReactElement;\n    if (aChild?.key !== bChild?.key) return false;\n  }\n\n  return true;\n}\n\n/**\n * Synchronize layout with children\n */\nfunction synchronizeLayoutWithChildren(\n  initialLayout: Layout,\n  children: React.ReactNode,\n  cols: number,\n  compactType: CompactType,\n  allowOverlap: boolean\n): Layout {\n  const layout: LayoutItem[] = [];\n  const childKeys = new Set<string>();\n\n  React.Children.forEach(children, child => {\n    if (!React.isValidElement(child) || child.key === null) return;\n    const key = String(child.key);\n    childKeys.add(key);\n\n    // Find existing layout item\n    const existingItem = initialLayout.find(l => l.i === key);\n\n    if (existingItem) {\n      layout.push(cloneLayoutItem(existingItem));\n    } else {\n      // Create new layout item from child data-grid prop\n      const childProps = child.props as { \"data-grid\"?: Partial<LayoutItem> };\n      const dataGrid = childProps[\"data-grid\"];\n\n      if (dataGrid) {\n        layout.push({\n          i: key,\n          x: dataGrid.x ?? 0,\n          y: dataGrid.y ?? 0,\n          w: dataGrid.w ?? 1,\n          h: dataGrid.h ?? 1,\n          minW: dataGrid.minW,\n          maxW: dataGrid.maxW,\n          minH: dataGrid.minH,\n          maxH: dataGrid.maxH,\n          static: dataGrid.static,\n          isDraggable: dataGrid.isDraggable,\n          isResizable: dataGrid.isResizable,\n          resizeHandles: dataGrid.resizeHandles,\n          isBounded: dataGrid.isBounded\n        });\n      } else {\n        // Create default layout item\n        layout.push({\n          i: key,\n          x: 0,\n          y: bottom(layout),\n          w: 1,\n          h: 1\n        });\n      }\n    }\n  });\n\n  // Correct bounds and compact\n  const corrected = correctBounds(layout, { cols });\n  return compact(corrected, compactType, cols, allowOverlap);\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * GridLayout - A reactive, fluid grid layout with draggable, resizable components.\n */\nexport function GridLayout(props: GridLayoutProps): ReactElement {\n  const {\n    // Required\n    children,\n    width,\n\n    // Composable config interfaces\n    gridConfig: gridConfigProp,\n    dragConfig: dragConfigProp,\n    resizeConfig: resizeConfigProp,\n    dropConfig: dropConfigProp,\n    positionStrategy = defaultPositionStrategy,\n    compactor: compactorProp,\n\n    // Layout data\n    layout: propsLayout = [],\n    droppingItem: droppingItemProp,\n\n    // Container props\n    autoSize = true,\n    className = \"\",\n    style = {},\n    innerRef,\n\n    // Callbacks\n    onLayoutChange = noop,\n    onDragStart: onDragStartProp = noop,\n    onDrag: onDragProp = noop,\n    onDragStop: onDragStopProp = noop,\n    onResizeStart: onResizeStartProp = noop,\n    onResize: onResizeProp = noop,\n    onResizeStop: onResizeStopProp = noop,\n    onDrop: onDropProp = noop,\n    onDropDragOver: onDropDragOverProp = noop\n  } = props;\n\n  // Resolve config interfaces with defaults\n  const gridConfig: GridConfig = useMemo(\n    () => ({ ...defaultGridConfig, ...gridConfigProp }),\n    [gridConfigProp]\n  );\n  const dragConfig: DragConfig = useMemo(\n    () => ({ ...defaultDragConfig, ...dragConfigProp }),\n    [dragConfigProp]\n  );\n  const resizeConfig: ResizeConfig = useMemo(\n    () => ({ ...defaultResizeConfig, ...resizeConfigProp }),\n    [resizeConfigProp]\n  );\n  const dropConfig: DropConfig = useMemo(\n    () => ({ ...defaultDropConfig, ...dropConfigProp }),\n    [dropConfigProp]\n  );\n\n  // Destructure resolved configs for convenience\n  const { cols, rowHeight, maxRows, margin, containerPadding } = gridConfig;\n  const {\n    enabled: isDraggable,\n    bounded: isBounded,\n    handle: draggableHandle,\n    cancel: draggableCancel\n  } = dragConfig;\n  const {\n    enabled: isResizable,\n    handles: resizeHandles,\n    handleComponent: resizeHandle\n  } = resizeConfig;\n  const { enabled: isDroppable, defaultItem: defaultDropItem } = dropConfig;\n\n  // Get compactor (use provided or get from type)\n  const compactor = compactorProp ?? getCompactor(\"vertical\");\n  const compactType = compactor.type;\n  const allowOverlap = compactor.allowOverlap;\n  const preventCollision = compactor.preventCollision ?? false;\n\n  // Resolve dropping item - memoized to avoid unstable reference in useCallback dependencies\n  const droppingItem = useMemo(\n    () =>\n      droppingItemProp ?? {\n        i: \"__dropping-elem__\",\n        ...defaultDropItem\n      },\n    [droppingItemProp, defaultDropItem]\n  );\n\n  // Position strategy values\n  const useCSSTransforms = positionStrategy.type === \"transform\";\n  const transformScale = positionStrategy.scale;\n\n  const effectiveContainerPadding = containerPadding ?? margin;\n\n  // State\n  const [mounted, setMounted] = useState(false);\n  const [layout, setLayout] = useState<Layout>(() =>\n    synchronizeLayoutWithChildren(\n      propsLayout,\n      children,\n      cols,\n      compactType,\n      allowOverlap\n    )\n  );\n  const [activeDrag, setActiveDrag] = useState<LayoutItem | null>(null);\n  const [resizing, setResizing] = useState(false);\n  const [droppingDOMNode, setDroppingDOMNode] = useState<ReactElement | null>(\n    null\n  );\n  const [droppingPosition, setDroppingPosition] = useState<\n    DroppingPosition | undefined\n  >();\n\n  // Refs for tracking previous state\n  const oldDragItemRef = useRef<LayoutItem | null>(null);\n  const oldResizeItemRef = useRef<LayoutItem | null>(null);\n  const oldLayoutRef = useRef<Layout | null>(null);\n  const dragEnterCounterRef = useRef(0);\n  const prevLayoutRef = useRef<Layout>(layout);\n  const prevPropsLayoutRef = useRef<Layout>(propsLayout);\n  const prevChildrenRef = useRef<React.ReactNode>(children);\n  const prevCompactTypeRef = useRef<CompactType>(compactType);\n\n  // Mount effect - call onLayoutChange with initial layout if it differs from props\n  useEffect(() => {\n    setMounted(true);\n    // Possibly call back with layout on mount. This should be done after correcting the layout width\n    // to ensure we don't rerender with the wrong width.\n    if (!deepEqual(layout, propsLayout)) {\n      onLayoutChange(layout);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []); // Only run on mount\n\n  // Sync layout from props\n  useEffect(() => {\n    if (activeDrag) return; // Don't update during drag\n\n    const layoutChanged = !deepEqual(propsLayout, prevPropsLayoutRef.current);\n    const childrenChanged = !childrenEqual(children, prevChildrenRef.current);\n    const compactTypeChanged = compactType !== prevCompactTypeRef.current;\n\n    if (layoutChanged || childrenChanged || compactTypeChanged) {\n      const baseLayout = layoutChanged ? propsLayout : layout;\n      const newLayout = synchronizeLayoutWithChildren(\n        baseLayout,\n        children,\n        cols,\n        compactType,\n        allowOverlap\n      );\n      setLayout(newLayout);\n    }\n\n    prevPropsLayoutRef.current = propsLayout;\n    prevChildrenRef.current = children;\n    prevCompactTypeRef.current = compactType;\n  }, [\n    propsLayout,\n    children,\n    cols,\n    compactType,\n    allowOverlap,\n    activeDrag,\n    layout\n  ]);\n\n  // Layout change callback\n  useEffect(() => {\n    if (!activeDrag && !deepEqual(layout, prevLayoutRef.current)) {\n      prevLayoutRef.current = layout;\n      onLayoutChange(layout);\n    }\n  }, [layout, activeDrag, onLayoutChange]);\n\n  // ============================================================================\n  // Container Height\n  // ============================================================================\n\n  const containerHeight = useMemo((): string | undefined => {\n    if (!autoSize) return undefined;\n    const nbRow = bottom(layout);\n    const containerPaddingY = effectiveContainerPadding[1];\n    return (\n      nbRow * rowHeight + (nbRow - 1) * margin[1] + containerPaddingY * 2 + \"px\"\n    );\n  }, [autoSize, layout, rowHeight, margin, effectiveContainerPadding]);\n\n  // ============================================================================\n  // Drag Handlers\n  // ============================================================================\n\n  const onDragStart = useCallback(\n    (i: string, _x: number, _y: number, data: GridDragEvent) => {\n      const l = getLayoutItem(layout, i);\n      if (!l) return;\n\n      const placeholder: LayoutItem = {\n        w: l.w,\n        h: l.h,\n        x: l.x,\n        y: l.y,\n        i\n      };\n\n      oldDragItemRef.current = cloneLayoutItem(l);\n      oldLayoutRef.current = layout;\n      setActiveDrag(placeholder);\n\n      onDragStartProp(layout, l, l, null, data.e, data.node);\n    },\n    [layout, onDragStartProp]\n  );\n\n  const onDrag = useCallback(\n    (i: string, x: number, y: number, data: GridDragEvent) => {\n      const oldDragItem = oldDragItemRef.current;\n      const l = getLayoutItem(layout, i);\n      if (!l) return;\n\n      const placeholder: LayoutItem = {\n        w: l.w,\n        h: l.h,\n        x: l.x,\n        y: l.y,\n        i\n      };\n\n      // Move the element\n      const newLayout = moveElement(\n        layout,\n        l,\n        x,\n        y,\n        true,\n        preventCollision,\n        compactType,\n        cols,\n        allowOverlap\n      );\n\n      onDragProp(newLayout, oldDragItem, l, placeholder, data.e, data.node);\n\n      setLayout(\n        allowOverlap ? newLayout : compact(newLayout, compactType, cols)\n      );\n      setActiveDrag(placeholder);\n    },\n    [layout, preventCollision, compactType, cols, allowOverlap, onDragProp]\n  );\n\n  const onDragStop = useCallback(\n    (i: string, x: number, y: number, data: GridDragEvent) => {\n      if (!activeDrag) return;\n\n      const oldDragItem = oldDragItemRef.current;\n      const l = getLayoutItem(layout, i);\n      if (!l) return;\n\n      const newLayout = moveElement(\n        layout,\n        l,\n        x,\n        y,\n        true,\n        preventCollision,\n        compactType,\n        cols,\n        allowOverlap\n      );\n\n      const finalLayout = allowOverlap\n        ? newLayout\n        : compact(newLayout, compactType, cols);\n\n      onDragStopProp(finalLayout, oldDragItem, l, null, data.e, data.node);\n\n      const oldLayout = oldLayoutRef.current;\n      oldDragItemRef.current = null;\n      oldLayoutRef.current = null;\n      setActiveDrag(null);\n      setLayout(finalLayout);\n\n      if (oldLayout && !deepEqual(oldLayout, finalLayout)) {\n        onLayoutChange(finalLayout);\n      }\n    },\n    [\n      activeDrag,\n      layout,\n      preventCollision,\n      compactType,\n      cols,\n      allowOverlap,\n      onDragStopProp,\n      onLayoutChange\n    ]\n  );\n\n  // ============================================================================\n  // Resize Handlers\n  // ============================================================================\n\n  const onResizeStart = useCallback(\n    (i: string, _w: number, _h: number, data: GridResizeEvent) => {\n      const l = getLayoutItem(layout, i);\n      if (!l) return;\n\n      oldResizeItemRef.current = cloneLayoutItem(l);\n      oldLayoutRef.current = layout;\n      setResizing(true);\n\n      onResizeStartProp(layout, l, l, null, data.e, data.node);\n    },\n    [layout, onResizeStartProp]\n  );\n\n  const onResize = useCallback(\n    (i: string, w: number, h: number, data: GridResizeEvent) => {\n      const oldResizeItem = oldResizeItemRef.current;\n      const { handle } = data;\n\n      let shouldMoveItem = false;\n      let newX: number | undefined;\n      let newY: number | undefined;\n\n      const [newLayout, l] = withLayoutItem(layout, i, item => {\n        newX = item.x;\n        newY = item.y;\n\n        // Handle corner/edge resizing that affects position\n        if ([\"sw\", \"w\", \"nw\", \"n\", \"ne\"].includes(handle)) {\n          if ([\"sw\", \"nw\", \"w\"].includes(handle)) {\n            newX = item.x + (item.w - w);\n            w = item.x !== newX && newX < 0 ? item.w : w;\n            newX = newX < 0 ? 0 : newX;\n          }\n\n          if ([\"ne\", \"n\", \"nw\"].includes(handle)) {\n            newY = item.y + (item.h - h);\n            h = item.y !== newY && newY < 0 ? item.h : h;\n            newY = newY < 0 ? 0 : newY;\n          }\n\n          shouldMoveItem = true;\n        }\n\n        // Check for collisions if preventCollision is enabled\n        if (preventCollision && !allowOverlap) {\n          const collisions = getAllCollisions(layout, {\n            ...item,\n            w,\n            h,\n            x: newX ?? item.x,\n            y: newY ?? item.y\n          }).filter(layoutItem => layoutItem.i !== item.i);\n\n          if (collisions.length > 0) {\n            newY = item.y;\n            h = item.h;\n            newX = item.x;\n            w = item.w;\n            shouldMoveItem = false;\n          }\n        }\n\n        (item as Mutable<LayoutItem>).w = w;\n        (item as Mutable<LayoutItem>).h = h;\n\n        return item;\n      });\n\n      if (!l) return;\n\n      let finalLayout = newLayout;\n      if (shouldMoveItem && newX !== undefined && newY !== undefined) {\n        finalLayout = moveElement(\n          newLayout,\n          l,\n          newX,\n          newY,\n          true,\n          preventCollision,\n          compactType,\n          cols,\n          allowOverlap\n        );\n      }\n\n      const placeholder: LayoutItem = {\n        w: l.w,\n        h: l.h,\n        x: l.x,\n        y: l.y,\n        i,\n        static: true\n      };\n\n      onResizeProp(\n        finalLayout,\n        oldResizeItem,\n        l,\n        placeholder,\n        data.e,\n        data.node\n      );\n\n      setLayout(\n        allowOverlap ? finalLayout : compact(finalLayout, compactType, cols)\n      );\n      setActiveDrag(placeholder);\n    },\n    [layout, preventCollision, allowOverlap, compactType, cols, onResizeProp]\n  );\n\n  const onResizeStop = useCallback(\n    (i: string, _w: number, _h: number, data: GridResizeEvent) => {\n      const oldResizeItem = oldResizeItemRef.current;\n      const l = getLayoutItem(layout, i);\n\n      const finalLayout = allowOverlap\n        ? layout\n        : compact(layout, compactType, cols);\n\n      onResizeStopProp(\n        finalLayout,\n        oldResizeItem,\n        l ?? null,\n        null,\n        data.e,\n        data.node\n      );\n\n      const oldLayout = oldLayoutRef.current;\n      oldResizeItemRef.current = null;\n      oldLayoutRef.current = null;\n      setActiveDrag(null);\n      setResizing(false);\n      setLayout(finalLayout);\n\n      if (oldLayout && !deepEqual(oldLayout, finalLayout)) {\n        onLayoutChange(finalLayout);\n      }\n    },\n    [layout, allowOverlap, compactType, cols, onResizeStopProp, onLayoutChange]\n  );\n\n  // ============================================================================\n  // Drop Handlers\n  // ============================================================================\n\n  const removeDroppingPlaceholder = useCallback(() => {\n    const newLayout = compact(\n      layout.filter(l => l.i !== droppingItem.i),\n      compactType,\n      cols,\n      allowOverlap\n    );\n\n    setLayout(newLayout);\n    setDroppingDOMNode(null);\n    setActiveDrag(null);\n    setDroppingPosition(undefined);\n  }, [layout, droppingItem.i, compactType, cols, allowOverlap]);\n\n  const handleDragOver = useCallback(\n    (e: ReactDragEvent): void | false => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      // Firefox hack\n      if (\n        isFirefox &&\n        !(e.nativeEvent.target as HTMLElement)?.classList.contains(\n          layoutClassName\n        )\n      ) {\n        return false;\n      }\n\n      const onDragOverResult = onDropDragOverProp(e);\n      if (onDragOverResult === false) {\n        if (droppingDOMNode) {\n          removeDroppingPlaceholder();\n        }\n        return false;\n      }\n\n      const finalDroppingItem = { ...droppingItem, ...onDragOverResult };\n      const gridRect = e.currentTarget.getBoundingClientRect();\n      const layerX = e.clientX - gridRect.left;\n      const layerY = e.clientY - gridRect.top;\n\n      const newDroppingPosition: DroppingPosition = {\n        left: layerX / transformScale,\n        top: layerY / transformScale,\n        e: e.nativeEvent\n      };\n\n      if (!droppingDOMNode) {\n        const positionParams: PositionParams = {\n          cols,\n          margin: margin as [number, number],\n          maxRows,\n          rowHeight,\n          containerWidth: width,\n          containerPadding: effectiveContainerPadding as [number, number]\n        };\n\n        const calculatedPosition = calcXY(\n          positionParams,\n          layerY,\n          layerX,\n          finalDroppingItem.w,\n          finalDroppingItem.h\n        );\n\n        setDroppingDOMNode(<div key={finalDroppingItem.i} />);\n        setDroppingPosition(newDroppingPosition);\n        setLayout([\n          ...layout,\n          {\n            ...finalDroppingItem,\n            x: calculatedPosition.x,\n            y: calculatedPosition.y,\n            static: false,\n            isDraggable: true\n          }\n        ]);\n      } else if (droppingPosition) {\n        const shouldUpdate =\n          droppingPosition.left !== layerX || droppingPosition.top !== layerY;\n        if (shouldUpdate) {\n          setDroppingPosition(newDroppingPosition);\n        }\n      }\n    },\n    [\n      droppingDOMNode,\n      droppingPosition,\n      droppingItem,\n      onDropDragOverProp,\n      removeDroppingPlaceholder,\n      transformScale,\n      cols,\n      margin,\n      maxRows,\n      rowHeight,\n      width,\n      effectiveContainerPadding,\n      layout\n    ]\n  );\n\n  const handleDragLeave = useCallback(\n    (e: ReactDragEvent) => {\n      e.preventDefault();\n      e.stopPropagation();\n      dragEnterCounterRef.current--;\n\n      if (dragEnterCounterRef.current === 0) {\n        removeDroppingPlaceholder();\n      }\n    },\n    [removeDroppingPlaceholder]\n  );\n\n  const handleDragEnter = useCallback((e: ReactDragEvent) => {\n    e.preventDefault();\n    e.stopPropagation();\n    dragEnterCounterRef.current++;\n  }, []);\n\n  const handleDrop = useCallback(\n    (e: ReactDragEvent) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      const item = layout.find(l => l.i === droppingItem.i);\n      dragEnterCounterRef.current = 0;\n      removeDroppingPlaceholder();\n      onDropProp(layout, item, e.nativeEvent);\n    },\n    [layout, droppingItem.i, removeDroppingPlaceholder, onDropProp]\n  );\n\n  // ============================================================================\n  // Render Helpers\n  // ============================================================================\n\n  const processGridItem = useCallback(\n    (\n      child: ReactElement,\n      isDroppingItem?: boolean\n    ): ReactElement | null | undefined => {\n      if (!child || !child.key) return null;\n\n      const l = getLayoutItem(layout, String(child.key));\n      if (!l) return null;\n\n      const draggable =\n        typeof l.isDraggable === \"boolean\"\n          ? l.isDraggable\n          : !l.static && isDraggable;\n      const resizable =\n        typeof l.isResizable === \"boolean\"\n          ? l.isResizable\n          : !l.static && isResizable;\n      const resizeHandlesOptions = l.resizeHandles || [...resizeHandles];\n      const bounded = draggable && isBounded && l.isBounded !== false;\n\n      // Cast resize handle to expected type (function signature is compatible)\n      const resizeHandleElement = resizeHandle as ResizeHandle | undefined;\n\n      return (\n        <GridItem\n          key={l.i}\n          containerWidth={width}\n          cols={cols}\n          margin={margin}\n          containerPadding={effectiveContainerPadding}\n          maxRows={maxRows}\n          rowHeight={rowHeight}\n          cancel={draggableCancel}\n          handle={draggableHandle}\n          onDragStart={onDragStart}\n          onDrag={onDrag}\n          onDragStop={onDragStop}\n          onResizeStart={onResizeStart}\n          onResize={onResize}\n          onResizeStop={onResizeStop}\n          isDraggable={draggable}\n          isResizable={resizable}\n          isBounded={bounded}\n          useCSSTransforms={useCSSTransforms && mounted}\n          usePercentages={!mounted}\n          transformScale={transformScale}\n          w={l.w}\n          h={l.h}\n          x={l.x}\n          y={l.y}\n          i={l.i}\n          minH={l.minH}\n          minW={l.minW}\n          maxH={l.maxH}\n          maxW={l.maxW}\n          static={l.static}\n          droppingPosition={isDroppingItem ? droppingPosition : undefined}\n          resizeHandles={resizeHandlesOptions}\n          resizeHandle={resizeHandleElement}\n        >\n          {child}\n        </GridItem>\n      );\n    },\n    [\n      layout,\n      width,\n      cols,\n      margin,\n      effectiveContainerPadding,\n      maxRows,\n      rowHeight,\n      draggableCancel,\n      draggableHandle,\n      onDragStart,\n      onDrag,\n      onDragStop,\n      onResizeStart,\n      onResize,\n      onResizeStop,\n      isDraggable,\n      isResizable,\n      isBounded,\n      useCSSTransforms,\n      mounted,\n      transformScale,\n      droppingPosition,\n      resizeHandles,\n      resizeHandle\n    ]\n  );\n\n  const renderPlaceholder = (): ReactElement | null => {\n    if (!activeDrag) return null;\n\n    return (\n      <GridItem\n        w={activeDrag.w}\n        h={activeDrag.h}\n        x={activeDrag.x}\n        y={activeDrag.y}\n        i={activeDrag.i}\n        className={`react-grid-placeholder ${resizing ? \"placeholder-resizing\" : \"\"}`}\n        containerWidth={width}\n        cols={cols}\n        margin={margin}\n        containerPadding={effectiveContainerPadding}\n        maxRows={maxRows}\n        rowHeight={rowHeight}\n        isDraggable={false}\n        isResizable={false}\n        isBounded={false}\n        useCSSTransforms={useCSSTransforms}\n        transformScale={transformScale}\n      >\n        <div />\n      </GridItem>\n    );\n  };\n\n  // ============================================================================\n  // Render\n  // ============================================================================\n\n  const mergedClassName = clsx(layoutClassName, className);\n  const mergedStyle: CSSProperties = {\n    height: containerHeight,\n    ...style\n  };\n\n  return (\n    <div\n      ref={innerRef}\n      className={mergedClassName}\n      style={mergedStyle}\n      onDrop={isDroppable ? handleDrop : undefined}\n      onDragLeave={isDroppable ? handleDragLeave : undefined}\n      onDragEnter={isDroppable ? handleDragEnter : undefined}\n      onDragOver={isDroppable ? handleDragOver : undefined}\n    >\n      {React.Children.map(children, child => {\n        if (!React.isValidElement(child)) return null;\n        return processGridItem(child);\n      })}\n      {isDroppable && droppingDOMNode && processGridItem(droppingDOMNode, true)}\n      {renderPlaceholder()}\n    </div>\n  );\n}\n\nexport default GridLayout;\n","/**\n * ResponsiveGridLayout component\n *\n * A responsive grid layout that automatically adjusts to container width.\n */\n\nimport React, {\n  useState,\n  useEffect,\n  useRef,\n  useMemo,\n  useCallback,\n  type ReactElement\n} from \"react\";\nimport { deepEqual } from \"fast-equals\";\n\nimport type {\n  Layout,\n  LayoutItem,\n  Breakpoint,\n  Breakpoints,\n  ResponsiveLayouts,\n  CompactType,\n  Compactor\n} from \"../../core/types.js\";\nimport { cloneLayout, correctBounds } from \"../../core/layout.js\";\nimport {\n  getBreakpointFromWidth,\n  getColsFromBreakpoint,\n  findOrGenerateResponsiveLayout,\n  getIndentationValue\n} from \"../../core/responsive.js\";\nimport { compact } from \"../../core/compact-compat.js\";\nimport { getCompactor } from \"../../core/compactors.js\";\nimport { bottom } from \"../../core/layout.js\";\n\nimport { GridLayout, type GridLayoutProps } from \"./GridLayout.js\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ResponsiveGridLayoutProps<\n  B extends Breakpoint = string\n> extends Omit<GridLayoutProps, \"gridConfig\" | \"layout\" | \"onLayoutChange\"> {\n  /** Current breakpoint (optional, auto-detected from width) */\n  breakpoint?: B;\n  /** Breakpoint definitions (name → min-width) */\n  breakpoints?: Breakpoints<B>;\n  /** Column counts per breakpoint */\n  cols?: Breakpoints<B>;\n  /** Layouts for each breakpoint */\n  layouts?: ResponsiveLayouts<B>;\n  /** Row height (default: 150) */\n  rowHeight?: number;\n  /** Maximum rows (default: Infinity) */\n  maxRows?: number;\n  /** Margin between items - can be fixed or per-breakpoint */\n  margin?:\n    | readonly [number, number]\n    | Partial<Record<B, readonly [number, number]>>;\n  /** Container padding - can be fixed or per-breakpoint */\n  containerPadding?:\n    | readonly [number, number]\n    | Partial<Record<B, readonly [number, number] | null>>\n    | null;\n  /** Compactor for layout compaction */\n  compactor?: Compactor;\n  /** Called when breakpoint changes */\n  onBreakpointChange?: (newBreakpoint: B, cols: number) => void;\n  /** Called when layout changes */\n  onLayoutChange?: (layout: Layout, layouts: ResponsiveLayouts<B>) => void;\n  /** Called when width changes */\n  onWidthChange?: (\n    containerWidth: number,\n    margin: readonly [number, number],\n    cols: number,\n    containerPadding: readonly [number, number] | null\n  ) => void;\n}\n\n// ============================================================================\n// Default Values\n// ============================================================================\n\nconst DEFAULT_BREAKPOINTS: Breakpoints<string> = {\n  lg: 1200,\n  md: 996,\n  sm: 768,\n  xs: 480,\n  xxs: 0\n};\n\nconst DEFAULT_COLS: Breakpoints<string> = {\n  lg: 12,\n  md: 10,\n  sm: 6,\n  xs: 4,\n  xxs: 2\n};\n\nconst noop = () => {};\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Synchronize layout with children\n */\nfunction synchronizeLayoutWithChildren(\n  initialLayout: Layout,\n  children: React.ReactNode,\n  cols: number,\n  compactType: CompactType,\n  allowOverlap: boolean\n): Layout {\n  const layout: LayoutItem[] = [];\n\n  React.Children.forEach(children, child => {\n    if (!React.isValidElement(child) || child.key === null) return;\n    const key = String(child.key);\n\n    // Find existing layout item\n    const existingItem = initialLayout.find(l => l.i === key);\n\n    if (existingItem) {\n      layout.push({\n        ...existingItem,\n        i: key\n      });\n    } else {\n      // Create new layout item from child data-grid prop\n      const childProps = child.props as { \"data-grid\"?: Partial<LayoutItem> };\n      const dataGrid = childProps[\"data-grid\"];\n\n      if (dataGrid) {\n        layout.push({\n          i: key,\n          x: dataGrid.x ?? 0,\n          y: dataGrid.y ?? 0,\n          w: dataGrid.w ?? 1,\n          h: dataGrid.h ?? 1,\n          minW: dataGrid.minW,\n          maxW: dataGrid.maxW,\n          minH: dataGrid.minH,\n          maxH: dataGrid.maxH,\n          static: dataGrid.static,\n          isDraggable: dataGrid.isDraggable,\n          isResizable: dataGrid.isResizable,\n          resizeHandles: dataGrid.resizeHandles,\n          isBounded: dataGrid.isBounded\n        });\n      } else {\n        // Create default layout item\n        layout.push({\n          i: key,\n          x: 0,\n          y: bottom(layout),\n          w: 1,\n          h: 1\n        });\n      }\n    }\n  });\n\n  // Correct bounds and compact\n  const corrected = correctBounds(layout, { cols });\n  return compact(corrected, compactType, cols, allowOverlap);\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * ResponsiveGridLayout - A responsive grid layout that adjusts to container width.\n */\nexport function ResponsiveGridLayout<B extends Breakpoint = string>(\n  props: ResponsiveGridLayoutProps<B>\n): ReactElement {\n  const {\n    children,\n    width,\n    breakpoint: propBreakpoint,\n    breakpoints = DEFAULT_BREAKPOINTS as Breakpoints<B>,\n    cols: colsConfig = DEFAULT_COLS as Breakpoints<B>,\n    layouts: propsLayouts = {} as ResponsiveLayouts<B>,\n    rowHeight = 150,\n    maxRows = Infinity,\n    margin: propMargin = [10, 10] as readonly [number, number],\n    containerPadding: propContainerPadding = null,\n    compactor: compactorProp,\n    onBreakpointChange = noop,\n    onLayoutChange = noop,\n    onWidthChange = noop,\n    ...restProps\n  } = props;\n\n  // Get compactor (use provided or default to vertical)\n  const compactor = compactorProp ?? getCompactor(\"vertical\");\n  const compactType = compactor.type;\n  const allowOverlap = compactor.allowOverlap;\n\n  // Calculate initial state\n  const initialBreakpoint = useMemo(() => {\n    return propBreakpoint ?? getBreakpointFromWidth(breakpoints, width);\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  const initialCols = useMemo(() => {\n    return getColsFromBreakpoint(initialBreakpoint, colsConfig);\n  }, [initialBreakpoint, colsConfig]);\n\n  const initialLayout = useMemo(() => {\n    return findOrGenerateResponsiveLayout(\n      propsLayouts,\n      breakpoints,\n      initialBreakpoint,\n      initialBreakpoint,\n      initialCols,\n      compactType\n    );\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  // State\n  const [breakpoint, setBreakpoint] = useState<B>(initialBreakpoint);\n  const [cols, setCols] = useState<number>(initialCols);\n  const [layout, setLayout] = useState<Layout>(initialLayout);\n  const [layouts, setLayouts] = useState<ResponsiveLayouts<B>>(propsLayouts);\n\n  // Refs for tracking changes\n  const prevWidthRef = useRef(width);\n  const prevBreakpointRef = useRef(propBreakpoint);\n  const prevBreakpointsRef = useRef(breakpoints);\n  const prevColsRef = useRef(colsConfig);\n  const prevLayoutsRef = useRef(propsLayouts);\n  const prevCompactTypeRef = useRef(compactType);\n\n  // Sync layouts from props\n  useEffect(() => {\n    if (!deepEqual(propsLayouts, prevLayoutsRef.current)) {\n      const newLayout = findOrGenerateResponsiveLayout(\n        propsLayouts,\n        breakpoints,\n        breakpoint,\n        breakpoint,\n        cols,\n        compactType\n      );\n      setLayout(newLayout);\n      setLayouts(propsLayouts);\n      prevLayoutsRef.current = propsLayouts;\n    }\n  }, [propsLayouts, breakpoints, breakpoint, cols, compactType]);\n\n  // Handle compactType changes\n  useEffect(() => {\n    if (compactType !== prevCompactTypeRef.current) {\n      // Re-compact the current layout with the new compactType\n      const newLayout = compact(\n        cloneLayout(layout),\n        compactType,\n        cols,\n        allowOverlap\n      );\n      const newLayouts = {\n        ...layouts,\n        [breakpoint]: newLayout\n      } as ResponsiveLayouts<B>;\n\n      setLayout(newLayout);\n      setLayouts(newLayouts);\n      onLayoutChange(newLayout, newLayouts);\n      prevCompactTypeRef.current = compactType;\n    }\n  }, [\n    compactType,\n    layout,\n    cols,\n    allowOverlap,\n    layouts,\n    breakpoint,\n    onLayoutChange\n  ]);\n\n  // Handle width changes\n  useEffect(() => {\n    const widthChanged = width !== prevWidthRef.current;\n    const breakpointPropChanged = propBreakpoint !== prevBreakpointRef.current;\n    const breakpointsChanged = !deepEqual(\n      breakpoints,\n      prevBreakpointsRef.current\n    );\n    const colsChanged = !deepEqual(colsConfig, prevColsRef.current);\n\n    if (\n      widthChanged ||\n      breakpointPropChanged ||\n      breakpointsChanged ||\n      colsChanged\n    ) {\n      const newBreakpoint =\n        propBreakpoint ?? getBreakpointFromWidth(breakpoints, width);\n      const newCols = getColsFromBreakpoint(newBreakpoint, colsConfig);\n      const lastBreakpoint = breakpoint;\n\n      // Breakpoint change\n      if (\n        lastBreakpoint !== newBreakpoint ||\n        breakpointsChanged ||\n        colsChanged\n      ) {\n        const newLayouts = { ...layouts } as ResponsiveLayouts<B>;\n\n        // Preserve current layout if not in new layouts\n        if (!newLayouts[lastBreakpoint]) {\n          (newLayouts as Record<B, Layout>)[lastBreakpoint] =\n            cloneLayout(layout);\n        }\n\n        // Find or generate new layout\n        let newLayout = findOrGenerateResponsiveLayout(\n          newLayouts,\n          breakpoints,\n          newBreakpoint,\n          lastBreakpoint,\n          newCols,\n          compactType\n        );\n\n        // Sync with children\n        newLayout = synchronizeLayoutWithChildren(\n          newLayout,\n          children,\n          newCols,\n          compactType,\n          allowOverlap\n        );\n\n        // Store new layout\n        (newLayouts as Record<B, Layout>)[newBreakpoint] = newLayout;\n\n        // Update state\n        setBreakpoint(newBreakpoint);\n        setCols(newCols);\n        setLayout(newLayout);\n        setLayouts(newLayouts);\n\n        // Callbacks\n        onBreakpointChange(newBreakpoint, newCols);\n        onLayoutChange(newLayout, newLayouts);\n      }\n\n      // Get margin and padding for callback\n      const currentMargin = getIndentationValue(\n        propMargin as Parameters<typeof getIndentationValue>[0],\n        newBreakpoint\n      );\n      const currentPadding = propContainerPadding\n        ? getIndentationValue(\n            propContainerPadding as Parameters<typeof getIndentationValue>[0],\n            newBreakpoint\n          )\n        : null;\n\n      // Width change callback\n      onWidthChange(width, currentMargin, newCols, currentPadding);\n\n      // Update refs\n      prevWidthRef.current = width;\n      prevBreakpointRef.current = propBreakpoint;\n      prevBreakpointsRef.current = breakpoints;\n      prevColsRef.current = colsConfig;\n    }\n  }, [\n    width,\n    propBreakpoint,\n    breakpoints,\n    colsConfig,\n    breakpoint,\n    cols,\n    layout,\n    layouts,\n    children,\n    compactType,\n    allowOverlap,\n    propMargin,\n    propContainerPadding,\n    onBreakpointChange,\n    onLayoutChange,\n    onWidthChange\n  ]);\n\n  // Handle layout change from GridLayout\n  const handleLayoutChange = useCallback(\n    (newLayout: Layout) => {\n      const newLayouts = {\n        ...layouts,\n        [breakpoint]: newLayout\n      } as ResponsiveLayouts<B>;\n\n      setLayout(newLayout);\n      setLayouts(newLayouts);\n      onLayoutChange(newLayout, newLayouts);\n    },\n    [layouts, breakpoint, onLayoutChange]\n  );\n\n  // Get margin and padding for current breakpoint\n  const currentMargin = useMemo(() => {\n    return getIndentationValue(\n      propMargin as Parameters<typeof getIndentationValue>[0],\n      breakpoint\n    );\n  }, [propMargin, breakpoint]);\n\n  const currentContainerPadding = useMemo(() => {\n    if (propContainerPadding === null) return null;\n    return getIndentationValue(\n      propContainerPadding as Parameters<typeof getIndentationValue>[0],\n      breakpoint\n    );\n  }, [propContainerPadding, breakpoint]);\n\n  // Build grid config for current breakpoint\n  const gridConfig = useMemo(\n    () => ({\n      cols,\n      rowHeight,\n      maxRows,\n      margin: currentMargin,\n      containerPadding: currentContainerPadding\n    }),\n    [cols, rowHeight, maxRows, currentMargin, currentContainerPadding]\n  );\n\n  return (\n    <GridLayout\n      {...restProps}\n      width={width}\n      gridConfig={gridConfig}\n      compactor={compactor}\n      onLayoutChange={handleLayoutChange}\n      layout={layout}\n    >\n      {children}\n    </GridLayout>\n  );\n}\n\nexport default ResponsiveGridLayout;\n"]}