plugin.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. (function () {
  2. var directionality = (function () {
  3. 'use strict';
  4. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  5. var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
  6. var setDir = function (editor, dir) {
  7. var dom = editor.dom;
  8. var curDir;
  9. var blocks = editor.selection.getSelectedBlocks();
  10. if (blocks.length) {
  11. curDir = dom.getAttrib(blocks[0], 'dir');
  12. global$1.each(blocks, function (block) {
  13. if (!dom.getParent(block.parentNode, '*[dir="' + dir + '"]', dom.getRoot())) {
  14. dom.setAttrib(block, 'dir', curDir !== dir ? dir : null);
  15. }
  16. });
  17. editor.nodeChanged();
  18. }
  19. };
  20. var Direction = { setDir: setDir };
  21. var register = function (editor) {
  22. editor.addCommand('mceDirectionLTR', function () {
  23. Direction.setDir(editor, 'ltr');
  24. });
  25. editor.addCommand('mceDirectionRTL', function () {
  26. Direction.setDir(editor, 'rtl');
  27. });
  28. };
  29. var Commands = { register: register };
  30. var generateSelector = function (dir) {
  31. var selector = [];
  32. global$1.each('h1 h2 h3 h4 h5 h6 div p'.split(' '), function (name) {
  33. selector.push(name + '[dir=' + dir + ']');
  34. });
  35. return selector.join(',');
  36. };
  37. var register$1 = function (editor) {
  38. editor.addButton('ltr', {
  39. title: 'Left to right',
  40. cmd: 'mceDirectionLTR',
  41. stateSelector: generateSelector('ltr')
  42. });
  43. editor.addButton('rtl', {
  44. title: 'Right to left',
  45. cmd: 'mceDirectionRTL',
  46. stateSelector: generateSelector('rtl')
  47. });
  48. };
  49. var Buttons = { register: register$1 };
  50. global.add('directionality', function (editor) {
  51. Commands.register(editor);
  52. Buttons.register(editor);
  53. });
  54. function Plugin () {
  55. }
  56. return Plugin;
  57. }());
  58. })();