plugin.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * Copyright (c) Tiny Technologies, Inc. All rights reserved.
  3. * Licensed under the LGPL or a commercial license.
  4. * For LGPL see License.txt in the project root for license information.
  5. * For commercial licenses see https://www.tiny.cloud/
  6. *
  7. * Version: 5.0.7 (2019-06-05)
  8. */
  9. (function () {
  10. var visualblocks = (function () {
  11. 'use strict';
  12. var Cell = function (initial) {
  13. var value = initial;
  14. var get = function () {
  15. return value;
  16. };
  17. var set = function (v) {
  18. value = v;
  19. };
  20. var clone = function () {
  21. return Cell(get());
  22. };
  23. return {
  24. get: get,
  25. set: set,
  26. clone: clone
  27. };
  28. };
  29. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  30. var fireVisualBlocks = function (editor, state) {
  31. editor.fire('VisualBlocks', { state: state });
  32. };
  33. var Events = { fireVisualBlocks: fireVisualBlocks };
  34. var toggleVisualBlocks = function (editor, pluginUrl, enabledState) {
  35. var dom = editor.dom;
  36. dom.toggleClass(editor.getBody(), 'mce-visualblocks');
  37. enabledState.set(!enabledState.get());
  38. Events.fireVisualBlocks(editor, enabledState.get());
  39. };
  40. var VisualBlocks = { toggleVisualBlocks: toggleVisualBlocks };
  41. var register = function (editor, pluginUrl, enabledState) {
  42. editor.addCommand('mceVisualBlocks', function () {
  43. VisualBlocks.toggleVisualBlocks(editor, pluginUrl, enabledState);
  44. });
  45. };
  46. var Commands = { register: register };
  47. var isEnabledByDefault = function (editor) {
  48. return editor.getParam('visualblocks_default_state', false, 'boolean');
  49. };
  50. var Settings = { isEnabledByDefault: isEnabledByDefault };
  51. var setup = function (editor, pluginUrl, enabledState) {
  52. editor.on('PreviewFormats AfterPreviewFormats', function (e) {
  53. if (enabledState.get()) {
  54. editor.dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type === 'afterpreviewformats');
  55. }
  56. });
  57. editor.on('init', function () {
  58. if (Settings.isEnabledByDefault(editor)) {
  59. VisualBlocks.toggleVisualBlocks(editor, pluginUrl, enabledState);
  60. }
  61. });
  62. editor.on('remove', function () {
  63. editor.dom.removeClass(editor.getBody(), 'mce-visualblocks');
  64. });
  65. };
  66. var Bindings = { setup: setup };
  67. var toggleActiveState = function (editor, enabledState) {
  68. return function (api) {
  69. api.setActive(enabledState.get());
  70. var editorEventCallback = function (e) {
  71. return api.setActive(e.state);
  72. };
  73. editor.on('VisualBlocks', editorEventCallback);
  74. return function () {
  75. return editor.off('VisualBlocks', editorEventCallback);
  76. };
  77. };
  78. };
  79. var register$1 = function (editor, enabledState) {
  80. editor.ui.registry.addToggleButton('visualblocks', {
  81. icon: 'paragraph',
  82. tooltip: 'Show blocks',
  83. onAction: function () {
  84. return editor.execCommand('mceVisualBlocks');
  85. },
  86. onSetup: toggleActiveState(editor, enabledState)
  87. });
  88. editor.ui.registry.addToggleMenuItem('visualblocks', {
  89. text: 'Show blocks',
  90. onAction: function () {
  91. return editor.execCommand('mceVisualBlocks');
  92. },
  93. onSetup: toggleActiveState(editor, enabledState)
  94. });
  95. };
  96. var Buttons = { register: register$1 };
  97. global.add('visualblocks', function (editor, pluginUrl) {
  98. var enabledState = Cell(false);
  99. Commands.register(editor, pluginUrl, enabledState);
  100. Buttons.register(editor, enabledState);
  101. Bindings.setup(editor, pluginUrl, enabledState);
  102. });
  103. function Plugin () {
  104. }
  105. return Plugin;
  106. }());
  107. })();