diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-includes/js/tinymce/plugins/lists/plugin.js --- a/wp/wp-includes/js/tinymce/plugins/lists/plugin.js Tue Jun 09 11:14:17 2015 +0000 +++ b/wp/wp-includes/js/tinymce/plugins/lists/plugin.js Mon Oct 14 17:39:30 2019 +0200 @@ -1,813 +1,1114 @@ -/** - * plugin.js - * - * Copyright, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://www.tinymce.com/license - * Contributing: http://www.tinymce.com/contributing - */ +(function () { +var lists = (function () { + 'use strict'; -/*global tinymce:true */ -/*eslint consistent-this:0 */ - -tinymce.PluginManager.add('lists', function(editor) { - var self = this; + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - function isListNode(node) { - return node && (/^(OL|UL|DL)$/).test(node.nodeName); - } - - function isFirstChild(node) { - return node.parentNode.firstChild == node; - } + var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils'); - function isLastChild(node) { - return node.parentNode.lastChild == node; - } + var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); - function isTextBlock(node) { - return node && !!editor.schema.getTextBlockElements()[node.nodeName]; - } - - editor.on('init', function() { - var dom = editor.dom, selection = editor.selection; + var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK'); - /** - * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with - * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans - * added to them since they can be restored after a dom operation. - * - * So this:
||
- * becomes:||
- * - * @param {DOMRange} rng DOM Range to get bookmark on. - * @return {Object} Bookmark object. - */ - function createBookmark(rng) { - var bookmark = {}; + var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager'); + + var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); - function setupEndPoint(start) { - var offsetNode, container, offset; - - container = rng[start ? 'startContainer' : 'endContainer']; - offset = rng[start ? 'startOffset' : 'endOffset']; - - if (container.nodeType == 1) { - offsetNode = dom.create('span', {'data-mce-type': 'bookmark'}); - - if (container.hasChildNodes()) { - offset = Math.min(offset, container.childNodes.length - 1); - - if (start) { - container.insertBefore(offsetNode, container.childNodes[offset]); - } else { - dom.insertAfter(offsetNode, container.childNodes[offset]); - } - } else { - container.appendChild(offsetNode); - } - - container = offsetNode; - offset = 0; - } + var isTextNode = function (node) { + return node && node.nodeType === 3; + }; + var isListNode = function (node) { + return node && /^(OL|UL|DL)$/.test(node.nodeName); + }; + var isListItemNode = function (node) { + return node && /^(LI|DT|DD)$/.test(node.nodeName); + }; + var isTableCellNode = function (node) { + return node && /^(TH|TD)$/.test(node.nodeName); + }; + var isBr = function (node) { + return node && node.nodeName === 'BR'; + }; + var isFirstChild = function (node) { + return node.parentNode.firstChild === node; + }; + var isLastChild = function (node) { + return node.parentNode.lastChild === node; + }; + var isTextBlock = function (editor, node) { + return node && !!editor.schema.getTextBlockElements()[node.nodeName]; + }; + var isBlock = function (node, blockElements) { + return node && node.nodeName in blockElements; + }; + var isBogusBr = function (dom, node) { + if (!isBr(node)) { + return false; + } + if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) { + return true; + } + return false; + }; + var isEmpty = function (dom, elm, keepBookmarks) { + var empty = dom.isEmpty(elm); + if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) { + return false; + } + return empty; + }; + var isChildOfBody = function (dom, elm) { + return dom.isChildOf(elm, dom.getRoot()); + }; + var $_okk1ogljjgweckx = { + isTextNode: isTextNode, + isListNode: isListNode, + isListItemNode: isListItemNode, + isTableCellNode: isTableCellNode, + isBr: isBr, + isFirstChild: isFirstChild, + isLastChild: isLastChild, + isTextBlock: isTextBlock, + isBlock: isBlock, + isBogusBr: isBogusBr, + isEmpty: isEmpty, + isChildOfBody: isChildOfBody + }; - bookmark[start ? 'startContainer' : 'endContainer'] = container; - bookmark[start ? 'startOffset' : 'endOffset'] = offset; - } - - setupEndPoint(true); - - if (!rng.collapsed) { - setupEndPoint(); - } - - return bookmark; - } - - /** - * Moves the selection to the current bookmark and removes any selection container wrappers. - * - * @param {Object} bookmark Bookmark object to move selection to. - */ - function moveToBookmark(bookmark) { - function restoreEndPoint(start) { - var container, offset, node; - - function nodeIndex(container) { - var node = container.parentNode.firstChild, idx = 0; + var getNormalizedEndPoint = function (container, offset) { + var node = global$1.getNode(container, offset); + if ($_okk1ogljjgweckx.isListItemNode(container) && $_okk1ogljjgweckx.isTextNode(node)) { + var textNodeOffset = offset >= container.childNodes.length ? node.data.length : 0; + return { + container: node, + offset: textNodeOffset + }; + } + return { + container: container, + offset: offset + }; + }; + var normalizeRange = function (rng) { + var outRng = rng.cloneRange(); + var rangeStart = getNormalizedEndPoint(rng.startContainer, rng.startOffset); + outRng.setStart(rangeStart.container, rangeStart.offset); + var rangeEnd = getNormalizedEndPoint(rng.endContainer, rng.endOffset); + outRng.setEnd(rangeEnd.container, rangeEnd.offset); + return outRng; + }; + var $_a9cyhvgkjjgweckv = { + getNormalizedEndPoint: getNormalizedEndPoint, + normalizeRange: normalizeRange + }; - while (node) { - if (node == container) { - return idx; - } - - // Skip data-mce-type=bookmark nodes - if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') { - idx++; - } - - node = node.nextSibling; - } - - return -1; - } - - container = node = bookmark[start ? 'startContainer' : 'endContainer']; - offset = bookmark[start ? 'startOffset' : 'endOffset']; - - if (!container) { - return; - } - - if (container.nodeType == 1) { - offset = nodeIndex(container); - container = container.parentNode; - dom.remove(node); - } - - bookmark[start ? 'startContainer' : 'endContainer'] = container; - bookmark[start ? 'startOffset' : 'endOffset'] = offset; - } - - restoreEndPoint(true); - restoreEndPoint(); - - var rng = dom.createRng(); - - rng.setStart(bookmark.startContainer, bookmark.startOffset); - - if (bookmark.endContainer) { - rng.setEnd(bookmark.endContainer, bookmark.endOffset); - } - - selection.setRng(rng); - } - - function createNewTextBlock(contentNode, blockName) { - var node, textBlock, fragment = dom.createFragment(), hasContentNode; - var blockElements = editor.schema.getBlockElements(); + var DOM = global$6.DOM; + var createBookmark = function (rng) { + var bookmark = {}; + var setupEndPoint = function (start) { + var offsetNode, container, offset; + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + if (container.nodeType === 1) { + offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' }); + if (container.hasChildNodes()) { + offset = Math.min(offset, container.childNodes.length - 1); + if (start) { + container.insertBefore(offsetNode, container.childNodes[offset]); + } else { + DOM.insertAfter(offsetNode, container.childNodes[offset]); + } + } else { + container.appendChild(offsetNode); + } + container = offsetNode; + offset = 0; + } + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + }; + setupEndPoint(true); + if (!rng.collapsed) { + setupEndPoint(); + } + return bookmark; + }; + var resolveBookmark = function (bookmark) { + function restoreEndPoint(start) { + var container, offset, node; + var nodeIndex = function (container) { + var node = container.parentNode.firstChild, idx = 0; + while (node) { + if (node === container) { + return idx; + } + if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') { + idx++; + } + node = node.nextSibling; + } + return -1; + }; + container = node = bookmark[start ? 'startContainer' : 'endContainer']; + offset = bookmark[start ? 'startOffset' : 'endOffset']; + if (!container) { + return; + } + if (container.nodeType === 1) { + offset = nodeIndex(container); + container = container.parentNode; + DOM.remove(node); + if (!container.hasChildNodes() && DOM.isBlock(container)) { + container.appendChild(DOM.create('br')); + } + } + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + restoreEndPoint(true); + restoreEndPoint(); + var rng = DOM.createRng(); + rng.setStart(bookmark.startContainer, bookmark.startOffset); + if (bookmark.endContainer) { + rng.setEnd(bookmark.endContainer, bookmark.endOffset); + } + return $_a9cyhvgkjjgweckv.normalizeRange(rng); + }; + var $_2nx1i4gjjjgweckt = { + createBookmark: createBookmark, + resolveBookmark: resolveBookmark + }; - if (editor.settings.forced_root_block) { - blockName = blockName || editor.settings.forced_root_block; - } - - if (blockName) { - textBlock = dom.create(blockName); - - if (textBlock.tagName === editor.settings.forced_root_block) { - dom.setAttribs(textBlock, editor.settings.forced_root_block_attrs); - } - - fragment.appendChild(textBlock); - } - - if (contentNode) { - while ((node = contentNode.firstChild)) { - var nodeName = node.nodeName; - - if (!hasContentNode && (nodeName != 'SPAN' || node.getAttribute('data-mce-type') != 'bookmark')) { - hasContentNode = true; - } + var DOM$1 = global$6.DOM; + var normalizeList = function (dom, ul) { + var sibling; + var parentNode = ul.parentNode; + if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) { + sibling = parentNode.previousSibling; + if (sibling && sibling.nodeName === 'LI') { + sibling.appendChild(ul); + if ($_okk1ogljjgweckx.isEmpty(dom, parentNode)) { + DOM$1.remove(parentNode); + } + } else { + DOM$1.setStyle(parentNode, 'listStyleType', 'none'); + } + } + if ($_okk1ogljjgweckx.isListNode(parentNode)) { + sibling = parentNode.previousSibling; + if (sibling && sibling.nodeName === 'LI') { + sibling.appendChild(ul); + } + } + }; + var normalizeLists = function (dom, element) { + global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) { + normalizeList(dom, ul); + }); + }; + var $_ekd4wzgmjjgwecl1 = { + normalizeList: normalizeList, + normalizeLists: normalizeLists + }; - if (blockElements[nodeName]) { - fragment.appendChild(node); - textBlock = null; - } else { - if (blockName) { - if (!textBlock) { - textBlock = dom.create(blockName); - fragment.appendChild(textBlock); - } - - textBlock.appendChild(node); - } else { - fragment.appendChild(node); - } - } - } - } - - if (!editor.settings.forced_root_block) { - fragment.appendChild(dom.create('br')); - } else { - // BR is needed in empty blocks on non IE browsers - if (!hasContentNode && (!tinymce.Env.ie || tinymce.Env.ie > 10)) { - textBlock.appendChild(dom.create('br', {'data-mce-bogus': '1'})); - } - } - - return fragment; - } + var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery'); - function getSelectedListItems() { - return tinymce.grep(selection.getSelectedBlocks(), function(block) { - return /^(LI|DT|DD)$/.test(block.nodeName); - }); - } - - function splitList(ul, li, newBlock) { - var tmpRng, fragment, bookmarks, node; - - function removeAndKeepBookmarks(targetNode) { - tinymce.each(bookmarks, function(node) { - targetNode.parentNode.insertBefore(node, li.parentNode); - }); - - dom.remove(targetNode); - } - - bookmarks = dom.select('span[data-mce-type="bookmark"]', ul); - newBlock = newBlock || createNewTextBlock(li); - tmpRng = dom.createRng(); - tmpRng.setStartAfter(li); - tmpRng.setEndAfter(ul); - fragment = tmpRng.extractContents(); + var getParentList = function (editor) { + var selectionStart = editor.selection.getStart(true); + return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart)); + }; + var isParentListSelected = function (parentList, selectedBlocks) { + return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList; + }; + var findSubLists = function (parentList) { + return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) { + return $_okk1ogljjgweckx.isListNode(elm); + }); + }; + var getSelectedSubLists = function (editor) { + var parentList = getParentList(editor); + var selectedBlocks = editor.selection.getSelectedBlocks(); + if (isParentListSelected(parentList, selectedBlocks)) { + return findSubLists(parentList); + } else { + return global$5.grep(selectedBlocks, function (elm) { + return $_okk1ogljjgweckx.isListNode(elm) && parentList !== elm; + }); + } + }; + var findParentListItemsNodes = function (editor, elms) { + var listItemsElms = global$5.map(elms, function (elm) { + var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm)); + return parentLi ? parentLi : elm; + }); + return global$7.unique(listItemsElms); + }; + var getSelectedListItems = function (editor) { + var selectedBlocks = editor.selection.getSelectedBlocks(); + return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) { + return $_okk1ogljjgweckx.isListItemNode(block); + }); + }; + var getClosestListRootElm = function (editor, elm) { + var parentTableCell = editor.dom.getParents(elm, 'TD,TH'); + var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody(); + return root; + }; + var $_3xb1cggnjjgwecl3 = { + getParentList: getParentList, + getSelectedSubLists: getSelectedSubLists, + getSelectedListItems: getSelectedListItems, + getClosestListRootElm: getClosestListRootElm + }; - for (node = fragment.firstChild; node; node = node.firstChild) { - if (node.nodeName == 'LI' && dom.isEmpty(node)) { - dom.remove(node); - break; - } - } - - if (!dom.isEmpty(fragment)) { - dom.insertAfter(fragment, ul); - } - - dom.insertAfter(newBlock, ul); - - if (dom.isEmpty(li.parentNode)) { - removeAndKeepBookmarks(li.parentNode); - } - - dom.remove(li); - - if (dom.isEmpty(ul)) { - dom.remove(ul); - } - } - - function mergeWithAdjacentLists(listBlock) { - var sibling, node; + var global$8 = tinymce.util.Tools.resolve('tinymce.Env'); - sibling = listBlock.nextSibling; - if (sibling && isListNode(sibling) && sibling.nodeName == listBlock.nodeName) { - while ((node = sibling.firstChild)) { - listBlock.appendChild(node); - } - - dom.remove(sibling); - } - - sibling = listBlock.previousSibling; - if (sibling && isListNode(sibling) && sibling.nodeName == listBlock.nodeName) { - while ((node = sibling.firstChild)) { - listBlock.insertBefore(node, listBlock.firstChild); - } - - dom.remove(sibling); - } - } - - /** - * Normalizes the all lists in the specified element. - */ - function normalizeList(element) { - tinymce.each(tinymce.grep(dom.select('ol,ul', element)), function(ul) { - var sibling, parentNode = ul.parentNode; - - // Move UL/OL to previous LI if it's the only child of a LI - if (parentNode.nodeName == 'LI' && parentNode.firstChild == ul) { - sibling = parentNode.previousSibling; - if (sibling && sibling.nodeName == 'LI') { - sibling.appendChild(ul); - - if (dom.isEmpty(parentNode)) { - dom.remove(parentNode); - } - } - } - - // Append OL/UL to previous LI if it's in a parent OL/UL i.e. old HTML4 - if (isListNode(parentNode)) { - sibling = parentNode.previousSibling; - if (sibling && sibling.nodeName == 'LI') { - sibling.appendChild(ul); - } - } - }); - } - - function outdent(li) { - var ul = li.parentNode, ulParent = ul.parentNode, newBlock; + var DOM$2 = global$6.DOM; + var createNewTextBlock = function (editor, contentNode, blockName) { + var node, textBlock; + var fragment = DOM$2.createFragment(); + var hasContentNode; + var blockElements = editor.schema.getBlockElements(); + if (editor.settings.forced_root_block) { + blockName = blockName || editor.settings.forced_root_block; + } + if (blockName) { + textBlock = DOM$2.create(blockName); + if (textBlock.tagName === editor.settings.forced_root_block) { + DOM$2.setAttribs(textBlock, editor.settings.forced_root_block_attrs); + } + if (!$_okk1ogljjgweckx.isBlock(contentNode.firstChild, blockElements)) { + fragment.appendChild(textBlock); + } + } + if (contentNode) { + while (node = contentNode.firstChild) { + var nodeName = node.nodeName; + if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) { + hasContentNode = true; + } + if ($_okk1ogljjgweckx.isBlock(node, blockElements)) { + fragment.appendChild(node); + textBlock = null; + } else { + if (blockName) { + if (!textBlock) { + textBlock = DOM$2.create(blockName); + fragment.appendChild(textBlock); + } + textBlock.appendChild(node); + } else { + fragment.appendChild(node); + } + } + } + } + if (!editor.settings.forced_root_block) { + fragment.appendChild(DOM$2.create('br')); + } else { + if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) { + textBlock.appendChild(DOM$2.create('br', { 'data-mce-bogus': '1' })); + } + } + return fragment; + }; + var $_kbc02gqjjgwecl9 = { createNewTextBlock: createNewTextBlock }; - function removeEmptyLi(li) { - if (dom.isEmpty(li)) { - dom.remove(li); - } - } - - if (li.nodeName == 'DD') { - dom.rename(li, 'DT'); - return true; - } - - if (isFirstChild(li) && isLastChild(li)) { - if (ulParent.nodeName == "LI") { - dom.insertAfter(li, ulParent); - removeEmptyLi(ulParent); - dom.remove(ul); - } else if (isListNode(ulParent)) { - dom.remove(ul, true); - } else { - ulParent.insertBefore(createNewTextBlock(li), ul); - dom.remove(ul); - } - - return true; - } else if (isFirstChild(li)) { - if (ulParent.nodeName == "LI") { - dom.insertAfter(li, ulParent); - li.appendChild(ul); - removeEmptyLi(ulParent); - } else if (isListNode(ulParent)) { - ulParent.insertBefore(li, ul); - } else { - ulParent.insertBefore(createNewTextBlock(li), ul); - dom.remove(li); - } - - return true; - } else if (isLastChild(li)) { - if (ulParent.nodeName == "LI") { - dom.insertAfter(li, ulParent); - } else if (isListNode(ulParent)) { - dom.insertAfter(li, ul); - } else { - dom.insertAfter(createNewTextBlock(li), ul); - dom.remove(li); - } + var DOM$3 = global$6.DOM; + var splitList = function (editor, ul, li, newBlock) { + var tmpRng, fragment, bookmarks, node; + var removeAndKeepBookmarks = function (targetNode) { + global$5.each(bookmarks, function (node) { + targetNode.parentNode.insertBefore(node, li.parentNode); + }); + DOM$3.remove(targetNode); + }; + bookmarks = DOM$3.select('span[data-mce-type="bookmark"]', ul); + newBlock = newBlock || $_kbc02gqjjgwecl9.createNewTextBlock(editor, li); + tmpRng = DOM$3.createRng(); + tmpRng.setStartAfter(li); + tmpRng.setEndAfter(ul); + fragment = tmpRng.extractContents(); + for (node = fragment.firstChild; node; node = node.firstChild) { + if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) { + DOM$3.remove(node); + break; + } + } + if (!editor.dom.isEmpty(fragment)) { + DOM$3.insertAfter(fragment, ul); + } + DOM$3.insertAfter(newBlock, ul); + if ($_okk1ogljjgweckx.isEmpty(editor.dom, li.parentNode)) { + removeAndKeepBookmarks(li.parentNode); + } + DOM$3.remove(li); + if ($_okk1ogljjgweckx.isEmpty(editor.dom, ul)) { + DOM$3.remove(ul); + } + }; + var $_fikiq7gpjjgwecl5 = { splitList: splitList }; - return true; - } else { - if (ulParent.nodeName == 'LI') { - ul = ulParent; - newBlock = createNewTextBlock(li, 'LI'); - } else if (isListNode(ulParent)) { - newBlock = createNewTextBlock(li, 'LI'); - } else { - newBlock = createNewTextBlock(li); - } - - splitList(ul, li, newBlock); - normalizeList(ul.parentNode); - - return true; - } - - return false; - } - - function indent(li) { - var sibling, newList; - - function mergeLists(from, to) { - var node; - - if (isListNode(from)) { - while ((node = li.lastChild.firstChild)) { - to.appendChild(node); - } - - dom.remove(from); - } - } - - if (li.nodeName == 'DT') { - dom.rename(li, 'DD'); - return true; - } - - sibling = li.previousSibling; - - if (sibling && isListNode(sibling)) { - sibling.appendChild(li); - return true; - } - - if (sibling && sibling.nodeName == 'LI' && isListNode(sibling.lastChild)) { - sibling.lastChild.appendChild(li); - mergeLists(li.lastChild, sibling.lastChild); - return true; - } - - sibling = li.nextSibling; + var DOM$4 = global$6.DOM; + var removeEmptyLi = function (dom, li) { + if ($_okk1ogljjgweckx.isEmpty(dom, li)) { + DOM$4.remove(li); + } + }; + var outdent = function (editor, li) { + var ul = li.parentNode; + var ulParent, newBlock; + if (ul) { + ulParent = ul.parentNode; + } else { + removeEmptyLi(editor.dom, li); + return true; + } + if (ul === editor.getBody()) { + return true; + } + if (li.nodeName === 'DD') { + DOM$4.rename(li, 'DT'); + return true; + } + if ($_okk1ogljjgweckx.isFirstChild(li) && $_okk1ogljjgweckx.isLastChild(li)) { + if (ulParent.nodeName === 'LI') { + DOM$4.insertAfter(li, ulParent); + removeEmptyLi(editor.dom, ulParent); + DOM$4.remove(ul); + } else if ($_okk1ogljjgweckx.isListNode(ulParent)) { + DOM$4.remove(ul, true); + } else { + ulParent.insertBefore($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul); + DOM$4.remove(ul); + } + return true; + } else if ($_okk1ogljjgweckx.isFirstChild(li)) { + if (ulParent.nodeName === 'LI') { + DOM$4.insertAfter(li, ulParent); + li.appendChild(ul); + removeEmptyLi(editor.dom, ulParent); + } else if ($_okk1ogljjgweckx.isListNode(ulParent)) { + ulParent.insertBefore(li, ul); + } else { + ulParent.insertBefore($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul); + DOM$4.remove(li); + } + return true; + } else if ($_okk1ogljjgweckx.isLastChild(li)) { + if (ulParent.nodeName === 'LI') { + DOM$4.insertAfter(li, ulParent); + } else if ($_okk1ogljjgweckx.isListNode(ulParent)) { + DOM$4.insertAfter(li, ul); + } else { + DOM$4.insertAfter($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul); + DOM$4.remove(li); + } + return true; + } + if (ulParent.nodeName === 'LI') { + ul = ulParent; + newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li, 'LI'); + } else if ($_okk1ogljjgweckx.isListNode(ulParent)) { + newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li, 'LI'); + } else { + newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li); + } + $_fikiq7gpjjgwecl5.splitList(editor, ul, li, newBlock); + $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, ul.parentNode); + return true; + }; + var outdentSelection = function (editor) { + var listElements = $_3xb1cggnjjgwecl3.getSelectedListItems(editor); + if (listElements.length) { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng()); + var i = void 0, y = void 0; + var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true)); + i = listElements.length; + while (i--) { + var node = listElements[i].parentNode; + while (node && node !== root) { + y = listElements.length; + while (y--) { + if (listElements[y] === node) { + listElements.splice(i, 1); + break; + } + } + node = node.parentNode; + } + } + for (i = 0; i < listElements.length; i++) { + if (!outdent(editor, listElements[i]) && i === 0) { + break; + } + } + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + editor.nodeChanged(); + return true; + } + }; + var $_6pbactghjjgweckp = { + outdent: outdent, + outdentSelection: outdentSelection + }; - if (sibling && isListNode(sibling)) { - sibling.insertBefore(li, sibling.firstChild); - return true; - } - - if (sibling && sibling.nodeName == 'LI' && isListNode(li.lastChild)) { - return false; - } - - sibling = li.previousSibling; - if (sibling && sibling.nodeName == 'LI') { - newList = dom.create(li.parentNode.nodeName); - sibling.appendChild(newList); - newList.appendChild(li); - mergeLists(li.lastChild, newList); - return true; - } - - return false; - } - - function indentSelection() { - var listElements = getSelectedListItems(); - - if (listElements.length) { - var bookmark = createBookmark(selection.getRng(true)); - - for (var i = 0; i < listElements.length; i++) { - if (!indent(listElements[i]) && i === 0) { - break; - } - } - - moveToBookmark(bookmark); - editor.nodeChanged(); - - return true; - } - } - - function outdentSelection() { - var listElements = getSelectedListItems(); - - if (listElements.length) { - var bookmark = createBookmark(selection.getRng(true)); - var i, y, root = editor.getBody(); - - i = listElements.length; - while (i--) { - var node = listElements[i].parentNode; - - while (node && node != root) { - y = listElements.length; - while (y--) { - if (listElements[y] === node) { - listElements.splice(i, 1); - break; - } - } - - node = node.parentNode; - } - } - - for (i = 0; i < listElements.length; i++) { - if (!outdent(listElements[i]) && i === 0) { - break; - } - } - - moveToBookmark(bookmark); - editor.nodeChanged(); - - return true; - } - } - - function applyList(listName) { - var rng = selection.getRng(true), bookmark = createBookmark(rng), listItemName = 'LI'; - - listName = listName.toUpperCase(); - - if (listName == 'DL') { - listItemName = 'DT'; - } - - function getSelectedTextBlocks() { - var textBlocks = [], root = editor.getBody(); - - function getEndPointNode(start) { - var container, offset; - - container = rng[start ? 'startContainer' : 'endContainer']; - offset = rng[start ? 'startOffset' : 'endOffset']; - - // Resolve node index - if (container.nodeType == 1) { - container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; - } - - while (container.parentNode != root) { - if (isTextBlock(container)) { - return container; - } - - if (/^(TD|TH)$/.test(container.parentNode.nodeName)) { - return container; - } - - container = container.parentNode; - } - - return container; - } - - var startNode = getEndPointNode(true); - var endNode = getEndPointNode(); - var block, siblings = []; - - for (var node = startNode; node; node = node.nextSibling) { - siblings.push(node); - - if (node == endNode) { - break; - } - } - - tinymce.each(siblings, function(node) { - if (isTextBlock(node)) { - textBlocks.push(node); - block = null; - return; - } - - if (dom.isBlock(node) || node.nodeName == 'BR') { - if (node.nodeName == 'BR') { - dom.remove(node); - } - - block = null; - return; - } - - var nextSibling = node.nextSibling; - if (tinymce.dom.BookmarkManager.isBookmarkNode(node)) { - if (isTextBlock(nextSibling) || (!nextSibling && node.parentNode == root)) { - block = null; - return; - } - } - - if (!block) { - block = dom.create('p'); - node.parentNode.insertBefore(block, node); - textBlocks.push(block); - } - - block.appendChild(node); - }); - - return textBlocks; - } - - tinymce.each(getSelectedTextBlocks(), function(block) { - var listBlock, sibling; - - sibling = block.previousSibling; - if (sibling && isListNode(sibling) && sibling.nodeName == listName) { - listBlock = sibling; - block = dom.rename(block, listItemName); - sibling.appendChild(block); - } else { - listBlock = dom.create(listName); - block.parentNode.insertBefore(listBlock, block); - listBlock.appendChild(block); - block = dom.rename(block, listItemName); - } - - mergeWithAdjacentLists(listBlock); - }); - - moveToBookmark(bookmark); - } - - function removeList() { - var bookmark = createBookmark(selection.getRng(true)), root = editor.getBody(); - - tinymce.each(getSelectedListItems(), function(li) { - var node, rootList; - - if (dom.isEmpty(li)) { - outdent(li); - return; - } - - for (node = li; node && node != root; node = node.parentNode) { - if (isListNode(node)) { - rootList = node; - } - } - - splitList(rootList, li); - }); + var updateListStyle = function (dom, el, detail) { + var type = detail['list-style-type'] ? detail['list-style-type'] : null; + dom.setStyle(el, 'list-style-type', type); + }; + var setAttribs = function (elm, attrs) { + global$5.each(attrs, function (value, key) { + elm.setAttribute(key, value); + }); + }; + var updateListAttrs = function (dom, el, detail) { + setAttribs(el, detail['list-attributes']); + global$5.each(dom.select('li', el), function (li) { + setAttribs(li, detail['list-item-attributes']); + }); + }; + var updateListWithDetails = function (dom, el, detail) { + updateListStyle(dom, el, detail); + updateListAttrs(dom, el, detail); + }; + var removeStyles = function (dom, element, styles) { + global$5.each(styles, function (style) { + var _a; + return dom.setStyle(element, (_a = {}, _a[style] = '', _a)); + }); + }; + var getEndPointNode = function (editor, rng, start, root) { + var container, offset; + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + if (container.nodeType === 1) { + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + } + if (!start && $_okk1ogljjgweckx.isBr(container.nextSibling)) { + container = container.nextSibling; + } + while (container.parentNode !== root) { + if ($_okk1ogljjgweckx.isTextBlock(editor, container)) { + return container; + } + if (/^(TD|TH)$/.test(container.parentNode.nodeName)) { + return container; + } + container = container.parentNode; + } + return container; + }; + var getSelectedTextBlocks = function (editor, rng, root) { + var textBlocks = [], dom = editor.dom; + var startNode = getEndPointNode(editor, rng, true, root); + var endNode = getEndPointNode(editor, rng, false, root); + var block; + var siblings = []; + for (var node = startNode; node; node = node.nextSibling) { + siblings.push(node); + if (node === endNode) { + break; + } + } + global$5.each(siblings, function (node) { + if ($_okk1ogljjgweckx.isTextBlock(editor, node)) { + textBlocks.push(node); + block = null; + return; + } + if (dom.isBlock(node) || $_okk1ogljjgweckx.isBr(node)) { + if ($_okk1ogljjgweckx.isBr(node)) { + dom.remove(node); + } + block = null; + return; + } + var nextSibling = node.nextSibling; + if (global$4.isBookmarkNode(node)) { + if ($_okk1ogljjgweckx.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) { + block = null; + return; + } + } + if (!block) { + block = dom.create('p'); + node.parentNode.insertBefore(block, node); + textBlocks.push(block); + } + block.appendChild(node); + }); + return textBlocks; + }; + var hasCompatibleStyle = function (dom, sib, detail) { + var sibStyle = dom.getStyle(sib, 'list-style-type'); + var detailStyle = detail ? detail['list-style-type'] : ''; + detailStyle = detailStyle === null ? '' : detailStyle; + return sibStyle === detailStyle; + }; + var applyList = function (editor, listName, detail) { + if (detail === void 0) { + detail = {}; + } + var rng = editor.selection.getRng(true); + var bookmark; + var listItemName = 'LI'; + var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true)); + var dom = editor.dom; + if (dom.getContentEditable(editor.selection.getNode()) === 'false') { + return; + } + listName = listName.toUpperCase(); + if (listName === 'DL') { + listItemName = 'DT'; + } + bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng); + global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) { + var listBlock, sibling; + sibling = block.previousSibling; + if (sibling && $_okk1ogljjgweckx.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) { + listBlock = sibling; + block = dom.rename(block, listItemName); + sibling.appendChild(block); + } else { + listBlock = dom.create(listName); + block.parentNode.insertBefore(listBlock, block); + listBlock.appendChild(block); + block = dom.rename(block, listItemName); + } + removeStyles(dom, block, [ + 'margin', + 'margin-right', + 'margin-bottom', + 'margin-left', + 'margin-top', + 'padding', + 'padding-right', + 'padding-bottom', + 'padding-left', + 'padding-top' + ]); + updateListWithDetails(dom, listBlock, detail); + mergeWithAdjacentLists(editor.dom, listBlock); + }); + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + }; + var removeList = function (editor) { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true)); + var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true)); + var listItems = $_3xb1cggnjjgwecl3.getSelectedListItems(editor); + var emptyListItems = global$5.grep(listItems, function (li) { + return editor.dom.isEmpty(li); + }); + listItems = global$5.grep(listItems, function (li) { + return !editor.dom.isEmpty(li); + }); + global$5.each(emptyListItems, function (li) { + if ($_okk1ogljjgweckx.isEmpty(editor.dom, li)) { + $_6pbactghjjgweckp.outdent(editor, li); + return; + } + }); + global$5.each(listItems, function (li) { + var node, rootList; + if (li.parentNode === editor.getBody()) { + return; + } + for (node = li; node && node !== root; node = node.parentNode) { + if ($_okk1ogljjgweckx.isListNode(node)) { + rootList = node; + } + } + $_fikiq7gpjjgwecl5.splitList(editor, rootList, li); + $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, rootList.parentNode); + }); + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + }; + var isValidLists = function (list1, list2) { + return list1 && list2 && $_okk1ogljjgweckx.isListNode(list1) && list1.nodeName === list2.nodeName; + }; + var hasSameListStyle = function (dom, list1, list2) { + var targetStyle = dom.getStyle(list1, 'list-style-type', true); + var style = dom.getStyle(list2, 'list-style-type', true); + return targetStyle === style; + }; + var hasSameClasses = function (elm1, elm2) { + return elm1.className === elm2.className; + }; + var shouldMerge = function (dom, list1, list2) { + return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2); + }; + var mergeWithAdjacentLists = function (dom, listBlock) { + var sibling, node; + sibling = listBlock.nextSibling; + if (shouldMerge(dom, listBlock, sibling)) { + while (node = sibling.firstChild) { + listBlock.appendChild(node); + } + dom.remove(sibling); + } + sibling = listBlock.previousSibling; + if (shouldMerge(dom, listBlock, sibling)) { + while (node = sibling.lastChild) { + listBlock.insertBefore(node, listBlock.firstChild); + } + dom.remove(sibling); + } + }; + var updateList = function (dom, list, listName, detail) { + if (list.nodeName !== listName) { + var newList = dom.rename(list, listName); + updateListWithDetails(dom, newList, detail); + } else { + updateListWithDetails(dom, list, detail); + } + }; + var toggleMultipleLists = function (editor, parentList, lists, listName, detail) { + if (parentList.nodeName === listName && !hasListStyleDetail(detail)) { + removeList(editor); + } else { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true)); + global$5.each([parentList].concat(lists), function (elm) { + updateList(editor.dom, elm, listName, detail); + }); + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + } + }; + var hasListStyleDetail = function (detail) { + return 'list-style-type' in detail; + }; + var toggleSingleList = function (editor, parentList, listName, detail) { + if (parentList === editor.getBody()) { + return; + } + if (parentList) { + if (parentList.nodeName === listName && !hasListStyleDetail(detail)) { + removeList(editor); + } else { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true)); + updateListWithDetails(editor.dom, parentList, detail); + mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName)); + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + } + } else { + applyList(editor, listName, detail); + } + }; + var toggleList = function (editor, listName, detail) { + var parentList = $_3xb1cggnjjgwecl3.getParentList(editor); + var selectedSubLists = $_3xb1cggnjjgwecl3.getSelectedSubLists(editor); + detail = detail ? detail : {}; + if (parentList && selectedSubLists.length > 0) { + toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail); + } else { + toggleSingleList(editor, parentList, listName, detail); + } + }; + var $_aek3i3gejjgwecki = { + toggleList: toggleList, + removeList: removeList, + mergeWithAdjacentLists: mergeWithAdjacentLists + }; - moveToBookmark(bookmark); - } - - function toggleList(listName) { - var parentList = dom.getParent(selection.getStart(), 'OL,UL,DL'); - - if (parentList) { - if (parentList.nodeName == listName) { - removeList(listName); - } else { - var bookmark = createBookmark(selection.getRng(true)); - mergeWithAdjacentLists(dom.rename(parentList, listName)); - moveToBookmark(bookmark); - } - } else { - applyList(listName); - } - } - - function queryListCommandState(listName) { - return function() { - var parentList = dom.getParent(editor.selection.getStart(), 'UL,OL,DL'); - - return parentList && parentList.nodeName == listName; - }; - } - - self.backspaceDelete = function(isForward) { - function findNextCaretContainer(rng, isForward) { - var node = rng.startContainer, offset = rng.startOffset; - var nonEmptyBlocks, walker; - - if (node.nodeType == 3 && (isForward ? offset < node.data.length : offset > 0)) { - return node; - } - - nonEmptyBlocks = editor.schema.getNonEmptyElements(); - walker = new tinymce.dom.TreeWalker(rng.startContainer); - - while ((node = walker[isForward ? 'next' : 'prev']())) { - if (node.nodeName == 'LI' && !node.hasChildNodes()) { - return node; - } - - if (nonEmptyBlocks[node.nodeName]) { - return node; - } + var findNextCaretContainer = function (editor, rng, isForward, root) { + var node = rng.startContainer; + var offset = rng.startOffset; + var nonEmptyBlocks, walker; + if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) { + return node; + } + nonEmptyBlocks = editor.schema.getNonEmptyElements(); + if (node.nodeType === 1) { + node = global$1.getNode(node, offset); + } + walker = new global$2(node, root); + if (isForward) { + if ($_okk1ogljjgweckx.isBogusBr(editor.dom, node)) { + walker.next(); + } + } + while (node = walker[isForward ? 'next' : 'prev2']()) { + if (node.nodeName === 'LI' && !node.hasChildNodes()) { + return node; + } + if (nonEmptyBlocks[node.nodeName]) { + return node; + } + if (node.nodeType === 3 && node.data.length > 0) { + return node; + } + } + }; + var hasOnlyOneBlockChild = function (dom, elm) { + var childNodes = elm.childNodes; + return childNodes.length === 1 && !$_okk1ogljjgweckx.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]); + }; + var unwrapSingleBlockChild = function (dom, elm) { + if (hasOnlyOneBlockChild(dom, elm)) { + dom.remove(elm.firstChild, true); + } + }; + var moveChildren = function (dom, fromElm, toElm) { + var node, targetElm; + targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm; + unwrapSingleBlockChild(dom, fromElm); + if (!$_okk1ogljjgweckx.isEmpty(dom, fromElm, true)) { + while (node = fromElm.firstChild) { + targetElm.appendChild(node); + } + } + }; + var mergeLiElements = function (dom, fromElm, toElm) { + var node, listNode; + var ul = fromElm.parentNode; + if (!$_okk1ogljjgweckx.isChildOfBody(dom, fromElm) || !$_okk1ogljjgweckx.isChildOfBody(dom, toElm)) { + return; + } + if ($_okk1ogljjgweckx.isListNode(toElm.lastChild)) { + listNode = toElm.lastChild; + } + if (ul === toElm.lastChild) { + if ($_okk1ogljjgweckx.isBr(ul.previousSibling)) { + dom.remove(ul.previousSibling); + } + } + node = toElm.lastChild; + if (node && $_okk1ogljjgweckx.isBr(node) && fromElm.hasChildNodes()) { + dom.remove(node); + } + if ($_okk1ogljjgweckx.isEmpty(dom, toElm, true)) { + dom.$(toElm).empty(); + } + moveChildren(dom, fromElm, toElm); + if (listNode) { + toElm.appendChild(listNode); + } + dom.remove(fromElm); + if ($_okk1ogljjgweckx.isEmpty(dom, ul) && ul !== dom.getRoot()) { + dom.remove(ul); + } + }; + var mergeIntoEmptyLi = function (editor, fromLi, toLi) { + editor.dom.$(toLi).empty(); + mergeLiElements(editor.dom, fromLi, toLi); + editor.selection.setCursorLocation(toLi); + }; + var mergeForward = function (editor, rng, fromLi, toLi) { + var dom = editor.dom; + if (dom.isEmpty(toLi)) { + mergeIntoEmptyLi(editor, fromLi, toLi); + } else { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng); + mergeLiElements(dom, fromLi, toLi); + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + } + }; + var mergeBackward = function (editor, rng, fromLi, toLi) { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng); + mergeLiElements(editor.dom, fromLi, toLi); + var resolvedBookmark = $_2nx1i4gjjjgweckt.resolveBookmark(bookmark); + editor.selection.setRng(resolvedBookmark); + }; + var backspaceDeleteFromListToListCaret = function (editor, isForward) { + var dom = editor.dom, selection = editor.selection; + var selectionStartElm = selection.getStart(); + var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm); + var li = dom.getParent(selection.getStart(), 'LI', root); + var ul, rng, otherLi; + if (li) { + ul = li.parentNode; + if (ul === editor.getBody() && $_okk1ogljjgweckx.isEmpty(dom, ul)) { + return true; + } + rng = $_a9cyhvgkjjgweckv.normalizeRange(selection.getRng(true)); + otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root); + if (otherLi && otherLi !== li) { + if (isForward) { + mergeForward(editor, rng, otherLi, li); + } else { + mergeBackward(editor, rng, li, otherLi); + } + return true; + } else if (!otherLi) { + if (!isForward && $_aek3i3gejjgwecki.removeList(editor)) { + return true; + } + } + } + return false; + }; + var removeBlock = function (dom, block, root) { + var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root); + dom.remove(block); + if (parentBlock && dom.isEmpty(parentBlock)) { + dom.remove(parentBlock); + } + }; + var backspaceDeleteIntoListCaret = function (editor, isForward) { + var dom = editor.dom; + var selectionStartElm = editor.selection.getStart(); + var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm); + var block = dom.getParent(selectionStartElm, dom.isBlock, root); + if (block && dom.isEmpty(block)) { + var rng = $_a9cyhvgkjjgweckv.normalizeRange(editor.selection.getRng(true)); + var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root); + if (otherLi_1) { + editor.undoManager.transact(function () { + removeBlock(dom, block, root); + $_aek3i3gejjgwecki.mergeWithAdjacentLists(dom, otherLi_1.parentNode); + editor.selection.select(otherLi_1, true); + editor.selection.collapse(isForward); + }); + return true; + } + } + return false; + }; + var backspaceDeleteCaret = function (editor, isForward) { + return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward); + }; + var backspaceDeleteRange = function (editor) { + var selectionStartElm = editor.selection.getStart(); + var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm); + var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root); + if (startListParent || $_3xb1cggnjjgwecl3.getSelectedListItems(editor).length > 0) { + editor.undoManager.transact(function () { + editor.execCommand('Delete'); + $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, editor.getBody()); + }); + return true; + } + return false; + }; + var backspaceDelete = function (editor, isForward) { + return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor); + }; + var setup = function (editor) { + editor.on('keydown', function (e) { + if (e.keyCode === global$3.BACKSPACE) { + if (backspaceDelete(editor, false)) { + e.preventDefault(); + } + } else if (e.keyCode === global$3.DELETE) { + if (backspaceDelete(editor, true)) { + e.preventDefault(); + } + } + }); + }; + var $_brhyezgajjgweck7 = { + setup: setup, + backspaceDelete: backspaceDelete + }; - if (node.nodeType == 3 && node.data.length > 0) { - return node; - } - } - } - - function mergeLiElements(fromElm, toElm) { - var node, listNode, ul = fromElm.parentNode; - - if (isListNode(toElm.lastChild)) { - listNode = toElm.lastChild; - } - - node = toElm.lastChild; - if (node && node.nodeName == 'BR' && fromElm.hasChildNodes()) { - dom.remove(node); - } - - if (dom.isEmpty(toElm)) { - dom.$(toElm).empty(); - } - - if (!dom.isEmpty(fromElm)) { - while ((node = fromElm.firstChild)) { - toElm.appendChild(node); - } - } - - if (listNode) { - toElm.appendChild(listNode); - } - - dom.remove(fromElm); - - if (dom.isEmpty(ul)) { - dom.remove(ul); - } - } - - if (selection.isCollapsed()) { - var li = dom.getParent(selection.getStart(), 'LI'); - - if (li) { - var rng = selection.getRng(true); - var otherLi = dom.getParent(findNextCaretContainer(rng, isForward), 'LI'); - - if (otherLi && otherLi != li) { - var bookmark = createBookmark(rng); + var get = function (editor) { + return { + backspaceDelete: function (isForward) { + $_brhyezgajjgweck7.backspaceDelete(editor, isForward); + } + }; + }; + var $_nb3yvg9jjgweck5 = { get: get }; - if (isForward) { - mergeLiElements(otherLi, li); - } else { - mergeLiElements(li, otherLi); - } - - moveToBookmark(bookmark); - - return true; - } else if (!otherLi) { - if (!isForward && removeList(li.parentNode.nodeName)) { - return true; - } - } - } - } - }; - - editor.on('BeforeExecCommand', function(e) { - var cmd = e.command.toLowerCase(), isHandled; - - if (cmd == "indent") { - if (indentSelection()) { - isHandled = true; - } - } else if (cmd == "outdent") { - if (outdentSelection()) { - isHandled = true; - } - } - - if (isHandled) { - editor.fire('ExecCommand', {command: e.command}); - e.preventDefault(); - return true; - } - }); - - editor.addCommand('InsertUnorderedList', function() { - toggleList('UL'); - }); - - editor.addCommand('InsertOrderedList', function() { - toggleList('OL'); - }); - - editor.addCommand('InsertDefinitionList', function() { - toggleList('DL'); - }); + var DOM$5 = global$6.DOM; + var mergeLists = function (from, to) { + var node; + if ($_okk1ogljjgweckx.isListNode(from)) { + while (node = from.firstChild) { + to.appendChild(node); + } + DOM$5.remove(from); + } + }; + var indent = function (li) { + var sibling, newList, listStyle; + if (li.nodeName === 'DT') { + DOM$5.rename(li, 'DD'); + return true; + } + sibling = li.previousSibling; + if (sibling && $_okk1ogljjgweckx.isListNode(sibling)) { + sibling.appendChild(li); + return true; + } + if (sibling && sibling.nodeName === 'LI' && $_okk1ogljjgweckx.isListNode(sibling.lastChild)) { + sibling.lastChild.appendChild(li); + mergeLists(li.lastChild, sibling.lastChild); + return true; + } + sibling = li.nextSibling; + if (sibling && $_okk1ogljjgweckx.isListNode(sibling)) { + sibling.insertBefore(li, sibling.firstChild); + return true; + } + sibling = li.previousSibling; + if (sibling && sibling.nodeName === 'LI') { + newList = DOM$5.create(li.parentNode.nodeName); + listStyle = DOM$5.getStyle(li.parentNode, 'listStyleType'); + if (listStyle) { + DOM$5.setStyle(newList, 'listStyleType', listStyle); + } + sibling.appendChild(newList); + newList.appendChild(li); + mergeLists(li.lastChild, newList); + return true; + } + return false; + }; + var indentSelection = function (editor) { + var listElements = $_3xb1cggnjjgwecl3.getSelectedListItems(editor); + if (listElements.length) { + var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true)); + for (var i = 0; i < listElements.length; i++) { + if (!indent(listElements[i]) && i === 0) { + break; + } + } + editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark)); + editor.nodeChanged(); + return true; + } + }; + var $_3rkwagtjjgweclf = { indentSelection: indentSelection }; - editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState('UL')); - editor.addQueryStateHandler('InsertOrderedList', queryListCommandState('OL')); - editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState('DL')); - - editor.on('keydown', function(e) { - // Check for tab but not ctrl/cmd+tab since it switches browser tabs - if (e.keyCode != 9 || tinymce.util.VK.metaKeyPressed(e)) { - return; - } + var queryListCommandState = function (editor, listName) { + return function () { + var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL'); + return parentList && parentList.nodeName === listName; + }; + }; + var register = function (editor) { + editor.on('BeforeExecCommand', function (e) { + var cmd = e.command.toLowerCase(); + var isHandled; + if (cmd === 'indent') { + if ($_3rkwagtjjgweclf.indentSelection(editor)) { + isHandled = true; + } + } else if (cmd === 'outdent') { + if ($_6pbactghjjgweckp.outdentSelection(editor)) { + isHandled = true; + } + } + if (isHandled) { + editor.fire('ExecCommand', { command: e.command }); + e.preventDefault(); + return true; + } + }); + editor.addCommand('InsertUnorderedList', function (ui, detail) { + $_aek3i3gejjgwecki.toggleList(editor, 'UL', detail); + }); + editor.addCommand('InsertOrderedList', function (ui, detail) { + $_aek3i3gejjgwecki.toggleList(editor, 'OL', detail); + }); + editor.addCommand('InsertDefinitionList', function (ui, detail) { + $_aek3i3gejjgwecki.toggleList(editor, 'DL', detail); + }); + editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL')); + editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL')); + editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL')); + }; + var $_blnfs1gsjjgwecld = { register: register }; - if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) { - e.preventDefault(); + var shouldIndentOnTab = function (editor) { + return editor.getParam('lists_indent_on_tab', true); + }; + var $_8obsbgvjjgweclk = { shouldIndentOnTab: shouldIndentOnTab }; - if (e.shiftKey) { - outdentSelection(); - } else { - indentSelection(); - } - } - }); - }); + var setupTabKey = function (editor) { + editor.on('keydown', function (e) { + if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) { + return; + } + if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) { + e.preventDefault(); + if (e.shiftKey) { + $_6pbactghjjgweckp.outdentSelection(editor); + } else { + $_3rkwagtjjgweclf.indentSelection(editor); + } + } + }); + }; + var setup$1 = function (editor) { + if ($_8obsbgvjjgweclk.shouldIndentOnTab(editor)) { + setupTabKey(editor); + } + $_brhyezgajjgweck7.setup(editor); + }; + var $_ees9z9gujjgwecli = { setup: setup$1 }; - editor.addButton('indent', { - icon: 'indent', - title: 'Increase indent', - cmd: 'Indent', - onPostRender: function() { - var ctrl = this; - - editor.on('nodechange', function() { - var blocks = editor.selection.getSelectedBlocks(); - var disable = false; - - for (var i = 0, l = blocks.length; !disable && i < l; i++) { - var tag = blocks[i].nodeName; - - disable = (tag == 'LI' && isFirstChild(blocks[i]) || tag == 'UL' || tag == 'OL' || tag == 'DD'); - } + var findIndex = function (list, predicate) { + for (var index = 0; index < list.length; index++) { + var element = list[index]; + if (predicate(element)) { + return index; + } + } + return -1; + }; + var listState = function (editor, listName) { + return function (e) { + var ctrl = e.control; + editor.on('NodeChange', function (e) { + var tableCellIndex = findIndex(e.parents, $_okk1ogljjgweckx.isTableCellNode); + var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents; + var lists = global$5.grep(parents, $_okk1ogljjgweckx.isListNode); + ctrl.active(lists.length > 0 && lists[0].nodeName === listName); + }); + }; + }; + var indentPostRender = function (editor) { + return function (e) { + var ctrl = e.control; + editor.on('nodechange', function () { + var listItemBlocks = $_3xb1cggnjjgwecl3.getSelectedListItems(editor); + var disable = listItemBlocks.length > 0 && $_okk1ogljjgweckx.isFirstChild(listItemBlocks[0]); + ctrl.disabled(disable); + }); + }; + }; + var register$1 = function (editor) { + var hasPlugin = function (editor, plugin) { + var plugins = editor.settings.plugins ? editor.settings.plugins : ''; + return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1; + }; + if (!hasPlugin(editor, 'advlist')) { + editor.addButton('numlist', { + active: false, + title: 'Numbered list', + cmd: 'InsertOrderedList', + onPostRender: listState(editor, 'OL') + }); + editor.addButton('bullist', { + active: false, + title: 'Bullet list', + cmd: 'InsertUnorderedList', + onPostRender: listState(editor, 'UL') + }); + } + editor.addButton('indent', { + icon: 'indent', + title: 'Increase indent', + cmd: 'Indent', + onPostRender: indentPostRender(editor) + }); + }; + var $_s7o0sgwjjgweclm = { register: register$1 }; - ctrl.disabled(disable); - }); - } - }); + global.add('lists', function (editor) { + $_ees9z9gujjgwecli.setup(editor); + $_s7o0sgwjjgweclm.register(editor); + $_blnfs1gsjjgwecld.register(editor); + return $_nb3yvg9jjgweck5.get(editor); + }); + function Plugin () { + } - editor.on('keydown', function(e) { - if (e.keyCode == tinymce.util.VK.BACKSPACE) { - if (self.backspaceDelete()) { - e.preventDefault(); - } - } else if (e.keyCode == tinymce.util.VK.DELETE) { - if (self.backspaceDelete(true)) { - e.preventDefault(); - } - } - }); -}); + return Plugin; + +}()); +})();