/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.js

https://bitbucket.org/carloskikea/helpet · JavaScript · 160 lines · 149 code · 11 blank · 0 comment · 10 complexity · 30f12597d4c87fec2a1ea7b29132815c MD5 · raw file

  1. (function () {
  2. var advlist = (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 applyListFormat = function (editor, listName, styleValue) {
  7. var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';
  8. editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue });
  9. };
  10. var $_2gx00q7vjfuviwh8 = { applyListFormat: applyListFormat };
  11. var register = function (editor) {
  12. editor.addCommand('ApplyUnorderedListStyle', function (ui, value) {
  13. $_2gx00q7vjfuviwh8.applyListFormat(editor, 'UL', value['list-style-type']);
  14. });
  15. editor.addCommand('ApplyOrderedListStyle', function (ui, value) {
  16. $_2gx00q7vjfuviwh8.applyListFormat(editor, 'OL', value['list-style-type']);
  17. });
  18. };
  19. var $_djjlld7ujfuviwh7 = { register: register };
  20. var getNumberStyles = function (editor) {
  21. var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman');
  22. return styles ? styles.split(/[ ,]/) : [];
  23. };
  24. var getBulletStyles = function (editor) {
  25. var styles = editor.getParam('advlist_bullet_styles', 'default,circle,disc,square');
  26. return styles ? styles.split(/[ ,]/) : [];
  27. };
  28. var $_24vhad7xjfuviwhc = {
  29. getNumberStyles: getNumberStyles,
  30. getBulletStyles: getBulletStyles
  31. };
  32. var isChildOfBody = function (editor, elm) {
  33. return editor.$.contains(editor.getBody(), elm);
  34. };
  35. var isTableCellNode = function (node) {
  36. return node && /^(TH|TD)$/.test(node.nodeName);
  37. };
  38. var isListNode = function (editor) {
  39. return function (node) {
  40. return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node);
  41. };
  42. };
  43. var getSelectedStyleType = function (editor) {
  44. var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');
  45. return editor.dom.getStyle(listElm, 'listStyleType') || '';
  46. };
  47. var $_6puoap7yjfuviwhd = {
  48. isTableCellNode: isTableCellNode,
  49. isListNode: isListNode,
  50. getSelectedStyleType: getSelectedStyleType
  51. };
  52. var styleValueToText = function (styleValue) {
  53. return styleValue.replace(/\-/g, ' ').replace(/\b\w/g, function (chr) {
  54. return chr.toUpperCase();
  55. });
  56. };
  57. var toMenuItems = function (styles) {
  58. return global$1.map(styles, function (styleValue) {
  59. var text = styleValueToText(styleValue);
  60. var data = styleValue === 'default' ? '' : styleValue;
  61. return {
  62. text: text,
  63. data: data
  64. };
  65. });
  66. };
  67. var $_dq1tfe7zjfuviwhe = { toMenuItems: toMenuItems };
  68. var findIndex = function (list, predicate) {
  69. for (var index = 0; index < list.length; index++) {
  70. var element = list[index];
  71. if (predicate(element)) {
  72. return index;
  73. }
  74. }
  75. return -1;
  76. };
  77. var listState = function (editor, listName) {
  78. return function (e) {
  79. var ctrl = e.control;
  80. editor.on('NodeChange', function (e) {
  81. var tableCellIndex = findIndex(e.parents, $_6puoap7yjfuviwhd.isTableCellNode);
  82. var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;
  83. var lists = global$1.grep(parents, $_6puoap7yjfuviwhd.isListNode(editor));
  84. ctrl.active(lists.length > 0 && lists[0].nodeName === listName);
  85. });
  86. };
  87. };
  88. var updateSelection = function (editor) {
  89. return function (e) {
  90. var listStyleType = $_6puoap7yjfuviwhd.getSelectedStyleType(editor);
  91. e.control.items().each(function (ctrl) {
  92. ctrl.active(ctrl.settings.data === listStyleType);
  93. });
  94. };
  95. };
  96. var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) {
  97. editor.addButton(id, {
  98. active: false,
  99. type: 'splitbutton',
  100. tooltip: tooltip,
  101. menu: $_dq1tfe7zjfuviwhe.toMenuItems(styles),
  102. onPostRender: listState(editor, nodeName),
  103. onshow: updateSelection(editor),
  104. onselect: function (e) {
  105. $_2gx00q7vjfuviwh8.applyListFormat(editor, nodeName, e.control.settings.data);
  106. },
  107. onclick: function () {
  108. editor.execCommand(cmd);
  109. }
  110. });
  111. };
  112. var addButton = function (editor, id, tooltip, cmd, nodeName, styles) {
  113. editor.addButton(id, {
  114. active: false,
  115. type: 'button',
  116. tooltip: tooltip,
  117. onPostRender: listState(editor, nodeName),
  118. onclick: function () {
  119. editor.execCommand(cmd);
  120. }
  121. });
  122. };
  123. var addControl = function (editor, id, tooltip, cmd, nodeName, styles) {
  124. if (styles.length > 0) {
  125. addSplitButton(editor, id, tooltip, cmd, nodeName, styles);
  126. } else {
  127. addButton(editor, id, tooltip, cmd, nodeName, styles);
  128. }
  129. };
  130. var register$1 = function (editor) {
  131. addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', $_24vhad7xjfuviwhc.getNumberStyles(editor));
  132. addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', $_24vhad7xjfuviwhc.getBulletStyles(editor));
  133. };
  134. var $_esepsw7wjfuviwha = { register: register$1 };
  135. global.add('advlist', function (editor) {
  136. var hasPlugin = function (editor, plugin) {
  137. var plugins = editor.settings.plugins ? editor.settings.plugins : '';
  138. return global$1.inArray(plugins.split(/[ ,]/), plugin) !== -1;
  139. };
  140. if (hasPlugin(editor, 'lists')) {
  141. $_esepsw7wjfuviwha.register(editor);
  142. $_djjlld7ujfuviwh7.register(editor);
  143. }
  144. });
  145. function Plugin () {
  146. }
  147. return Plugin;
  148. }());
  149. })();