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 = $('
'); const $cntInner = $('
'); const $cntSlm = $('
'); const $cntSm = $('
'); 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 = $(`
${editor.t('styleManager.empty')}
`); $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 }>;