{"version":3,"file":"LoadingIndicator.cjs","sources":["../../../../src/components/PanelChrome/LoadingIndicator.tsx"],"sourcesContent":["import { css, cx, keyframes } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\n/**\n * @internal\n */\nexport type LoadingIndicatorProps = {\n  loading: boolean;\n  onCancel: () => void;\n};\n\n/**\n * @internal\n */\nexport const LoadingIndicator = ({ onCancel, loading }: LoadingIndicatorProps) => {\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const styles = useStyles2(getStyles);\n\n  if (!loading) {\n    return null;\n  }\n\n  return (\n    <Tooltip content={t('grafana-ui.panel-chrome.tooltip-cancel-loading', 'Cancel query')}>\n      <Icon\n        className={cx(styles.spin, { [styles.clickable]: !!onCancel })}\n        name={prefersReducedMotion ? 'hourglass' : 'sync'}\n        size=\"sm\"\n        onClick={onCancel}\n        data-testid={selectors.components.LoadingIndicator.icon}\n      />\n    </Tooltip>\n  );\n};\n\nconst spin = keyframes({\n  '0%': {\n    transform: 'rotate(0deg) scaleX(-1)', // scaleX flips the `sync` icon so arrows point the correct way\n  },\n  '100%': {\n    transform: 'rotate(359deg) scaleX(-1)',\n  },\n});\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    clickable: css({\n      cursor: 'pointer',\n    }),\n    spin: css({\n      [theme.transitions.handleMotion('no-preference')]: {\n        animation: `${spin} 3s linear infinite`,\n      },\n    }),\n  };\n};\n"],"names":["useStyles2","Tooltip","t","jsx","Icon","cx","selectors","keyframes","css"],"mappings":";;;;;;;;;;;;;AAqBO,MAAM,gBAAA,GAAmB,CAAC,EAAE,QAAA,EAAU,SAAQ,KAA6B;AAChF,EAAA,MAAM,oBAAA,GAAuB,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AACnF,EAAA,MAAM,MAAA,GAASA,wBAAW,SAAS,CAAA;AAEnC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,sCACGC,eAAA,EAAA,EAAQ,OAAA,EAASC,MAAA,CAAE,gDAAA,EAAkD,cAAc,CAAA,EAClF,QAAA,kBAAAC,cAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,MAAA,CAAG,MAAA,CAAO,IAAA,EAAM,EAAE,CAAC,MAAA,CAAO,SAAS,GAAG,CAAC,CAAC,QAAA,EAAU,CAAA;AAAA,MAC7D,IAAA,EAAM,uBAAuB,WAAA,GAAc,MAAA;AAAA,MAC3C,IAAA,EAAK,IAAA;AAAA,MACL,OAAA,EAAS,QAAA;AAAA,MACT,aAAA,EAAaC,sBAAA,CAAU,UAAA,CAAW,gBAAA,CAAiB;AAAA;AAAA,GACrD,EACF,CAAA;AAEJ;AAEA,MAAM,OAAOC,aAAA,CAAU;AAAA,EACrB,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW;AAAA;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;AAED,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,EAAA,OAAO;AAAA,IACL,WAAWC,OAAA,CAAI;AAAA,MACb,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,MAAMA,OAAA,CAAI;AAAA,MACR,CAAC,KAAA,CAAM,WAAA,CAAY,YAAA,CAAa,eAAe,CAAC,GAAG;AAAA,QACjD,SAAA,EAAW,GAAG,IAAI,CAAA,mBAAA;AAAA;AACpB,KACD;AAAA,GACH;AACF,CAAA;;;;"}