{"version":3,"file":"useDrawer.hook.cjs","sources":["../../../../../../src/components/overlay/drawer/hooks/use-drawer/useDrawer.hook.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\r\n\r\nimport { DRAWER_MODES } from '@components/overlay/drawer/constants'\r\nimport type { DrawerContextValue } from '@components/overlay/drawer/context/Drawer.context.ts'\r\nimport type {\r\n    CommonRendererProps,\r\n    UseDrawerParams,\r\n    UseDrawerReturn\r\n} from '@components/overlay/drawer/hooks/use-drawer/types'\r\n\r\n/**\r\n * Encapsulates the state, context and accessibility logic for the root\r\n * `Drawer` component.\r\n */\r\nexport const useDrawer = ({\r\n    open: controlledOpen,\r\n    defaultOpen = false,\r\n    onOpenChange,\r\n    mode = DRAWER_MODES.portal,\r\n    position = 'left',\r\n    size = 'md',\r\n    withBackdrop: _withBackdrop,\r\n    backgroundColor,\r\n    defaultAriaLabel = 'Drawer',\r\n    children,\r\n    className,\r\n    style,\r\n    'aria-label': ariaLabel,\r\n    'aria-labelledby': ariaLabelledBy,\r\n    titleId,\r\n    ...props\r\n}: UseDrawerParams & {\r\n    /** Id of the header title used as the default aria-labelledby. */\r\n    titleId?: string\r\n}): UseDrawerReturn => {\r\n    const [internalOpen, setInternalOpen] = useState(defaultOpen)\r\n    const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\r\n\r\n    const handleOpenChange = useCallback(\r\n        (nextOpen: boolean) => {\r\n            setInternalOpen(nextOpen)\r\n            onOpenChange?.(nextOpen)\r\n        },\r\n        [onOpenChange],\r\n    )\r\n\r\n    const contextValue = useMemo<DrawerContextValue>(\r\n        () => ({\r\n            open: isOpen,\r\n            onOpenChange: handleOpenChange,\r\n            mode,\r\n            position,\r\n            size,\r\n            titleId,\r\n            collapsedWidth: 'collapsedWidth' in props && typeof props.collapsedWidth === 'string'\r\n                ? props.collapsedWidth\r\n                : undefined,\r\n        }),\r\n        [isOpen, handleOpenChange, mode, position, size, titleId, props],\r\n    )\r\n\r\n    const resolvedAriaLabelledBy = ariaLabel ? undefined : (ariaLabelledBy ?? titleId)\r\n    const accessibleName =\r\n        ariaLabel ?? (resolvedAriaLabelledBy ? undefined : defaultAriaLabel)\r\n\r\n    const commonRendererProps = {\r\n        open: isOpen,\r\n        position,\r\n        size,\r\n        backgroundColor,\r\n        accessibleName,\r\n        ariaLabelledBy: resolvedAriaLabelledBy,\r\n        children,\r\n        className,\r\n        style,\r\n        ...props,\r\n    }\r\n\r\n    return {\r\n        isOpen,\r\n        handleOpenChange,\r\n        contextValue,\r\n        accessibleName,\r\n        commonRendererProps: commonRendererProps as CommonRendererProps,\r\n    }\r\n}\r\n"],"names":["useDrawer","controlledOpen","defaultOpen","onOpenChange","mode","DRAWER_MODES","position","size","_withBackdrop","backgroundColor","defaultAriaLabel","children","className","style","ariaLabel","ariaLabelledBy","titleId","props","internalOpen","setInternalOpen","useState","isOpen","handleOpenChange","useCallback","nextOpen","contextValue","useMemo","resolvedAriaLabelledBy","accessibleName","commonRendererProps"],"mappings":"4JAcaA,EAAY,CAAC,CACtB,KAAMC,EACN,YAAAC,EAAc,GACd,aAAAC,EACA,KAAAC,EAAOC,EAAAA,aAAa,OACpB,SAAAC,EAAW,OACX,KAAAC,EAAO,KACP,aAAcC,EACd,gBAAAC,EACA,iBAAAC,EAAmB,SACnB,SAAAC,EACA,UAAAC,EACA,MAAAC,EACA,aAAcC,EACd,kBAAmBC,EACnB,QAAAC,EACA,GAAGC,CACP,IAGuB,CACnB,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAASlB,CAAW,EACtDmB,EAASpB,IAAmB,OAAYA,EAAiBiB,EAEzDI,EAAmBC,EAAAA,YACpBC,GAAsB,CACnBL,EAAgBK,CAAQ,EACxBrB,IAAeqB,CAAQ,CAC3B,EACA,CAACrB,CAAY,CAAA,EAGXsB,EAAeC,EAAAA,QACjB,KAAO,CACH,KAAML,EACN,aAAcC,EACd,KAAAlB,EACA,SAAAE,EACA,KAAAC,EACA,QAAAS,EACA,eAAgB,mBAAoBC,GAAS,OAAOA,EAAM,gBAAmB,SACvEA,EAAM,eACN,MAAA,GAEV,CAACI,EAAQC,EAAkBlB,EAAME,EAAUC,EAAMS,EAASC,CAAK,CAAA,EAG7DU,EAAyBb,EAAY,OAAaC,GAAkBC,EACpEY,EACFd,IAAca,EAAyB,OAAYjB,GAEjDmB,EAAsB,CACxB,KAAMR,EACN,SAAAf,EACA,KAAAC,EACA,gBAAAE,EACA,eAAAmB,EACA,eAAgBD,EAChB,SAAAhB,EACA,UAAAC,EACA,MAAAC,EACA,GAAGI,CAAA,EAGP,MAAO,CACH,OAAAI,EACA,iBAAAC,EACA,aAAAG,EACA,eAAAG,EACA,oBAAAC,CAAA,CAER"}