UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

59 lines (58 loc) 2.69 kB
/** * DevExpress HTML/JS Reporting (designer\internal\_translateHelper.js) * Version: 24.2.6 * Build date: Mar 18, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { $dx } from '@devexpress/analytics-core/analytics-internal'; import { Disposable } from '@devexpress/analytics-core/analytics-utils'; import { convertMapToKeyValuePair } from '../../common/types'; export class TranslateHelper extends Disposable { constructor() { super(...arguments); this._maxInterval = 1000; this._restoreDictionary = {}; this._timeouts = {}; } _getElement(name) { return $dx('.dx-designer .' + name)[0]; } dispose() { convertMapToKeyValuePair(this._timeouts).forEach(item => clearTimeout(item.Value)); super.dispose(); } move(elementClassName, sign = '-', transform = 'translateY', transition = '0.35s transform ease-in-out') { clearTimeout(this._timeouts[elementClassName]); const element = this._getElement(elementClassName); if (element) { const result = transform === 'translateY' ? element.clientHeight : element.clientWidth; const _transform = transform + '(' + sign + result + 'px)'; const currentTransition = element.style.transition || 'transform 0s ease 0s'; const currentVisible = element.style.visibility || 'visible'; const currentTransform = element.style.transform || 'none'; this._restoreDictionary[elementClassName] = (element) => { element.style.visibility = currentVisible; element.style.transform = currentTransform; element.style['-webkit-transform'] = currentTransform; this._timeouts[elementClassName] = setTimeout(() => { element.style.transition = currentTransition; }, this._maxInterval); }; element.style.transition = transition; element.style.transform = _transform; element.style['-webkit-transform'] = _transform; this._timeouts[elementClassName] = setTimeout(() => { element.style.visibility = 'hidden'; }, this._maxInterval); } } reset(elementClassName) { clearTimeout(this._timeouts[elementClassName]); const element = this._getElement(elementClassName); if (element && this._restoreDictionary[elementClassName]) { this._restoreDictionary[elementClassName](element); delete this._restoreDictionary[elementClassName]; } } }