{"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps, FC } from \"react\";\nimport { useEffect, useId } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { mergeDeep } from \"../../helpers/merge-deep\";\nimport { getTheme } from \"../../theme-store\";\nimport type { DeepPartial } from \"../../types\";\nimport type { FlowbiteBoolean } from \"../Flowbite\";\nimport { DrawerContext } from \"./DrawerContext\";\nimport { DrawerHeader, type FlowbiteDrawerHeaderTheme } from \"./DrawerHeader\";\nimport { DrawerItems, type FlowbiteDrawerItemsTheme } from \"./DrawerItems\";\n\nexport interface FlowbiteDrawerTheme {\n  root: FlowbiteDrawerRootTheme;\n  header: FlowbiteDrawerHeaderTheme;\n  items: FlowbiteDrawerItemsTheme;\n}\n\nexport interface FlowbiteDrawerRootTheme {\n  base: string;\n  backdrop: string;\n  edge: string;\n  position: {\n    top: FlowbiteBoolean;\n    right: FlowbiteBoolean;\n    bottom: FlowbiteBoolean;\n    left: FlowbiteBoolean;\n  };\n}\n\nexport interface DrawerProps extends ComponentProps<\"div\"> {\n  backdrop?: boolean;\n  edge?: boolean;\n  onClose: () => void;\n  open?: boolean;\n  position?: \"top\" | \"right\" | \"bottom\" | \"left\";\n  theme?: DeepPartial<FlowbiteDrawerTheme>;\n}\n\nconst DrawerComponent: FC<DrawerProps> = ({\n  backdrop = true,\n  children,\n  className,\n  edge = false,\n  position = \"left\",\n  onClose,\n  open: isOpen = false,\n  theme: customTheme = {},\n  ...props\n}) => {\n  const id = useId();\n\n  const theme = mergeDeep(getTheme().drawer, customTheme);\n\n  useEffect(() => {\n    const handleEscapeKey = (event: KeyboardEvent) => {\n      if (event.key === \"Escape\" && isOpen && onClose) {\n        onClose();\n      }\n    };\n\n    document.addEventListener(\"keydown\", handleEscapeKey);\n\n    return () => document.removeEventListener(\"keydown\", handleEscapeKey);\n  }, [onClose, isOpen]);\n\n  return (\n    <DrawerContext.Provider value={{ theme, onClose, isOpen, id }}>\n      <div\n        aria-modal\n        aria-describedby={`drawer-dialog-${id}`}\n        role=\"dialog\"\n        tabIndex={-1}\n        data-testid=\"flowbite-drawer\"\n        className={twMerge(\n          theme.root.base,\n          theme.root.position[position][isOpen ? \"on\" : \"off\"],\n          edge && !isOpen && theme.root.edge,\n          className,\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n      {isOpen && backdrop && <div onClick={() => onClose()} className={theme.root.backdrop} />}\n    </DrawerContext.Provider>\n  );\n};\n\nDrawerComponent.displayName = \"Drawer\";\n\nexport const Drawer = Object.assign(DrawerComponent, {\n  Header: DrawerHeader,\n  Items: DrawerItems,\n});\n"],"names":["useId","mergeDeep","getTheme","useEffect","jsxs","DrawerContext","jsx","twMerge","DrawerHeader","DrawerItems"],"mappings":";;;;;;;;;;;AAUA,MAAM,eAAe,GAAG,CAAC;AACzB,EAAE,QAAQ,GAAG,IAAI;AACjB,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,IAAI,GAAG,KAAK;AACd,EAAE,QAAQ,GAAG,MAAM;AACnB,EAAE,OAAO;AACT,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK;AACtB,EAAE,KAAK,EAAE,WAAW,GAAG,EAAE;AACzB,EAAE,GAAG,KAAK;AACV,CAAC,KAAK;AACN,EAAE,MAAM,EAAE,GAAGA,WAAK,EAAE,CAAC;AACrB,EAAE,MAAM,KAAK,GAAGC,mBAAS,CAACC,cAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1D,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACvC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE;AACvD,QAAQ,OAAO,EAAE,CAAC;AAClB,OAAO;AACP,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1D,IAAI,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1E,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACxB,EAAE,uBAAuBC,eAAI,CAACC,2BAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;AACzG,oBAAoBC,cAAG;AACvB,MAAM,KAAK;AACX,MAAM;AACN,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,kBAAkB,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACjD,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,QAAQ,EAAE,CAAC,CAAC;AACpB,QAAQ,aAAa,EAAE,iBAAiB;AACxC,QAAQ,SAAS,EAAEC,qBAAO;AAC1B,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI;AACzB,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAC9D,UAAU,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI;AAC5C,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,GAAG,KAAK;AAChB,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK;AACL,IAAI,MAAM,IAAI,QAAQ,oBAAoBD,cAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClH,GAAG,EAAE,CAAC,CAAC;AACP,CAAC,CAAC;AACF,eAAe,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC3B,MAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;AACrD,EAAE,MAAM,EAAEE,yBAAY;AACtB,EAAE,KAAK,EAAEC,uBAAW;AACpB,CAAC;;;;"}