UNPKG

@print-one/grapesjs

Version:

Free and Open Source Web Builder Framework

87 lines (73 loc) 2.56 kB
import { $ } from '../../common'; import { CommandObject } from './CommandAbstract'; export default { run(editor, sender) { this.sender = sender; if (!this.$cnt) { const config = editor.getConfig(); const { Panels, DeviceManager, SelectorManager, StyleManager } = editor; const trgEvCnt = 'change:appendContent'; const $cnt = $('<div></div>'); const $cntInner = $('<div></div>'); const $cntSlm = $('<div></div>'); const $cntSm = $('<div></div>'); this.$cnt = $cnt; this.$cntInner = $cntInner; $cntInner.append($cntSlm); $cntInner.append($cntSm); $cnt.append($cntInner); // Device Manager if (DeviceManager && config.showDevices) { const devicePanel = Panels.addPanel({ id: 'devices-c' }); const dvEl = DeviceManager.render(); devicePanel.set('appendContent', dvEl).trigger(trgEvCnt); } // Selector Manager container const slmConfig = SelectorManager.getConfig(); if (slmConfig.custom) { SelectorManager.__trgCustom({ container: $cntSlm.get(0) }); } else if (!slmConfig.appendTo) { $cntSlm.append(SelectorManager.render([])); } // Style Manager this.sm = StyleManager; const smConfig = StyleManager.getConfig(); const pfx = smConfig.stylePrefix; this.$header = $(`<div class="${pfx}header">${editor.t('styleManager.empty')}</div>`); $cnt.append(this.$header); if (smConfig.custom) { StyleManager.__trgCustom({ container: $cntSm.get(0) }); } else if (!smConfig.appendTo) { $cntSm.append(StyleManager.render()); } // Create panel if not exists const pnCnt = 'views-container'; const pnl = Panels.getPanel(pnCnt) || Panels.addPanel({ id: pnCnt }); // Add all containers to the panel pnl.set('appendContent', $cnt).trigger(trgEvCnt); // Toggle Style Manager on target selection const em = editor.getModel(); this.listenTo(em, StyleManager.events.target, this.toggleSm); } this.toggleSm(); }, /** * Toggle Style Manager visibility * @private */ toggleSm() { const { sender, sm, $cntInner, $header } = this; if ((sender && sender.get && !sender.get('active')) || !sm) return; if (sm.getSelected()) { $cntInner?.show(); $header?.hide(); } else { $cntInner?.hide(); $header?.show(); } }, stop() { this.$cntInner?.hide(); this.$header?.hide(); }, } as CommandObject<{}, { [k: string]: any }>;