105 lines
3.1 KiB
JavaScript
105 lines
3.1 KiB
JavaScript
/**
|
|
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
|
* Licensed under the LGPL or a commercial license.
|
|
* For LGPL see License.txt in the project root for license information.
|
|
* For commercial licenses see https://www.tiny.cloud/
|
|
*
|
|
* Version: 5.7.0 (2021-02-10)
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
|
|
var Cell = function (initial) {
|
|
var value = initial;
|
|
var get = function () {
|
|
return value;
|
|
};
|
|
var set = function (v) {
|
|
value = v;
|
|
};
|
|
return {
|
|
get: get,
|
|
set: set
|
|
};
|
|
};
|
|
|
|
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
|
|
|
var fireVisualBlocks = function (editor, state) {
|
|
editor.fire('VisualBlocks', { state: state });
|
|
};
|
|
|
|
var toggleVisualBlocks = function (editor, pluginUrl, enabledState) {
|
|
var dom = editor.dom;
|
|
dom.toggleClass(editor.getBody(), 'mce-visualblocks');
|
|
enabledState.set(!enabledState.get());
|
|
fireVisualBlocks(editor, enabledState.get());
|
|
};
|
|
|
|
var register = function (editor, pluginUrl, enabledState) {
|
|
editor.addCommand('mceVisualBlocks', function () {
|
|
toggleVisualBlocks(editor, pluginUrl, enabledState);
|
|
});
|
|
};
|
|
|
|
var isEnabledByDefault = function (editor) {
|
|
return editor.getParam('visualblocks_default_state', false, 'boolean');
|
|
};
|
|
|
|
var setup = function (editor, pluginUrl, enabledState) {
|
|
editor.on('PreviewFormats AfterPreviewFormats', function (e) {
|
|
if (enabledState.get()) {
|
|
editor.dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type === 'afterpreviewformats');
|
|
}
|
|
});
|
|
editor.on('init', function () {
|
|
if (isEnabledByDefault(editor)) {
|
|
toggleVisualBlocks(editor, pluginUrl, enabledState);
|
|
}
|
|
});
|
|
};
|
|
|
|
var toggleActiveState = function (editor, enabledState) {
|
|
return function (api) {
|
|
api.setActive(enabledState.get());
|
|
var editorEventCallback = function (e) {
|
|
return api.setActive(e.state);
|
|
};
|
|
editor.on('VisualBlocks', editorEventCallback);
|
|
return function () {
|
|
return editor.off('VisualBlocks', editorEventCallback);
|
|
};
|
|
};
|
|
};
|
|
var register$1 = function (editor, enabledState) {
|
|
editor.ui.registry.addToggleButton('visualblocks', {
|
|
icon: 'visualblocks',
|
|
tooltip: 'Show blocks',
|
|
onAction: function () {
|
|
return editor.execCommand('mceVisualBlocks');
|
|
},
|
|
onSetup: toggleActiveState(editor, enabledState)
|
|
});
|
|
editor.ui.registry.addToggleMenuItem('visualblocks', {
|
|
text: 'Show blocks',
|
|
icon: 'visualblocks',
|
|
onAction: function () {
|
|
return editor.execCommand('mceVisualBlocks');
|
|
},
|
|
onSetup: toggleActiveState(editor, enabledState)
|
|
});
|
|
};
|
|
|
|
function Plugin () {
|
|
global.add('visualblocks', function (editor, pluginUrl) {
|
|
var enabledState = Cell(false);
|
|
register(editor, pluginUrl, enabledState);
|
|
register$1(editor, enabledState);
|
|
setup(editor, pluginUrl, enabledState);
|
|
});
|
|
}
|
|
|
|
Plugin();
|
|
|
|
}());
|