{"version":3,"file":"SlidingPanel.mjs","sources":["../../src/slidingPanel/SlidingPanel.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { Position } from '../common';\n\nexport const EXIT_ANIMATION = 350;\n\nexport interface SlidingPanelProps extends Pick<\n  React.ComponentPropsWithRef<'div'>,\n  'ref' | 'className' | 'children'\n> {\n  position?: `${Position.TOP | Position.RIGHT | Position.BOTTOM | Position.LEFT}`;\n  open: boolean;\n  showSlidingPanelBorder?: boolean;\n  slidingPanelPositionFixed?: boolean;\n  testId?: string;\n}\n\nconst SlidingPanel = forwardRef(\n  (\n    {\n      position = 'left',\n      open,\n      showSlidingPanelBorder,\n      slidingPanelPositionFixed,\n      className,\n      children,\n      testId,\n      ...rest\n    }: Omit<SlidingPanelProps, 'ref'>,\n    reference: React.ForwardedRef<HTMLDivElement | null>,\n  ) => {\n    const localReference = useRef<HTMLDivElement>(null as never);\n    useImperativeHandle(reference, () => localReference.current, []);\n\n    return (\n      <CSSTransition\n        {...rest}\n        key={`sliding-panel--open-${position}`}\n        nodeRef={localReference}\n        in={open}\n        // Wait for animation to finish before unmount.\n        timeout={{ enter: 0, exit: EXIT_ANIMATION }}\n        classNames=\"sliding-panel\"\n        appear\n        unmountOnExit\n      >\n        <div\n          ref={localReference}\n          data-testid={testId}\n          className={clsx(\n            'sliding-panel',\n            `sliding-panel--open-${position}`,\n            showSlidingPanelBorder && `sliding-panel--border-${position}`,\n            slidingPanelPositionFixed && 'sliding-panel--fixed',\n            className,\n          )}\n        >\n          {children}\n        </div>\n      </CSSTransition>\n    );\n  },\n);\n\nexport default SlidingPanel;\n"],"names":["EXIT_ANIMATION","SlidingPanel","forwardRef","position","open","showSlidingPanelBorder","slidingPanelPositionFixed","className","children","testId","rest","reference","localReference","useRef","useImperativeHandle","current","_createElement","CSSTransition","key","nodeRef","in","timeout","enter","exit","classNames","appear","unmountOnExit","_jsx","ref","clsx"],"mappings":";;;;;AAMO,MAAMA,cAAc,GAAG;AAa9B,MAAMC,YAAY,gBAAGC,UAAU,CAC7B,CACE;AACEC,EAAAA,QAAQ,GAAG,MAAM;EACjBC,IAAI;EACJC,sBAAsB;EACtBC,yBAAyB;EACzBC,SAAS;EACTC,QAAQ;EACRC,MAAM;EACN,GAAGC;AAAI,CACwB,EACjCC,SAAoD,KAClD;AACF,EAAA,MAAMC,cAAc,GAAGC,MAAM,CAAiB,IAAa,CAAC;EAC5DC,mBAAmB,CAACH,SAAS,EAAE,MAAMC,cAAc,CAACG,OAAO,EAAE,EAAE,CAAC;EAEhE,oBACEC,aAAA,CAACC,aAAa,EAAA;AAAA,IAAA,GACRP,IAAI;IACRQ,GAAG,EAAE,CAAA,oBAAA,EAAuBf,QAAQ,CAAA,CAAG;AACvCgB,IAAAA,OAAO,EAAEP,cAAe;AACxBQ,IAAAA,EAAE,EAAEhB;AACJ;AAAA;AACAiB,IAAAA,OAAO,EAAE;AAAEC,MAAAA,KAAK,EAAE,CAAC;AAAEC,MAAAA,IAAI,EAAEvB;KAAiB;AAC5CwB,IAAAA,UAAU,EAAC,eAAe;IAC1BC,MAAM,EAAA,IAAA;IACNC,aAAa,EAAA;AAAA,GAAA,eAEbC,GAAA,CAAA,KAAA,EAAA;AACEC,IAAAA,GAAG,EAAEhB,cAAe;AACpB,IAAA,aAAA,EAAaH,MAAO;IACpBF,SAAS,EAAEsB,IAAI,CACb,eAAe,EACf,CAAA,oBAAA,EAAuB1B,QAAQ,EAAE,EACjCE,sBAAsB,IAAI,CAAA,sBAAA,EAAyBF,QAAQ,EAAE,EAC7DG,yBAAyB,IAAI,sBAAsB,EACnDC,SAAS,CACT;AAAAC,IAAAA,QAAA,EAEDA;AAAQ,GACN,CACQ,CAAC;AAEpB,CAAC;;;;"}