You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 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.9.2 (2021-09-08)
*/
(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$1 = 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 = function (editor, enabledState) {
var onAction = function () {
return editor.execCommand('mceVisualBlocks');
};
editor.ui.registry.addToggleButton('visualblocks', {
icon: 'visualblocks',
tooltip: 'Show blocks',
onAction: onAction,
onSetup: toggleActiveState(editor, enabledState)
});
editor.ui.registry.addToggleMenuItem('visualblocks', {
text: 'Show blocks',
icon: 'visualblocks',
onAction: onAction,
onSetup: toggleActiveState(editor, enabledState)
});
};
function Plugin () {
global.add('visualblocks', function (editor, pluginUrl) {
var enabledState = Cell(false);
register$1(editor, pluginUrl, enabledState);
register(editor, enabledState);
setup(editor, pluginUrl, enabledState);
});
}
Plugin();
}());