wp/wp-includes/js/tinymce/plugins/lists/plugin.js
changeset 7 cf61fcea0001
parent 5 5e2f62d02dcd
child 9 177826044cd9
equal deleted inserted replaced
6:490d5cc509ed 7:cf61fcea0001
     1 /**
     1 (function () {
     2  * plugin.js
     2 var lists = (function () {
     3  *
     3   'use strict';
     4  * Copyright, Moxiecode Systems AB
     4 
     5  * Released under LGPL License.
     5   var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
     6  *
     6 
     7  * License: http://www.tinymce.com/license
     7   var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
     8  * Contributing: http://www.tinymce.com/contributing
     8 
     9  */
     9   var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
    10 
    10 
    11 /*global tinymce:true */
    11   var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');
    12 /*eslint consistent-this:0 */
    12 
    13 
    13   var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');
    14 tinymce.PluginManager.add('lists', function(editor) {
    14 
    15 	var self = this;
    15   var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');
    16 
    16 
    17 	function isListNode(node) {
    17   var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
    18 		return node && (/^(OL|UL|DL)$/).test(node.nodeName);
    18 
    19 	}
    19   var isTextNode = function (node) {
    20 
    20     return node && node.nodeType === 3;
    21 	function isFirstChild(node) {
    21   };
    22 		return node.parentNode.firstChild == node;
    22   var isListNode = function (node) {
    23 	}
    23     return node && /^(OL|UL|DL)$/.test(node.nodeName);
    24 
    24   };
    25 	function isLastChild(node) {
    25   var isListItemNode = function (node) {
    26 		return node.parentNode.lastChild == node;
    26     return node && /^(LI|DT|DD)$/.test(node.nodeName);
    27 	}
    27   };
    28 
    28   var isTableCellNode = function (node) {
    29 	function isTextBlock(node) {
    29     return node && /^(TH|TD)$/.test(node.nodeName);
    30 		return node && !!editor.schema.getTextBlockElements()[node.nodeName];
    30   };
    31 	}
    31   var isBr = function (node) {
    32 
    32     return node && node.nodeName === 'BR';
    33 	editor.on('init', function() {
    33   };
    34 		var dom = editor.dom, selection = editor.selection;
    34   var isFirstChild = function (node) {
    35 
    35     return node.parentNode.firstChild === node;
    36 		/**
    36   };
    37 		 * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with
    37   var isLastChild = function (node) {
    38 		 * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans
    38     return node.parentNode.lastChild === node;
    39 		 * added to them since they can be restored after a dom operation.
    39   };
    40 		 *
    40   var isTextBlock = function (editor, node) {
    41 		 * So this: <p><b>|</b><b>|</b></p>
    41     return node && !!editor.schema.getTextBlockElements()[node.nodeName];
    42 		 * becomes: <p><b><span data-mce-type="bookmark">|</span></b><b data-mce-type="bookmark">|</span></b></p>
    42   };
    43 		 *
    43   var isBlock = function (node, blockElements) {
    44 		 * @param  {DOMRange} rng DOM Range to get bookmark on.
    44     return node && node.nodeName in blockElements;
    45 		 * @return {Object} Bookmark object.
    45   };
    46 		 */
    46   var isBogusBr = function (dom, node) {
    47 		function createBookmark(rng) {
    47     if (!isBr(node)) {
    48 			var bookmark = {};
    48       return false;
    49 
    49     }
    50 			function setupEndPoint(start) {
    50     if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {
    51 				var offsetNode, container, offset;
    51       return true;
    52 
    52     }
    53 				container = rng[start ? 'startContainer' : 'endContainer'];
    53     return false;
    54 				offset = rng[start ? 'startOffset' : 'endOffset'];
    54   };
    55 
    55   var isEmpty = function (dom, elm, keepBookmarks) {
    56 				if (container.nodeType == 1) {
    56     var empty = dom.isEmpty(elm);
    57 					offsetNode = dom.create('span', {'data-mce-type': 'bookmark'});
    57     if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {
    58 
    58       return false;
    59 					if (container.hasChildNodes()) {
    59     }
    60 						offset = Math.min(offset, container.childNodes.length - 1);
    60     return empty;
    61 
    61   };
    62 						if (start) {
    62   var isChildOfBody = function (dom, elm) {
    63 							container.insertBefore(offsetNode, container.childNodes[offset]);
    63     return dom.isChildOf(elm, dom.getRoot());
    64 						} else {
    64   };
    65 							dom.insertAfter(offsetNode, container.childNodes[offset]);
    65   var $_okk1ogljjgweckx = {
    66 						}
    66     isTextNode: isTextNode,
    67 					} else {
    67     isListNode: isListNode,
    68 						container.appendChild(offsetNode);
    68     isListItemNode: isListItemNode,
    69 					}
    69     isTableCellNode: isTableCellNode,
    70 
    70     isBr: isBr,
    71 					container = offsetNode;
    71     isFirstChild: isFirstChild,
    72 					offset = 0;
    72     isLastChild: isLastChild,
    73 				}
    73     isTextBlock: isTextBlock,
    74 
    74     isBlock: isBlock,
    75 				bookmark[start ? 'startContainer' : 'endContainer'] = container;
    75     isBogusBr: isBogusBr,
    76 				bookmark[start ? 'startOffset' : 'endOffset'] = offset;
    76     isEmpty: isEmpty,
    77 			}
    77     isChildOfBody: isChildOfBody
    78 
    78   };
    79 			setupEndPoint(true);
    79 
    80 
    80   var getNormalizedEndPoint = function (container, offset) {
    81 			if (!rng.collapsed) {
    81     var node = global$1.getNode(container, offset);
    82 				setupEndPoint();
    82     if ($_okk1ogljjgweckx.isListItemNode(container) && $_okk1ogljjgweckx.isTextNode(node)) {
    83 			}
    83       var textNodeOffset = offset >= container.childNodes.length ? node.data.length : 0;
    84 
    84       return {
    85 			return bookmark;
    85         container: node,
    86 		}
    86         offset: textNodeOffset
    87 
    87       };
    88 		/**
    88     }
    89 		 * Moves the selection to the current bookmark and removes any selection container wrappers.
    89     return {
    90 		 *
    90       container: container,
    91 		 * @param {Object} bookmark Bookmark object to move selection to.
    91       offset: offset
    92 		 */
    92     };
    93 		function moveToBookmark(bookmark) {
    93   };
    94 			function restoreEndPoint(start) {
    94   var normalizeRange = function (rng) {
    95 				var container, offset, node;
    95     var outRng = rng.cloneRange();
    96 
    96     var rangeStart = getNormalizedEndPoint(rng.startContainer, rng.startOffset);
    97 				function nodeIndex(container) {
    97     outRng.setStart(rangeStart.container, rangeStart.offset);
    98 					var node = container.parentNode.firstChild, idx = 0;
    98     var rangeEnd = getNormalizedEndPoint(rng.endContainer, rng.endOffset);
    99 
    99     outRng.setEnd(rangeEnd.container, rangeEnd.offset);
   100 					while (node) {
   100     return outRng;
   101 						if (node == container) {
   101   };
   102 							return idx;
   102   var $_a9cyhvgkjjgweckv = {
   103 						}
   103     getNormalizedEndPoint: getNormalizedEndPoint,
   104 
   104     normalizeRange: normalizeRange
   105 						// Skip data-mce-type=bookmark nodes
   105   };
   106 						if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') {
   106 
   107 							idx++;
   107   var DOM = global$6.DOM;
   108 						}
   108   var createBookmark = function (rng) {
   109 
   109     var bookmark = {};
   110 						node = node.nextSibling;
   110     var setupEndPoint = function (start) {
   111 					}
   111       var offsetNode, container, offset;
   112 
   112       container = rng[start ? 'startContainer' : 'endContainer'];
   113 					return -1;
   113       offset = rng[start ? 'startOffset' : 'endOffset'];
   114 				}
   114       if (container.nodeType === 1) {
   115 
   115         offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });
   116 				container = node = bookmark[start ? 'startContainer' : 'endContainer'];
   116         if (container.hasChildNodes()) {
   117 				offset = bookmark[start ? 'startOffset' : 'endOffset'];
   117           offset = Math.min(offset, container.childNodes.length - 1);
   118 
   118           if (start) {
   119 				if (!container) {
   119             container.insertBefore(offsetNode, container.childNodes[offset]);
   120 					return;
   120           } else {
   121 				}
   121             DOM.insertAfter(offsetNode, container.childNodes[offset]);
   122 
   122           }
   123 				if (container.nodeType == 1) {
   123         } else {
   124 					offset = nodeIndex(container);
   124           container.appendChild(offsetNode);
   125 					container = container.parentNode;
   125         }
   126 					dom.remove(node);
   126         container = offsetNode;
   127 				}
   127         offset = 0;
   128 
   128       }
   129 				bookmark[start ? 'startContainer' : 'endContainer'] = container;
   129       bookmark[start ? 'startContainer' : 'endContainer'] = container;
   130 				bookmark[start ? 'startOffset' : 'endOffset'] = offset;
   130       bookmark[start ? 'startOffset' : 'endOffset'] = offset;
   131 			}
   131     };
   132 
   132     setupEndPoint(true);
   133 			restoreEndPoint(true);
   133     if (!rng.collapsed) {
   134 			restoreEndPoint();
   134       setupEndPoint();
   135 
   135     }
   136 			var rng = dom.createRng();
   136     return bookmark;
   137 
   137   };
   138 			rng.setStart(bookmark.startContainer, bookmark.startOffset);
   138   var resolveBookmark = function (bookmark) {
   139 
   139     function restoreEndPoint(start) {
   140 			if (bookmark.endContainer) {
   140       var container, offset, node;
   141 				rng.setEnd(bookmark.endContainer, bookmark.endOffset);
   141       var nodeIndex = function (container) {
   142 			}
   142         var node = container.parentNode.firstChild, idx = 0;
   143 
   143         while (node) {
   144 			selection.setRng(rng);
   144           if (node === container) {
   145 		}
   145             return idx;
   146 
   146           }
   147 		function createNewTextBlock(contentNode, blockName) {
   147           if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {
   148 			var node, textBlock, fragment = dom.createFragment(), hasContentNode;
   148             idx++;
   149 			var blockElements = editor.schema.getBlockElements();
   149           }
   150 
   150           node = node.nextSibling;
   151 			if (editor.settings.forced_root_block) {
   151         }
   152 				blockName = blockName || editor.settings.forced_root_block;
   152         return -1;
   153 			}
   153       };
   154 
   154       container = node = bookmark[start ? 'startContainer' : 'endContainer'];
   155 			if (blockName) {
   155       offset = bookmark[start ? 'startOffset' : 'endOffset'];
   156 				textBlock = dom.create(blockName);
   156       if (!container) {
   157 
   157         return;
   158 				if (textBlock.tagName === editor.settings.forced_root_block) {
   158       }
   159 					dom.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
   159       if (container.nodeType === 1) {
   160 				}
   160         offset = nodeIndex(container);
   161 
   161         container = container.parentNode;
   162 				fragment.appendChild(textBlock);
   162         DOM.remove(node);
   163 			}
   163         if (!container.hasChildNodes() && DOM.isBlock(container)) {
   164 
   164           container.appendChild(DOM.create('br'));
   165 			if (contentNode) {
   165         }
   166 				while ((node = contentNode.firstChild)) {
   166       }
   167 					var nodeName = node.nodeName;
   167       bookmark[start ? 'startContainer' : 'endContainer'] = container;
   168 
   168       bookmark[start ? 'startOffset' : 'endOffset'] = offset;
   169 					if (!hasContentNode && (nodeName != 'SPAN' || node.getAttribute('data-mce-type') != 'bookmark')) {
   169     }
   170 						hasContentNode = true;
   170     restoreEndPoint(true);
   171 					}
   171     restoreEndPoint();
   172 
   172     var rng = DOM.createRng();
   173 					if (blockElements[nodeName]) {
   173     rng.setStart(bookmark.startContainer, bookmark.startOffset);
   174 						fragment.appendChild(node);
   174     if (bookmark.endContainer) {
   175 						textBlock = null;
   175       rng.setEnd(bookmark.endContainer, bookmark.endOffset);
   176 					} else {
   176     }
   177 						if (blockName) {
   177     return $_a9cyhvgkjjgweckv.normalizeRange(rng);
   178 							if (!textBlock) {
   178   };
   179 								textBlock = dom.create(blockName);
   179   var $_2nx1i4gjjjgweckt = {
   180 								fragment.appendChild(textBlock);
   180     createBookmark: createBookmark,
   181 							}
   181     resolveBookmark: resolveBookmark
   182 
   182   };
   183 							textBlock.appendChild(node);
   183 
   184 						} else {
   184   var DOM$1 = global$6.DOM;
   185 							fragment.appendChild(node);
   185   var normalizeList = function (dom, ul) {
   186 						}
   186     var sibling;
   187 					}
   187     var parentNode = ul.parentNode;
   188 				}
   188     if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {
   189 			}
   189       sibling = parentNode.previousSibling;
   190 
   190       if (sibling && sibling.nodeName === 'LI') {
   191 			if (!editor.settings.forced_root_block) {
   191         sibling.appendChild(ul);
   192 				fragment.appendChild(dom.create('br'));
   192         if ($_okk1ogljjgweckx.isEmpty(dom, parentNode)) {
   193 			} else {
   193           DOM$1.remove(parentNode);
   194 				// BR is needed in empty blocks on non IE browsers
   194         }
   195 				if (!hasContentNode && (!tinymce.Env.ie || tinymce.Env.ie > 10)) {
   195       } else {
   196 					textBlock.appendChild(dom.create('br', {'data-mce-bogus': '1'}));
   196         DOM$1.setStyle(parentNode, 'listStyleType', 'none');
   197 				}
   197       }
   198 			}
   198     }
   199 
   199     if ($_okk1ogljjgweckx.isListNode(parentNode)) {
   200 			return fragment;
   200       sibling = parentNode.previousSibling;
   201 		}
   201       if (sibling && sibling.nodeName === 'LI') {
   202 
   202         sibling.appendChild(ul);
   203 		function getSelectedListItems() {
   203       }
   204 			return tinymce.grep(selection.getSelectedBlocks(), function(block) {
   204     }
   205 				return /^(LI|DT|DD)$/.test(block.nodeName);
   205   };
   206 			});
   206   var normalizeLists = function (dom, element) {
   207 		}
   207     global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {
   208 
   208       normalizeList(dom, ul);
   209 		function splitList(ul, li, newBlock) {
   209     });
   210 			var tmpRng, fragment, bookmarks, node;
   210   };
   211 
   211   var $_ekd4wzgmjjgwecl1 = {
   212 			function removeAndKeepBookmarks(targetNode) {
   212     normalizeList: normalizeList,
   213 				tinymce.each(bookmarks, function(node) {
   213     normalizeLists: normalizeLists
   214 					targetNode.parentNode.insertBefore(node, li.parentNode);
   214   };
   215 				});
   215 
   216 
   216   var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
   217 				dom.remove(targetNode);
   217 
   218 			}
   218   var getParentList = function (editor) {
   219 
   219     var selectionStart = editor.selection.getStart(true);
   220 			bookmarks = dom.select('span[data-mce-type="bookmark"]', ul);
   220     return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));
   221 			newBlock = newBlock || createNewTextBlock(li);
   221   };
   222 			tmpRng = dom.createRng();
   222   var isParentListSelected = function (parentList, selectedBlocks) {
   223 			tmpRng.setStartAfter(li);
   223     return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;
   224 			tmpRng.setEndAfter(ul);
   224   };
   225 			fragment = tmpRng.extractContents();
   225   var findSubLists = function (parentList) {
   226 
   226     return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {
   227 			for (node = fragment.firstChild; node; node = node.firstChild) {
   227       return $_okk1ogljjgweckx.isListNode(elm);
   228 				if (node.nodeName == 'LI' && dom.isEmpty(node)) {
   228     });
   229 					dom.remove(node);
   229   };
   230 					break;
   230   var getSelectedSubLists = function (editor) {
   231 				}
   231     var parentList = getParentList(editor);
   232 			}
   232     var selectedBlocks = editor.selection.getSelectedBlocks();
   233 
   233     if (isParentListSelected(parentList, selectedBlocks)) {
   234 			if (!dom.isEmpty(fragment)) {
   234       return findSubLists(parentList);
   235 				dom.insertAfter(fragment, ul);
   235     } else {
   236 			}
   236       return global$5.grep(selectedBlocks, function (elm) {
   237 
   237         return $_okk1ogljjgweckx.isListNode(elm) && parentList !== elm;
   238 			dom.insertAfter(newBlock, ul);
   238       });
   239 
   239     }
   240 			if (dom.isEmpty(li.parentNode)) {
   240   };
   241 				removeAndKeepBookmarks(li.parentNode);
   241   var findParentListItemsNodes = function (editor, elms) {
   242 			}
   242     var listItemsElms = global$5.map(elms, function (elm) {
   243 
   243       var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));
   244 			dom.remove(li);
   244       return parentLi ? parentLi : elm;
   245 
   245     });
   246 			if (dom.isEmpty(ul)) {
   246     return global$7.unique(listItemsElms);
   247 				dom.remove(ul);
   247   };
   248 			}
   248   var getSelectedListItems = function (editor) {
   249 		}
   249     var selectedBlocks = editor.selection.getSelectedBlocks();
   250 
   250     return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {
   251 		function mergeWithAdjacentLists(listBlock) {
   251       return $_okk1ogljjgweckx.isListItemNode(block);
   252 			var sibling, node;
   252     });
   253 
   253   };
   254 			sibling = listBlock.nextSibling;
   254   var getClosestListRootElm = function (editor, elm) {
   255 			if (sibling && isListNode(sibling) && sibling.nodeName == listBlock.nodeName) {
   255     var parentTableCell = editor.dom.getParents(elm, 'TD,TH');
   256 				while ((node = sibling.firstChild)) {
   256     var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();
   257 					listBlock.appendChild(node);
   257     return root;
   258 				}
   258   };
   259 
   259   var $_3xb1cggnjjgwecl3 = {
   260 				dom.remove(sibling);
   260     getParentList: getParentList,
   261 			}
   261     getSelectedSubLists: getSelectedSubLists,
   262 
   262     getSelectedListItems: getSelectedListItems,
   263 			sibling = listBlock.previousSibling;
   263     getClosestListRootElm: getClosestListRootElm
   264 			if (sibling && isListNode(sibling) && sibling.nodeName == listBlock.nodeName) {
   264   };
   265 				while ((node = sibling.firstChild)) {
   265 
   266 					listBlock.insertBefore(node, listBlock.firstChild);
   266   var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
   267 				}
   267 
   268 
   268   var DOM$2 = global$6.DOM;
   269 				dom.remove(sibling);
   269   var createNewTextBlock = function (editor, contentNode, blockName) {
   270 			}
   270     var node, textBlock;
   271 		}
   271     var fragment = DOM$2.createFragment();
   272 
   272     var hasContentNode;
   273 		/**
   273     var blockElements = editor.schema.getBlockElements();
   274 		 * Normalizes the all lists in the specified element.
   274     if (editor.settings.forced_root_block) {
   275 		 */
   275       blockName = blockName || editor.settings.forced_root_block;
   276 		function normalizeList(element) {
   276     }
   277 			tinymce.each(tinymce.grep(dom.select('ol,ul', element)), function(ul) {
   277     if (blockName) {
   278 				var sibling, parentNode = ul.parentNode;
   278       textBlock = DOM$2.create(blockName);
   279 
   279       if (textBlock.tagName === editor.settings.forced_root_block) {
   280 				// Move UL/OL to previous LI if it's the only child of a LI
   280         DOM$2.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
   281 				if (parentNode.nodeName == 'LI' && parentNode.firstChild == ul) {
   281       }
   282 					sibling = parentNode.previousSibling;
   282       if (!$_okk1ogljjgweckx.isBlock(contentNode.firstChild, blockElements)) {
   283 					if (sibling && sibling.nodeName == 'LI') {
   283         fragment.appendChild(textBlock);
   284 						sibling.appendChild(ul);
   284       }
   285 
   285     }
   286 						if (dom.isEmpty(parentNode)) {
   286     if (contentNode) {
   287 							dom.remove(parentNode);
   287       while (node = contentNode.firstChild) {
   288 						}
   288         var nodeName = node.nodeName;
   289 					}
   289         if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {
   290 				}
   290           hasContentNode = true;
   291 
   291         }
   292 				// Append OL/UL to previous LI if it's in a parent OL/UL i.e. old HTML4
   292         if ($_okk1ogljjgweckx.isBlock(node, blockElements)) {
   293 				if (isListNode(parentNode)) {
   293           fragment.appendChild(node);
   294 					sibling = parentNode.previousSibling;
   294           textBlock = null;
   295 					if (sibling && sibling.nodeName == 'LI') {
   295         } else {
   296 						sibling.appendChild(ul);
   296           if (blockName) {
   297 					}
   297             if (!textBlock) {
   298 				}
   298               textBlock = DOM$2.create(blockName);
   299 			});
   299               fragment.appendChild(textBlock);
   300 		}
   300             }
   301 
   301             textBlock.appendChild(node);
   302 		function outdent(li) {
   302           } else {
   303 			var ul = li.parentNode, ulParent = ul.parentNode, newBlock;
   303             fragment.appendChild(node);
   304 
   304           }
   305 			function removeEmptyLi(li) {
   305         }
   306 				if (dom.isEmpty(li)) {
   306       }
   307 					dom.remove(li);
   307     }
   308 				}
   308     if (!editor.settings.forced_root_block) {
   309 			}
   309       fragment.appendChild(DOM$2.create('br'));
   310 
   310     } else {
   311 			if (li.nodeName == 'DD') {
   311       if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {
   312 				dom.rename(li, 'DT');
   312         textBlock.appendChild(DOM$2.create('br', { 'data-mce-bogus': '1' }));
   313 				return true;
   313       }
   314 			}
   314     }
   315 
   315     return fragment;
   316 			if (isFirstChild(li) && isLastChild(li)) {
   316   };
   317 				if (ulParent.nodeName == "LI") {
   317   var $_kbc02gqjjgwecl9 = { createNewTextBlock: createNewTextBlock };
   318 					dom.insertAfter(li, ulParent);
   318 
   319 					removeEmptyLi(ulParent);
   319   var DOM$3 = global$6.DOM;
   320 					dom.remove(ul);
   320   var splitList = function (editor, ul, li, newBlock) {
   321 				} else if (isListNode(ulParent)) {
   321     var tmpRng, fragment, bookmarks, node;
   322 					dom.remove(ul, true);
   322     var removeAndKeepBookmarks = function (targetNode) {
   323 				} else {
   323       global$5.each(bookmarks, function (node) {
   324 					ulParent.insertBefore(createNewTextBlock(li), ul);
   324         targetNode.parentNode.insertBefore(node, li.parentNode);
   325 					dom.remove(ul);
   325       });
   326 				}
   326       DOM$3.remove(targetNode);
   327 
   327     };
   328 				return true;
   328     bookmarks = DOM$3.select('span[data-mce-type="bookmark"]', ul);
   329 			} else if (isFirstChild(li)) {
   329     newBlock = newBlock || $_kbc02gqjjgwecl9.createNewTextBlock(editor, li);
   330 				if (ulParent.nodeName == "LI") {
   330     tmpRng = DOM$3.createRng();
   331 					dom.insertAfter(li, ulParent);
   331     tmpRng.setStartAfter(li);
   332 					li.appendChild(ul);
   332     tmpRng.setEndAfter(ul);
   333 					removeEmptyLi(ulParent);
   333     fragment = tmpRng.extractContents();
   334 				} else if (isListNode(ulParent)) {
   334     for (node = fragment.firstChild; node; node = node.firstChild) {
   335 					ulParent.insertBefore(li, ul);
   335       if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {
   336 				} else {
   336         DOM$3.remove(node);
   337 					ulParent.insertBefore(createNewTextBlock(li), ul);
   337         break;
   338 					dom.remove(li);
   338       }
   339 				}
   339     }
   340 
   340     if (!editor.dom.isEmpty(fragment)) {
   341 				return true;
   341       DOM$3.insertAfter(fragment, ul);
   342 			} else if (isLastChild(li)) {
   342     }
   343 				if (ulParent.nodeName == "LI") {
   343     DOM$3.insertAfter(newBlock, ul);
   344 					dom.insertAfter(li, ulParent);
   344     if ($_okk1ogljjgweckx.isEmpty(editor.dom, li.parentNode)) {
   345 				} else if (isListNode(ulParent)) {
   345       removeAndKeepBookmarks(li.parentNode);
   346 					dom.insertAfter(li, ul);
   346     }
   347 				} else {
   347     DOM$3.remove(li);
   348 					dom.insertAfter(createNewTextBlock(li), ul);
   348     if ($_okk1ogljjgweckx.isEmpty(editor.dom, ul)) {
   349 					dom.remove(li);
   349       DOM$3.remove(ul);
   350 				}
   350     }
   351 
   351   };
   352 				return true;
   352   var $_fikiq7gpjjgwecl5 = { splitList: splitList };
   353 			} else {
   353 
   354 				if (ulParent.nodeName == 'LI') {
   354   var DOM$4 = global$6.DOM;
   355 					ul = ulParent;
   355   var removeEmptyLi = function (dom, li) {
   356 					newBlock = createNewTextBlock(li, 'LI');
   356     if ($_okk1ogljjgweckx.isEmpty(dom, li)) {
   357 				} else if (isListNode(ulParent)) {
   357       DOM$4.remove(li);
   358 					newBlock = createNewTextBlock(li, 'LI');
   358     }
   359 				} else {
   359   };
   360 					newBlock = createNewTextBlock(li);
   360   var outdent = function (editor, li) {
   361 				}
   361     var ul = li.parentNode;
   362 
   362     var ulParent, newBlock;
   363 				splitList(ul, li, newBlock);
   363     if (ul) {
   364 				normalizeList(ul.parentNode);
   364       ulParent = ul.parentNode;
   365 
   365     } else {
   366 				return true;
   366       removeEmptyLi(editor.dom, li);
   367 			}
   367       return true;
   368 
   368     }
   369 			return false;
   369     if (ul === editor.getBody()) {
   370 		}
   370       return true;
   371 
   371     }
   372 		function indent(li) {
   372     if (li.nodeName === 'DD') {
   373 			var sibling, newList;
   373       DOM$4.rename(li, 'DT');
   374 
   374       return true;
   375 			function mergeLists(from, to) {
   375     }
   376 				var node;
   376     if ($_okk1ogljjgweckx.isFirstChild(li) && $_okk1ogljjgweckx.isLastChild(li)) {
   377 
   377       if (ulParent.nodeName === 'LI') {
   378 				if (isListNode(from)) {
   378         DOM$4.insertAfter(li, ulParent);
   379 					while ((node = li.lastChild.firstChild)) {
   379         removeEmptyLi(editor.dom, ulParent);
   380 						to.appendChild(node);
   380         DOM$4.remove(ul);
   381 					}
   381       } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
   382 
   382         DOM$4.remove(ul, true);
   383 					dom.remove(from);
   383       } else {
   384 				}
   384         ulParent.insertBefore($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul);
   385 			}
   385         DOM$4.remove(ul);
   386 
   386       }
   387 			if (li.nodeName == 'DT') {
   387       return true;
   388 				dom.rename(li, 'DD');
   388     } else if ($_okk1ogljjgweckx.isFirstChild(li)) {
   389 				return true;
   389       if (ulParent.nodeName === 'LI') {
   390 			}
   390         DOM$4.insertAfter(li, ulParent);
   391 
   391         li.appendChild(ul);
   392 			sibling = li.previousSibling;
   392         removeEmptyLi(editor.dom, ulParent);
   393 
   393       } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
   394 			if (sibling && isListNode(sibling)) {
   394         ulParent.insertBefore(li, ul);
   395 				sibling.appendChild(li);
   395       } else {
   396 				return true;
   396         ulParent.insertBefore($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul);
   397 			}
   397         DOM$4.remove(li);
   398 
   398       }
   399 			if (sibling && sibling.nodeName == 'LI' && isListNode(sibling.lastChild)) {
   399       return true;
   400 				sibling.lastChild.appendChild(li);
   400     } else if ($_okk1ogljjgweckx.isLastChild(li)) {
   401 				mergeLists(li.lastChild, sibling.lastChild);
   401       if (ulParent.nodeName === 'LI') {
   402 				return true;
   402         DOM$4.insertAfter(li, ulParent);
   403 			}
   403       } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
   404 
   404         DOM$4.insertAfter(li, ul);
   405 			sibling = li.nextSibling;
   405       } else {
   406 
   406         DOM$4.insertAfter($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul);
   407 			if (sibling && isListNode(sibling)) {
   407         DOM$4.remove(li);
   408 				sibling.insertBefore(li, sibling.firstChild);
   408       }
   409 				return true;
   409       return true;
   410 			}
   410     }
   411 
   411     if (ulParent.nodeName === 'LI') {
   412 			if (sibling && sibling.nodeName == 'LI' && isListNode(li.lastChild)) {
   412       ul = ulParent;
   413 				return false;
   413       newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li, 'LI');
   414 			}
   414     } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
   415 
   415       newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li, 'LI');
   416 			sibling = li.previousSibling;
   416     } else {
   417 			if (sibling && sibling.nodeName == 'LI') {
   417       newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li);
   418 				newList = dom.create(li.parentNode.nodeName);
   418     }
   419 				sibling.appendChild(newList);
   419     $_fikiq7gpjjgwecl5.splitList(editor, ul, li, newBlock);
   420 				newList.appendChild(li);
   420     $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, ul.parentNode);
   421 				mergeLists(li.lastChild, newList);
   421     return true;
   422 				return true;
   422   };
   423 			}
   423   var outdentSelection = function (editor) {
   424 
   424     var listElements = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
   425 			return false;
   425     if (listElements.length) {
   426 		}
   426       var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng());
   427 
   427       var i = void 0, y = void 0;
   428 		function indentSelection() {
   428       var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true));
   429 			var listElements = getSelectedListItems();
   429       i = listElements.length;
   430 
   430       while (i--) {
   431 			if (listElements.length) {
   431         var node = listElements[i].parentNode;
   432 				var bookmark = createBookmark(selection.getRng(true));
   432         while (node && node !== root) {
   433 
   433           y = listElements.length;
   434 				for (var i = 0; i < listElements.length; i++) {
   434           while (y--) {
   435 					if (!indent(listElements[i]) && i === 0) {
   435             if (listElements[y] === node) {
   436 						break;
   436               listElements.splice(i, 1);
   437 					}
   437               break;
   438 				}
   438             }
   439 
   439           }
   440 				moveToBookmark(bookmark);
   440           node = node.parentNode;
   441 				editor.nodeChanged();
   441         }
   442 
   442       }
   443 				return true;
   443       for (i = 0; i < listElements.length; i++) {
   444 			}
   444         if (!outdent(editor, listElements[i]) && i === 0) {
   445 		}
   445           break;
   446 
   446         }
   447 		function outdentSelection() {
   447       }
   448 			var listElements = getSelectedListItems();
   448       editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
   449 
   449       editor.nodeChanged();
   450 			if (listElements.length) {
   450       return true;
   451 				var bookmark = createBookmark(selection.getRng(true));
   451     }
   452 				var i, y, root = editor.getBody();
   452   };
   453 
   453   var $_6pbactghjjgweckp = {
   454 				i = listElements.length;
   454     outdent: outdent,
   455 				while (i--) {
   455     outdentSelection: outdentSelection
   456 					var node = listElements[i].parentNode;
   456   };
   457 
   457 
   458 					while (node && node != root) {
   458   var updateListStyle = function (dom, el, detail) {
   459 						y = listElements.length;
   459     var type = detail['list-style-type'] ? detail['list-style-type'] : null;
   460 						while (y--) {
   460     dom.setStyle(el, 'list-style-type', type);
   461 							if (listElements[y] === node) {
   461   };
   462 								listElements.splice(i, 1);
   462   var setAttribs = function (elm, attrs) {
   463 								break;
   463     global$5.each(attrs, function (value, key) {
   464 							}
   464       elm.setAttribute(key, value);
   465 						}
   465     });
   466 
   466   };
   467 						node = node.parentNode;
   467   var updateListAttrs = function (dom, el, detail) {
   468 					}
   468     setAttribs(el, detail['list-attributes']);
   469 				}
   469     global$5.each(dom.select('li', el), function (li) {
   470 
   470       setAttribs(li, detail['list-item-attributes']);
   471 				for (i = 0; i < listElements.length; i++) {
   471     });
   472 					if (!outdent(listElements[i]) && i === 0) {
   472   };
   473 						break;
   473   var updateListWithDetails = function (dom, el, detail) {
   474 					}
   474     updateListStyle(dom, el, detail);
   475 				}
   475     updateListAttrs(dom, el, detail);
   476 
   476   };
   477 				moveToBookmark(bookmark);
   477   var removeStyles = function (dom, element, styles) {
   478 				editor.nodeChanged();
   478     global$5.each(styles, function (style) {
   479 
   479       var _a;
   480 				return true;
   480       return dom.setStyle(element, (_a = {}, _a[style] = '', _a));
   481 			}
   481     });
   482 		}
   482   };
   483 
   483   var getEndPointNode = function (editor, rng, start, root) {
   484 		function applyList(listName) {
   484     var container, offset;
   485 			var rng = selection.getRng(true), bookmark = createBookmark(rng), listItemName = 'LI';
   485     container = rng[start ? 'startContainer' : 'endContainer'];
   486 
   486     offset = rng[start ? 'startOffset' : 'endOffset'];
   487 			listName = listName.toUpperCase();
   487     if (container.nodeType === 1) {
   488 
   488       container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
   489 			if (listName == 'DL') {
   489     }
   490 				listItemName = 'DT';
   490     if (!start && $_okk1ogljjgweckx.isBr(container.nextSibling)) {
   491 			}
   491       container = container.nextSibling;
   492 
   492     }
   493 			function getSelectedTextBlocks() {
   493     while (container.parentNode !== root) {
   494 				var textBlocks = [], root = editor.getBody();
   494       if ($_okk1ogljjgweckx.isTextBlock(editor, container)) {
   495 
   495         return container;
   496 				function getEndPointNode(start) {
   496       }
   497 					var container, offset;
   497       if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {
   498 
   498         return container;
   499 					container = rng[start ? 'startContainer' : 'endContainer'];
   499       }
   500 					offset = rng[start ? 'startOffset' : 'endOffset'];
   500       container = container.parentNode;
   501 
   501     }
   502 					// Resolve node index
   502     return container;
   503 					if (container.nodeType == 1) {
   503   };
   504 						container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
   504   var getSelectedTextBlocks = function (editor, rng, root) {
   505 					}
   505     var textBlocks = [], dom = editor.dom;
   506 
   506     var startNode = getEndPointNode(editor, rng, true, root);
   507 					while (container.parentNode != root) {
   507     var endNode = getEndPointNode(editor, rng, false, root);
   508 						if (isTextBlock(container)) {
   508     var block;
   509 							return container;
   509     var siblings = [];
   510 						}
   510     for (var node = startNode; node; node = node.nextSibling) {
   511 
   511       siblings.push(node);
   512 						if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {
   512       if (node === endNode) {
   513 							return container;
   513         break;
   514 						}
   514       }
   515 
   515     }
   516 						container = container.parentNode;
   516     global$5.each(siblings, function (node) {
   517 					}
   517       if ($_okk1ogljjgweckx.isTextBlock(editor, node)) {
   518 
   518         textBlocks.push(node);
   519 					return container;
   519         block = null;
   520 				}
   520         return;
   521 
   521       }
   522 				var startNode = getEndPointNode(true);
   522       if (dom.isBlock(node) || $_okk1ogljjgweckx.isBr(node)) {
   523 				var endNode = getEndPointNode();
   523         if ($_okk1ogljjgweckx.isBr(node)) {
   524 				var block, siblings = [];
   524           dom.remove(node);
   525 
   525         }
   526 				for (var node = startNode; node; node = node.nextSibling) {
   526         block = null;
   527 					siblings.push(node);
   527         return;
   528 
   528       }
   529 					if (node == endNode) {
   529       var nextSibling = node.nextSibling;
   530 						break;
   530       if (global$4.isBookmarkNode(node)) {
   531 					}
   531         if ($_okk1ogljjgweckx.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {
   532 				}
   532           block = null;
   533 
   533           return;
   534 				tinymce.each(siblings, function(node) {
   534         }
   535 					if (isTextBlock(node)) {
   535       }
   536 						textBlocks.push(node);
   536       if (!block) {
   537 						block = null;
   537         block = dom.create('p');
   538 						return;
   538         node.parentNode.insertBefore(block, node);
   539 					}
   539         textBlocks.push(block);
   540 
   540       }
   541 					if (dom.isBlock(node) || node.nodeName == 'BR') {
   541       block.appendChild(node);
   542 						if (node.nodeName == 'BR') {
   542     });
   543 							dom.remove(node);
   543     return textBlocks;
   544 						}
   544   };
   545 
   545   var hasCompatibleStyle = function (dom, sib, detail) {
   546 						block = null;
   546     var sibStyle = dom.getStyle(sib, 'list-style-type');
   547 						return;
   547     var detailStyle = detail ? detail['list-style-type'] : '';
   548 					}
   548     detailStyle = detailStyle === null ? '' : detailStyle;
   549 
   549     return sibStyle === detailStyle;
   550 					var nextSibling = node.nextSibling;
   550   };
   551 					if (tinymce.dom.BookmarkManager.isBookmarkNode(node)) {
   551   var applyList = function (editor, listName, detail) {
   552 						if (isTextBlock(nextSibling) || (!nextSibling && node.parentNode == root)) {
   552     if (detail === void 0) {
   553 							block = null;
   553       detail = {};
   554 							return;
   554     }
   555 						}
   555     var rng = editor.selection.getRng(true);
   556 					}
   556     var bookmark;
   557 
   557     var listItemName = 'LI';
   558 					if (!block) {
   558     var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true));
   559 						block = dom.create('p');
   559     var dom = editor.dom;
   560 						node.parentNode.insertBefore(block, node);
   560     if (dom.getContentEditable(editor.selection.getNode()) === 'false') {
   561 						textBlocks.push(block);
   561       return;
   562 					}
   562     }
   563 
   563     listName = listName.toUpperCase();
   564 					block.appendChild(node);
   564     if (listName === 'DL') {
   565 				});
   565       listItemName = 'DT';
   566 
   566     }
   567 				return textBlocks;
   567     bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng);
   568 			}
   568     global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {
   569 
   569       var listBlock, sibling;
   570 			tinymce.each(getSelectedTextBlocks(), function(block) {
   570       sibling = block.previousSibling;
   571 				var listBlock, sibling;
   571       if (sibling && $_okk1ogljjgweckx.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {
   572 
   572         listBlock = sibling;
   573 				sibling = block.previousSibling;
   573         block = dom.rename(block, listItemName);
   574 				if (sibling && isListNode(sibling) && sibling.nodeName == listName) {
   574         sibling.appendChild(block);
   575 					listBlock = sibling;
   575       } else {
   576 					block = dom.rename(block, listItemName);
   576         listBlock = dom.create(listName);
   577 					sibling.appendChild(block);
   577         block.parentNode.insertBefore(listBlock, block);
   578 				} else {
   578         listBlock.appendChild(block);
   579 					listBlock = dom.create(listName);
   579         block = dom.rename(block, listItemName);
   580 					block.parentNode.insertBefore(listBlock, block);
   580       }
   581 					listBlock.appendChild(block);
   581       removeStyles(dom, block, [
   582 					block = dom.rename(block, listItemName);
   582         'margin',
   583 				}
   583         'margin-right',
   584 
   584         'margin-bottom',
   585 				mergeWithAdjacentLists(listBlock);
   585         'margin-left',
   586 			});
   586         'margin-top',
   587 
   587         'padding',
   588 			moveToBookmark(bookmark);
   588         'padding-right',
   589 		}
   589         'padding-bottom',
   590 
   590         'padding-left',
   591 		function removeList() {
   591         'padding-top'
   592 			var bookmark = createBookmark(selection.getRng(true)), root = editor.getBody();
   592       ]);
   593 
   593       updateListWithDetails(dom, listBlock, detail);
   594 			tinymce.each(getSelectedListItems(), function(li) {
   594       mergeWithAdjacentLists(editor.dom, listBlock);
   595 				var node, rootList;
   595     });
   596 
   596     editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
   597 				if (dom.isEmpty(li)) {
   597   };
   598 					outdent(li);
   598   var removeList = function (editor) {
   599 					return;
   599     var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
   600 				}
   600     var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true));
   601 
   601     var listItems = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
   602 				for (node = li; node && node != root; node = node.parentNode) {
   602     var emptyListItems = global$5.grep(listItems, function (li) {
   603 					if (isListNode(node)) {
   603       return editor.dom.isEmpty(li);
   604 						rootList = node;
   604     });
   605 					}
   605     listItems = global$5.grep(listItems, function (li) {
   606 				}
   606       return !editor.dom.isEmpty(li);
   607 
   607     });
   608 				splitList(rootList, li);
   608     global$5.each(emptyListItems, function (li) {
   609 			});
   609       if ($_okk1ogljjgweckx.isEmpty(editor.dom, li)) {
   610 
   610         $_6pbactghjjgweckp.outdent(editor, li);
   611 			moveToBookmark(bookmark);
   611         return;
   612 		}
   612       }
   613 
   613     });
   614 		function toggleList(listName) {
   614     global$5.each(listItems, function (li) {
   615 			var parentList = dom.getParent(selection.getStart(), 'OL,UL,DL');
   615       var node, rootList;
   616 
   616       if (li.parentNode === editor.getBody()) {
   617 			if (parentList) {
   617         return;
   618 				if (parentList.nodeName == listName) {
   618       }
   619 					removeList(listName);
   619       for (node = li; node && node !== root; node = node.parentNode) {
   620 				} else {
   620         if ($_okk1ogljjgweckx.isListNode(node)) {
   621 					var bookmark = createBookmark(selection.getRng(true));
   621           rootList = node;
   622 					mergeWithAdjacentLists(dom.rename(parentList, listName));
   622         }
   623 					moveToBookmark(bookmark);
   623       }
   624 				}
   624       $_fikiq7gpjjgwecl5.splitList(editor, rootList, li);
   625 			} else {
   625       $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, rootList.parentNode);
   626 				applyList(listName);
   626     });
   627 			}
   627     editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
   628 		}
   628   };
   629 
   629   var isValidLists = function (list1, list2) {
   630 		function queryListCommandState(listName) {
   630     return list1 && list2 && $_okk1ogljjgweckx.isListNode(list1) && list1.nodeName === list2.nodeName;
   631 			return function() {
   631   };
   632 				var parentList = dom.getParent(editor.selection.getStart(), 'UL,OL,DL');
   632   var hasSameListStyle = function (dom, list1, list2) {
   633 
   633     var targetStyle = dom.getStyle(list1, 'list-style-type', true);
   634 				return parentList && parentList.nodeName == listName;
   634     var style = dom.getStyle(list2, 'list-style-type', true);
   635 			};
   635     return targetStyle === style;
   636 		}
   636   };
   637 
   637   var hasSameClasses = function (elm1, elm2) {
   638 		self.backspaceDelete = function(isForward) {
   638     return elm1.className === elm2.className;
   639 			function findNextCaretContainer(rng, isForward) {
   639   };
   640 				var node = rng.startContainer, offset = rng.startOffset;
   640   var shouldMerge = function (dom, list1, list2) {
   641 				var nonEmptyBlocks, walker;
   641     return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);
   642 
   642   };
   643 				if (node.nodeType == 3 && (isForward ? offset < node.data.length : offset > 0)) {
   643   var mergeWithAdjacentLists = function (dom, listBlock) {
   644 					return node;
   644     var sibling, node;
   645 				}
   645     sibling = listBlock.nextSibling;
   646 
   646     if (shouldMerge(dom, listBlock, sibling)) {
   647 				nonEmptyBlocks = editor.schema.getNonEmptyElements();
   647       while (node = sibling.firstChild) {
   648 				walker = new tinymce.dom.TreeWalker(rng.startContainer);
   648         listBlock.appendChild(node);
   649 
   649       }
   650 				while ((node = walker[isForward ? 'next' : 'prev']())) {
   650       dom.remove(sibling);
   651 					if (node.nodeName == 'LI' && !node.hasChildNodes()) {
   651     }
   652 						return node;
   652     sibling = listBlock.previousSibling;
   653 					}
   653     if (shouldMerge(dom, listBlock, sibling)) {
   654 
   654       while (node = sibling.lastChild) {
   655 					if (nonEmptyBlocks[node.nodeName]) {
   655         listBlock.insertBefore(node, listBlock.firstChild);
   656 						return node;
   656       }
   657 					}
   657       dom.remove(sibling);
   658 
   658     }
   659 					if (node.nodeType == 3 && node.data.length > 0) {
   659   };
   660 						return node;
   660   var updateList = function (dom, list, listName, detail) {
   661 					}
   661     if (list.nodeName !== listName) {
   662 				}
   662       var newList = dom.rename(list, listName);
   663 			}
   663       updateListWithDetails(dom, newList, detail);
   664 
   664     } else {
   665 			function mergeLiElements(fromElm, toElm) {
   665       updateListWithDetails(dom, list, detail);
   666 				var node, listNode, ul = fromElm.parentNode;
   666     }
   667 
   667   };
   668 				if (isListNode(toElm.lastChild)) {
   668   var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {
   669 					listNode = toElm.lastChild;
   669     if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {
   670 				}
   670       removeList(editor);
   671 
   671     } else {
   672 				node = toElm.lastChild;
   672       var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
   673 				if (node && node.nodeName == 'BR' && fromElm.hasChildNodes()) {
   673       global$5.each([parentList].concat(lists), function (elm) {
   674 					dom.remove(node);
   674         updateList(editor.dom, elm, listName, detail);
   675 				}
   675       });
   676 
   676       editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
   677 				if (dom.isEmpty(toElm)) {
   677     }
   678 					dom.$(toElm).empty();
   678   };
   679 				}
   679   var hasListStyleDetail = function (detail) {
   680 
   680     return 'list-style-type' in detail;
   681 				if (!dom.isEmpty(fromElm)) {
   681   };
   682 					while ((node = fromElm.firstChild)) {
   682   var toggleSingleList = function (editor, parentList, listName, detail) {
   683 						toElm.appendChild(node);
   683     if (parentList === editor.getBody()) {
   684 					}
   684       return;
   685 				}
   685     }
   686 
   686     if (parentList) {
   687 				if (listNode) {
   687       if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {
   688 					toElm.appendChild(listNode);
   688         removeList(editor);
   689 				}
   689       } else {
   690 
   690         var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
   691 				dom.remove(fromElm);
   691         updateListWithDetails(editor.dom, parentList, detail);
   692 
   692         mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));
   693 				if (dom.isEmpty(ul)) {
   693         editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
   694 					dom.remove(ul);
   694       }
   695 				}
   695     } else {
   696 			}
   696       applyList(editor, listName, detail);
   697 
   697     }
   698 			if (selection.isCollapsed()) {
   698   };
   699 				var li = dom.getParent(selection.getStart(), 'LI');
   699   var toggleList = function (editor, listName, detail) {
   700 
   700     var parentList = $_3xb1cggnjjgwecl3.getParentList(editor);
   701 				if (li) {
   701     var selectedSubLists = $_3xb1cggnjjgwecl3.getSelectedSubLists(editor);
   702 					var rng = selection.getRng(true);
   702     detail = detail ? detail : {};
   703 					var otherLi = dom.getParent(findNextCaretContainer(rng, isForward), 'LI');
   703     if (parentList && selectedSubLists.length > 0) {
   704 
   704       toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);
   705 					if (otherLi && otherLi != li) {
   705     } else {
   706 						var bookmark = createBookmark(rng);
   706       toggleSingleList(editor, parentList, listName, detail);
   707 
   707     }
   708 						if (isForward) {
   708   };
   709 							mergeLiElements(otherLi, li);
   709   var $_aek3i3gejjgwecki = {
   710 						} else {
   710     toggleList: toggleList,
   711 							mergeLiElements(li, otherLi);
   711     removeList: removeList,
   712 						}
   712     mergeWithAdjacentLists: mergeWithAdjacentLists
   713 
   713   };
   714 						moveToBookmark(bookmark);
   714 
   715 
   715   var findNextCaretContainer = function (editor, rng, isForward, root) {
   716 						return true;
   716     var node = rng.startContainer;
   717 					} else if (!otherLi) {
   717     var offset = rng.startOffset;
   718 						if (!isForward && removeList(li.parentNode.nodeName)) {
   718     var nonEmptyBlocks, walker;
   719 							return true;
   719     if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {
   720 						}
   720       return node;
   721 					}
   721     }
   722 				}
   722     nonEmptyBlocks = editor.schema.getNonEmptyElements();
   723 			}
   723     if (node.nodeType === 1) {
   724 		};
   724       node = global$1.getNode(node, offset);
   725 
   725     }
   726 		editor.on('BeforeExecCommand', function(e) {
   726     walker = new global$2(node, root);
   727 			var cmd = e.command.toLowerCase(), isHandled;
   727     if (isForward) {
   728 
   728       if ($_okk1ogljjgweckx.isBogusBr(editor.dom, node)) {
   729 			if (cmd == "indent") {
   729         walker.next();
   730 				if (indentSelection()) {
   730       }
   731 					isHandled = true;
   731     }
   732 				}
   732     while (node = walker[isForward ? 'next' : 'prev2']()) {
   733 			} else if (cmd == "outdent") {
   733       if (node.nodeName === 'LI' && !node.hasChildNodes()) {
   734 				if (outdentSelection()) {
   734         return node;
   735 					isHandled = true;
   735       }
   736 				}
   736       if (nonEmptyBlocks[node.nodeName]) {
   737 			}
   737         return node;
   738 
   738       }
   739 			if (isHandled) {
   739       if (node.nodeType === 3 && node.data.length > 0) {
   740 				editor.fire('ExecCommand', {command: e.command});
   740         return node;
   741 				e.preventDefault();
   741       }
   742 				return true;
   742     }
   743 			}
   743   };
   744 		});
   744   var hasOnlyOneBlockChild = function (dom, elm) {
   745 
   745     var childNodes = elm.childNodes;
   746 		editor.addCommand('InsertUnorderedList', function() {
   746     return childNodes.length === 1 && !$_okk1ogljjgweckx.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);
   747 			toggleList('UL');
   747   };
   748 		});
   748   var unwrapSingleBlockChild = function (dom, elm) {
   749 
   749     if (hasOnlyOneBlockChild(dom, elm)) {
   750 		editor.addCommand('InsertOrderedList', function() {
   750       dom.remove(elm.firstChild, true);
   751 			toggleList('OL');
   751     }
   752 		});
   752   };
   753 
   753   var moveChildren = function (dom, fromElm, toElm) {
   754 		editor.addCommand('InsertDefinitionList', function() {
   754     var node, targetElm;
   755 			toggleList('DL');
   755     targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;
   756 		});
   756     unwrapSingleBlockChild(dom, fromElm);
   757 
   757     if (!$_okk1ogljjgweckx.isEmpty(dom, fromElm, true)) {
   758 		editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState('UL'));
   758       while (node = fromElm.firstChild) {
   759 		editor.addQueryStateHandler('InsertOrderedList', queryListCommandState('OL'));
   759         targetElm.appendChild(node);
   760 		editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState('DL'));
   760       }
   761 
   761     }
   762 		editor.on('keydown', function(e) {
   762   };
   763 			// Check for tab but not ctrl/cmd+tab since it switches browser tabs
   763   var mergeLiElements = function (dom, fromElm, toElm) {
   764 			if (e.keyCode != 9 || tinymce.util.VK.metaKeyPressed(e)) {
   764     var node, listNode;
   765 				return;
   765     var ul = fromElm.parentNode;
   766 			}
   766     if (!$_okk1ogljjgweckx.isChildOfBody(dom, fromElm) || !$_okk1ogljjgweckx.isChildOfBody(dom, toElm)) {
   767 
   767       return;
   768 			if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {
   768     }
   769 				e.preventDefault();
   769     if ($_okk1ogljjgweckx.isListNode(toElm.lastChild)) {
   770 
   770       listNode = toElm.lastChild;
   771 				if (e.shiftKey) {
   771     }
   772 					outdentSelection();
   772     if (ul === toElm.lastChild) {
   773 				} else {
   773       if ($_okk1ogljjgweckx.isBr(ul.previousSibling)) {
   774 					indentSelection();
   774         dom.remove(ul.previousSibling);
   775 				}
   775       }
   776 			}
   776     }
   777 		});
   777     node = toElm.lastChild;
   778 	});
   778     if (node && $_okk1ogljjgweckx.isBr(node) && fromElm.hasChildNodes()) {
   779 
   779       dom.remove(node);
   780 	editor.addButton('indent', {
   780     }
   781 		icon: 'indent',
   781     if ($_okk1ogljjgweckx.isEmpty(dom, toElm, true)) {
   782 		title: 'Increase indent',
   782       dom.$(toElm).empty();
   783 		cmd: 'Indent',
   783     }
   784 		onPostRender: function() {
   784     moveChildren(dom, fromElm, toElm);
   785 			var ctrl = this;
   785     if (listNode) {
   786 
   786       toElm.appendChild(listNode);
   787 			editor.on('nodechange', function() {
   787     }
   788 				var blocks = editor.selection.getSelectedBlocks();
   788     dom.remove(fromElm);
   789 				var disable = false;
   789     if ($_okk1ogljjgweckx.isEmpty(dom, ul) && ul !== dom.getRoot()) {
   790 
   790       dom.remove(ul);
   791 				for (var i = 0, l = blocks.length; !disable && i < l; i++) {
   791     }
   792 					var tag = blocks[i].nodeName;
   792   };
   793 
   793   var mergeIntoEmptyLi = function (editor, fromLi, toLi) {
   794 					disable = (tag == 'LI' && isFirstChild(blocks[i]) || tag == 'UL' || tag == 'OL' || tag == 'DD');
   794     editor.dom.$(toLi).empty();
   795 				}
   795     mergeLiElements(editor.dom, fromLi, toLi);
   796 
   796     editor.selection.setCursorLocation(toLi);
   797 				ctrl.disabled(disable);
   797   };
   798 			});
   798   var mergeForward = function (editor, rng, fromLi, toLi) {
   799 		}
   799     var dom = editor.dom;
   800 	});
   800     if (dom.isEmpty(toLi)) {
   801 
   801       mergeIntoEmptyLi(editor, fromLi, toLi);
   802 	editor.on('keydown', function(e) {
   802     } else {
   803 		if (e.keyCode == tinymce.util.VK.BACKSPACE) {
   803       var bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng);
   804 			if (self.backspaceDelete()) {
   804       mergeLiElements(dom, fromLi, toLi);
   805 				e.preventDefault();
   805       editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
   806 			}
   806     }
   807 		} else if (e.keyCode == tinymce.util.VK.DELETE) {
   807   };
   808 			if (self.backspaceDelete(true)) {
   808   var mergeBackward = function (editor, rng, fromLi, toLi) {
   809 				e.preventDefault();
   809     var bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng);
   810 			}
   810     mergeLiElements(editor.dom, fromLi, toLi);
   811 		}
   811     var resolvedBookmark = $_2nx1i4gjjjgweckt.resolveBookmark(bookmark);
   812 	});
   812     editor.selection.setRng(resolvedBookmark);
   813 });
   813   };
       
   814   var backspaceDeleteFromListToListCaret = function (editor, isForward) {
       
   815     var dom = editor.dom, selection = editor.selection;
       
   816     var selectionStartElm = selection.getStart();
       
   817     var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm);
       
   818     var li = dom.getParent(selection.getStart(), 'LI', root);
       
   819     var ul, rng, otherLi;
       
   820     if (li) {
       
   821       ul = li.parentNode;
       
   822       if (ul === editor.getBody() && $_okk1ogljjgweckx.isEmpty(dom, ul)) {
       
   823         return true;
       
   824       }
       
   825       rng = $_a9cyhvgkjjgweckv.normalizeRange(selection.getRng(true));
       
   826       otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
       
   827       if (otherLi && otherLi !== li) {
       
   828         if (isForward) {
       
   829           mergeForward(editor, rng, otherLi, li);
       
   830         } else {
       
   831           mergeBackward(editor, rng, li, otherLi);
       
   832         }
       
   833         return true;
       
   834       } else if (!otherLi) {
       
   835         if (!isForward && $_aek3i3gejjgwecki.removeList(editor)) {
       
   836           return true;
       
   837         }
       
   838       }
       
   839     }
       
   840     return false;
       
   841   };
       
   842   var removeBlock = function (dom, block, root) {
       
   843     var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);
       
   844     dom.remove(block);
       
   845     if (parentBlock && dom.isEmpty(parentBlock)) {
       
   846       dom.remove(parentBlock);
       
   847     }
       
   848   };
       
   849   var backspaceDeleteIntoListCaret = function (editor, isForward) {
       
   850     var dom = editor.dom;
       
   851     var selectionStartElm = editor.selection.getStart();
       
   852     var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm);
       
   853     var block = dom.getParent(selectionStartElm, dom.isBlock, root);
       
   854     if (block && dom.isEmpty(block)) {
       
   855       var rng = $_a9cyhvgkjjgweckv.normalizeRange(editor.selection.getRng(true));
       
   856       var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
       
   857       if (otherLi_1) {
       
   858         editor.undoManager.transact(function () {
       
   859           removeBlock(dom, block, root);
       
   860           $_aek3i3gejjgwecki.mergeWithAdjacentLists(dom, otherLi_1.parentNode);
       
   861           editor.selection.select(otherLi_1, true);
       
   862           editor.selection.collapse(isForward);
       
   863         });
       
   864         return true;
       
   865       }
       
   866     }
       
   867     return false;
       
   868   };
       
   869   var backspaceDeleteCaret = function (editor, isForward) {
       
   870     return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);
       
   871   };
       
   872   var backspaceDeleteRange = function (editor) {
       
   873     var selectionStartElm = editor.selection.getStart();
       
   874     var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm);
       
   875     var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);
       
   876     if (startListParent || $_3xb1cggnjjgwecl3.getSelectedListItems(editor).length > 0) {
       
   877       editor.undoManager.transact(function () {
       
   878         editor.execCommand('Delete');
       
   879         $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, editor.getBody());
       
   880       });
       
   881       return true;
       
   882     }
       
   883     return false;
       
   884   };
       
   885   var backspaceDelete = function (editor, isForward) {
       
   886     return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);
       
   887   };
       
   888   var setup = function (editor) {
       
   889     editor.on('keydown', function (e) {
       
   890       if (e.keyCode === global$3.BACKSPACE) {
       
   891         if (backspaceDelete(editor, false)) {
       
   892           e.preventDefault();
       
   893         }
       
   894       } else if (e.keyCode === global$3.DELETE) {
       
   895         if (backspaceDelete(editor, true)) {
       
   896           e.preventDefault();
       
   897         }
       
   898       }
       
   899     });
       
   900   };
       
   901   var $_brhyezgajjgweck7 = {
       
   902     setup: setup,
       
   903     backspaceDelete: backspaceDelete
       
   904   };
       
   905 
       
   906   var get = function (editor) {
       
   907     return {
       
   908       backspaceDelete: function (isForward) {
       
   909         $_brhyezgajjgweck7.backspaceDelete(editor, isForward);
       
   910       }
       
   911     };
       
   912   };
       
   913   var $_nb3yvg9jjgweck5 = { get: get };
       
   914 
       
   915   var DOM$5 = global$6.DOM;
       
   916   var mergeLists = function (from, to) {
       
   917     var node;
       
   918     if ($_okk1ogljjgweckx.isListNode(from)) {
       
   919       while (node = from.firstChild) {
       
   920         to.appendChild(node);
       
   921       }
       
   922       DOM$5.remove(from);
       
   923     }
       
   924   };
       
   925   var indent = function (li) {
       
   926     var sibling, newList, listStyle;
       
   927     if (li.nodeName === 'DT') {
       
   928       DOM$5.rename(li, 'DD');
       
   929       return true;
       
   930     }
       
   931     sibling = li.previousSibling;
       
   932     if (sibling && $_okk1ogljjgweckx.isListNode(sibling)) {
       
   933       sibling.appendChild(li);
       
   934       return true;
       
   935     }
       
   936     if (sibling && sibling.nodeName === 'LI' && $_okk1ogljjgweckx.isListNode(sibling.lastChild)) {
       
   937       sibling.lastChild.appendChild(li);
       
   938       mergeLists(li.lastChild, sibling.lastChild);
       
   939       return true;
       
   940     }
       
   941     sibling = li.nextSibling;
       
   942     if (sibling && $_okk1ogljjgweckx.isListNode(sibling)) {
       
   943       sibling.insertBefore(li, sibling.firstChild);
       
   944       return true;
       
   945     }
       
   946     sibling = li.previousSibling;
       
   947     if (sibling && sibling.nodeName === 'LI') {
       
   948       newList = DOM$5.create(li.parentNode.nodeName);
       
   949       listStyle = DOM$5.getStyle(li.parentNode, 'listStyleType');
       
   950       if (listStyle) {
       
   951         DOM$5.setStyle(newList, 'listStyleType', listStyle);
       
   952       }
       
   953       sibling.appendChild(newList);
       
   954       newList.appendChild(li);
       
   955       mergeLists(li.lastChild, newList);
       
   956       return true;
       
   957     }
       
   958     return false;
       
   959   };
       
   960   var indentSelection = function (editor) {
       
   961     var listElements = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
       
   962     if (listElements.length) {
       
   963       var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
       
   964       for (var i = 0; i < listElements.length; i++) {
       
   965         if (!indent(listElements[i]) && i === 0) {
       
   966           break;
       
   967         }
       
   968       }
       
   969       editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
       
   970       editor.nodeChanged();
       
   971       return true;
       
   972     }
       
   973   };
       
   974   var $_3rkwagtjjgweclf = { indentSelection: indentSelection };
       
   975 
       
   976   var queryListCommandState = function (editor, listName) {
       
   977     return function () {
       
   978       var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');
       
   979       return parentList && parentList.nodeName === listName;
       
   980     };
       
   981   };
       
   982   var register = function (editor) {
       
   983     editor.on('BeforeExecCommand', function (e) {
       
   984       var cmd = e.command.toLowerCase();
       
   985       var isHandled;
       
   986       if (cmd === 'indent') {
       
   987         if ($_3rkwagtjjgweclf.indentSelection(editor)) {
       
   988           isHandled = true;
       
   989         }
       
   990       } else if (cmd === 'outdent') {
       
   991         if ($_6pbactghjjgweckp.outdentSelection(editor)) {
       
   992           isHandled = true;
       
   993         }
       
   994       }
       
   995       if (isHandled) {
       
   996         editor.fire('ExecCommand', { command: e.command });
       
   997         e.preventDefault();
       
   998         return true;
       
   999       }
       
  1000     });
       
  1001     editor.addCommand('InsertUnorderedList', function (ui, detail) {
       
  1002       $_aek3i3gejjgwecki.toggleList(editor, 'UL', detail);
       
  1003     });
       
  1004     editor.addCommand('InsertOrderedList', function (ui, detail) {
       
  1005       $_aek3i3gejjgwecki.toggleList(editor, 'OL', detail);
       
  1006     });
       
  1007     editor.addCommand('InsertDefinitionList', function (ui, detail) {
       
  1008       $_aek3i3gejjgwecki.toggleList(editor, 'DL', detail);
       
  1009     });
       
  1010     editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));
       
  1011     editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));
       
  1012     editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));
       
  1013   };
       
  1014   var $_blnfs1gsjjgwecld = { register: register };
       
  1015 
       
  1016   var shouldIndentOnTab = function (editor) {
       
  1017     return editor.getParam('lists_indent_on_tab', true);
       
  1018   };
       
  1019   var $_8obsbgvjjgweclk = { shouldIndentOnTab: shouldIndentOnTab };
       
  1020 
       
  1021   var setupTabKey = function (editor) {
       
  1022     editor.on('keydown', function (e) {
       
  1023       if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {
       
  1024         return;
       
  1025       }
       
  1026       if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {
       
  1027         e.preventDefault();
       
  1028         if (e.shiftKey) {
       
  1029           $_6pbactghjjgweckp.outdentSelection(editor);
       
  1030         } else {
       
  1031           $_3rkwagtjjgweclf.indentSelection(editor);
       
  1032         }
       
  1033       }
       
  1034     });
       
  1035   };
       
  1036   var setup$1 = function (editor) {
       
  1037     if ($_8obsbgvjjgweclk.shouldIndentOnTab(editor)) {
       
  1038       setupTabKey(editor);
       
  1039     }
       
  1040     $_brhyezgajjgweck7.setup(editor);
       
  1041   };
       
  1042   var $_ees9z9gujjgwecli = { setup: setup$1 };
       
  1043 
       
  1044   var findIndex = function (list, predicate) {
       
  1045     for (var index = 0; index < list.length; index++) {
       
  1046       var element = list[index];
       
  1047       if (predicate(element)) {
       
  1048         return index;
       
  1049       }
       
  1050     }
       
  1051     return -1;
       
  1052   };
       
  1053   var listState = function (editor, listName) {
       
  1054     return function (e) {
       
  1055       var ctrl = e.control;
       
  1056       editor.on('NodeChange', function (e) {
       
  1057         var tableCellIndex = findIndex(e.parents, $_okk1ogljjgweckx.isTableCellNode);
       
  1058         var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;
       
  1059         var lists = global$5.grep(parents, $_okk1ogljjgweckx.isListNode);
       
  1060         ctrl.active(lists.length > 0 && lists[0].nodeName === listName);
       
  1061       });
       
  1062     };
       
  1063   };
       
  1064   var indentPostRender = function (editor) {
       
  1065     return function (e) {
       
  1066       var ctrl = e.control;
       
  1067       editor.on('nodechange', function () {
       
  1068         var listItemBlocks = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
       
  1069         var disable = listItemBlocks.length > 0 && $_okk1ogljjgweckx.isFirstChild(listItemBlocks[0]);
       
  1070         ctrl.disabled(disable);
       
  1071       });
       
  1072     };
       
  1073   };
       
  1074   var register$1 = function (editor) {
       
  1075     var hasPlugin = function (editor, plugin) {
       
  1076       var plugins = editor.settings.plugins ? editor.settings.plugins : '';
       
  1077       return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;
       
  1078     };
       
  1079     if (!hasPlugin(editor, 'advlist')) {
       
  1080       editor.addButton('numlist', {
       
  1081         active: false,
       
  1082         title: 'Numbered list',
       
  1083         cmd: 'InsertOrderedList',
       
  1084         onPostRender: listState(editor, 'OL')
       
  1085       });
       
  1086       editor.addButton('bullist', {
       
  1087         active: false,
       
  1088         title: 'Bullet list',
       
  1089         cmd: 'InsertUnorderedList',
       
  1090         onPostRender: listState(editor, 'UL')
       
  1091       });
       
  1092     }
       
  1093     editor.addButton('indent', {
       
  1094       icon: 'indent',
       
  1095       title: 'Increase indent',
       
  1096       cmd: 'Indent',
       
  1097       onPostRender: indentPostRender(editor)
       
  1098     });
       
  1099   };
       
  1100   var $_s7o0sgwjjgweclm = { register: register$1 };
       
  1101 
       
  1102   global.add('lists', function (editor) {
       
  1103     $_ees9z9gujjgwecli.setup(editor);
       
  1104     $_s7o0sgwjjgweclm.register(editor);
       
  1105     $_blnfs1gsjjgwecld.register(editor);
       
  1106     return $_nb3yvg9jjgweck5.get(editor);
       
  1107   });
       
  1108   function Plugin () {
       
  1109   }
       
  1110 
       
  1111   return Plugin;
       
  1112 
       
  1113 }());
       
  1114 })();