/**
* @fileoverview Context & DOM Aware Layout System - Main Barrel Export
*
* A comprehensive React library for DOM-aware layouts that provides:
* - DOM ancestry tracking and propagation
* - Viewport-relative positioning and visibility tracking
* - Scroll container awareness and coordination
* - Portal context bridging across boundaries
* - Z-index management system
*
* Architecture Overview:
* ---------------------
* The system is built on several core layers:
*
* 1. **Core Systems** (dom-context, viewport-awareness, scroll-tracker, portal-bridge, z-index-manager)
* - Pure TypeScript classes for DOM tracking
* - Singleton pattern for global state
* - WeakMap caching for memory efficiency
* - Batched updates via RAF for performance
*
* 2. **React Context** (DOMContextProvider)
* - Provides DOM context to React tree
* - Automatic updates on layout changes
* - SSR-compatible with graceful degradation
*
* 3. **Context-Aware Components** (ContextAwareBox, PortalBridge, ScrollAwareContainer, ViewportAnchor)
* - Ready-to-use components with context awareness
* - Specialized variants for common patterns
*
* 4. **Hooks** (useDOMContext, useLayoutAncestry, useViewportPosition, etc.)
* - Fine-grained access to specific context aspects
* - Optimized for minimal re-renders
*
* @example
* ```tsx
* // Basic usage
* import {
* DOMContextProvider,
* ContextAwareBox,
* useDOMContext,
* useLayoutAncestry,
* } from '@/lib/layouts/context-aware';
*
* function App() {
* return (
*
*
*
* );
* }
*
* function Layout() {
* const { ancestors } = useLayoutAncestry();
* const isInFlex = ancestors.some(a => a.layoutType === 'flex');
*
* return (
*
*
*
* );
* }
* ```
*
* @module layouts/context-aware
* @author Agent 4 - PhD Context Systems Expert
* @version 1.0.0
*/
export type { LayoutType, PositionType, OverflowType, FlexDirection, GridAutoFlow, DimensionValue, DimensionBounds, LayoutConstraints, ComputedBounds, LayoutAncestor, FlexContainerProperties, GridContainerProperties, VisibilityState, ScrollDirection, ViewportInfo, ViewportPosition, ScrollContainer, StickyState, PortalContext, DOMContextSnapshot, ZIndexLayer, ZIndexContext, DOMContext, ContextAwareComponentProps, DOMContextProviderProps, ContextAwareBoxProps, PortalBridgeProps, ScrollAwareContainerProps, ViewportAnchorProps, UseDOMContextReturn, UseLayoutAncestryReturn, UseViewportPositionReturn, UseScrollContextReturn, UsePortalContextReturn, DOMContextChangeEvent, ScrollEventDetail, ContextTrackingConfig, } from './types';
export { Z_INDEX_LAYERS, DEFAULT_TRACKING_CONFIG, isDefined, isLayoutType, isPositionType, isScrollContainer, } from './types';
export { DOMContextTracker, getDOMContextTracker, findAncestorByType, findScrollContainerAncestor, findContainingBlockAncestor, computeInheritedConstraints, isWithinLayoutType, getLayoutDepth, } from './dom-context';
export { ViewportTracker, getViewportTracker, getViewport, onViewportChange, isElementInViewport, getViewportPosition, getDistanceFromViewportCenter, getOptimalScrollPosition, type ViewportChangeCallback, type VisibilityChangeCallback, type VisibilityObserverOptions, } from './viewport-awareness';
export { ScrollTracker, ScrollContainerRegistry, getScrollContainerRegistry, findScrollContainer, createScrollTracker, type ScrollCallback, type ScrollEdgeCallback, type StickyCallback, type ScrollTrackingOptions, } from './scroll-tracker';
export { PortalContextManager, getPortalContextManager, createPortalContext, destroyPortalContext, getPortalContextForElement, isInPortal, getPortalHierarchy, type PortalContextOptions, type PortalLifecycleCallback, type BridgedEventHandler, } from './portal-bridge';
export { ZIndexManager, getZIndexManager, registerZIndex, unregisterZIndex, getLayerZIndex, bringToFront, sendToBack, type ZIndexRegistration, type ZIndexRegistrationOptions, type ZIndexChangeCallback, } from './z-index-manager';
export { DOMContextProvider, DOMContextReactContext, DOMContextUpdateContext, DOMContextConsumer, useDOMContextValue, useDOMContextRefresh, withDOMContext, NestedDOMContextProvider, useDOMContextSelector, type DOMContextConsumerProps, type WithDOMContextProps, type NestedDOMContextProviderProps, } from './DOMContextProvider';
export { ContextAwareBox, FlexBox, GridBox, type PolymorphicContextAwareBoxProps, type BoxContext, type OnContextReadyCallback, type FlexBoxProps, type GridBoxProps, } from './ContextAwareBox';
export { PortalBridge, usePortalBridgeContext, ModalPortal, TooltipPortal, PopoverPortal, type ModalPortalProps, type TooltipPortalProps, type PopoverPortalProps, } from './PortalBridge';
export { ScrollAwareContainer, useScrollContainerContext, useScrollControl, type ExtendedScrollAwareContainerProps, } from './ScrollAwareContainer';
export { ViewportAnchor, LazyLoad, StickyHeader, ScrollTrigger, type ExtendedViewportAnchorProps, type LazyLoadProps, type StickyHeaderProps, type ScrollTriggerProps, } from './ViewportAnchor';
export { useDOMContext, useDOMContextWithElement, useContextSelector, useContextEffect, type DOMContextSelector, useLayoutAncestry, useFlexAncestor, useGridAncestor, useScrollContainerAncestor, useContainingBlockAncestor, useIsInFlex, useIsInGrid, useIsInInline, useAvailableWidth, useAvailableHeight, useParentAspectRatio, useViewportPosition, useVisibility, useIntersectionRatio, useDistanceFromViewport, useDistanceFromCenter, useViewport, useViewportDimensions, useViewportScroll, useIsTouch, useOrientation, useSafeAreaInsets, useScrollContext, useScrollContainer, useScrollDirection, useScrollProgress, useIsScrolling, useScrollEdges, useScrollPosition, useScrollVelocity, useScrollToTop, useScrollToBottom, useScrollIntoView, usePortalContext, useIsInPortal, useSourceContext, usePortalNestingDepth, usePortalHierarchy, useZIndexForLayer, useZIndexContext, useZIndexRegistration, useZIndexLayers, } from './hooks';
/**
* Default export providing the main provider component.
*/
export { DOMContextProvider as default } from './DOMContextProvider';