@grafana/ui
Version:
Grafana Components Library
1 lines • 3.88 kB
Source Map (JSON)
{"version":3,"file":"SlideOutTransition.mjs","sources":["../../../../src/components/transitions/SlideOutTransition.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useRef } from 'react';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ntype Props = {\n children: React.ReactElement;\n visible: boolean;\n size: number;\n\n duration?: number;\n horizontal?: boolean;\n};\n\nexport function SlideOutTransition(props: Props) {\n const { visible, children, duration = 250, horizontal, size } = props;\n const styles = useStyles2(getStyles, duration, horizontal ? 'width' : 'height', size);\n const transitionRef = useRef(null);\n\n return (\n <CSSTransition\n in={visible}\n mountOnEnter={true}\n unmountOnExit={true}\n timeout={duration}\n classNames={styles}\n nodeRef={transitionRef}\n >\n {React.cloneElement(children, { ref: transitionRef })}\n </CSSTransition>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2, duration: number, measurement: 'width' | 'height', size: number) => ({\n enter: css({\n label: 'enter',\n [`${measurement}`]: 0,\n opacity: 0,\n }),\n enterActive: css({\n label: 'enterActive',\n [`${measurement}`]: `${size}px`,\n opacity: 1,\n [theme.transitions.handleMotion('no-preference')]: {\n transition: `opacity ${duration}ms ease-out, ${measurement} ${duration}ms ease-out`,\n },\n [theme.transitions.handleMotion('reduce')]: {\n transition: `opacity ${duration}ms ease-out`,\n },\n }),\n exit: css({\n label: 'exit',\n [`${measurement}`]: `${size}px`,\n opacity: 1,\n }),\n exitActive: css({\n label: 'exitActive',\n opacity: 0,\n [`${measurement}`]: 0,\n [theme.transitions.handleMotion('no-preference')]: {\n transition: `opacity ${duration}ms ease-out, ${measurement} ${duration}ms ease-out`,\n },\n [theme.transitions.handleMotion('reduce')]: {\n transition: `opacity ${duration}ms ease-out`,\n },\n }),\n});\n"],"names":[],"mappings":";;;;;;;;AAkBO,SAAS,mBAAmB,KAAA,EAAc;AAC/C,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,WAAW,GAAA,EAAK,UAAA,EAAY,MAAK,GAAI,KAAA;AAChE,EAAA,MAAM,SAAS,UAAA,CAAW,SAAA,EAAW,UAAU,UAAA,GAAa,OAAA,GAAU,UAAU,IAAI,CAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,OAAO,IAAI,CAAA;AAEjC,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,OAAA;AAAA,MACJ,YAAA,EAAc,IAAA;AAAA,MACd,aAAA,EAAe,IAAA;AAAA,MACf,OAAA,EAAS,QAAA;AAAA,MACT,UAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAS,aAAA;AAAA,MAER,gBAAM,YAAA,CAAa,QAAA,EAAU,EAAE,GAAA,EAAK,eAAe;AAAA;AAAA,GACtD;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAsB,QAAA,EAAkB,aAAiC,IAAA,MAAkB;AAAA,EAC5G,OAAO,GAAA,CAAI;AAAA,IACT,KAAA,EAAO,OAAA;AAAA,IACP,CAAC,CAAA,EAAG,WAAW,CAAA,CAAE,GAAG,CAAA;AAAA,IACpB,OAAA,EAAS;AAAA,GACV,CAAA;AAAA,EACD,aAAa,GAAA,CAAI;AAAA,IACf,KAAA,EAAO,aAAA;AAAA,IACP,CAAC,CAAA,EAAG,WAAW,CAAA,CAAE,GAAG,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,IAC3B,OAAA,EAAS,CAAA;AAAA,IACT,CAAC,KAAA,CAAM,WAAA,CAAY,YAAA,CAAa,eAAe,CAAC,GAAG;AAAA,MACjD,YAAY,CAAA,QAAA,EAAW,QAAQ,CAAA,aAAA,EAAgB,WAAW,IAAI,QAAQ,CAAA,WAAA;AAAA,KACxE;AAAA,IACA,CAAC,KAAA,CAAM,WAAA,CAAY,YAAA,CAAa,QAAQ,CAAC,GAAG;AAAA,MAC1C,UAAA,EAAY,WAAW,QAAQ,CAAA,WAAA;AAAA;AACjC,GACD,CAAA;AAAA,EACD,MAAM,GAAA,CAAI;AAAA,IACR,KAAA,EAAO,MAAA;AAAA,IACP,CAAC,CAAA,EAAG,WAAW,CAAA,CAAE,GAAG,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,IAC3B,OAAA,EAAS;AAAA,GACV,CAAA;AAAA,EACD,YAAY,GAAA,CAAI;AAAA,IACd,KAAA,EAAO,YAAA;AAAA,IACP,OAAA,EAAS,CAAA;AAAA,IACT,CAAC,CAAA,EAAG,WAAW,CAAA,CAAE,GAAG,CAAA;AAAA,IACpB,CAAC,KAAA,CAAM,WAAA,CAAY,YAAA,CAAa,eAAe,CAAC,GAAG;AAAA,MACjD,YAAY,CAAA,QAAA,EAAW,QAAQ,CAAA,aAAA,EAAgB,WAAW,IAAI,QAAQ,CAAA,WAAA;AAAA,KACxE;AAAA,IACA,CAAC,KAAA,CAAM,WAAA,CAAY,YAAA,CAAa,QAAQ,CAAC,GAAG;AAAA,MAC1C,UAAA,EAAY,WAAW,QAAQ,CAAA,WAAA;AAAA;AACjC,GACD;AACH,CAAA,CAAA;;;;"}