import * as Sentry from '@sentry/browser'; import { escape } from 'lodash'; import Vue from 'vue'; import { GlAlert } from '@gitlab/ui'; import { __ } from '~/locale'; import { spriteIcon } from './lib/utils/common_utils'; const FLASH_TYPES = { ALERT: 'alert', NOTICE: 'notice', SUCCESS: 'success', WARNING: 'warning', }; const VARIANT_SUCCESS = 'success'; const VARIANT_WARNING = 'warning'; const VARIANT_DANGER = 'danger'; const VARIANT_INFO = 'info'; const VARIANT_TIP = 'tip'; const TYPE_TO_VARIANT = { [FLASH_TYPES.ALERT]: VARIANT_DANGER, [FLASH_TYPES.NOTICE]: VARIANT_INFO, [FLASH_TYPES.SUCCESS]: VARIANT_SUCCESS, [FLASH_TYPES.WARNING]: VARIANT_WARNING, }; const FLASH_CLOSED_EVENT = 'flashClosed'; const getCloseEl = (flashEl) => { return flashEl.querySelector('.js-close-icon'); }; const hideFlash = (flashEl, fadeTransition = true) => { if (fadeTransition) { Object.assign(flashEl.style, { transition: 'opacity 0.15s', opacity: '0', }); } flashEl.addEventListener( 'transitionend', () => { flashEl.remove(); window.dispatchEvent(new Event('resize')); flashEl.dispatchEvent(new Event(FLASH_CLOSED_EVENT)); if (document.body.classList.contains('flash-shown')) document.body.classList.remove('flash-shown'); }, { once: true, passive: true, }, ); if (!fadeTransition) flashEl.dispatchEvent(new Event('transitionend')); }; const createAction = (config) => ` ${escape(config.title)} `; const createFlashEl = (message, type) => `