Spaces:
Running
Running
| import forEach from 'tui-code-snippet/collection/forEach'; | |
| import Submenu from '@/ui/submenuBase'; | |
| import templateHtml from '@/ui/template/submenu/flip'; | |
| import { assignmentForDestroy } from '@/util'; | |
| /** | |
| * Flip ui class | |
| * @class | |
| * @ignore | |
| */ | |
| class Flip extends Submenu { | |
| constructor(subMenuElement, { locale, makeSvgIcon, menuBarPosition, usageStatistics }) { | |
| super(subMenuElement, { | |
| locale, | |
| name: 'flip', | |
| makeSvgIcon, | |
| menuBarPosition, | |
| templateHtml, | |
| usageStatistics, | |
| }); | |
| this.flipStatus = false; | |
| this._els = { | |
| flipButton: this.selector('.tie-flip-button'), | |
| }; | |
| } | |
| /** | |
| * Destroys the instance. | |
| */ | |
| destroy() { | |
| this._removeEvent(); | |
| assignmentForDestroy(this); | |
| } | |
| /** | |
| * Add event for flip | |
| * @param {Object} actions - actions for flip | |
| * @param {Function} actions.flip - flip action | |
| */ | |
| addEvent(actions) { | |
| this.eventHandler.changeFlip = this._changeFlip.bind(this); | |
| this._actions = actions; | |
| this._els.flipButton.addEventListener('click', this.eventHandler.changeFlip); | |
| } | |
| /** | |
| * Remove event | |
| * @private | |
| */ | |
| _removeEvent() { | |
| this._els.flipButton.removeEventListener('click', this.eventHandler.changeFlip); | |
| } | |
| /** | |
| * change Flip status | |
| * @param {object} event - change event | |
| * @private | |
| */ | |
| _changeFlip(event) { | |
| const button = event.target.closest('.tui-image-editor-button'); | |
| if (button) { | |
| const flipType = this.getButtonType(button, ['flipX', 'flipY', 'resetFlip']); | |
| if (!this.flipStatus && flipType === 'resetFlip') { | |
| return; | |
| } | |
| this._actions.flip(flipType).then((flipStatus) => { | |
| const flipClassList = this._els.flipButton.classList; | |
| this.flipStatus = false; | |
| flipClassList.remove('resetFlip'); | |
| forEach(['flipX', 'flipY'], (type) => { | |
| flipClassList.remove(type); | |
| if (flipStatus[type]) { | |
| flipClassList.add(type); | |
| flipClassList.add('resetFlip'); | |
| this.flipStatus = true; | |
| } | |
| }); | |
| }); | |
| } | |
| } | |
| } | |
| export default Flip; | |