Current File : /home/k/a/r/karenpetzb/www/items/category/plugin.js.tar |
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/lists/plugin.js 0000644 00000211417 15071246150 0022341 0 ustar 00 (function () {
var lists = (function (domGlobals) {
'use strict';
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');
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');
var isTextNode = function (node) {
return node && node.nodeType === 3;
};
var isListNode = function (node) {
return node && /^(OL|UL|DL)$/.test(node.nodeName);
};
var isOlUlNode = function (node) {
return node && /^(OL|UL)$/.test(node.nodeName);
};
var isListItemNode = function (node) {
return node && /^(LI|DT|DD)$/.test(node.nodeName);
};
var isDlItemNode = function (node) {
return node && /^(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 NodeType = {
isTextNode: isTextNode,
isListNode: isListNode,
isOlUlNode: isOlUlNode,
isDlItemNode: isDlItemNode,
isListItemNode: isListItemNode,
isTableCellNode: isTableCellNode,
isBr: isBr,
isFirstChild: isFirstChild,
isLastChild: isLastChild,
isTextBlock: isTextBlock,
isBlock: isBlock,
isBogusBr: isBogusBr,
isEmpty: isEmpty,
isChildOfBody: isChildOfBody
};
var getNormalizedPoint = function (container, offset) {
if (NodeType.isTextNode(container)) {
return {
container: container,
offset: offset
};
}
var node = global$1.getNode(container, offset);
if (NodeType.isTextNode(node)) {
return {
container: node,
offset: offset >= container.childNodes.length ? node.data.length : 0
};
} else if (node.previousSibling && NodeType.isTextNode(node.previousSibling)) {
return {
container: node.previousSibling,
offset: node.previousSibling.data.length
};
} else if (node.nextSibling && NodeType.isTextNode(node.nextSibling)) {
return {
container: node.nextSibling,
offset: 0
};
}
return {
container: container,
offset: offset
};
};
var normalizeRange = function (rng) {
var outRng = rng.cloneRange();
var rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset);
outRng.setStart(rangeStart.container, rangeStart.offset);
var rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset);
outRng.setEnd(rangeEnd.container, rangeEnd.offset);
return outRng;
};
var Range = {
getNormalizedPoint: getNormalizedPoint,
normalizeRange: normalizeRange
};
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 Range.normalizeRange(rng);
};
var Bookmark = {
createBookmark: createBookmark,
resolveBookmark: resolveBookmark
};
var noop = function () {
};
var constant = function (value) {
return function () {
return value;
};
};
var not = function (f) {
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return !f.apply(null, args);
};
};
var never = constant(false);
var always = constant(true);
var none = function () {
return NONE;
};
var NONE = function () {
var eq = function (o) {
return o.isNone();
};
var call = function (thunk) {
return thunk();
};
var id = function (n) {
return n;
};
var me = {
fold: function (n, s) {
return n();
},
is: never,
isSome: never,
isNone: always,
getOr: id,
getOrThunk: call,
getOrDie: function (msg) {
throw new Error(msg || 'error: getOrDie called on none.');
},
getOrNull: constant(null),
getOrUndefined: constant(undefined),
or: id,
orThunk: call,
map: none,
each: noop,
bind: none,
exists: never,
forall: always,
filter: none,
equals: eq,
equals_: eq,
toArray: function () {
return [];
},
toString: constant('none()')
};
if (Object.freeze) {
Object.freeze(me);
}
return me;
}();
var some = function (a) {
var constant_a = constant(a);
var self = function () {
return me;
};
var bind = function (f) {
return f(a);
};
var me = {
fold: function (n, s) {
return s(a);
},
is: function (v) {
return a === v;
},
isSome: always,
isNone: never,
getOr: constant_a,
getOrThunk: constant_a,
getOrDie: constant_a,
getOrNull: constant_a,
getOrUndefined: constant_a,
or: self,
orThunk: self,
map: function (f) {
return some(f(a));
},
each: function (f) {
f(a);
},
bind: bind,
exists: bind,
forall: bind,
filter: function (f) {
return f(a) ? me : NONE;
},
toArray: function () {
return [a];
},
toString: function () {
return 'some(' + a + ')';
},
equals: function (o) {
return o.is(a);
},
equals_: function (o, elementEq) {
return o.fold(never, function (b) {
return elementEq(a, b);
});
}
};
return me;
};
var from = function (value) {
return value === null || value === undefined ? NONE : some(value);
};
var Option = {
some: some,
none: none,
from: from
};
var typeOf = function (x) {
if (x === null) {
return 'null';
}
var t = typeof x;
if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
return 'array';
}
if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
return 'string';
}
return t;
};
var isType = function (type) {
return function (value) {
return typeOf(value) === type;
};
};
var isString = isType('string');
var isArray = isType('array');
var isBoolean = isType('boolean');
var isFunction = isType('function');
var isNumber = isType('number');
var nativeSlice = Array.prototype.slice;
var nativePush = Array.prototype.push;
var map = function (xs, f) {
var len = xs.length;
var r = new Array(len);
for (var i = 0; i < len; i++) {
var x = xs[i];
r[i] = f(x, i);
}
return r;
};
var each = function (xs, f) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
f(x, i);
}
};
var filter = function (xs, pred) {
var r = [];
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i)) {
r.push(x);
}
}
return r;
};
var groupBy = function (xs, f) {
if (xs.length === 0) {
return [];
} else {
var wasType = f(xs[0]);
var r = [];
var group = [];
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
var type = f(x);
if (type !== wasType) {
r.push(group);
group = [];
}
wasType = type;
group.push(x);
}
if (group.length !== 0) {
r.push(group);
}
return r;
}
};
var foldl = function (xs, f, acc) {
each(xs, function (x) {
acc = f(acc, x);
});
return acc;
};
var find = function (xs, pred) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i)) {
return Option.some(x);
}
}
return Option.none();
};
var flatten = function (xs) {
var r = [];
for (var i = 0, len = xs.length; i < len; ++i) {
if (!isArray(xs[i])) {
throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
}
nativePush.apply(r, xs[i]);
}
return r;
};
var bind = function (xs, f) {
var output = map(xs, f);
return flatten(output);
};
var reverse = function (xs) {
var r = nativeSlice.call(xs, 0);
r.reverse();
return r;
};
var head = function (xs) {
return xs.length === 0 ? Option.none() : Option.some(xs[0]);
};
var last = function (xs) {
return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);
};
var from$1 = isFunction(Array.from) ? Array.from : function (x) {
return nativeSlice.call(x);
};
var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
var path = function (parts, scope) {
var o = scope !== undefined && scope !== null ? scope : Global;
for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) {
o = o[parts[i]];
}
return o;
};
var resolve = function (p, scope) {
var parts = p.split('.');
return path(parts, scope);
};
var unsafe = function (name, scope) {
return resolve(name, scope);
};
var getOrDie = function (name, scope) {
var actual = unsafe(name, scope);
if (actual === undefined || actual === null) {
throw new Error(name + ' not available on this browser');
}
return actual;
};
var Global$1 = { getOrDie: getOrDie };
var htmlElement = function (scope) {
return Global$1.getOrDie('HTMLElement', scope);
};
var isPrototypeOf = function (x) {
var scope = resolve('ownerDocument.defaultView', x);
return htmlElement(scope).prototype.isPrototypeOf(x);
};
var HTMLElement = { isPrototypeOf: isPrototypeOf };
var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
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 NodeType.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 NodeType.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 NodeType.isListItemNode(block);
});
};
var getSelectedDlItems = function (editor) {
return filter(getSelectedListItems(editor), NodeType.isDlItemNode);
};
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 findLastParentListNode = function (editor, elm) {
var parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListRootElm(editor, elm));
return last(parentLists);
};
var getSelectedLists = function (editor) {
var firstList = findLastParentListNode(editor, editor.selection.getStart());
var subsequentLists = filter(editor.selection.getSelectedBlocks(), NodeType.isOlUlNode);
return firstList.toArray().concat(subsequentLists);
};
var getSelectedListRoots = function (editor) {
var selectedLists = getSelectedLists(editor);
return getUniqueListRoots(editor, selectedLists);
};
var getUniqueListRoots = function (editor, lists) {
var listRoots = map(lists, function (list) {
return findLastParentListNode(editor, list).getOr(list);
});
return global$7.unique(listRoots);
};
var isList = function (editor) {
var list = getParentList(editor);
return HTMLElement.isPrototypeOf(list);
};
var Selection = {
isList: isList,
getParentList: getParentList,
getSelectedSubLists: getSelectedSubLists,
getSelectedListItems: getSelectedListItems,
getClosestListRootElm: getClosestListRootElm,
getSelectedDlItems: getSelectedDlItems,
getSelectedListRoots: getSelectedListRoots
};
var fromHtml = function (html, scope) {
var doc = scope || domGlobals.document;
var div = doc.createElement('div');
div.innerHTML = html;
if (!div.hasChildNodes() || div.childNodes.length > 1) {
domGlobals.console.error('HTML does not have a single root node', html);
throw new Error('HTML must have a single root node');
}
return fromDom(div.childNodes[0]);
};
var fromTag = function (tag, scope) {
var doc = scope || domGlobals.document;
var node = doc.createElement(tag);
return fromDom(node);
};
var fromText = function (text, scope) {
var doc = scope || domGlobals.document;
var node = doc.createTextNode(text);
return fromDom(node);
};
var fromDom = function (node) {
if (node === null || node === undefined) {
throw new Error('Node cannot be null or undefined');
}
return { dom: constant(node) };
};
var fromPoint = function (docElm, x, y) {
var doc = docElm.dom();
return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
};
var Element = {
fromHtml: fromHtml,
fromTag: fromTag,
fromText: fromText,
fromDom: fromDom,
fromPoint: fromPoint
};
var lift2 = function (oa, ob, f) {
return oa.isSome() && ob.isSome() ? Option.some(f(oa.getOrDie(), ob.getOrDie())) : Option.none();
};
var fromElements = function (elements, scope) {
var doc = scope || domGlobals.document;
var fragment = doc.createDocumentFragment();
each(elements, function (element) {
fragment.appendChild(element.dom());
});
return Element.fromDom(fragment);
};
var Immutable = function () {
var fields = [];
for (var _i = 0; _i < arguments.length; _i++) {
fields[_i] = arguments[_i];
}
return function () {
var values = [];
for (var _i = 0; _i < arguments.length; _i++) {
values[_i] = arguments[_i];
}
if (fields.length !== values.length) {
throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');
}
var struct = {};
each(fields, function (name, i) {
struct[name] = constant(values[i]);
});
return struct;
};
};
var keys = Object.keys;
var each$1 = function (obj, f) {
var props = keys(obj);
for (var k = 0, len = props.length; k < len; k++) {
var i = props[k];
var x = obj[i];
f(x, i);
}
};
var node = function () {
var f = Global$1.getOrDie('Node');
return f;
};
var compareDocumentPosition = function (a, b, match) {
return (a.compareDocumentPosition(b) & match) !== 0;
};
var documentPositionPreceding = function (a, b) {
return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);
};
var documentPositionContainedBy = function (a, b) {
return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
};
var Node = {
documentPositionPreceding: documentPositionPreceding,
documentPositionContainedBy: documentPositionContainedBy
};
var cached = function (f) {
var called = false;
var r;
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (!called) {
called = true;
r = f.apply(null, args);
}
return r;
};
};
var firstMatch = function (regexes, s) {
for (var i = 0; i < regexes.length; i++) {
var x = regexes[i];
if (x.test(s)) {
return x;
}
}
return undefined;
};
var find$1 = function (regexes, agent) {
var r = firstMatch(regexes, agent);
if (!r) {
return {
major: 0,
minor: 0
};
}
var group = function (i) {
return Number(agent.replace(r, '$' + i));
};
return nu(group(1), group(2));
};
var detect = function (versionRegexes, agent) {
var cleanedAgent = String(agent).toLowerCase();
if (versionRegexes.length === 0) {
return unknown();
}
return find$1(versionRegexes, cleanedAgent);
};
var unknown = function () {
return nu(0, 0);
};
var nu = function (major, minor) {
return {
major: major,
minor: minor
};
};
var Version = {
nu: nu,
detect: detect,
unknown: unknown
};
var edge = 'Edge';
var chrome = 'Chrome';
var ie = 'IE';
var opera = 'Opera';
var firefox = 'Firefox';
var safari = 'Safari';
var isBrowser = function (name, current) {
return function () {
return current === name;
};
};
var unknown$1 = function () {
return nu$1({
current: undefined,
version: Version.unknown()
});
};
var nu$1 = function (info) {
var current = info.current;
var version = info.version;
return {
current: current,
version: version,
isEdge: isBrowser(edge, current),
isChrome: isBrowser(chrome, current),
isIE: isBrowser(ie, current),
isOpera: isBrowser(opera, current),
isFirefox: isBrowser(firefox, current),
isSafari: isBrowser(safari, current)
};
};
var Browser = {
unknown: unknown$1,
nu: nu$1,
edge: constant(edge),
chrome: constant(chrome),
ie: constant(ie),
opera: constant(opera),
firefox: constant(firefox),
safari: constant(safari)
};
var windows = 'Windows';
var ios = 'iOS';
var android = 'Android';
var linux = 'Linux';
var osx = 'OSX';
var solaris = 'Solaris';
var freebsd = 'FreeBSD';
var isOS = function (name, current) {
return function () {
return current === name;
};
};
var unknown$2 = function () {
return nu$2({
current: undefined,
version: Version.unknown()
});
};
var nu$2 = function (info) {
var current = info.current;
var version = info.version;
return {
current: current,
version: version,
isWindows: isOS(windows, current),
isiOS: isOS(ios, current),
isAndroid: isOS(android, current),
isOSX: isOS(osx, current),
isLinux: isOS(linux, current),
isSolaris: isOS(solaris, current),
isFreeBSD: isOS(freebsd, current)
};
};
var OperatingSystem = {
unknown: unknown$2,
nu: nu$2,
windows: constant(windows),
ios: constant(ios),
android: constant(android),
linux: constant(linux),
osx: constant(osx),
solaris: constant(solaris),
freebsd: constant(freebsd)
};
var DeviceType = function (os, browser, userAgent) {
var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;
var isiPhone = os.isiOS() && !isiPad;
var isAndroid3 = os.isAndroid() && os.version.major === 3;
var isAndroid4 = os.isAndroid() && os.version.major === 4;
var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;
var isTouch = os.isiOS() || os.isAndroid();
var isPhone = isTouch && !isTablet;
var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;
return {
isiPad: constant(isiPad),
isiPhone: constant(isiPhone),
isTablet: constant(isTablet),
isPhone: constant(isPhone),
isTouch: constant(isTouch),
isAndroid: os.isAndroid,
isiOS: os.isiOS,
isWebView: constant(iOSwebview)
};
};
var detect$1 = function (candidates, userAgent) {
var agent = String(userAgent).toLowerCase();
return find(candidates, function (candidate) {
return candidate.search(agent);
});
};
var detectBrowser = function (browsers, userAgent) {
return detect$1(browsers, userAgent).map(function (browser) {
var version = Version.detect(browser.versionRegexes, userAgent);
return {
current: browser.name,
version: version
};
});
};
var detectOs = function (oses, userAgent) {
return detect$1(oses, userAgent).map(function (os) {
var version = Version.detect(os.versionRegexes, userAgent);
return {
current: os.name,
version: version
};
});
};
var UaString = {
detectBrowser: detectBrowser,
detectOs: detectOs
};
var contains = function (str, substr) {
return str.indexOf(substr) !== -1;
};
var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
var checkContains = function (target) {
return function (uastring) {
return contains(uastring, target);
};
};
var browsers = [
{
name: 'Edge',
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function (uastring) {
return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');
}
},
{
name: 'Chrome',
versionRegexes: [
/.*?chrome\/([0-9]+)\.([0-9]+).*/,
normalVersionRegex
],
search: function (uastring) {
return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');
}
},
{
name: 'IE',
versionRegexes: [
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
/.*?rv:([0-9]+)\.([0-9]+).*/
],
search: function (uastring) {
return contains(uastring, 'msie') || contains(uastring, 'trident');
}
},
{
name: 'Opera',
versionRegexes: [
normalVersionRegex,
/.*?opera\/([0-9]+)\.([0-9]+).*/
],
search: checkContains('opera')
},
{
name: 'Firefox',
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: checkContains('firefox')
},
{
name: 'Safari',
versionRegexes: [
normalVersionRegex,
/.*?cpu os ([0-9]+)_([0-9]+).*/
],
search: function (uastring) {
return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');
}
}
];
var oses = [
{
name: 'Windows',
search: checkContains('win'),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
},
{
name: 'iOS',
search: function (uastring) {
return contains(uastring, 'iphone') || contains(uastring, 'ipad');
},
versionRegexes: [
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
/.*cpu os ([0-9]+)_([0-9]+).*/,
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
]
},
{
name: 'Android',
search: checkContains('android'),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
},
{
name: 'OSX',
search: checkContains('os x'),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
},
{
name: 'Linux',
search: checkContains('linux'),
versionRegexes: []
},
{
name: 'Solaris',
search: checkContains('sunos'),
versionRegexes: []
},
{
name: 'FreeBSD',
search: checkContains('freebsd'),
versionRegexes: []
}
];
var PlatformInfo = {
browsers: constant(browsers),
oses: constant(oses)
};
var detect$2 = function (userAgent) {
var browsers = PlatformInfo.browsers();
var oses = PlatformInfo.oses();
var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);
var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
var deviceType = DeviceType(os, browser, userAgent);
return {
browser: browser,
os: os,
deviceType: deviceType
};
};
var PlatformDetection = { detect: detect$2 };
var detect$3 = cached(function () {
var userAgent = domGlobals.navigator.userAgent;
return PlatformDetection.detect(userAgent);
});
var PlatformDetection$1 = { detect: detect$3 };
var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
var COMMENT = domGlobals.Node.COMMENT_NODE;
var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
var ELEMENT = domGlobals.Node.ELEMENT_NODE;
var TEXT = domGlobals.Node.TEXT_NODE;
var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
var ENTITY = domGlobals.Node.ENTITY_NODE;
var NOTATION = domGlobals.Node.NOTATION_NODE;
var ELEMENT$1 = ELEMENT;
var is = function (element, selector) {
var dom = element.dom();
if (dom.nodeType !== ELEMENT$1) {
return false;
} else {
var elem = dom;
if (elem.matches !== undefined) {
return elem.matches(selector);
} else if (elem.msMatchesSelector !== undefined) {
return elem.msMatchesSelector(selector);
} else if (elem.webkitMatchesSelector !== undefined) {
return elem.webkitMatchesSelector(selector);
} else if (elem.mozMatchesSelector !== undefined) {
return elem.mozMatchesSelector(selector);
} else {
throw new Error('Browser lacks native selectors');
}
}
};
var eq = function (e1, e2) {
return e1.dom() === e2.dom();
};
var regularContains = function (e1, e2) {
var d1 = e1.dom();
var d2 = e2.dom();
return d1 === d2 ? false : d1.contains(d2);
};
var ieContains = function (e1, e2) {
return Node.documentPositionContainedBy(e1.dom(), e2.dom());
};
var browser = PlatformDetection$1.detect().browser;
var contains$1 = browser.isIE() ? ieContains : regularContains;
var is$1 = is;
var parent = function (element) {
return Option.from(element.dom().parentNode).map(Element.fromDom);
};
var children = function (element) {
return map(element.dom().childNodes, Element.fromDom);
};
var child = function (element, index) {
var cs = element.dom().childNodes;
return Option.from(cs[index]).map(Element.fromDom);
};
var firstChild = function (element) {
return child(element, 0);
};
var lastChild = function (element) {
return child(element, element.dom().childNodes.length - 1);
};
var spot = Immutable('element', 'offset');
var before = function (marker, element) {
var parent$1 = parent(marker);
parent$1.each(function (v) {
v.dom().insertBefore(element.dom(), marker.dom());
});
};
var append = function (parent, element) {
parent.dom().appendChild(element.dom());
};
var before$1 = function (marker, elements) {
each(elements, function (x) {
before(marker, x);
});
};
var append$1 = function (parent, elements) {
each(elements, function (x) {
append(parent, x);
});
};
var remove = function (element) {
var dom = element.dom();
if (dom.parentNode !== null) {
dom.parentNode.removeChild(dom);
}
};
var name = function (element) {
var r = element.dom().nodeName;
return r.toLowerCase();
};
var type = function (element) {
return element.dom().nodeType;
};
var isType$1 = function (t) {
return function (element) {
return type(element) === t;
};
};
var isElement = isType$1(ELEMENT);
var rawSet = function (dom, key, value) {
if (isString(value) || isBoolean(value) || isNumber(value)) {
dom.setAttribute(key, value + '');
} else {
domGlobals.console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);
throw new Error('Attribute value was not simple');
}
};
var setAll = function (element, attrs) {
var dom = element.dom();
each$1(attrs, function (v, k) {
rawSet(dom, k, v);
});
};
var clone = function (element) {
return foldl(element.dom().attributes, function (acc, attr) {
acc[attr.name] = attr.value;
return acc;
}, {});
};
var isSupported = function (dom) {
return dom.style !== undefined && isFunction(dom.style.getPropertyValue);
};
var internalSet = function (dom, property, value) {
if (!isString(value)) {
domGlobals.console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
throw new Error('CSS value must be a string: ' + value);
}
if (isSupported(dom)) {
dom.style.setProperty(property, value);
}
};
var set = function (element, property, value) {
var dom = element.dom();
internalSet(dom, property, value);
};
var clone$1 = function (original, isDeep) {
return Element.fromDom(original.dom().cloneNode(isDeep));
};
var deep = function (original) {
return clone$1(original, true);
};
var shallowAs = function (original, tag) {
var nu = Element.fromTag(tag);
var attributes = clone(original);
setAll(nu, attributes);
return nu;
};
var mutate = function (original, tag) {
var nu = shallowAs(original, tag);
before(original, nu);
var children$1 = children(original);
append$1(nu, children$1);
remove(original);
return nu;
};
var joinSegment = function (parent, child) {
append(parent.item, child.list);
};
var joinSegments = function (segments) {
for (var i = 1; i < segments.length; i++) {
joinSegment(segments[i - 1], segments[i]);
}
};
var appendSegments = function (head$1, tail) {
lift2(last(head$1), head(tail), joinSegment);
};
var createSegment = function (scope, listType) {
var segment = {
list: Element.fromTag(listType, scope),
item: Element.fromTag('li', scope)
};
append(segment.list, segment.item);
return segment;
};
var createSegments = function (scope, entry, size) {
var segments = [];
for (var i = 0; i < size; i++) {
segments.push(createSegment(scope, entry.listType));
}
return segments;
};
var populateSegments = function (segments, entry) {
for (var i = 0; i < segments.length - 1; i++) {
set(segments[i].item, 'list-style-type', 'none');
}
last(segments).each(function (segment) {
setAll(segment.list, entry.listAttributes);
setAll(segment.item, entry.itemAttributes);
append$1(segment.item, entry.content);
});
};
var normalizeSegment = function (segment, entry) {
if (name(segment.list) !== entry.listType) {
segment.list = mutate(segment.list, entry.listType);
}
setAll(segment.list, entry.listAttributes);
};
var createItem = function (scope, attr, content) {
var item = Element.fromTag('li', scope);
setAll(item, attr);
append$1(item, content);
return item;
};
var appendItem = function (segment, item) {
append(segment.list, item);
segment.item = item;
};
var writeShallow = function (scope, cast, entry) {
var newCast = cast.slice(0, entry.depth);
last(newCast).each(function (segment) {
var item = createItem(scope, entry.itemAttributes, entry.content);
appendItem(segment, item);
normalizeSegment(segment, entry);
});
return newCast;
};
var writeDeep = function (scope, cast, entry) {
var segments = createSegments(scope, entry, entry.depth - cast.length);
joinSegments(segments);
populateSegments(segments, entry);
appendSegments(cast, segments);
return cast.concat(segments);
};
var composeList = function (scope, entries) {
var cast = foldl(entries, function (cast, entry) {
return entry.depth > cast.length ? writeDeep(scope, cast, entry) : writeShallow(scope, cast, entry);
}, []);
return head(cast).map(function (segment) {
return segment.list;
});
};
var isList$1 = function (el) {
return is$1(el, 'OL,UL');
};
var hasFirstChildList = function (el) {
return firstChild(el).map(isList$1).getOr(false);
};
var hasLastChildList = function (el) {
return lastChild(el).map(isList$1).getOr(false);
};
var isIndented = function (entry) {
return entry.depth > 0;
};
var isSelected = function (entry) {
return entry.isSelected;
};
var cloneItemContent = function (li) {
var children$1 = children(li);
var content = hasLastChildList(li) ? children$1.slice(0, -1) : children$1;
return map(content, deep);
};
var createEntry = function (li, depth, isSelected) {
return parent(li).filter(isElement).map(function (list) {
return {
depth: depth,
isSelected: isSelected,
content: cloneItemContent(li),
itemAttributes: clone(li),
listAttributes: clone(list),
listType: name(list)
};
});
};
var indentEntry = function (indentation, entry) {
switch (indentation) {
case 'Indent':
entry.depth++;
break;
case 'Outdent':
entry.depth--;
break;
case 'Flatten':
entry.depth = 0;
}
};
var hasOwnProperty = Object.prototype.hasOwnProperty;
var shallow = function (old, nu) {
return nu;
};
var baseMerge = function (merger) {
return function () {
var objects = new Array(arguments.length);
for (var i = 0; i < objects.length; i++) {
objects[i] = arguments[i];
}
if (objects.length === 0) {
throw new Error('Can\'t merge zero objects');
}
var ret = {};
for (var j = 0; j < objects.length; j++) {
var curObject = objects[j];
for (var key in curObject) {
if (hasOwnProperty.call(curObject, key)) {
ret[key] = merger(ret[key], curObject[key]);
}
}
}
return ret;
};
};
var merge = baseMerge(shallow);
var cloneListProperties = function (target, source) {
target.listType = source.listType;
target.listAttributes = merge({}, source.listAttributes);
};
var previousSiblingEntry = function (entries, start) {
var depth = entries[start].depth;
for (var i = start - 1; i >= 0; i--) {
if (entries[i].depth === depth) {
return Option.some(entries[i]);
}
if (entries[i].depth < depth) {
break;
}
}
return Option.none();
};
var normalizeEntries = function (entries) {
each(entries, function (entry, i) {
previousSiblingEntry(entries, i).each(function (matchingEntry) {
cloneListProperties(entry, matchingEntry);
});
});
};
var Cell = function (initial) {
var value = initial;
var get = function () {
return value;
};
var set = function (v) {
value = v;
};
var clone = function () {
return Cell(get());
};
return {
get: get,
set: set,
clone: clone
};
};
var parseItem = function (depth, itemSelection, selectionState, item) {
return firstChild(item).filter(isList$1).fold(function () {
itemSelection.each(function (selection) {
if (eq(selection.start, item)) {
selectionState.set(true);
}
});
var currentItemEntry = createEntry(item, depth, selectionState.get());
itemSelection.each(function (selection) {
if (eq(selection.end, item)) {
selectionState.set(false);
}
});
var childListEntries = lastChild(item).filter(isList$1).map(function (list) {
return parseList(depth, itemSelection, selectionState, list);
}).getOr([]);
return currentItemEntry.toArray().concat(childListEntries);
}, function (list) {
return parseList(depth, itemSelection, selectionState, list);
});
};
var parseList = function (depth, itemSelection, selectionState, list) {
return bind(children(list), function (element) {
var parser = isList$1(element) ? parseList : parseItem;
var newDepth = depth + 1;
return parser(newDepth, itemSelection, selectionState, element);
});
};
var parseLists = function (lists, itemSelection) {
var selectionState = Cell(false);
var initialDepth = 0;
return map(lists, function (list) {
return {
sourceList: list,
entries: parseList(initialDepth, itemSelection, selectionState, list)
};
});
};
var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
var createTextBlock = function (editor, contentNode) {
var dom = editor.dom;
var blockElements = editor.schema.getBlockElements();
var fragment = dom.createFragment();
var node, textBlock, blockName, hasContentNode;
if (editor.settings.forced_root_block) {
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);
}
if (!NodeType.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 (NodeType.isBlock(node, blockElements)) {
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 {
if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {
textBlock.appendChild(dom.create('br', { 'data-mce-bogus': '1' }));
}
}
return fragment;
};
var outdentedComposer = function (editor, entries) {
return map(entries, function (entry) {
var content = fromElements(entry.content);
return Element.fromDom(createTextBlock(editor, content.dom()));
});
};
var indentedComposer = function (editor, entries) {
normalizeEntries(entries);
return composeList(editor.contentDocument, entries).toArray();
};
var composeEntries = function (editor, entries) {
return bind(groupBy(entries, isIndented), function (entries) {
var groupIsIndented = head(entries).map(isIndented).getOr(false);
return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries);
});
};
var indentSelectedEntries = function (entries, indentation) {
each(filter(entries, isSelected), function (entry) {
return indentEntry(indentation, entry);
});
};
var getItemSelection = function (editor) {
var selectedListItems = map(Selection.getSelectedListItems(editor), Element.fromDom);
return lift2(find(selectedListItems, not(hasFirstChildList)), find(reverse(selectedListItems), not(hasFirstChildList)), function (start, end) {
return {
start: start,
end: end
};
});
};
var listsIndentation = function (editor, lists, indentation) {
var entrySets = parseLists(lists, getItemSelection(editor));
each(entrySets, function (entrySet) {
indentSelectedEntries(entrySet.entries, indentation);
before$1(entrySet.sourceList, composeEntries(editor, entrySet.entries));
remove(entrySet.sourceList);
});
};
var DOM$1 = global$6.DOM;
var splitList = function (editor, ul, li) {
var tmpRng, fragment, bookmarks, node, newBlock;
var removeAndKeepBookmarks = function (targetNode) {
global$5.each(bookmarks, function (node) {
targetNode.parentNode.insertBefore(node, li.parentNode);
});
DOM$1.remove(targetNode);
};
bookmarks = DOM$1.select('span[data-mce-type="bookmark"]', ul);
newBlock = createTextBlock(editor, li);
tmpRng = DOM$1.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$1.remove(node);
break;
}
}
if (!editor.dom.isEmpty(fragment)) {
DOM$1.insertAfter(fragment, ul);
}
DOM$1.insertAfter(newBlock, ul);
if (NodeType.isEmpty(editor.dom, li.parentNode)) {
removeAndKeepBookmarks(li.parentNode);
}
DOM$1.remove(li);
if (NodeType.isEmpty(editor.dom, ul)) {
DOM$1.remove(ul);
}
};
var SplitList = { splitList: splitList };
var outdentDlItem = function (editor, item) {
if (is$1(item, 'dd')) {
mutate(item, 'dt');
} else if (is$1(item, 'dt')) {
parent(item).each(function (dl) {
return SplitList.splitList(editor, dl.dom(), item.dom());
});
}
};
var indentDlItem = function (item) {
if (is$1(item, 'dt')) {
mutate(item, 'dd');
}
};
var dlIndentation = function (editor, indentation, dlItems) {
if (indentation === 'Indent') {
each(dlItems, indentDlItem);
} else {
each(dlItems, function (item) {
return outdentDlItem(editor, item);
});
}
};
var selectionIndentation = function (editor, indentation) {
var lists = map(Selection.getSelectedListRoots(editor), Element.fromDom);
var dlItems = map(Selection.getSelectedDlItems(editor), Element.fromDom);
var isHandled = false;
if (lists.length || dlItems.length) {
var bookmark = editor.selection.getBookmark();
listsIndentation(editor, lists, indentation);
dlIndentation(editor, indentation, dlItems);
editor.selection.moveToBookmark(bookmark);
editor.selection.setRng(Range.normalizeRange(editor.selection.getRng()));
editor.nodeChanged();
isHandled = true;
}
return isHandled;
};
var indentListSelection = function (editor) {
return selectionIndentation(editor, 'Indent');
};
var outdentListSelection = function (editor) {
return selectionIndentation(editor, 'Outdent');
};
var flattenListSelection = function (editor) {
return selectionIndentation(editor, 'Flatten');
};
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 && NodeType.isBr(container.nextSibling)) {
container = container.nextSibling;
}
while (container.parentNode !== root) {
if (NodeType.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 (NodeType.isTextBlock(editor, node)) {
textBlocks.push(node);
block = null;
return;
}
if (dom.isBlock(node) || NodeType.isBr(node)) {
if (NodeType.isBr(node)) {
dom.remove(node);
}
block = null;
return;
}
var nextSibling = node.nextSibling;
if (global$4.isBookmarkNode(node)) {
if (NodeType.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 = Selection.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 = Bookmark.createBookmark(rng);
global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {
var listBlock, sibling;
sibling = block.previousSibling;
if (sibling && NodeType.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(Bookmark.resolveBookmark(bookmark));
};
var isValidLists = function (list1, list2) {
return list1 && list2 && NodeType.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)) {
flattenListSelection(editor);
} else {
var bookmark = Bookmark.createBookmark(editor.selection.getRng(true));
global$5.each([parentList].concat(lists), function (elm) {
updateList(editor.dom, elm, listName, detail);
});
editor.selection.setRng(Bookmark.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)) {
flattenListSelection(editor);
} else {
var bookmark = Bookmark.createBookmark(editor.selection.getRng(true));
updateListWithDetails(editor.dom, parentList, detail);
mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));
editor.selection.setRng(Bookmark.resolveBookmark(bookmark));
}
} else {
applyList(editor, listName, detail);
}
};
var toggleList = function (editor, listName, detail) {
var parentList = Selection.getParentList(editor);
var selectedSubLists = Selection.getSelectedSubLists(editor);
detail = detail ? detail : {};
if (parentList && selectedSubLists.length > 0) {
toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);
} else {
toggleSingleList(editor, parentList, listName, detail);
}
};
var ToggleList = {
toggleList: toggleList,
mergeWithAdjacentLists: mergeWithAdjacentLists
};
var DOM$2 = 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 (NodeType.isEmpty(dom, parentNode)) {
DOM$2.remove(parentNode);
}
} else {
DOM$2.setStyle(parentNode, 'listStyleType', 'none');
}
}
if (NodeType.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 NormalizeLists = {
normalizeList: normalizeList,
normalizeLists: normalizeLists
};
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 (NodeType.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 && !NodeType.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 (!NodeType.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 (!NodeType.isChildOfBody(dom, fromElm) || !NodeType.isChildOfBody(dom, toElm)) {
return;
}
if (NodeType.isListNode(toElm.lastChild)) {
listNode = toElm.lastChild;
}
if (ul === toElm.lastChild) {
if (NodeType.isBr(ul.previousSibling)) {
dom.remove(ul.previousSibling);
}
}
node = toElm.lastChild;
if (node && NodeType.isBr(node) && fromElm.hasChildNodes()) {
dom.remove(node);
}
if (NodeType.isEmpty(dom, toElm, true)) {
dom.$(toElm).empty();
}
moveChildren(dom, fromElm, toElm);
if (listNode) {
toElm.appendChild(listNode);
}
var contains = contains$1(Element.fromDom(toElm), Element.fromDom(fromElm));
var nestedLists = contains ? dom.getParents(fromElm, NodeType.isListNode, toElm) : [];
dom.remove(fromElm);
each(nestedLists, function (list) {
if (NodeType.isEmpty(dom, list) && list !== dom.getRoot()) {
dom.remove(list);
}
});
};
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 = Bookmark.createBookmark(rng);
mergeLiElements(dom, fromLi, toLi);
editor.selection.setRng(Bookmark.resolveBookmark(bookmark));
}
};
var mergeBackward = function (editor, rng, fromLi, toLi) {
var bookmark = Bookmark.createBookmark(rng);
mergeLiElements(editor.dom, fromLi, toLi);
var resolvedBookmark = Bookmark.resolveBookmark(bookmark);
editor.selection.setRng(resolvedBookmark);
};
var backspaceDeleteFromListToListCaret = function (editor, isForward) {
var dom = editor.dom, selection = editor.selection;
var selectionStartElm = selection.getStart();
var root = Selection.getClosestListRootElm(editor, selectionStartElm);
var li = dom.getParent(selection.getStart(), 'LI', root);
var ul, rng, otherLi;
if (li) {
ul = li.parentNode;
if (ul === editor.getBody() && NodeType.isEmpty(dom, ul)) {
return true;
}
rng = Range.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) {
flattenListSelection(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 = Selection.getClosestListRootElm(editor, selectionStartElm);
var block = dom.getParent(selectionStartElm, dom.isBlock, root);
if (block && dom.isEmpty(block)) {
var rng = Range.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);
ToggleList.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 = Selection.getClosestListRootElm(editor, selectionStartElm);
var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);
if (startListParent || Selection.getSelectedListItems(editor).length > 0) {
editor.undoManager.transact(function () {
editor.execCommand('Delete');
NormalizeLists.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 Delete = {
setup: setup,
backspaceDelete: backspaceDelete
};
var get = function (editor) {
return {
backspaceDelete: function (isForward) {
Delete.backspaceDelete(editor, isForward);
}
};
};
var Api = { get: get };
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();
if (cmd === 'indent') {
indentListSelection(editor);
} else if (cmd === 'outdent') {
outdentListSelection(editor);
}
});
editor.addCommand('InsertUnorderedList', function (ui, detail) {
ToggleList.toggleList(editor, 'UL', detail);
});
editor.addCommand('InsertOrderedList', function (ui, detail) {
ToggleList.toggleList(editor, 'OL', detail);
});
editor.addCommand('InsertDefinitionList', function (ui, detail) {
ToggleList.toggleList(editor, 'DL', detail);
});
editor.addCommand('RemoveList', function () {
flattenListSelection(editor);
});
editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));
editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));
editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));
};
var Commands = { register: register };
var shouldIndentOnTab = function (editor) {
return editor.getParam('lists_indent_on_tab', true);
};
var Settings = { shouldIndentOnTab: shouldIndentOnTab };
var setupTabKey = function (editor) {
editor.on('keydown', function (e) {
if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {
return;
}
editor.undoManager.transact(function () {
if (e.shiftKey ? outdentListSelection(editor) : indentListSelection(editor)) {
e.preventDefault();
}
});
});
};
var setup$1 = function (editor) {
if (Settings.shouldIndentOnTab(editor)) {
setupTabKey(editor);
}
Delete.setup(editor);
};
var Keyboard = { setup: setup$1 };
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, NodeType.isTableCellNode);
var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;
var lists = global$5.grep(parents, NodeType.isListNode);
ctrl.active(lists.length > 0 && lists[0].nodeName === listName);
});
};
};
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'
});
};
var Buttons = { register: register$1 };
global.add('lists', function (editor) {
Keyboard.setup(editor);
Buttons.register(editor);
Commands.register(editor);
return Api.get(editor);
});
function Plugin () {
}
return Plugin;
}(window));
})();
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/link/plugin.js 0000644 00000056711 15071250216 0022142 0 ustar 00 (function () {
var link = (function (domGlobals) {
'use strict';
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');
var assumeExternalTargets = function (editorSettings) {
return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;
};
var hasContextToolbar = function (editorSettings) {
return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;
};
var getLinkList = function (editorSettings) {
return editorSettings.link_list;
};
var hasDefaultLinkTarget = function (editorSettings) {
return typeof editorSettings.default_link_target === 'string';
};
var getDefaultLinkTarget = function (editorSettings) {
return editorSettings.default_link_target;
};
var getTargetList = function (editorSettings) {
return editorSettings.target_list;
};
var setTargetList = function (editor, list) {
editor.settings.target_list = list;
};
var shouldShowTargetList = function (editorSettings) {
return getTargetList(editorSettings) !== false;
};
var getRelList = function (editorSettings) {
return editorSettings.rel_list;
};
var hasRelList = function (editorSettings) {
return getRelList(editorSettings) !== undefined;
};
var getLinkClassList = function (editorSettings) {
return editorSettings.link_class_list;
};
var hasLinkClassList = function (editorSettings) {
return getLinkClassList(editorSettings) !== undefined;
};
var shouldShowLinkTitle = function (editorSettings) {
return editorSettings.link_title !== false;
};
var allowUnsafeLinkTarget = function (editorSettings) {
return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;
};
var Settings = {
assumeExternalTargets: assumeExternalTargets,
hasContextToolbar: hasContextToolbar,
getLinkList: getLinkList,
hasDefaultLinkTarget: hasDefaultLinkTarget,
getDefaultLinkTarget: getDefaultLinkTarget,
getTargetList: getTargetList,
setTargetList: setTargetList,
shouldShowTargetList: shouldShowTargetList,
getRelList: getRelList,
hasRelList: hasRelList,
getLinkClassList: getLinkClassList,
hasLinkClassList: hasLinkClassList,
shouldShowLinkTitle: shouldShowLinkTitle,
allowUnsafeLinkTarget: allowUnsafeLinkTarget
};
var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
var global$3 = tinymce.util.Tools.resolve('tinymce.Env');
var appendClickRemove = function (link, evt) {
domGlobals.document.body.appendChild(link);
link.dispatchEvent(evt);
domGlobals.document.body.removeChild(link);
};
var open = function (url) {
if (!global$3.ie || global$3.ie > 10) {
var link = domGlobals.document.createElement('a');
link.target = '_blank';
link.href = url;
link.rel = 'noreferrer noopener';
var evt = domGlobals.document.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, domGlobals.window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
appendClickRemove(link, evt);
} else {
var win = domGlobals.window.open('', '_blank');
if (win) {
win.opener = null;
var doc = win.document;
doc.open();
doc.write('<meta http-equiv="refresh" content="0; url=' + global$2.DOM.encode(url) + '">');
doc.close();
}
}
};
var OpenUrl = { open: open };
var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
var toggleTargetRules = function (rel, isUnsafe) {
var rules = ['noopener'];
var newRel = rel ? rel.split(/\s+/) : [];
var toString = function (rel) {
return global$4.trim(rel.sort().join(' '));
};
var addTargetRules = function (rel) {
rel = removeTargetRules(rel);
return rel.length ? rel.concat(rules) : rules;
};
var removeTargetRules = function (rel) {
return rel.filter(function (val) {
return global$4.inArray(rules, val) === -1;
});
};
newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);
return newRel.length ? toString(newRel) : null;
};
var trimCaretContainers = function (text) {
return text.replace(/\uFEFF/g, '');
};
var getAnchorElement = function (editor, selectedElm) {
selectedElm = selectedElm || editor.selection.getNode();
if (isImageFigure(selectedElm)) {
return editor.dom.select('a[href]', selectedElm)[0];
} else {
return editor.dom.getParent(selectedElm, 'a[href]');
}
};
var getAnchorText = function (selection, anchorElm) {
var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });
return trimCaretContainers(text);
};
var isLink = function (elm) {
return elm && elm.nodeName === 'A' && elm.href;
};
var hasLinks = function (elements) {
return global$4.grep(elements, isLink).length > 0;
};
var isOnlyTextSelected = function (html) {
if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') === -1)) {
return false;
}
return true;
};
var isImageFigure = function (node) {
return node && node.nodeName === 'FIGURE' && /\bimage\b/i.test(node.className);
};
var link = function (editor, attachState) {
return function (data) {
editor.undoManager.transact(function () {
var selectedElm = editor.selection.getNode();
var anchorElm = getAnchorElement(editor, selectedElm);
var linkAttrs = {
href: data.href,
target: data.target ? data.target : null,
rel: data.rel ? data.rel : null,
class: data.class ? data.class : null,
title: data.title ? data.title : null
};
if (!Settings.hasRelList(editor.settings) && Settings.allowUnsafeLinkTarget(editor.settings) === false) {
linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');
}
if (data.href === attachState.href) {
attachState.attach();
attachState = {};
}
if (anchorElm) {
editor.focus();
if (data.hasOwnProperty('text')) {
if ('innerText' in anchorElm) {
anchorElm.innerText = data.text;
} else {
anchorElm.textContent = data.text;
}
}
editor.dom.setAttribs(anchorElm, linkAttrs);
editor.selection.select(anchorElm);
editor.undoManager.add();
} else {
if (isImageFigure(selectedElm)) {
linkImageFigure(editor, selectedElm, linkAttrs);
} else if (data.hasOwnProperty('text')) {
editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));
} else {
editor.execCommand('mceInsertLink', false, linkAttrs);
}
}
});
};
};
var unlink = function (editor) {
return function () {
editor.undoManager.transact(function () {
var node = editor.selection.getNode();
if (isImageFigure(node)) {
unlinkImageFigure(editor, node);
} else {
editor.execCommand('unlink');
}
});
};
};
var unlinkImageFigure = function (editor, fig) {
var a, img;
img = editor.dom.select('img', fig)[0];
if (img) {
a = editor.dom.getParents(img, 'a[href]', fig)[0];
if (a) {
a.parentNode.insertBefore(img, a);
editor.dom.remove(a);
}
}
};
var linkImageFigure = function (editor, fig, attrs) {
var a, img;
img = editor.dom.select('img', fig)[0];
if (img) {
a = editor.dom.create('a', attrs);
img.parentNode.insertBefore(a, img);
a.appendChild(img);
}
};
var Utils = {
link: link,
unlink: unlink,
isLink: isLink,
hasLinks: hasLinks,
isOnlyTextSelected: isOnlyTextSelected,
getAnchorElement: getAnchorElement,
getAnchorText: getAnchorText,
toggleTargetRules: toggleTargetRules
};
var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');
var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');
var attachState = {};
var createLinkList = function (editor, callback) {
var linkList = Settings.getLinkList(editor.settings);
if (typeof linkList === 'string') {
global$6.send({
url: linkList,
success: function (text) {
callback(editor, JSON.parse(text));
}
});
} else if (typeof linkList === 'function') {
linkList(function (list) {
callback(editor, list);
});
} else {
callback(editor, linkList);
}
};
var buildListItems = function (inputList, itemCallback, startItems) {
var appendItems = function (values, output) {
output = output || [];
global$4.each(values, function (item) {
var menuItem = { text: item.text || item.title };
if (item.menu) {
menuItem.menu = appendItems(item.menu);
} else {
menuItem.value = item.value;
if (itemCallback) {
itemCallback(menuItem);
}
}
output.push(menuItem);
});
return output;
};
return appendItems(inputList, startItems || []);
};
var delayedConfirm = function (editor, message, callback) {
var rng = editor.selection.getRng();
global$5.setEditorTimeout(editor, function () {
editor.windowManager.confirm(message, function (state) {
editor.selection.setRng(rng);
callback(state);
});
});
};
var showDialog = function (editor, linkList) {
var data = {};
var selection = editor.selection;
var dom = editor.dom;
var anchorElm, initialText;
var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;
var linkListChangeHandler = function (e) {
var textCtrl = win.find('#text');
if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {
textCtrl.value(e.control.text());
}
win.find('#href').value(e.control.value());
};
var buildAnchorListControl = function (url) {
var anchorList = [];
global$4.each(editor.dom.select('a:not([href])'), function (anchor) {
var id = anchor.name || anchor.id;
if (id) {
anchorList.push({
text: id,
value: '#' + id,
selected: url.indexOf('#' + id) !== -1
});
}
});
if (anchorList.length) {
anchorList.unshift({
text: 'None',
value: ''
});
return {
name: 'anchor',
type: 'listbox',
label: 'Anchors',
values: anchorList,
onselect: linkListChangeHandler
};
}
};
var updateText = function () {
if (!initialText && onlyText && !data.text) {
this.parent().parent().find('#text')[0].value(this.value());
}
};
var urlChange = function (e) {
var meta = e.meta || {};
if (linkListCtrl) {
linkListCtrl.value(editor.convertURL(this.value(), 'href'));
}
global$4.each(e.meta, function (value, key) {
var inp = win.find('#' + key);
if (key === 'text') {
if (initialText.length === 0) {
inp.value(value);
data.text = value;
}
} else {
inp.value(value);
}
});
if (meta.attach) {
attachState = {
href: this.value(),
attach: meta.attach
};
}
if (!meta.text) {
updateText.call(this);
}
};
var onBeforeCall = function (e) {
e.meta = win.toJSON();
};
onlyText = Utils.isOnlyTextSelected(selection.getContent());
anchorElm = Utils.getAnchorElement(editor);
data.text = initialText = Utils.getAnchorText(editor.selection, anchorElm);
data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
if (anchorElm) {
data.target = dom.getAttrib(anchorElm, 'target');
} else if (Settings.hasDefaultLinkTarget(editor.settings)) {
data.target = Settings.getDefaultLinkTarget(editor.settings);
}
if (value = dom.getAttrib(anchorElm, 'rel')) {
data.rel = value;
}
if (value = dom.getAttrib(anchorElm, 'class')) {
data.class = value;
}
if (value = dom.getAttrib(anchorElm, 'title')) {
data.title = value;
}
if (onlyText) {
textListCtrl = {
name: 'text',
type: 'textbox',
size: 40,
label: 'Text to display',
onchange: function () {
data.text = this.value();
}
};
}
if (linkList) {
linkListCtrl = {
type: 'listbox',
label: 'Link list',
values: buildListItems(linkList, function (item) {
item.value = editor.convertURL(item.value || item.url, 'href');
}, [{
text: 'None',
value: ''
}]),
onselect: linkListChangeHandler,
value: editor.convertURL(data.href, 'href'),
onPostRender: function () {
linkListCtrl = this;
}
};
}
if (Settings.shouldShowTargetList(editor.settings)) {
if (Settings.getTargetList(editor.settings) === undefined) {
Settings.setTargetList(editor, [
{
text: 'None',
value: ''
},
{
text: 'New window',
value: '_blank'
}
]);
}
targetListCtrl = {
name: 'target',
type: 'listbox',
label: 'Target',
values: buildListItems(Settings.getTargetList(editor.settings))
};
}
if (Settings.hasRelList(editor.settings)) {
relListCtrl = {
name: 'rel',
type: 'listbox',
label: 'Rel',
values: buildListItems(Settings.getRelList(editor.settings), function (item) {
if (Settings.allowUnsafeLinkTarget(editor.settings) === false) {
item.value = Utils.toggleTargetRules(item.value, data.target === '_blank');
}
})
};
}
if (Settings.hasLinkClassList(editor.settings)) {
classListCtrl = {
name: 'class',
type: 'listbox',
label: 'Class',
values: buildListItems(Settings.getLinkClassList(editor.settings), function (item) {
if (item.value) {
item.textStyle = function () {
return editor.formatter.getCssText({
inline: 'a',
classes: [item.value]
});
};
}
})
};
}
if (Settings.shouldShowLinkTitle(editor.settings)) {
linkTitleCtrl = {
name: 'title',
type: 'textbox',
label: 'Title',
value: data.title
};
}
win = editor.windowManager.open({
title: 'Insert link',
data: data,
body: [
{
name: 'href',
type: 'filepicker',
filetype: 'file',
size: 40,
autofocus: true,
label: 'Url',
onchange: urlChange,
onkeyup: updateText,
onpaste: updateText,
onbeforecall: onBeforeCall
},
textListCtrl,
linkTitleCtrl,
buildAnchorListControl(data.href),
linkListCtrl,
relListCtrl,
targetListCtrl,
classListCtrl
],
onSubmit: function (e) {
var assumeExternalTargets = Settings.assumeExternalTargets(editor.settings);
var insertLink = Utils.link(editor, attachState);
var removeLink = Utils.unlink(editor);
var resultData = global$4.extend({}, data, e.data);
var href = resultData.href;
if (!href) {
removeLink();
return;
}
if (!onlyText || resultData.text === initialText) {
delete resultData.text;
}
if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {
delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {
if (state) {
resultData.href = 'mailto:' + href;
}
insertLink(resultData);
});
return;
}
if (assumeExternalTargets === true && !/^\w+:/i.test(href) || assumeExternalTargets === false && /^\s*www[\.|\d\.]/i.test(href)) {
delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {
if (state) {
resultData.href = 'http://' + href;
}
insertLink(resultData);
});
return;
}
insertLink(resultData);
}
});
};
var open$1 = function (editor) {
createLinkList(editor, showDialog);
};
var Dialog = { open: open$1 };
var getLink = function (editor, elm) {
return editor.dom.getParent(elm, 'a[href]');
};
var getSelectedLink = function (editor) {
return getLink(editor, editor.selection.getStart());
};
var getHref = function (elm) {
var href = elm.getAttribute('data-mce-href');
return href ? href : elm.getAttribute('href');
};
var isContextMenuVisible = function (editor) {
var contextmenu = editor.plugins.contextmenu;
return contextmenu ? contextmenu.isContextMenuVisible() : false;
};
var hasOnlyAltModifier = function (e) {
return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;
};
var gotoLink = function (editor, a) {
if (a) {
var href = getHref(a);
if (/^#/.test(href)) {
var targetEl = editor.$(href);
if (targetEl.length) {
editor.selection.scrollIntoView(targetEl[0], true);
}
} else {
OpenUrl.open(a.href);
}
}
};
var openDialog = function (editor) {
return function () {
Dialog.open(editor);
};
};
var gotoSelectedLink = function (editor) {
return function () {
gotoLink(editor, getSelectedLink(editor));
};
};
var leftClickedOnAHref = function (editor) {
return function (elm) {
var sel, rng, node;
if (Settings.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && Utils.isLink(elm)) {
sel = editor.selection;
rng = sel.getRng();
node = rng.startContainer;
if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {
return true;
}
}
return false;
};
};
var setupGotoLinks = function (editor) {
editor.on('click', function (e) {
var link = getLink(editor, e.target);
if (link && global$1.metaKeyPressed(e)) {
e.preventDefault();
gotoLink(editor, link);
}
});
editor.on('keydown', function (e) {
var link = getSelectedLink(editor);
if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {
e.preventDefault();
gotoLink(editor, link);
}
});
};
var toggleActiveState = function (editor) {
return function () {
var self = this;
editor.on('nodechange', function (e) {
self.active(!editor.readonly && !!Utils.getAnchorElement(editor, e.element));
});
};
};
var toggleViewLinkState = function (editor) {
return function () {
var self = this;
var toggleVisibility = function (e) {
if (Utils.hasLinks(e.parents)) {
self.show();
} else {
self.hide();
}
};
if (!Utils.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {
self.hide();
}
editor.on('nodechange', toggleVisibility);
self.on('remove', function () {
editor.off('nodechange', toggleVisibility);
});
};
};
var Actions = {
openDialog: openDialog,
gotoSelectedLink: gotoSelectedLink,
leftClickedOnAHref: leftClickedOnAHref,
setupGotoLinks: setupGotoLinks,
toggleActiveState: toggleActiveState,
toggleViewLinkState: toggleViewLinkState
};
var register = function (editor) {
editor.addCommand('mceLink', Actions.openDialog(editor));
};
var Commands = { register: register };
var setup = function (editor) {
editor.addShortcut('Meta+K', '', Actions.openDialog(editor));
};
var Keyboard = { setup: setup };
var setupButtons = function (editor) {
editor.addButton('link', {
active: false,
icon: 'link',
tooltip: 'Insert/edit link',
onclick: Actions.openDialog(editor),
onpostrender: Actions.toggleActiveState(editor)
});
editor.addButton('unlink', {
active: false,
icon: 'unlink',
tooltip: 'Remove link',
onclick: Utils.unlink(editor),
onpostrender: Actions.toggleActiveState(editor)
});
if (editor.addContextToolbar) {
editor.addButton('openlink', {
icon: 'newtab',
tooltip: 'Open link',
onclick: Actions.gotoSelectedLink(editor)
});
}
};
var setupMenuItems = function (editor) {
editor.addMenuItem('openlink', {
text: 'Open link',
icon: 'newtab',
onclick: Actions.gotoSelectedLink(editor),
onPostRender: Actions.toggleViewLinkState(editor),
prependToContext: true
});
editor.addMenuItem('link', {
icon: 'link',
text: 'Link',
shortcut: 'Meta+K',
onclick: Actions.openDialog(editor),
stateSelector: 'a[href]',
context: 'insert',
prependToContext: true
});
editor.addMenuItem('unlink', {
icon: 'unlink',
text: 'Remove link',
onclick: Utils.unlink(editor),
stateSelector: 'a[href]'
});
};
var setupContextToolbars = function (editor) {
if (editor.addContextToolbar) {
editor.addContextToolbar(Actions.leftClickedOnAHref(editor), 'openlink | link unlink');
}
};
var Controls = {
setupButtons: setupButtons,
setupMenuItems: setupMenuItems,
setupContextToolbars: setupContextToolbars
};
global.add('link', function (editor) {
Controls.setupButtons(editor);
Controls.setupMenuItems(editor);
Controls.setupContextToolbars(editor);
Actions.setupGotoLinks(editor);
Commands.register(editor);
Keyboard.setup(editor);
});
function Plugin () {
}
return Plugin;
}(window));
})();
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/image/plugin.js 0000644 00000116126 15071250220 0022257 0 ustar 00 (function () {
var image = (function (domGlobals) {
'use strict';
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var hasDimensions = function (editor) {
return editor.settings.image_dimensions === false ? false : true;
};
var hasAdvTab = function (editor) {
return editor.settings.image_advtab === true ? true : false;
};
var getPrependUrl = function (editor) {
return editor.getParam('image_prepend_url', '');
};
var getClassList = function (editor) {
return editor.getParam('image_class_list');
};
var hasDescription = function (editor) {
return editor.settings.image_description === false ? false : true;
};
var hasImageTitle = function (editor) {
return editor.settings.image_title === true ? true : false;
};
var hasImageCaption = function (editor) {
return editor.settings.image_caption === true ? true : false;
};
var getImageList = function (editor) {
return editor.getParam('image_list', false);
};
var hasUploadUrl = function (editor) {
return editor.getParam('images_upload_url', false);
};
var hasUploadHandler = function (editor) {
return editor.getParam('images_upload_handler', false);
};
var getUploadUrl = function (editor) {
return editor.getParam('images_upload_url');
};
var getUploadHandler = function (editor) {
return editor.getParam('images_upload_handler');
};
var getUploadBasePath = function (editor) {
return editor.getParam('images_upload_base_path');
};
var getUploadCredentials = function (editor) {
return editor.getParam('images_upload_credentials');
};
var Settings = {
hasDimensions: hasDimensions,
hasAdvTab: hasAdvTab,
getPrependUrl: getPrependUrl,
getClassList: getClassList,
hasDescription: hasDescription,
hasImageTitle: hasImageTitle,
hasImageCaption: hasImageCaption,
getImageList: getImageList,
hasUploadUrl: hasUploadUrl,
hasUploadHandler: hasUploadHandler,
getUploadUrl: getUploadUrl,
getUploadHandler: getUploadHandler,
getUploadBasePath: getUploadBasePath,
getUploadCredentials: getUploadCredentials
};
var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
var path = function (parts, scope) {
var o = scope !== undefined && scope !== null ? scope : Global;
for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) {
o = o[parts[i]];
}
return o;
};
var resolve = function (p, scope) {
var parts = p.split('.');
return path(parts, scope);
};
var unsafe = function (name, scope) {
return resolve(name, scope);
};
var getOrDie = function (name, scope) {
var actual = unsafe(name, scope);
if (actual === undefined || actual === null) {
throw new Error(name + ' not available on this browser');
}
return actual;
};
var Global$1 = { getOrDie: getOrDie };
function FileReader () {
var f = Global$1.getOrDie('FileReader');
return new f();
}
var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise');
var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR');
var parseIntAndGetMax = function (val1, val2) {
return Math.max(parseInt(val1, 10), parseInt(val2, 10));
};
var getImageSize = function (url, callback) {
var img = domGlobals.document.createElement('img');
function done(width, height) {
if (img.parentNode) {
img.parentNode.removeChild(img);
}
callback({
width: width,
height: height
});
}
img.onload = function () {
var width = parseIntAndGetMax(img.width, img.clientWidth);
var height = parseIntAndGetMax(img.height, img.clientHeight);
done(width, height);
};
img.onerror = function () {
done(0, 0);
};
var style = img.style;
style.visibility = 'hidden';
style.position = 'fixed';
style.bottom = style.left = '0px';
style.width = style.height = 'auto';
domGlobals.document.body.appendChild(img);
img.src = url;
};
var buildListItems = function (inputList, itemCallback, startItems) {
function appendItems(values, output) {
output = output || [];
global$2.each(values, function (item) {
var menuItem = { text: item.text || item.title };
if (item.menu) {
menuItem.menu = appendItems(item.menu);
} else {
menuItem.value = item.value;
itemCallback(menuItem);
}
output.push(menuItem);
});
return output;
}
return appendItems(inputList, startItems || []);
};
var removePixelSuffix = function (value) {
if (value) {
value = value.replace(/px$/, '');
}
return value;
};
var addPixelSuffix = function (value) {
if (value.length > 0 && /^[0-9]+$/.test(value)) {
value += 'px';
}
return value;
};
var mergeMargins = function (css) {
if (css.margin) {
var splitMargin = css.margin.split(' ');
switch (splitMargin.length) {
case 1:
css['margin-top'] = css['margin-top'] || splitMargin[0];
css['margin-right'] = css['margin-right'] || splitMargin[0];
css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
css['margin-left'] = css['margin-left'] || splitMargin[0];
break;
case 2:
css['margin-top'] = css['margin-top'] || splitMargin[0];
css['margin-right'] = css['margin-right'] || splitMargin[1];
css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
css['margin-left'] = css['margin-left'] || splitMargin[1];
break;
case 3:
css['margin-top'] = css['margin-top'] || splitMargin[0];
css['margin-right'] = css['margin-right'] || splitMargin[1];
css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
css['margin-left'] = css['margin-left'] || splitMargin[1];
break;
case 4:
css['margin-top'] = css['margin-top'] || splitMargin[0];
css['margin-right'] = css['margin-right'] || splitMargin[1];
css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
css['margin-left'] = css['margin-left'] || splitMargin[3];
}
delete css.margin;
}
return css;
};
var createImageList = function (editor, callback) {
var imageList = Settings.getImageList(editor);
if (typeof imageList === 'string') {
global$3.send({
url: imageList,
success: function (text) {
callback(JSON.parse(text));
}
});
} else if (typeof imageList === 'function') {
imageList(callback);
} else {
callback(imageList);
}
};
var waitLoadImage = function (editor, data, imgElm) {
function selectImage() {
imgElm.onload = imgElm.onerror = null;
if (editor.selection) {
editor.selection.select(imgElm);
editor.nodeChanged();
}
}
imgElm.onload = function () {
if (!data.width && !data.height && Settings.hasDimensions(editor)) {
editor.dom.setAttribs(imgElm, {
width: imgElm.clientWidth,
height: imgElm.clientHeight
});
}
selectImage();
};
imgElm.onerror = selectImage;
};
var blobToDataUri = function (blob) {
return new global$1(function (resolve, reject) {
var reader = FileReader();
reader.onload = function () {
resolve(reader.result);
};
reader.onerror = function () {
reject(reader.error.message);
};
reader.readAsDataURL(blob);
});
};
var Utils = {
getImageSize: getImageSize,
buildListItems: buildListItems,
removePixelSuffix: removePixelSuffix,
addPixelSuffix: addPixelSuffix,
mergeMargins: mergeMargins,
createImageList: createImageList,
waitLoadImage: waitLoadImage,
blobToDataUri: blobToDataUri
};
var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
var hasOwnProperty = Object.prototype.hasOwnProperty;
var shallow = function (old, nu) {
return nu;
};
var baseMerge = function (merger) {
return function () {
var objects = new Array(arguments.length);
for (var i = 0; i < objects.length; i++) {
objects[i] = arguments[i];
}
if (objects.length === 0) {
throw new Error('Can\'t merge zero objects');
}
var ret = {};
for (var j = 0; j < objects.length; j++) {
var curObject = objects[j];
for (var key in curObject) {
if (hasOwnProperty.call(curObject, key)) {
ret[key] = merger(ret[key], curObject[key]);
}
}
}
return ret;
};
};
var merge = baseMerge(shallow);
var DOM = global$4.DOM;
var getHspace = function (image) {
if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {
return Utils.removePixelSuffix(image.style.marginLeft);
} else {
return '';
}
};
var getVspace = function (image) {
if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {
return Utils.removePixelSuffix(image.style.marginTop);
} else {
return '';
}
};
var getBorder = function (image) {
if (image.style.borderWidth) {
return Utils.removePixelSuffix(image.style.borderWidth);
} else {
return '';
}
};
var getAttrib = function (image, name) {
if (image.hasAttribute(name)) {
return image.getAttribute(name);
} else {
return '';
}
};
var getStyle = function (image, name) {
return image.style[name] ? image.style[name] : '';
};
var hasCaption = function (image) {
return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';
};
var setAttrib = function (image, name, value) {
image.setAttribute(name, value);
};
var wrapInFigure = function (image) {
var figureElm = DOM.create('figure', { class: 'image' });
DOM.insertAfter(figureElm, image);
figureElm.appendChild(image);
figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));
figureElm.contentEditable = 'false';
};
var removeFigure = function (image) {
var figureElm = image.parentNode;
DOM.insertAfter(image, figureElm);
DOM.remove(figureElm);
};
var toggleCaption = function (image) {
if (hasCaption(image)) {
removeFigure(image);
} else {
wrapInFigure(image);
}
};
var normalizeStyle = function (image, normalizeCss) {
var attrValue = image.getAttribute('style');
var value = normalizeCss(attrValue !== null ? attrValue : '');
if (value.length > 0) {
image.setAttribute('style', value);
image.setAttribute('data-mce-style', value);
} else {
image.removeAttribute('style');
}
};
var setSize = function (name, normalizeCss) {
return function (image, name, value) {
if (image.style[name]) {
image.style[name] = Utils.addPixelSuffix(value);
normalizeStyle(image, normalizeCss);
} else {
setAttrib(image, name, value);
}
};
};
var getSize = function (image, name) {
if (image.style[name]) {
return Utils.removePixelSuffix(image.style[name]);
} else {
return getAttrib(image, name);
}
};
var setHspace = function (image, value) {
var pxValue = Utils.addPixelSuffix(value);
image.style.marginLeft = pxValue;
image.style.marginRight = pxValue;
};
var setVspace = function (image, value) {
var pxValue = Utils.addPixelSuffix(value);
image.style.marginTop = pxValue;
image.style.marginBottom = pxValue;
};
var setBorder = function (image, value) {
var pxValue = Utils.addPixelSuffix(value);
image.style.borderWidth = pxValue;
};
var setBorderStyle = function (image, value) {
image.style.borderStyle = value;
};
var getBorderStyle = function (image) {
return getStyle(image, 'borderStyle');
};
var isFigure = function (elm) {
return elm.nodeName === 'FIGURE';
};
var defaultData = function () {
return {
src: '',
alt: '',
title: '',
width: '',
height: '',
class: '',
style: '',
caption: false,
hspace: '',
vspace: '',
border: '',
borderStyle: ''
};
};
var getStyleValue = function (normalizeCss, data) {
var image = domGlobals.document.createElement('img');
setAttrib(image, 'style', data.style);
if (getHspace(image) || data.hspace !== '') {
setHspace(image, data.hspace);
}
if (getVspace(image) || data.vspace !== '') {
setVspace(image, data.vspace);
}
if (getBorder(image) || data.border !== '') {
setBorder(image, data.border);
}
if (getBorderStyle(image) || data.borderStyle !== '') {
setBorderStyle(image, data.borderStyle);
}
return normalizeCss(image.getAttribute('style'));
};
var create = function (normalizeCss, data) {
var image = domGlobals.document.createElement('img');
write(normalizeCss, merge(data, { caption: false }), image);
setAttrib(image, 'alt', data.alt);
if (data.caption) {
var figure = DOM.create('figure', { class: 'image' });
figure.appendChild(image);
figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));
figure.contentEditable = 'false';
return figure;
} else {
return image;
}
};
var read = function (normalizeCss, image) {
return {
src: getAttrib(image, 'src'),
alt: getAttrib(image, 'alt'),
title: getAttrib(image, 'title'),
width: getSize(image, 'width'),
height: getSize(image, 'height'),
class: getAttrib(image, 'class'),
style: normalizeCss(getAttrib(image, 'style')),
caption: hasCaption(image),
hspace: getHspace(image),
vspace: getVspace(image),
border: getBorder(image),
borderStyle: getStyle(image, 'borderStyle')
};
};
var updateProp = function (image, oldData, newData, name, set) {
if (newData[name] !== oldData[name]) {
set(image, name, newData[name]);
}
};
var normalized = function (set, normalizeCss) {
return function (image, name, value) {
set(image, value);
normalizeStyle(image, normalizeCss);
};
};
var write = function (normalizeCss, newData, image) {
var oldData = read(normalizeCss, image);
updateProp(image, oldData, newData, 'caption', function (image, _name, _value) {
return toggleCaption(image);
});
updateProp(image, oldData, newData, 'src', setAttrib);
updateProp(image, oldData, newData, 'alt', setAttrib);
updateProp(image, oldData, newData, 'title', setAttrib);
updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));
updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));
updateProp(image, oldData, newData, 'class', setAttrib);
updateProp(image, oldData, newData, 'style', normalized(function (image, value) {
return setAttrib(image, 'style', value);
}, normalizeCss));
updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));
updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));
updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));
updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));
};
var normalizeCss = function (editor, cssText) {
var css = editor.dom.styles.parse(cssText);
var mergedCss = Utils.mergeMargins(css);
var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));
return editor.dom.styles.serialize(compressed);
};
var getSelectedImage = function (editor) {
var imgElm = editor.selection.getNode();
var figureElm = editor.dom.getParent(imgElm, 'figure.image');
if (figureElm) {
return editor.dom.select('img', figureElm)[0];
}
if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) {
return null;
}
return imgElm;
};
var splitTextBlock = function (editor, figure) {
var dom = editor.dom;
var textBlock = dom.getParent(figure.parentNode, function (node) {
return editor.schema.getTextBlockElements()[node.nodeName];
}, editor.getBody());
if (textBlock) {
return dom.split(textBlock, figure);
} else {
return figure;
}
};
var readImageDataFromSelection = function (editor) {
var image = getSelectedImage(editor);
return image ? read(function (css) {
return normalizeCss(editor, css);
}, image) : defaultData();
};
var insertImageAtCaret = function (editor, data) {
var elm = create(function (css) {
return normalizeCss(editor, css);
}, data);
editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');
editor.focus();
editor.selection.setContent(elm.outerHTML);
var insertedElm = editor.dom.select('*[data-mce-id="__mcenew"]')[0];
editor.dom.setAttrib(insertedElm, 'data-mce-id', null);
if (isFigure(insertedElm)) {
var figure = splitTextBlock(editor, insertedElm);
editor.selection.select(figure);
} else {
editor.selection.select(insertedElm);
}
};
var syncSrcAttr = function (editor, image) {
editor.dom.setAttrib(image, 'src', image.getAttribute('src'));
};
var deleteImage = function (editor, image) {
if (image) {
var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;
editor.dom.remove(elm);
editor.focus();
editor.nodeChanged();
if (editor.dom.isEmpty(editor.getBody())) {
editor.setContent('');
editor.selection.setCursorLocation();
}
}
};
var writeImageDataToSelection = function (editor, data) {
var image = getSelectedImage(editor);
write(function (css) {
return normalizeCss(editor, css);
}, data, image);
syncSrcAttr(editor, image);
if (isFigure(image.parentNode)) {
var figure = image.parentNode;
splitTextBlock(editor, figure);
editor.selection.select(image.parentNode);
} else {
editor.selection.select(image);
Utils.waitLoadImage(editor, data, image);
}
};
var insertOrUpdateImage = function (editor, data) {
var image = getSelectedImage(editor);
if (image) {
if (data.src) {
writeImageDataToSelection(editor, data);
} else {
deleteImage(editor, image);
}
} else if (data.src) {
insertImageAtCaret(editor, data);
}
};
var updateVSpaceHSpaceBorder = function (editor) {
return function (evt) {
var dom = editor.dom;
var rootControl = evt.control.rootControl;
if (!Settings.hasAdvTab(editor)) {
return;
}
var data = rootControl.toJSON();
var css = dom.parseStyle(data.style);
rootControl.find('#vspace').value('');
rootControl.find('#hspace').value('');
css = Utils.mergeMargins(css);
if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) {
if (css['margin-top'] === css['margin-bottom']) {
rootControl.find('#vspace').value(Utils.removePixelSuffix(css['margin-top']));
} else {
rootControl.find('#vspace').value('');
}
if (css['margin-right'] === css['margin-left']) {
rootControl.find('#hspace').value(Utils.removePixelSuffix(css['margin-right']));
} else {
rootControl.find('#hspace').value('');
}
}
if (css['border-width']) {
rootControl.find('#border').value(Utils.removePixelSuffix(css['border-width']));
} else {
rootControl.find('#border').value('');
}
if (css['border-style']) {
rootControl.find('#borderStyle').value(css['border-style']);
} else {
rootControl.find('#borderStyle').value('');
}
rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
};
};
var updateStyle = function (editor, win) {
win.find('#style').each(function (ctrl) {
var value = getStyleValue(function (css) {
return normalizeCss(editor, css);
}, merge(defaultData(), win.toJSON()));
ctrl.value(value);
});
};
var makeTab = function (editor) {
return {
title: 'Advanced',
type: 'form',
pack: 'start',
items: [
{
label: 'Style',
name: 'style',
type: 'textbox',
onchange: updateVSpaceHSpaceBorder(editor)
},
{
type: 'form',
layout: 'grid',
packV: 'start',
columns: 2,
padding: 0,
defaults: {
type: 'textbox',
maxWidth: 50,
onchange: function (evt) {
updateStyle(editor, evt.control.rootControl);
}
},
items: [
{
label: 'Vertical space',
name: 'vspace'
},
{
label: 'Border width',
name: 'border'
},
{
label: 'Horizontal space',
name: 'hspace'
},
{
label: 'Border style',
type: 'listbox',
name: 'borderStyle',
width: 90,
maxWidth: 90,
onselect: function (evt) {
updateStyle(editor, evt.control.rootControl);
},
values: [
{
text: 'Select...',
value: ''
},
{
text: 'Solid',
value: 'solid'
},
{
text: 'Dotted',
value: 'dotted'
},
{
text: 'Dashed',
value: 'dashed'
},
{
text: 'Double',
value: 'double'
},
{
text: 'Groove',
value: 'groove'
},
{
text: 'Ridge',
value: 'ridge'
},
{
text: 'Inset',
value: 'inset'
},
{
text: 'Outset',
value: 'outset'
},
{
text: 'None',
value: 'none'
},
{
text: 'Hidden',
value: 'hidden'
}
]
}
]
}
]
};
};
var AdvTab = { makeTab: makeTab };
var doSyncSize = function (widthCtrl, heightCtrl) {
widthCtrl.state.set('oldVal', widthCtrl.value());
heightCtrl.state.set('oldVal', heightCtrl.value());
};
var doSizeControls = function (win, f) {
var widthCtrl = win.find('#width')[0];
var heightCtrl = win.find('#height')[0];
var constrained = win.find('#constrain')[0];
if (widthCtrl && heightCtrl && constrained) {
f(widthCtrl, heightCtrl, constrained.checked());
}
};
var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {
var oldWidth = widthCtrl.state.get('oldVal');
var oldHeight = heightCtrl.state.get('oldVal');
var newWidth = widthCtrl.value();
var newHeight = heightCtrl.value();
if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {
if (newWidth !== oldWidth) {
newHeight = Math.round(newWidth / oldWidth * newHeight);
if (!isNaN(newHeight)) {
heightCtrl.value(newHeight);
}
} else {
newWidth = Math.round(newHeight / oldHeight * newWidth);
if (!isNaN(newWidth)) {
widthCtrl.value(newWidth);
}
}
}
doSyncSize(widthCtrl, heightCtrl);
};
var syncSize = function (win) {
doSizeControls(win, doSyncSize);
};
var updateSize = function (win) {
doSizeControls(win, doUpdateSize);
};
var createUi = function () {
var recalcSize = function (evt) {
updateSize(evt.control.rootControl);
};
return {
type: 'container',
label: 'Dimensions',
layout: 'flex',
align: 'center',
spacing: 5,
items: [
{
name: 'width',
type: 'textbox',
maxLength: 5,
size: 5,
onchange: recalcSize,
ariaLabel: 'Width'
},
{
type: 'label',
text: 'x'
},
{
name: 'height',
type: 'textbox',
maxLength: 5,
size: 5,
onchange: recalcSize,
ariaLabel: 'Height'
},
{
name: 'constrain',
type: 'checkbox',
checked: true,
text: 'Constrain proportions'
}
]
};
};
var SizeManager = {
createUi: createUi,
syncSize: syncSize,
updateSize: updateSize
};
var onSrcChange = function (evt, editor) {
var srcURL, prependURL, absoluteURLPattern;
var meta = evt.meta || {};
var control = evt.control;
var rootControl = control.rootControl;
var imageListCtrl = rootControl.find('#image-list')[0];
if (imageListCtrl) {
imageListCtrl.value(editor.convertURL(control.value(), 'src'));
}
global$2.each(meta, function (value, key) {
rootControl.find('#' + key).value(value);
});
if (!meta.width && !meta.height) {
srcURL = editor.convertURL(control.value(), 'src');
prependURL = Settings.getPrependUrl(editor);
absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {
srcURL = prependURL + srcURL;
}
control.value(srcURL);
Utils.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) {
if (data.width && data.height && Settings.hasDimensions(editor)) {
rootControl.find('#width').value(data.width);
rootControl.find('#height').value(data.height);
SizeManager.syncSize(rootControl);
}
});
}
};
var onBeforeCall = function (evt) {
evt.meta = evt.control.rootControl.toJSON();
};
var getGeneralItems = function (editor, imageListCtrl) {
var generalFormItems = [
{
name: 'src',
type: 'filepicker',
filetype: 'image',
label: 'Source',
autofocus: true,
onchange: function (evt) {
onSrcChange(evt, editor);
},
onbeforecall: onBeforeCall
},
imageListCtrl
];
if (Settings.hasDescription(editor)) {
generalFormItems.push({
name: 'alt',
type: 'textbox',
label: 'Image description'
});
}
if (Settings.hasImageTitle(editor)) {
generalFormItems.push({
name: 'title',
type: 'textbox',
label: 'Image Title'
});
}
if (Settings.hasDimensions(editor)) {
generalFormItems.push(SizeManager.createUi());
}
if (Settings.getClassList(editor)) {
generalFormItems.push({
name: 'class',
type: 'listbox',
label: 'Class',
values: Utils.buildListItems(Settings.getClassList(editor), function (item) {
if (item.value) {
item.textStyle = function () {
return editor.formatter.getCssText({
inline: 'img',
classes: [item.value]
});
};
}
})
});
}
if (Settings.hasImageCaption(editor)) {
generalFormItems.push({
name: 'caption',
type: 'checkbox',
label: 'Caption'
});
}
return generalFormItems;
};
var makeTab$1 = function (editor, imageListCtrl) {
return {
title: 'General',
type: 'form',
items: getGeneralItems(editor, imageListCtrl)
};
};
var MainTab = {
makeTab: makeTab$1,
getGeneralItems: getGeneralItems
};
var url = function () {
return Global$1.getOrDie('URL');
};
var createObjectURL = function (blob) {
return url().createObjectURL(blob);
};
var revokeObjectURL = function (u) {
url().revokeObjectURL(u);
};
var URL = {
createObjectURL: createObjectURL,
revokeObjectURL: revokeObjectURL
};
var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory');
function XMLHttpRequest () {
var f = Global$1.getOrDie('XMLHttpRequest');
return new f();
}
var noop = function () {
};
var pathJoin = function (path1, path2) {
if (path1) {
return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, '');
}
return path2;
};
function Uploader (settings) {
var defaultHandler = function (blobInfo, success, failure, progress) {
var xhr, formData;
xhr = XMLHttpRequest();
xhr.open('POST', settings.url);
xhr.withCredentials = settings.credentials;
xhr.upload.onprogress = function (e) {
progress(e.loaded / e.total * 100);
};
xhr.onerror = function () {
failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);
};
xhr.onload = function () {
var json;
if (xhr.status < 200 || xhr.status >= 300) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location !== 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(pathJoin(settings.basePath, json.location));
};
formData = new domGlobals.FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
xhr.send(formData);
};
var uploadBlob = function (blobInfo, handler) {
return new global$1(function (resolve, reject) {
try {
handler(blobInfo, resolve, reject, noop);
} catch (ex) {
reject(ex.message);
}
});
};
var isDefaultHandler = function (handler) {
return handler === defaultHandler;
};
var upload = function (blobInfo) {
return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler);
};
settings = global$2.extend({
credentials: false,
handler: defaultHandler
}, settings);
return { upload: upload };
}
var onFileInput = function (editor) {
return function (evt) {
var Throbber = global$5.get('Throbber');
var rootControl = evt.control.rootControl;
var throbber = new Throbber(rootControl.getEl());
var file = evt.control.value();
var blobUri = URL.createObjectURL(file);
var uploader = Uploader({
url: Settings.getUploadUrl(editor),
basePath: Settings.getUploadBasePath(editor),
credentials: Settings.getUploadCredentials(editor),
handler: Settings.getUploadHandler(editor)
});
var finalize = function () {
throbber.hide();
URL.revokeObjectURL(blobUri);
};
throbber.show();
return Utils.blobToDataUri(file).then(function (dataUrl) {
var blobInfo = editor.editorUpload.blobCache.create({
blob: file,
blobUri: blobUri,
name: file.name ? file.name.replace(/\.[^\.]+$/, '') : null,
base64: dataUrl.split(',')[1]
});
return uploader.upload(blobInfo).then(function (url) {
var src = rootControl.find('#src');
src.value(url);
rootControl.find('tabpanel')[0].activateTab(0);
src.fire('change');
finalize();
return url;
});
}).catch(function (err) {
editor.windowManager.alert(err);
finalize();
});
};
};
var acceptExts = '.jpg,.jpeg,.png,.gif';
var makeTab$2 = function (editor) {
return {
title: 'Upload',
type: 'form',
layout: 'flex',
direction: 'column',
align: 'stretch',
padding: '20 20 20 20',
items: [
{
type: 'container',
layout: 'flex',
direction: 'column',
align: 'center',
spacing: 10,
items: [
{
text: 'Browse for an image',
type: 'browsebutton',
accept: acceptExts,
onchange: onFileInput(editor)
},
{
text: 'OR',
type: 'label'
}
]
},
{
text: 'Drop an image here',
type: 'dropzone',
accept: acceptExts,
height: 100,
onchange: onFileInput(editor)
}
]
};
};
var UploadTab = { makeTab: makeTab$2 };
function curry(fn) {
var initialArgs = [];
for (var _i = 1; _i < arguments.length; _i++) {
initialArgs[_i - 1] = arguments[_i];
}
return function () {
var restArgs = [];
for (var _i = 0; _i < arguments.length; _i++) {
restArgs[_i] = arguments[_i];
}
var all = initialArgs.concat(restArgs);
return fn.apply(null, all);
};
}
var submitForm = function (editor, evt) {
var win = evt.control.getRoot();
SizeManager.updateSize(win);
editor.undoManager.transact(function () {
var data = merge(readImageDataFromSelection(editor), win.toJSON());
insertOrUpdateImage(editor, data);
});
editor.editorUpload.uploadImagesAuto();
};
function Dialog (editor) {
function showDialog(imageList) {
var data = readImageDataFromSelection(editor);
var win, imageListCtrl;
if (imageList) {
imageListCtrl = {
type: 'listbox',
label: 'Image list',
name: 'image-list',
values: Utils.buildListItems(imageList, function (item) {
item.value = editor.convertURL(item.value || item.url, 'src');
}, [{
text: 'None',
value: ''
}]),
value: data.src && editor.convertURL(data.src, 'src'),
onselect: function (e) {
var altCtrl = win.find('#alt');
if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) {
altCtrl.value(e.control.text());
}
win.find('#src').value(e.control.value()).fire('change');
},
onPostRender: function () {
imageListCtrl = this;
}
};
}
if (Settings.hasAdvTab(editor) || Settings.hasUploadUrl(editor) || Settings.hasUploadHandler(editor)) {
var body = [MainTab.makeTab(editor, imageListCtrl)];
if (Settings.hasAdvTab(editor)) {
body.push(AdvTab.makeTab(editor));
}
if (Settings.hasUploadUrl(editor) || Settings.hasUploadHandler(editor)) {
body.push(UploadTab.makeTab(editor));
}
win = editor.windowManager.open({
title: 'Insert/edit image',
data: data,
bodyType: 'tabpanel',
body: body,
onSubmit: curry(submitForm, editor)
});
} else {
win = editor.windowManager.open({
title: 'Insert/edit image',
data: data,
body: MainTab.getGeneralItems(editor, imageListCtrl),
onSubmit: curry(submitForm, editor)
});
}
SizeManager.syncSize(win);
}
function open() {
Utils.createImageList(editor, showDialog);
}
return { open: open };
}
var register = function (editor) {
editor.addCommand('mceImage', Dialog(editor).open);
};
var Commands = { register: register };
var hasImageClass = function (node) {
var className = node.attr('class');
return className && /\bimage\b/.test(className);
};
var toggleContentEditableState = function (state) {
return function (nodes) {
var i = nodes.length, node;
var toggleContentEditable = function (node) {
node.attr('contenteditable', state ? 'true' : null);
};
while (i--) {
node = nodes[i];
if (hasImageClass(node)) {
node.attr('contenteditable', state ? 'false' : null);
global$2.each(node.getAll('figcaption'), toggleContentEditable);
}
}
};
};
var setup = function (editor) {
editor.on('preInit', function () {
editor.parser.addNodeFilter('figure', toggleContentEditableState(true));
editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));
});
};
var FilterContent = { setup: setup };
var register$1 = function (editor) {
editor.addButton('image', {
icon: 'image',
tooltip: 'Insert/edit image',
onclick: Dialog(editor).open,
stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'
});
editor.addMenuItem('image', {
icon: 'image',
text: 'Image',
onclick: Dialog(editor).open,
context: 'insert',
prependToContext: true
});
};
var Buttons = { register: register$1 };
global.add('image', function (editor) {
FilterContent.setup(editor);
Buttons.register(editor);
Commands.register(editor);
});
function Plugin () {
}
return Plugin;
}(window));
})();
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/paste/plugin.js 0000644 00000240664 15071302167 0022326 0 ustar 00 (function () {
var paste = (function (domGlobals) {
'use strict';
var Cell = function (initial) {
var value = initial;
var get = function () {
return value;
};
var set = function (v) {
value = v;
};
var clone = function () {
return Cell(get());
};
return {
get: get,
set: set,
clone: clone
};
};
var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
var hasProPlugin = function (editor) {
if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global$1.get('powerpaste')) {
if (typeof domGlobals.window.console !== 'undefined' && domGlobals.window.console.log) {
domGlobals.window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.');
}
return true;
} else {
return false;
}
};
var DetectProPlugin = { hasProPlugin: hasProPlugin };
var get = function (clipboard, quirks) {
return {
clipboard: clipboard,
quirks: quirks
};
};
var Api = { get: get };
var firePastePreProcess = function (editor, html, internal, isWordHtml) {
return editor.fire('PastePreProcess', {
content: html,
internal: internal,
wordContent: isWordHtml
});
};
var firePastePostProcess = function (editor, node, internal, isWordHtml) {
return editor.fire('PastePostProcess', {
node: node,
internal: internal,
wordContent: isWordHtml
});
};
var firePastePlainTextToggle = function (editor, state) {
return editor.fire('PastePlainTextToggle', { state: state });
};
var firePaste = function (editor, ieFake) {
return editor.fire('paste', { ieFake: ieFake });
};
var Events = {
firePastePreProcess: firePastePreProcess,
firePastePostProcess: firePastePostProcess,
firePastePlainTextToggle: firePastePlainTextToggle,
firePaste: firePaste
};
var shouldPlainTextInform = function (editor) {
return editor.getParam('paste_plaintext_inform', true);
};
var shouldBlockDrop = function (editor) {
return editor.getParam('paste_block_drop', false);
};
var shouldPasteDataImages = function (editor) {
return editor.getParam('paste_data_images', false);
};
var shouldFilterDrop = function (editor) {
return editor.getParam('paste_filter_drop', true);
};
var getPreProcess = function (editor) {
return editor.getParam('paste_preprocess');
};
var getPostProcess = function (editor) {
return editor.getParam('paste_postprocess');
};
var getWebkitStyles = function (editor) {
return editor.getParam('paste_webkit_styles');
};
var shouldRemoveWebKitStyles = function (editor) {
return editor.getParam('paste_remove_styles_if_webkit', true);
};
var shouldMergeFormats = function (editor) {
return editor.getParam('paste_merge_formats', true);
};
var isSmartPasteEnabled = function (editor) {
return editor.getParam('smart_paste', true);
};
var isPasteAsTextEnabled = function (editor) {
return editor.getParam('paste_as_text', false);
};
var getRetainStyleProps = function (editor) {
return editor.getParam('paste_retain_style_properties');
};
var getWordValidElements = function (editor) {
var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody';
return editor.getParam('paste_word_valid_elements', defaultValidElements);
};
var shouldConvertWordFakeLists = function (editor) {
return editor.getParam('paste_convert_word_fake_lists', true);
};
var shouldUseDefaultFilters = function (editor) {
return editor.getParam('paste_enable_default_filters', true);
};
var Settings = {
shouldPlainTextInform: shouldPlainTextInform,
shouldBlockDrop: shouldBlockDrop,
shouldPasteDataImages: shouldPasteDataImages,
shouldFilterDrop: shouldFilterDrop,
getPreProcess: getPreProcess,
getPostProcess: getPostProcess,
getWebkitStyles: getWebkitStyles,
shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,
shouldMergeFormats: shouldMergeFormats,
isSmartPasteEnabled: isSmartPasteEnabled,
isPasteAsTextEnabled: isPasteAsTextEnabled,
getRetainStyleProps: getRetainStyleProps,
getWordValidElements: getWordValidElements,
shouldConvertWordFakeLists: shouldConvertWordFakeLists,
shouldUseDefaultFilters: shouldUseDefaultFilters
};
var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {
return userIsInformedState.get() === false && Settings.shouldPlainTextInform(editor);
};
var displayNotification = function (editor, message) {
editor.notificationManager.open({
text: editor.translate(message),
type: 'info'
});
};
var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {
if (clipboard.pasteFormat.get() === 'text') {
clipboard.pasteFormat.set('html');
Events.firePastePlainTextToggle(editor, false);
} else {
clipboard.pasteFormat.set('text');
Events.firePastePlainTextToggle(editor, true);
if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {
displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');
userIsInformedState.set(true);
}
}
editor.focus();
};
var Actions = { togglePlainTextPaste: togglePlainTextPaste };
var register = function (editor, clipboard, userIsInformedState) {
editor.addCommand('mceTogglePlainTextPaste', function () {
Actions.togglePlainTextPaste(editor, clipboard, userIsInformedState);
});
editor.addCommand('mceInsertClipboardContent', function (ui, value) {
if (value.content) {
clipboard.pasteHtml(value.content, value.internal);
}
if (value.text) {
clipboard.pasteText(value.text);
}
});
};
var Commands = { register: register };
var global$2 = tinymce.util.Tools.resolve('tinymce.Env');
var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');
var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
var global$5 = tinymce.util.Tools.resolve('tinymce.util.VK');
var internalMimeType = 'x-tinymce/html';
var internalMark = '<!-- ' + internalMimeType + ' -->';
var mark = function (html) {
return internalMark + html;
};
var unmark = function (html) {
return html.replace(internalMark, '');
};
var isMarked = function (html) {
return html.indexOf(internalMark) !== -1;
};
var InternalHtml = {
mark: mark,
unmark: unmark,
isMarked: isMarked,
internalHtmlMime: function () {
return internalMimeType;
}
};
var global$6 = tinymce.util.Tools.resolve('tinymce.html.Entities');
var isPlainText = function (text) {
return !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(text);
};
var toBRs = function (text) {
return text.replace(/\r?\n/g, '<br>');
};
var openContainer = function (rootTag, rootAttrs) {
var key;
var attrs = [];
var tag = '<' + rootTag;
if (typeof rootAttrs === 'object') {
for (key in rootAttrs) {
if (rootAttrs.hasOwnProperty(key)) {
attrs.push(key + '="' + global$6.encodeAllRaw(rootAttrs[key]) + '"');
}
}
if (attrs.length) {
tag += ' ' + attrs.join(' ');
}
}
return tag + '>';
};
var toBlockElements = function (text, rootTag, rootAttrs) {
var blocks = text.split(/\n\n/);
var tagOpen = openContainer(rootTag, rootAttrs);
var tagClose = '</' + rootTag + '>';
var paragraphs = global$4.map(blocks, function (p) {
return p.split(/\n/).join('<br />');
});
var stitch = function (p) {
return tagOpen + p + tagClose;
};
return paragraphs.length === 1 ? paragraphs[0] : global$4.map(paragraphs, stitch).join('');
};
var convert = function (text, rootTag, rootAttrs) {
return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);
};
var Newlines = {
isPlainText: isPlainText,
convert: convert,
toBRs: toBRs,
toBlockElements: toBlockElements
};
var global$7 = tinymce.util.Tools.resolve('tinymce.html.DomParser');
var global$8 = tinymce.util.Tools.resolve('tinymce.html.Serializer');
var global$9 = tinymce.util.Tools.resolve('tinymce.html.Node');
var global$a = tinymce.util.Tools.resolve('tinymce.html.Schema');
function filter(content, items) {
global$4.each(items, function (v) {
if (v.constructor === RegExp) {
content = content.replace(v, '');
} else {
content = content.replace(v[0], v[1]);
}
});
return content;
}
function innerText(html) {
var schema = global$a();
var domParser = global$7({}, schema);
var text = '';
var shortEndedElements = schema.getShortEndedElements();
var ignoreElements = global$4.makeMap('script noscript style textarea video audio iframe object', ' ');
var blockElements = schema.getBlockElements();
function walk(node) {
var name = node.name, currentNode = node;
if (name === 'br') {
text += '\n';
return;
}
if (name === 'wbr') {
return;
}
if (shortEndedElements[name]) {
text += ' ';
}
if (ignoreElements[name]) {
text += ' ';
return;
}
if (node.type === 3) {
text += node.value;
}
if (!node.shortEnded) {
if (node = node.firstChild) {
do {
walk(node);
} while (node = node.next);
}
}
if (blockElements[name] && currentNode.next) {
text += '\n';
if (name === 'p') {
text += '\n';
}
}
}
html = filter(html, [/<!\[[^\]]+\]>/g]);
walk(domParser.parse(html));
return text;
}
function trimHtml(html) {
function trimSpaces(all, s1, s2) {
if (!s1 && !s2) {
return ' ';
}
return '\xA0';
}
html = filter(html, [
/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/ig,
/<!--StartFragment-->|<!--EndFragment-->/g,
[
/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,
trimSpaces
],
/<br class="Apple-interchange-newline">/g,
/<br>$/i
]);
return html;
}
function createIdGenerator(prefix) {
var count = 0;
return function () {
return prefix + count++;
};
}
var isMsEdge = function () {
return domGlobals.navigator.userAgent.indexOf(' Edge/') !== -1;
};
var Utils = {
filter: filter,
innerText: innerText,
trimHtml: trimHtml,
createIdGenerator: createIdGenerator,
isMsEdge: isMsEdge
};
function isWordContent(content) {
return /<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(content) || /class="OutlineElement/.test(content) || /id="?docs\-internal\-guid\-/.test(content);
}
function isNumericList(text) {
var found, patterns;
patterns = [
/^[IVXLMCD]{1,2}\.[ \u00a0]/,
/^[ivxlmcd]{1,2}\.[ \u00a0]/,
/^[a-z]{1,2}[\.\)][ \u00a0]/,
/^[A-Z]{1,2}[\.\)][ \u00a0]/,
/^[0-9]+\.[ \u00a0]/,
/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,
/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/
];
text = text.replace(/^[\u00a0 ]+/, '');
global$4.each(patterns, function (pattern) {
if (pattern.test(text)) {
found = true;
return false;
}
});
return found;
}
function isBulletList(text) {
return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
}
function convertFakeListsToProperLists(node) {
var currentListNode, prevListNode, lastLevel = 1;
function getText(node) {
var txt = '';
if (node.type === 3) {
return node.value;
}
if (node = node.firstChild) {
do {
txt += getText(node);
} while (node = node.next);
}
return txt;
}
function trimListStart(node, regExp) {
if (node.type === 3) {
if (regExp.test(node.value)) {
node.value = node.value.replace(regExp, '');
return false;
}
}
if (node = node.firstChild) {
do {
if (!trimListStart(node, regExp)) {
return false;
}
} while (node = node.next);
}
return true;
}
function removeIgnoredNodes(node) {
if (node._listIgnore) {
node.remove();
return;
}
if (node = node.firstChild) {
do {
removeIgnoredNodes(node);
} while (node = node.next);
}
}
function convertParagraphToLi(paragraphNode, listName, start) {
var level = paragraphNode._listLevel || lastLevel;
if (level !== lastLevel) {
if (level < lastLevel) {
if (currentListNode) {
currentListNode = currentListNode.parent.parent;
}
} else {
prevListNode = currentListNode;
currentListNode = null;
}
}
if (!currentListNode || currentListNode.name !== listName) {
prevListNode = prevListNode || currentListNode;
currentListNode = new global$9(listName, 1);
if (start > 1) {
currentListNode.attr('start', '' + start);
}
paragraphNode.wrap(currentListNode);
} else {
currentListNode.append(paragraphNode);
}
paragraphNode.name = 'li';
if (level > lastLevel && prevListNode) {
prevListNode.lastChild.append(currentListNode);
}
lastLevel = level;
removeIgnoredNodes(paragraphNode);
trimListStart(paragraphNode, /^\u00a0+/);
trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
trimListStart(paragraphNode, /^\u00a0+/);
}
var elements = [];
var child = node.firstChild;
while (typeof child !== 'undefined' && child !== null) {
elements.push(child);
child = child.walk();
if (child !== null) {
while (typeof child !== 'undefined' && child.parent !== node) {
child = child.walk();
}
}
}
for (var i = 0; i < elements.length; i++) {
node = elements[i];
if (node.name === 'p' && node.firstChild) {
var nodeText = getText(node);
if (isBulletList(nodeText)) {
convertParagraphToLi(node, 'ul');
continue;
}
if (isNumericList(nodeText)) {
var matches = /([0-9]+)\./.exec(nodeText);
var start = 1;
if (matches) {
start = parseInt(matches[1], 10);
}
convertParagraphToLi(node, 'ol', start);
continue;
}
if (node._listLevel) {
convertParagraphToLi(node, 'ul', 1);
continue;
}
currentListNode = null;
} else {
prevListNode = currentListNode;
currentListNode = null;
}
}
}
function filterStyles(editor, validStyles, node, styleValue) {
var outputStyles = {}, matches;
var styles = editor.dom.parseStyle(styleValue);
global$4.each(styles, function (value, name) {
switch (name) {
case 'mso-list':
matches = /\w+ \w+([0-9]+)/i.exec(styleValue);
if (matches) {
node._listLevel = parseInt(matches[1], 10);
}
if (/Ignore/i.test(value) && node.firstChild) {
node._listIgnore = true;
node.firstChild._listIgnore = true;
}
break;
case 'horiz-align':
name = 'text-align';
break;
case 'vert-align':
name = 'vertical-align';
break;
case 'font-color':
case 'mso-foreground':
name = 'color';
break;
case 'mso-background':
case 'mso-highlight':
name = 'background';
break;
case 'font-weight':
case 'font-style':
if (value !== 'normal') {
outputStyles[name] = value;
}
return;
case 'mso-element':
if (/^(comment|comment-list)$/i.test(value)) {
node.remove();
return;
}
break;
}
if (name.indexOf('mso-comment') === 0) {
node.remove();
return;
}
if (name.indexOf('mso-') === 0) {
return;
}
if (Settings.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {
outputStyles[name] = value;
}
});
if (/(bold)/i.test(outputStyles['font-weight'])) {
delete outputStyles['font-weight'];
node.wrap(new global$9('b', 1));
}
if (/(italic)/i.test(outputStyles['font-style'])) {
delete outputStyles['font-style'];
node.wrap(new global$9('i', 1));
}
outputStyles = editor.dom.serializeStyle(outputStyles, node.name);
if (outputStyles) {
return outputStyles;
}
return null;
}
var filterWordContent = function (editor, content) {
var retainStyleProperties, validStyles;
retainStyleProperties = Settings.getRetainStyleProps(editor);
if (retainStyleProperties) {
validStyles = global$4.makeMap(retainStyleProperties.split(/[, ]/));
}
content = Utils.filter(content, [
/<br class="?Apple-interchange-newline"?>/gi,
/<b[^>]+id="?docs-internal-[^>]*>/gi,
/<!--[\s\S]+?-->/gi,
/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
[
/<(\/?)s>/gi,
'<$1strike>'
],
[
/ /gi,
'\xA0'
],
[
/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
function (str, spaces) {
return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\xA0') : '';
}
]
]);
var validElements = Settings.getWordValidElements(editor);
var schema = global$a({
valid_elements: validElements,
valid_children: '-li[p]'
});
global$4.each(schema.elements, function (rule) {
if (!rule.attributes.class) {
rule.attributes.class = {};
rule.attributesOrder.push('class');
}
if (!rule.attributes.style) {
rule.attributes.style = {};
rule.attributesOrder.push('style');
}
});
var domParser = global$7({}, schema);
domParser.addAttributeFilter('style', function (nodes) {
var i = nodes.length, node;
while (i--) {
node = nodes[i];
node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));
if (node.name === 'span' && node.parent && !node.attributes.length) {
node.unwrap();
}
}
});
domParser.addAttributeFilter('class', function (nodes) {
var i = nodes.length, node, className;
while (i--) {
node = nodes[i];
className = node.attr('class');
if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
node.remove();
}
node.attr('class', null);
}
});
domParser.addNodeFilter('del', function (nodes) {
var i = nodes.length;
while (i--) {
nodes[i].remove();
}
});
domParser.addNodeFilter('a', function (nodes) {
var i = nodes.length, node, href, name;
while (i--) {
node = nodes[i];
href = node.attr('href');
name = node.attr('name');
if (href && href.indexOf('#_msocom_') !== -1) {
node.remove();
continue;
}
if (href && href.indexOf('file://') === 0) {
href = href.split('#')[1];
if (href) {
href = '#' + href;
}
}
if (!href && !name) {
node.unwrap();
} else {
if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
node.unwrap();
continue;
}
node.attr({
href: href,
name: name
});
}
}
});
var rootNode = domParser.parse(content);
if (Settings.shouldConvertWordFakeLists(editor)) {
convertFakeListsToProperLists(rootNode);
}
content = global$8({ validate: editor.settings.validate }, schema).serialize(rootNode);
return content;
};
var preProcess = function (editor, content) {
return Settings.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;
};
var WordFilter = {
preProcess: preProcess,
isWordContent: isWordContent
};
var preProcess$1 = function (editor, html) {
var parser = global$7({}, editor.schema);
parser.addNodeFilter('meta', function (nodes) {
global$4.each(nodes, function (node) {
return node.remove();
});
});
var fragment = parser.parse(html, {
forced_root_block: false,
isRootContent: true
});
return global$8({ validate: editor.settings.validate }, editor.schema).serialize(fragment);
};
var processResult = function (content, cancelled) {
return {
content: content,
cancelled: cancelled
};
};
var postProcessFilter = function (editor, html, internal, isWordHtml) {
var tempBody = editor.dom.create('div', { style: 'display:none' }, html);
var postProcessArgs = Events.firePastePostProcess(editor, tempBody, internal, isWordHtml);
return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());
};
var filterContent = function (editor, content, internal, isWordHtml) {
var preProcessArgs = Events.firePastePreProcess(editor, content, internal, isWordHtml);
var filteredContent = preProcess$1(editor, preProcessArgs.content);
if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {
return postProcessFilter(editor, filteredContent, internal, isWordHtml);
} else {
return processResult(filteredContent, preProcessArgs.isDefaultPrevented());
}
};
var process = function (editor, html, internal) {
var isWordHtml = WordFilter.isWordContent(html);
var content = isWordHtml ? WordFilter.preProcess(editor, html) : html;
return filterContent(editor, content, internal, isWordHtml);
};
var ProcessFilters = { process: process };
var pasteHtml = function (editor, html) {
editor.insertContent(html, {
merge: Settings.shouldMergeFormats(editor),
paste: true
});
return true;
};
var isAbsoluteUrl = function (url) {
return /^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(url);
};
var isImageUrl = function (url) {
return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);
};
var createImage = function (editor, url, pasteHtmlFn) {
editor.undoManager.extra(function () {
pasteHtmlFn(editor, url);
}, function () {
editor.insertContent('<img src="' + url + '">');
});
return true;
};
var createLink = function (editor, url, pasteHtmlFn) {
editor.undoManager.extra(function () {
pasteHtmlFn(editor, url);
}, function () {
editor.execCommand('mceInsertLink', false, url);
});
return true;
};
var linkSelection = function (editor, html, pasteHtmlFn) {
return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;
};
var insertImage = function (editor, html, pasteHtmlFn) {
return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;
};
var smartInsertContent = function (editor, html) {
global$4.each([
linkSelection,
insertImage,
pasteHtml
], function (action) {
return action(editor, html, pasteHtml) !== true;
});
};
var insertContent = function (editor, html) {
if (Settings.isSmartPasteEnabled(editor) === false) {
pasteHtml(editor, html);
} else {
smartInsertContent(editor, html);
}
};
var SmartPaste = {
isImageUrl: isImageUrl,
isAbsoluteUrl: isAbsoluteUrl,
insertContent: insertContent
};
var noop = function () {
};
var constant = function (value) {
return function () {
return value;
};
};
function curry(fn) {
var initialArgs = [];
for (var _i = 1; _i < arguments.length; _i++) {
initialArgs[_i - 1] = arguments[_i];
}
return function () {
var restArgs = [];
for (var _i = 0; _i < arguments.length; _i++) {
restArgs[_i] = arguments[_i];
}
var all = initialArgs.concat(restArgs);
return fn.apply(null, all);
};
}
var never = constant(false);
var always = constant(true);
var none = function () {
return NONE;
};
var NONE = function () {
var eq = function (o) {
return o.isNone();
};
var call = function (thunk) {
return thunk();
};
var id = function (n) {
return n;
};
var me = {
fold: function (n, s) {
return n();
},
is: never,
isSome: never,
isNone: always,
getOr: id,
getOrThunk: call,
getOrDie: function (msg) {
throw new Error(msg || 'error: getOrDie called on none.');
},
getOrNull: constant(null),
getOrUndefined: constant(undefined),
or: id,
orThunk: call,
map: none,
each: noop,
bind: none,
exists: never,
forall: always,
filter: none,
equals: eq,
equals_: eq,
toArray: function () {
return [];
},
toString: constant('none()')
};
if (Object.freeze) {
Object.freeze(me);
}
return me;
}();
var some = function (a) {
var constant_a = constant(a);
var self = function () {
return me;
};
var bind = function (f) {
return f(a);
};
var me = {
fold: function (n, s) {
return s(a);
},
is: function (v) {
return a === v;
},
isSome: always,
isNone: never,
getOr: constant_a,
getOrThunk: constant_a,
getOrDie: constant_a,
getOrNull: constant_a,
getOrUndefined: constant_a,
or: self,
orThunk: self,
map: function (f) {
return some(f(a));
},
each: function (f) {
f(a);
},
bind: bind,
exists: bind,
forall: bind,
filter: function (f) {
return f(a) ? me : NONE;
},
toArray: function () {
return [a];
},
toString: function () {
return 'some(' + a + ')';
},
equals: function (o) {
return o.is(a);
},
equals_: function (o, elementEq) {
return o.fold(never, function (b) {
return elementEq(a, b);
});
}
};
return me;
};
var from = function (value) {
return value === null || value === undefined ? NONE : some(value);
};
var Option = {
some: some,
none: none,
from: from
};
var typeOf = function (x) {
if (x === null) {
return 'null';
}
var t = typeof x;
if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
return 'array';
}
if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
return 'string';
}
return t;
};
var isType = function (type) {
return function (value) {
return typeOf(value) === type;
};
};
var isFunction = isType('function');
var nativeSlice = Array.prototype.slice;
var map = function (xs, f) {
var len = xs.length;
var r = new Array(len);
for (var i = 0; i < len; i++) {
var x = xs[i];
r[i] = f(x, i);
}
return r;
};
var each = function (xs, f) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
f(x, i);
}
};
var filter$1 = function (xs, pred) {
var r = [];
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i)) {
r.push(x);
}
}
return r;
};
var from$1 = isFunction(Array.from) ? Array.from : function (x) {
return nativeSlice.call(x);
};
var exports$1 = {}, module = { exports: exports$1 };
(function (define, exports, module, require) {
(function (f) {
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = f();
} else if (typeof define === 'function' && define.amd) {
define([], f);
} else {
var g;
if (typeof window !== 'undefined') {
g = window;
} else if (typeof global !== 'undefined') {
g = global;
} else if (typeof self !== 'undefined') {
g = self;
} else {
g = this;
}
g.EphoxContactWrapper = f();
}
}(function () {
return function () {
function r(e, n, t) {
function o(i, f) {
if (!n[i]) {
if (!e[i]) {
var c = 'function' == typeof require && require;
if (!f && c)
return c(i, !0);
if (u)
return u(i, !0);
var a = new Error('Cannot find module \'' + i + '\'');
throw a.code = 'MODULE_NOT_FOUND', a;
}
var p = n[i] = { exports: {} };
e[i][0].call(p.exports, function (r) {
var n = e[i][1][r];
return o(n || r);
}, p, p.exports, r, e, n, t);
}
return n[i].exports;
}
for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++)
o(t[i]);
return o;
}
return r;
}()({
1: [
function (require, module, exports) {
var process = module.exports = {};
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout() {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
}());
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
return setTimeout(fun, 0);
}
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
return cachedSetTimeout(fun, 0);
} catch (e) {
try {
return cachedSetTimeout.call(null, fun, 0);
} catch (e) {
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
return clearTimeout(marker);
}
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
return cachedClearTimeout(marker);
} catch (e) {
try {
return cachedClearTimeout.call(null, marker);
} catch (e) {
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while (len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = '';
process.versions = {};
function noop() {
}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) {
return [];
};
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () {
return '/';
};
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function () {
return 0;
};
},
{}
],
2: [
function (require, module, exports) {
(function (setImmediate) {
(function (root) {
var setTimeoutFunc = setTimeout;
function noop() {
}
function bind(fn, thisArg) {
return function () {
fn.apply(thisArg, arguments);
};
}
function Promise(fn) {
if (typeof this !== 'object')
throw new TypeError('Promises must be constructed via new');
if (typeof fn !== 'function')
throw new TypeError('not a function');
this._state = 0;
this._handled = false;
this._value = undefined;
this._deferreds = [];
doResolve(fn, this);
}
function handle(self, deferred) {
while (self._state === 3) {
self = self._value;
}
if (self._state === 0) {
self._deferreds.push(deferred);
return;
}
self._handled = true;
Promise._immediateFn(function () {
var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
if (cb === null) {
(self._state === 1 ? resolve : reject)(deferred.promise, self._value);
return;
}
var ret;
try {
ret = cb(self._value);
} catch (e) {
reject(deferred.promise, e);
return;
}
resolve(deferred.promise, ret);
});
}
function resolve(self, newValue) {
try {
if (newValue === self)
throw new TypeError('A promise cannot be resolved with itself.');
if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
var then = newValue.then;
if (newValue instanceof Promise) {
self._state = 3;
self._value = newValue;
finale(self);
return;
} else if (typeof then === 'function') {
doResolve(bind(then, newValue), self);
return;
}
}
self._state = 1;
self._value = newValue;
finale(self);
} catch (e) {
reject(self, e);
}
}
function reject(self, newValue) {
self._state = 2;
self._value = newValue;
finale(self);
}
function finale(self) {
if (self._state === 2 && self._deferreds.length === 0) {
Promise._immediateFn(function () {
if (!self._handled) {
Promise._unhandledRejectionFn(self._value);
}
});
}
for (var i = 0, len = self._deferreds.length; i < len; i++) {
handle(self, self._deferreds[i]);
}
self._deferreds = null;
}
function Handler(onFulfilled, onRejected, promise) {
this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
this.onRejected = typeof onRejected === 'function' ? onRejected : null;
this.promise = promise;
}
function doResolve(fn, self) {
var done = false;
try {
fn(function (value) {
if (done)
return;
done = true;
resolve(self, value);
}, function (reason) {
if (done)
return;
done = true;
reject(self, reason);
});
} catch (ex) {
if (done)
return;
done = true;
reject(self, ex);
}
}
Promise.prototype['catch'] = function (onRejected) {
return this.then(null, onRejected);
};
Promise.prototype.then = function (onFulfilled, onRejected) {
var prom = new this.constructor(noop);
handle(this, new Handler(onFulfilled, onRejected, prom));
return prom;
};
Promise.all = function (arr) {
var args = Array.prototype.slice.call(arr);
return new Promise(function (resolve, reject) {
if (args.length === 0)
return resolve([]);
var remaining = args.length;
function res(i, val) {
try {
if (val && (typeof val === 'object' || typeof val === 'function')) {
var then = val.then;
if (typeof then === 'function') {
then.call(val, function (val) {
res(i, val);
}, reject);
return;
}
}
args[i] = val;
if (--remaining === 0) {
resolve(args);
}
} catch (ex) {
reject(ex);
}
}
for (var i = 0; i < args.length; i++) {
res(i, args[i]);
}
});
};
Promise.resolve = function (value) {
if (value && typeof value === 'object' && value.constructor === Promise) {
return value;
}
return new Promise(function (resolve) {
resolve(value);
});
};
Promise.reject = function (value) {
return new Promise(function (resolve, reject) {
reject(value);
});
};
Promise.race = function (values) {
return new Promise(function (resolve, reject) {
for (var i = 0, len = values.length; i < len; i++) {
values[i].then(resolve, reject);
}
});
};
Promise._immediateFn = typeof setImmediate === 'function' ? function (fn) {
setImmediate(fn);
} : function (fn) {
setTimeoutFunc(fn, 0);
};
Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
if (typeof console !== 'undefined' && console) {
console.warn('Possible Unhandled Promise Rejection:', err);
}
};
Promise._setImmediateFn = function _setImmediateFn(fn) {
Promise._immediateFn = fn;
};
Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
Promise._unhandledRejectionFn = fn;
};
if (typeof module !== 'undefined' && module.exports) {
module.exports = Promise;
} else if (!root.Promise) {
root.Promise = Promise;
}
}(this));
}.call(this, require('timers').setImmediate));
},
{ 'timers': 3 }
],
3: [
function (require, module, exports) {
(function (setImmediate, clearImmediate) {
var nextTick = require('process/browser.js').nextTick;
var apply = Function.prototype.apply;
var slice = Array.prototype.slice;
var immediateIds = {};
var nextImmediateId = 0;
exports.setTimeout = function () {
return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
};
exports.setInterval = function () {
return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
};
exports.clearTimeout = exports.clearInterval = function (timeout) {
timeout.close();
};
function Timeout(id, clearFn) {
this._id = id;
this._clearFn = clearFn;
}
Timeout.prototype.unref = Timeout.prototype.ref = function () {
};
Timeout.prototype.close = function () {
this._clearFn.call(window, this._id);
};
exports.enroll = function (item, msecs) {
clearTimeout(item._idleTimeoutId);
item._idleTimeout = msecs;
};
exports.unenroll = function (item) {
clearTimeout(item._idleTimeoutId);
item._idleTimeout = -1;
};
exports._unrefActive = exports.active = function (item) {
clearTimeout(item._idleTimeoutId);
var msecs = item._idleTimeout;
if (msecs >= 0) {
item._idleTimeoutId = setTimeout(function onTimeout() {
if (item._onTimeout)
item._onTimeout();
}, msecs);
}
};
exports.setImmediate = typeof setImmediate === 'function' ? setImmediate : function (fn) {
var id = nextImmediateId++;
var args = arguments.length < 2 ? false : slice.call(arguments, 1);
immediateIds[id] = true;
nextTick(function onNextTick() {
if (immediateIds[id]) {
if (args) {
fn.apply(null, args);
} else {
fn.call(null);
}
exports.clearImmediate(id);
}
});
return id;
};
exports.clearImmediate = typeof clearImmediate === 'function' ? clearImmediate : function (id) {
delete immediateIds[id];
};
}.call(this, require('timers').setImmediate, require('timers').clearImmediate));
},
{
'process/browser.js': 1,
'timers': 3
}
],
4: [
function (require, module, exports) {
var promisePolyfill = require('promise-polyfill');
var Global = function () {
if (typeof window !== 'undefined') {
return window;
} else {
return Function('return this;')();
}
}();
module.exports = { boltExport: Global.Promise || promisePolyfill };
},
{ 'promise-polyfill': 2 }
]
}, {}, [4])(4);
}));
}(undefined, exports$1, module, undefined));
var Promise = module.exports.boltExport;
var nu = function (baseFn) {
var data = Option.none();
var callbacks = [];
var map = function (f) {
return nu(function (nCallback) {
get(function (data) {
nCallback(f(data));
});
});
};
var get = function (nCallback) {
if (isReady()) {
call(nCallback);
} else {
callbacks.push(nCallback);
}
};
var set = function (x) {
data = Option.some(x);
run(callbacks);
callbacks = [];
};
var isReady = function () {
return data.isSome();
};
var run = function (cbs) {
each(cbs, call);
};
var call = function (cb) {
data.each(function (x) {
domGlobals.setTimeout(function () {
cb(x);
}, 0);
});
};
baseFn(set);
return {
get: get,
map: map,
isReady: isReady
};
};
var pure = function (a) {
return nu(function (callback) {
callback(a);
});
};
var LazyValue = {
nu: nu,
pure: pure
};
var errorReporter = function (err) {
domGlobals.setTimeout(function () {
throw err;
}, 0);
};
var make = function (run) {
var get = function (callback) {
run().then(callback, errorReporter);
};
var map = function (fab) {
return make(function () {
return run().then(fab);
});
};
var bind = function (aFutureB) {
return make(function () {
return run().then(function (v) {
return aFutureB(v).toPromise();
});
});
};
var anonBind = function (futureB) {
return make(function () {
return run().then(function () {
return futureB.toPromise();
});
});
};
var toLazy = function () {
return LazyValue.nu(get);
};
var toCached = function () {
var cache = null;
return make(function () {
if (cache === null) {
cache = run();
}
return cache;
});
};
var toPromise = run;
return {
map: map,
bind: bind,
anonBind: anonBind,
toLazy: toLazy,
toCached: toCached,
toPromise: toPromise,
get: get
};
};
var nu$1 = function (baseFn) {
return make(function () {
return new Promise(baseFn);
});
};
var pure$1 = function (a) {
return make(function () {
return Promise.resolve(a);
});
};
var Future = {
nu: nu$1,
pure: pure$1
};
var par = function (asyncValues, nu) {
return nu(function (callback) {
var r = [];
var count = 0;
var cb = function (i) {
return function (value) {
r[i] = value;
count++;
if (count >= asyncValues.length) {
callback(r);
}
};
};
if (asyncValues.length === 0) {
callback([]);
} else {
each(asyncValues, function (asyncValue, i) {
asyncValue.get(cb(i));
});
}
});
};
var par$1 = function (futures) {
return par(futures, Future.nu);
};
var traverse = function (array, fn) {
return par$1(map(array, fn));
};
var mapM = traverse;
var value = function () {
var subject = Cell(Option.none());
var clear = function () {
subject.set(Option.none());
};
var set = function (s) {
subject.set(Option.some(s));
};
var on = function (f) {
subject.get().each(f);
};
var isSet = function () {
return subject.get().isSome();
};
return {
clear: clear,
set: set,
isSet: isSet,
on: on
};
};
var pasteHtml$1 = function (editor, html, internalFlag) {
var internal = internalFlag ? internalFlag : InternalHtml.isMarked(html);
var args = ProcessFilters.process(editor, InternalHtml.unmark(html), internal);
if (args.cancelled === false) {
SmartPaste.insertContent(editor, args.content);
}
};
var pasteText = function (editor, text) {
text = editor.dom.encode(text).replace(/\r\n/g, '\n');
text = Newlines.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);
pasteHtml$1(editor, text, false);
};
var getDataTransferItems = function (dataTransfer) {
var items = {};
var mceInternalUrlPrefix = 'data:text/mce-internal,';
if (dataTransfer) {
if (dataTransfer.getData) {
var legacyText = dataTransfer.getData('Text');
if (legacyText && legacyText.length > 0) {
if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {
items['text/plain'] = legacyText;
}
}
}
if (dataTransfer.types) {
for (var i = 0; i < dataTransfer.types.length; i++) {
var contentType = dataTransfer.types[i];
try {
items[contentType] = dataTransfer.getData(contentType);
} catch (ex) {
items[contentType] = '';
}
}
}
}
return items;
};
var getClipboardContent = function (editor, clipboardEvent) {
var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);
return Utils.isMsEdge() ? global$4.extend(content, { 'text/html': '' }) : content;
};
var hasContentType = function (clipboardContent, mimeType) {
return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;
};
var hasHtmlOrText = function (content) {
return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');
};
var getBase64FromUri = function (uri) {
var idx;
idx = uri.indexOf(',');
if (idx !== -1) {
return uri.substr(idx + 1);
}
return null;
};
var isValidDataUriImage = function (settings, imgElm) {
return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;
};
var extractFilename = function (editor, str) {
var m = str.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i);
return m ? editor.dom.encode(m[1]) : null;
};
var uniqueId = Utils.createIdGenerator('mceclip');
var pasteImage = function (editor, imageItem) {
var base64 = getBase64FromUri(imageItem.uri);
var id = uniqueId();
var name = editor.settings.images_reuse_filename && imageItem.blob.name ? extractFilename(editor, imageItem.blob.name) : id;
var img = new domGlobals.Image();
img.src = imageItem.uri;
if (isValidDataUriImage(editor.settings, img)) {
var blobCache = editor.editorUpload.blobCache;
var blobInfo = void 0, existingBlobInfo = void 0;
existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {
return cachedBlobInfo.base64() === base64;
});
if (!existingBlobInfo) {
blobInfo = blobCache.create(id, imageItem.blob, base64, name);
blobCache.add(blobInfo);
} else {
blobInfo = existingBlobInfo;
}
pasteHtml$1(editor, '<img src="' + blobInfo.blobUri() + '">', false);
} else {
pasteHtml$1(editor, '<img src="' + imageItem.uri + '">', false);
}
};
var isClipboardEvent = function (event) {
return event.type === 'paste';
};
var readBlobsAsDataUris = function (items) {
return mapM(items, function (item) {
return Future.nu(function (resolve) {
var blob = item.getAsFile ? item.getAsFile() : item;
var reader = new window.FileReader();
reader.onload = function () {
resolve({
blob: blob,
uri: reader.result
});
};
reader.readAsDataURL(blob);
});
});
};
var getImagesFromDataTransfer = function (dataTransfer) {
var items = dataTransfer.items ? map(from$1(dataTransfer.items), function (item) {
return item.getAsFile();
}) : [];
var files = dataTransfer.files ? from$1(dataTransfer.files) : [];
var images = filter$1(items.length > 0 ? items : files, function (file) {
return /^image\/(jpeg|png|gif|bmp)$/.test(file.type);
});
return images;
};
var pasteImageData = function (editor, e, rng) {
var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;
if (editor.settings.paste_data_images && dataTransfer) {
var images = getImagesFromDataTransfer(dataTransfer);
if (images.length > 0) {
e.preventDefault();
readBlobsAsDataUris(images).get(function (blobResults) {
if (rng) {
editor.selection.setRng(rng);
}
each(blobResults, function (result) {
pasteImage(editor, result);
});
});
return true;
}
}
return false;
};
var isBrokenAndroidClipboardEvent = function (e) {
var clipboardData = e.clipboardData;
return domGlobals.navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
};
var isKeyboardPasteEvent = function (e) {
return global$5.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;
};
var registerEventHandlers = function (editor, pasteBin, pasteFormat) {
var keyboardPasteEvent = value();
var keyboardPastePlainTextState;
editor.on('keydown', function (e) {
function removePasteBinOnKeyUp(e) {
if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
pasteBin.remove();
}
}
if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;
if (keyboardPastePlainTextState && global$2.webkit && domGlobals.navigator.userAgent.indexOf('Version/') !== -1) {
return;
}
e.stopImmediatePropagation();
keyboardPasteEvent.set(e);
window.setTimeout(function () {
keyboardPasteEvent.clear();
}, 100);
if (global$2.ie && keyboardPastePlainTextState) {
e.preventDefault();
Events.firePaste(editor, true);
return;
}
pasteBin.remove();
pasteBin.create();
editor.once('keyup', removePasteBinOnKeyUp);
editor.once('paste', function () {
editor.off('keyup', removePasteBinOnKeyUp);
});
}
});
function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {
var content, isPlainTextHtml;
if (hasContentType(clipboardContent, 'text/html')) {
content = clipboardContent['text/html'];
} else {
content = pasteBin.getHtml();
internal = internal ? internal : InternalHtml.isMarked(content);
if (pasteBin.isDefaultContent(content)) {
plainTextMode = true;
}
}
content = Utils.trimHtml(content);
pasteBin.remove();
isPlainTextHtml = internal === false && Newlines.isPlainText(content);
if (!content.length || isPlainTextHtml) {
plainTextMode = true;
}
if (plainTextMode) {
if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {
content = clipboardContent['text/plain'];
} else {
content = Utils.innerText(content);
}
}
if (pasteBin.isDefaultContent(content)) {
if (!isKeyBoardPaste) {
editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');
}
return;
}
if (plainTextMode) {
pasteText(editor, content);
} else {
pasteHtml$1(editor, content, internal);
}
}
var getLastRng = function () {
return pasteBin.getLastRng() || editor.selection.getRng();
};
editor.on('paste', function (e) {
var isKeyBoardPaste = keyboardPasteEvent.isSet();
var clipboardContent = getClipboardContent(editor, e);
var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;
var internal = hasContentType(clipboardContent, InternalHtml.internalHtmlMime());
keyboardPastePlainTextState = false;
if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {
pasteBin.remove();
return;
}
if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {
pasteBin.remove();
return;
}
if (!isKeyBoardPaste) {
e.preventDefault();
}
if (global$2.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {
pasteBin.create();
editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {
e.stopPropagation();
});
editor.getDoc().execCommand('Paste', false, null);
clipboardContent['text/html'] = pasteBin.getHtml();
}
if (hasContentType(clipboardContent, 'text/html')) {
e.preventDefault();
if (!internal) {
internal = InternalHtml.isMarked(clipboardContent['text/html']);
}
insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);
} else {
global$3.setEditorTimeout(editor, function () {
insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);
}, 0);
}
});
};
var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {
registerEventHandlers(editor, pasteBin, pasteFormat);
var src;
editor.parser.addNodeFilter('img', function (nodes, name, args) {
var isPasteInsert = function (args) {
return args.data && args.data.paste === true;
};
var remove = function (node) {
if (!node.attr('data-mce-object') && src !== global$2.transparentSrc) {
node.remove();
}
};
var isWebKitFakeUrl = function (src) {
return src.indexOf('webkit-fake-url') === 0;
};
var isDataUri = function (src) {
return src.indexOf('data:') === 0;
};
if (!editor.settings.paste_data_images && isPasteInsert(args)) {
var i = nodes.length;
while (i--) {
src = nodes[i].attributes.map.src;
if (!src) {
continue;
}
if (isWebKitFakeUrl(src)) {
remove(nodes[i]);
} else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {
remove(nodes[i]);
}
}
}
});
};
var getPasteBinParent = function (editor) {
return global$2.ie && editor.inline ? domGlobals.document.body : editor.getBody();
};
var isExternalPasteBin = function (editor) {
return getPasteBinParent(editor) !== editor.getBody();
};
var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) {
if (isExternalPasteBin(editor)) {
editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {
if (!isDefault(editor, pasteBinDefaultContent)) {
editor.fire('paste');
}
});
}
};
var create = function (editor, lastRngCell, pasteBinDefaultContent) {
var dom = editor.dom, body = editor.getBody();
var pasteBinElm;
lastRngCell.set(editor.selection.getRng());
pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {
'id': 'mcepastebin',
'class': 'mce-pastebin',
'contentEditable': true,
'data-mce-bogus': 'all',
'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'
}, pasteBinDefaultContent);
if (global$2.ie || global$2.gecko) {
dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);
}
dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {
e.stopPropagation();
});
delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent);
pasteBinElm.focus();
editor.selection.select(pasteBinElm, true);
};
var remove = function (editor, lastRngCell) {
if (getEl(editor)) {
var pasteBinClone = void 0;
var lastRng = lastRngCell.get();
while (pasteBinClone = editor.dom.get('mcepastebin')) {
editor.dom.remove(pasteBinClone);
editor.dom.unbind(pasteBinClone);
}
if (lastRng) {
editor.selection.setRng(lastRng);
}
}
lastRngCell.set(null);
};
var getEl = function (editor) {
return editor.dom.get('mcepastebin');
};
var getHtml = function (editor) {
var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;
var copyAndRemove = function (toElm, fromElm) {
toElm.appendChild(fromElm);
editor.dom.remove(fromElm, true);
};
pasteBinClones = global$4.grep(getPasteBinParent(editor).childNodes, function (elm) {
return elm.id === 'mcepastebin';
});
pasteBinElm = pasteBinClones.shift();
global$4.each(pasteBinClones, function (pasteBinClone) {
copyAndRemove(pasteBinElm, pasteBinClone);
});
dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);
for (i = dirtyWrappers.length - 1; i >= 0; i--) {
cleanWrapper = editor.dom.create('div');
pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);
copyAndRemove(cleanWrapper, dirtyWrappers[i]);
}
return pasteBinElm ? pasteBinElm.innerHTML : '';
};
var getLastRng = function (lastRng) {
return lastRng.get();
};
var isDefaultContent = function (pasteBinDefaultContent, content) {
return content === pasteBinDefaultContent;
};
var isPasteBin = function (elm) {
return elm && elm.id === 'mcepastebin';
};
var isDefault = function (editor, pasteBinDefaultContent) {
var pasteBinElm = getEl(editor);
return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);
};
var PasteBin = function (editor) {
var lastRng = Cell(null);
var pasteBinDefaultContent = '%MCEPASTEBIN%';
return {
create: function () {
return create(editor, lastRng, pasteBinDefaultContent);
},
remove: function () {
return remove(editor, lastRng);
},
getEl: function () {
return getEl(editor);
},
getHtml: function () {
return getHtml(editor);
},
getLastRng: function () {
return getLastRng(lastRng);
},
isDefault: function () {
return isDefault(editor, pasteBinDefaultContent);
},
isDefaultContent: function (content) {
return isDefaultContent(pasteBinDefaultContent, content);
}
};
};
var Clipboard = function (editor, pasteFormat) {
var pasteBin = PasteBin(editor);
editor.on('preInit', function () {
return registerEventsAndFilters(editor, pasteBin, pasteFormat);
});
return {
pasteFormat: pasteFormat,
pasteHtml: function (html, internalFlag) {
return pasteHtml$1(editor, html, internalFlag);
},
pasteText: function (text) {
return pasteText(editor, text);
},
pasteImageData: function (e, rng) {
return pasteImageData(editor, e, rng);
},
getDataTransferItems: getDataTransferItems,
hasHtmlOrText: hasHtmlOrText,
hasContentType: hasContentType
};
};
var noop$1 = function () {
};
var hasWorkingClipboardApi = function (clipboardData) {
return global$2.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && Utils.isMsEdge() !== true;
};
var setHtml5Clipboard = function (clipboardData, html, text) {
if (hasWorkingClipboardApi(clipboardData)) {
try {
clipboardData.clearData();
clipboardData.setData('text/html', html);
clipboardData.setData('text/plain', text);
clipboardData.setData(InternalHtml.internalHtmlMime(), html);
return true;
} catch (e) {
return false;
}
} else {
return false;
}
};
var setClipboardData = function (evt, data, fallback, done) {
if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {
evt.preventDefault();
done();
} else {
fallback(data.html, done);
}
};
var fallback = function (editor) {
return function (html, done) {
var markedHtml = InternalHtml.mark(html);
var outer = editor.dom.create('div', {
'contenteditable': 'false',
'data-mce-bogus': 'all'
});
var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);
editor.dom.setStyles(outer, {
position: 'fixed',
top: '0',
left: '-3000px',
width: '1000px',
overflow: 'hidden'
});
outer.appendChild(inner);
editor.dom.add(editor.getBody(), outer);
var range = editor.selection.getRng();
inner.focus();
var offscreenRange = editor.dom.createRng();
offscreenRange.selectNodeContents(inner);
editor.selection.setRng(offscreenRange);
setTimeout(function () {
editor.selection.setRng(range);
outer.parentNode.removeChild(outer);
done();
}, 0);
};
};
var getData = function (editor) {
return {
html: editor.selection.getContent({ contextual: true }),
text: editor.selection.getContent({ format: 'text' })
};
};
var isTableSelection = function (editor) {
return !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody());
};
var hasSelectedContent = function (editor) {
return !editor.selection.isCollapsed() || isTableSelection(editor);
};
var cut = function (editor) {
return function (evt) {
if (hasSelectedContent(editor)) {
setClipboardData(evt, getData(editor), fallback(editor), function () {
setTimeout(function () {
editor.execCommand('Delete');
}, 0);
});
}
};
};
var copy = function (editor) {
return function (evt) {
if (hasSelectedContent(editor)) {
setClipboardData(evt, getData(editor), fallback(editor), noop$1);
}
};
};
var register$1 = function (editor) {
editor.on('cut', cut(editor));
editor.on('copy', copy(editor));
};
var CutCopy = { register: register$1 };
var global$b = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
var getCaretRangeFromEvent = function (editor, e) {
return global$b.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
};
var isPlainTextFileUrl = function (content) {
var plainTextContent = content['text/plain'];
return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;
};
var setFocusedRange = function (editor, rng) {
editor.focus();
editor.selection.setRng(rng);
};
var setup = function (editor, clipboard, draggingInternallyState) {
if (Settings.shouldBlockDrop(editor)) {
editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {
e.preventDefault();
e.stopPropagation();
});
}
if (!Settings.shouldPasteDataImages(editor)) {
editor.on('drop', function (e) {
var dataTransfer = e.dataTransfer;
if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
e.preventDefault();
}
});
}
editor.on('drop', function (e) {
var dropContent, rng;
rng = getCaretRangeFromEvent(editor, e);
if (e.isDefaultPrevented() || draggingInternallyState.get()) {
return;
}
dropContent = clipboard.getDataTransferItems(e.dataTransfer);
var internal = clipboard.hasContentType(dropContent, InternalHtml.internalHtmlMime());
if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {
return;
}
if (rng && Settings.shouldFilterDrop(editor)) {
var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
if (content_1) {
e.preventDefault();
global$3.setEditorTimeout(editor, function () {
editor.undoManager.transact(function () {
if (dropContent['mce-internal']) {
editor.execCommand('Delete');
}
setFocusedRange(editor, rng);
content_1 = Utils.trimHtml(content_1);
if (!dropContent['text/html']) {
clipboard.pasteText(content_1);
} else {
clipboard.pasteHtml(content_1, internal);
}
});
});
}
}
});
editor.on('dragstart', function (e) {
draggingInternallyState.set(true);
});
editor.on('dragover dragend', function (e) {
if (Settings.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {
e.preventDefault();
setFocusedRange(editor, getCaretRangeFromEvent(editor, e));
}
if (e.type === 'dragend') {
draggingInternallyState.set(false);
}
});
};
var DragDrop = { setup: setup };
var setup$1 = function (editor) {
var plugin = editor.plugins.paste;
var preProcess = Settings.getPreProcess(editor);
if (preProcess) {
editor.on('PastePreProcess', function (e) {
preProcess.call(plugin, plugin, e);
});
}
var postProcess = Settings.getPostProcess(editor);
if (postProcess) {
editor.on('PastePostProcess', function (e) {
postProcess.call(plugin, plugin, e);
});
}
};
var PrePostProcess = { setup: setup$1 };
function addPreProcessFilter(editor, filterFunc) {
editor.on('PastePreProcess', function (e) {
e.content = filterFunc(editor, e.content, e.internal, e.wordContent);
});
}
function addPostProcessFilter(editor, filterFunc) {
editor.on('PastePostProcess', function (e) {
filterFunc(editor, e.node);
});
}
function removeExplorerBrElementsAfterBlocks(editor, html) {
if (!WordFilter.isWordContent(html)) {
return html;
}
var blockElements = [];
global$4.each(editor.schema.getBlockElements(), function (block, blockName) {
blockElements.push(blockName);
});
var explorerBlocksRegExp = new RegExp('(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*', 'g');
html = Utils.filter(html, [[
explorerBlocksRegExp,
'$1'
]]);
html = Utils.filter(html, [
[
/<br><br>/g,
'<BR><BR>'
],
[
/<br>/g,
' '
],
[
/<BR><BR>/g,
'<br>'
]
]);
return html;
}
function removeWebKitStyles(editor, content, internal, isWordHtml) {
if (isWordHtml || internal) {
return content;
}
var webKitStylesSetting = Settings.getWebkitStyles(editor);
var webKitStyles;
if (Settings.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {
return content;
}
if (webKitStylesSetting) {
webKitStyles = webKitStylesSetting.split(/[, ]/);
}
if (webKitStyles) {
var dom_1 = editor.dom, node_1 = editor.selection.getNode();
content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function (all, before, value, after) {
var inputStyles = dom_1.parseStyle(dom_1.decode(value));
var outputStyles = {};
if (webKitStyles === 'none') {
return before + after;
}
for (var i = 0; i < webKitStyles.length; i++) {
var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);
if (/color/.test(webKitStyles[i])) {
inputValue = dom_1.toHex(inputValue);
currentValue = dom_1.toHex(currentValue);
}
if (currentValue !== inputValue) {
outputStyles[webKitStyles[i]] = inputValue;
}
}
outputStyles = dom_1.serializeStyle(outputStyles, 'span');
if (outputStyles) {
return before + ' style="' + outputStyles + '"' + after;
}
return before + after;
});
} else {
content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3');
}
content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function (all, before, value, after) {
return before + ' style="' + value + '"' + after;
});
return content;
}
function removeUnderlineAndFontInAnchor(editor, root) {
editor.$('a', root).find('font,u').each(function (i, node) {
editor.dom.remove(node, true);
});
}
var setup$2 = function (editor) {
if (global$2.webkit) {
addPreProcessFilter(editor, removeWebKitStyles);
}
if (global$2.ie) {
addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);
addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);
}
};
var Quirks = { setup: setup$2 };
var stateChange = function (editor, clipboard, e) {
var ctrl = e.control;
ctrl.active(clipboard.pasteFormat.get() === 'text');
editor.on('PastePlainTextToggle', function (e) {
ctrl.active(e.state);
});
};
var register$2 = function (editor, clipboard) {
var postRender = curry(stateChange, editor, clipboard);
editor.addButton('pastetext', {
active: false,
icon: 'pastetext',
tooltip: 'Paste as text',
cmd: 'mceTogglePlainTextPaste',
onPostRender: postRender
});
editor.addMenuItem('pastetext', {
text: 'Paste as text',
selectable: true,
active: clipboard.pasteFormat,
cmd: 'mceTogglePlainTextPaste',
onPostRender: postRender
});
};
var Buttons = { register: register$2 };
global$1.add('paste', function (editor) {
if (DetectProPlugin.hasProPlugin(editor) === false) {
var userIsInformedState = Cell(false);
var draggingInternallyState = Cell(false);
var pasteFormat = Cell(Settings.isPasteAsTextEnabled(editor) ? 'text' : 'html');
var clipboard = Clipboard(editor, pasteFormat);
var quirks = Quirks.setup(editor);
Buttons.register(editor, clipboard);
Commands.register(editor, clipboard, userIsInformedState);
PrePostProcess.setup(editor);
CutCopy.register(editor);
DragDrop.setup(editor, clipboard, draggingInternallyState);
return Api.get(clipboard, quirks);
}
});
function Plugin () {
}
return Plugin;
}(window));
})();
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/wpview/plugin.js 0000644 00000013703 15071302371 0022520 0 ustar 00 /**
* WordPress View plugin.
*/
( function( tinymce ) {
tinymce.PluginManager.add( 'wpview', function( editor ) {
function noop () {}
// Set this here as wp-tinymce.js may be loaded too early.
var wp = window.wp;
if ( ! wp || ! wp.mce || ! wp.mce.views ) {
return {
getView: noop
};
}
// Check if a node is a view or not.
function isView( node ) {
return editor.dom.hasClass( node, 'wpview' );
}
// Replace view tags with their text.
function resetViews( content ) {
function callback( match, $1 ) {
return '<p>' + window.decodeURIComponent( $1 ) + '</p>';
}
if ( ! content || content.indexOf( ' data-wpview-' ) === -1 ) {
return content;
}
return content
.replace( /<div[^>]+data-wpview-text="([^"]+)"[^>]*>(?:\.|[\s\S]+?wpview-end[^>]+>\s*<\/span>\s*)?<\/div>/g, callback )
.replace( /<p[^>]+data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g, callback );
}
editor.on( 'init', function() {
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
if ( MutationObserver ) {
new MutationObserver( function() {
editor.fire( 'wp-body-class-change' );
} )
.observe( editor.getBody(), {
attributes: true,
attributeFilter: ['class']
} );
}
// Pass on body class name changes from the editor to the wpView iframes.
editor.on( 'wp-body-class-change', function() {
var className = editor.getBody().className;
editor.$( 'iframe[class="wpview-sandbox"]' ).each( function( i, iframe ) {
// Make sure it is a local iframe.
// jshint scripturl: true
if ( ! iframe.src || iframe.src === 'javascript:""' ) {
try {
iframe.contentWindow.document.body.className = className;
} catch( er ) {}
}
});
} );
});
// Scan new content for matching view patterns and replace them with markers.
editor.on( 'beforesetcontent', function( event ) {
var node;
if ( ! event.selection ) {
wp.mce.views.unbind();
}
if ( ! event.content ) {
return;
}
if ( ! event.load ) {
node = editor.selection.getNode();
if ( node && node !== editor.getBody() && /^\s*https?:\/\/\S+\s*$/i.test( event.content ) ) {
// When a url is pasted or inserted, only try to embed it when it is in an empty paragraph.
node = editor.dom.getParent( node, 'p' );
if ( node && /^[\s\uFEFF\u00A0]*$/.test( editor.$( node ).text() || '' ) ) {
// Make sure there are no empty inline elements in the <p>.
node.innerHTML = '';
} else {
return;
}
}
}
event.content = wp.mce.views.setMarkers( event.content, editor );
} );
// Replace any new markers nodes with views.
editor.on( 'setcontent', function() {
wp.mce.views.render();
} );
// Empty view nodes for easier processing.
editor.on( 'preprocess hide', function( event ) {
editor.$( 'div[data-wpview-text], p[data-wpview-marker]', event.node ).each( function( i, node ) {
node.innerHTML = '.';
} );
}, true );
// Replace views with their text.
editor.on( 'postprocess', function( event ) {
event.content = resetViews( event.content );
} );
// Prevent adding of undo levels when replacing wpview markers
// or when there are changes only in the (non-editable) previews.
editor.on( 'beforeaddundo', function( event ) {
var lastContent;
var newContent = event.level.content || ( event.level.fragments && event.level.fragments.join( '' ) );
if ( ! event.lastLevel ) {
lastContent = editor.startContent;
} else {
lastContent = event.lastLevel.content || ( event.lastLevel.fragments && event.lastLevel.fragments.join( '' ) );
}
if (
! newContent ||
! lastContent ||
newContent.indexOf( ' data-wpview-' ) === -1 ||
lastContent.indexOf( ' data-wpview-' ) === -1
) {
return;
}
if ( resetViews( lastContent ) === resetViews( newContent ) ) {
event.preventDefault();
}
} );
// Make sure views are copied as their text.
editor.on( 'drop objectselected', function( event ) {
if ( isView( event.targetClone ) ) {
event.targetClone = editor.getDoc().createTextNode(
window.decodeURIComponent( editor.dom.getAttrib( event.targetClone, 'data-wpview-text' ) )
);
}
} );
// Clean up URLs for easier processing.
editor.on( 'pastepreprocess', function( event ) {
var content = event.content;
if ( content ) {
content = tinymce.trim( content.replace( /<[^>]+>/g, '' ) );
if ( /^https?:\/\/\S+$/i.test( content ) ) {
event.content = content;
}
}
} );
// Show the view type in the element path.
editor.on( 'resolvename', function( event ) {
if ( isView( event.target ) ) {
event.name = editor.dom.getAttrib( event.target, 'data-wpview-type' ) || 'object';
}
} );
// See `media` plugin.
editor.on( 'click keyup', function() {
var node = editor.selection.getNode();
if ( isView( node ) ) {
if ( editor.dom.getAttrib( node, 'data-mce-selected' ) ) {
node.setAttribute( 'data-mce-selected', '2' );
}
}
} );
editor.addButton( 'wp_view_edit', {
tooltip: 'Edit|button', // '|button' is not displayed, only used for context.
icon: 'dashicon dashicons-edit',
onclick: function() {
var node = editor.selection.getNode();
if ( isView( node ) ) {
wp.mce.views.edit( editor, node );
}
}
} );
editor.addButton( 'wp_view_remove', {
tooltip: 'Remove',
icon: 'dashicon dashicons-no',
onclick: function() {
editor.fire( 'cut' );
}
} );
editor.once( 'preinit', function() {
var toolbar;
if ( editor.wp && editor.wp._createToolbar ) {
toolbar = editor.wp._createToolbar( [
'wp_view_edit',
'wp_view_remove'
] );
editor.on( 'wptoolbar', function( event ) {
if ( ! event.collapsed && isView( event.element ) ) {
event.toolbar = toolbar;
}
} );
}
} );
editor.wp = editor.wp || {};
editor.wp.getView = noop;
editor.wp.setViewCursor = noop;
return {
getView: noop
};
} );
} )( window.tinymce );
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/wplink/plugin.js 0000644 00000042606 15071302377 0022515 0 ustar 00 ( function( tinymce ) {
tinymce.ui.Factory.add( 'WPLinkPreview', tinymce.ui.Control.extend( {
url: '#',
renderHtml: function() {
return (
'<div id="' + this._id + '" class="wp-link-preview">' +
'<a href="' + this.url + '" target="_blank" tabindex="-1">' + this.url + '</a>' +
'</div>'
);
},
setURL: function( url ) {
var index, lastIndex;
if ( this.url !== url ) {
this.url = url;
url = window.decodeURIComponent( url );
url = url.replace( /^(?:https?:)?\/\/(?:www\.)?/, '' );
if ( ( index = url.indexOf( '?' ) ) !== -1 ) {
url = url.slice( 0, index );
}
if ( ( index = url.indexOf( '#' ) ) !== -1 ) {
url = url.slice( 0, index );
}
url = url.replace( /(?:index)?\.html$/, '' );
if ( url.charAt( url.length - 1 ) === '/' ) {
url = url.slice( 0, -1 );
}
// If nothing's left (maybe the URL was just a fragment), use the whole URL.
if ( url === '' ) {
url = this.url;
}
// If the URL is longer that 40 chars, concatenate the beginning (after the domain) and ending with '...'.
if ( url.length > 40 && ( index = url.indexOf( '/' ) ) !== -1 && ( lastIndex = url.lastIndexOf( '/' ) ) !== -1 && lastIndex !== index ) {
// If the beginning + ending are shorter that 40 chars, show more of the ending.
if ( index + url.length - lastIndex < 40 ) {
lastIndex = -( 40 - ( index + 1 ) );
}
url = url.slice( 0, index + 1 ) + '\u2026' + url.slice( lastIndex );
}
tinymce.$( this.getEl().firstChild ).attr( 'href', this.url ).text( url );
}
}
} ) );
tinymce.ui.Factory.add( 'WPLinkInput', tinymce.ui.Control.extend( {
renderHtml: function() {
return (
'<div id="' + this._id + '" class="wp-link-input">' +
'<label for="' + this._id + '_label">' + tinymce.translate( 'Paste URL or type to search' ) + '</label><input id="' + this._id + '_label" type="text" value="" />' +
'<input type="text" style="display:none" value="" />' +
'</div>'
);
},
setURL: function( url ) {
this.getEl().firstChild.nextSibling.value = url;
},
getURL: function() {
return tinymce.trim( this.getEl().firstChild.nextSibling.value );
},
getLinkText: function() {
var text = this.getEl().firstChild.nextSibling.nextSibling.value;
if ( ! tinymce.trim( text ) ) {
return '';
}
return text.replace( /[\r\n\t ]+/g, ' ' );
},
reset: function() {
var urlInput = this.getEl().firstChild.nextSibling;
urlInput.value = '';
urlInput.nextSibling.value = '';
}
} ) );
tinymce.PluginManager.add( 'wplink', function( editor ) {
var toolbar;
var editToolbar;
var previewInstance;
var inputInstance;
var linkNode;
var doingUndoRedo;
var doingUndoRedoTimer;
var $ = window.jQuery;
var emailRegex = /^(mailto:)?[a-z0-9._%+-]+@[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$/i;
var urlRegex1 = /^https?:\/\/([^\s/?.#-][^\s\/?.#]*\.?)+(\/[^\s"]*)?$/i;
var urlRegex2 = /^https?:\/\/[^\/]+\.[^\/]+($|\/)/i;
var speak = ( typeof window.wp !== 'undefined' && window.wp.a11y && window.wp.a11y.speak ) ? window.wp.a11y.speak : function() {};
var hasLinkError = false;
var __ = window.wp.i18n.__;
var _n = window.wp.i18n._n;
var sprintf = window.wp.i18n.sprintf;
function getSelectedLink() {
var href, html,
node = editor.selection.getStart(),
link = editor.dom.getParent( node, 'a[href]' );
if ( ! link ) {
html = editor.selection.getContent({ format: 'raw' });
if ( html && html.indexOf( '</a>' ) !== -1 ) {
href = html.match( /href="([^">]+)"/ );
if ( href && href[1] ) {
link = editor.$( 'a[href="' + href[1] + '"]', node )[0];
}
if ( link ) {
editor.selection.select( link );
}
}
}
return link;
}
function removePlaceholders() {
editor.$( 'a' ).each( function( i, element ) {
var $element = editor.$( element );
if ( $element.attr( 'href' ) === '_wp_link_placeholder' ) {
editor.dom.remove( element, true );
} else if ( $element.attr( 'data-wplink-edit' ) ) {
$element.attr( 'data-wplink-edit', null );
}
});
}
function removePlaceholderStrings( content, dataAttr ) {
return content.replace( /(<a [^>]+>)([\s\S]*?)<\/a>/g, function( all, tag, text ) {
if ( tag.indexOf( ' href="_wp_link_placeholder"' ) > -1 ) {
return text;
}
if ( dataAttr ) {
tag = tag.replace( / data-wplink-edit="true"/g, '' );
}
tag = tag.replace( / data-wplink-url-error="true"/g, '' );
return tag + text + '</a>';
});
}
function checkLink( node ) {
var $link = editor.$( node );
var href = $link.attr( 'href' );
if ( ! href || typeof $ === 'undefined' ) {
return;
}
hasLinkError = false;
if ( /^http/i.test( href ) && ( ! urlRegex1.test( href ) || ! urlRegex2.test( href ) ) ) {
hasLinkError = true;
$link.attr( 'data-wplink-url-error', 'true' );
speak( editor.translate( 'Warning: the link has been inserted but may have errors. Please test it.' ), 'assertive' );
} else {
$link.removeAttr( 'data-wplink-url-error' );
}
}
editor.on( 'preinit', function() {
if ( editor.wp && editor.wp._createToolbar ) {
toolbar = editor.wp._createToolbar( [
'wp_link_preview',
'wp_link_edit',
'wp_link_remove'
], true );
var editButtons = [
'wp_link_input',
'wp_link_apply'
];
if ( typeof window.wpLink !== 'undefined' ) {
editButtons.push( 'wp_link_advanced' );
}
editToolbar = editor.wp._createToolbar( editButtons, true );
editToolbar.on( 'show', function() {
if ( typeof window.wpLink === 'undefined' || ! window.wpLink.modalOpen ) {
window.setTimeout( function() {
var element = editToolbar.$el.find( 'input.ui-autocomplete-input' )[0],
selection = linkNode && ( linkNode.textContent || linkNode.innerText );
if ( element ) {
if ( ! element.value && selection && typeof window.wpLink !== 'undefined' ) {
element.value = window.wpLink.getUrlFromSelection( selection );
}
if ( ! doingUndoRedo ) {
element.focus();
element.select();
}
}
} );
}
} );
editToolbar.on( 'hide', function() {
if ( ! editToolbar.scrolling ) {
editor.execCommand( 'wp_link_cancel' );
}
} );
}
} );
editor.addCommand( 'WP_Link', function() {
if ( tinymce.Env.ie && tinymce.Env.ie < 10 && typeof window.wpLink !== 'undefined' ) {
window.wpLink.open( editor.id );
return;
}
linkNode = getSelectedLink();
editToolbar.tempHide = false;
if ( ! linkNode ) {
removePlaceholders();
editor.execCommand( 'mceInsertLink', false, { href: '_wp_link_placeholder' } );
linkNode = editor.$( 'a[href="_wp_link_placeholder"]' )[0];
editor.nodeChanged();
}
editor.dom.setAttribs( linkNode, { 'data-wplink-edit': true } );
} );
editor.addCommand( 'wp_link_apply', function() {
if ( editToolbar.scrolling ) {
return;
}
var href, text;
if ( linkNode ) {
href = inputInstance.getURL();
text = inputInstance.getLinkText();
editor.focus();
var parser = document.createElement( 'a' );
parser.href = href;
if ( 'javascript:' === parser.protocol || 'data:' === parser.protocol ) { // jshint ignore:line
href = '';
}
if ( ! href ) {
editor.dom.remove( linkNode, true );
return;
}
if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) && ! emailRegex.test( href ) ) {
href = 'http://' + href;
}
editor.dom.setAttribs( linkNode, { href: href, 'data-wplink-edit': null } );
if ( ! tinymce.trim( linkNode.innerHTML ) ) {
editor.$( linkNode ).text( text || href );
}
checkLink( linkNode );
}
inputInstance.reset();
editor.nodeChanged();
// Audible confirmation message when a link has been inserted in the Editor.
if ( typeof window.wpLinkL10n !== 'undefined' && ! hasLinkError ) {
speak( window.wpLinkL10n.linkInserted );
}
} );
editor.addCommand( 'wp_link_cancel', function() {
inputInstance.reset();
if ( ! editToolbar.tempHide ) {
removePlaceholders();
}
} );
editor.addCommand( 'wp_unlink', function() {
editor.execCommand( 'unlink' );
editToolbar.tempHide = false;
editor.execCommand( 'wp_link_cancel' );
} );
// WP default shortcuts.
editor.addShortcut( 'access+a', '', 'WP_Link' );
editor.addShortcut( 'access+s', '', 'wp_unlink' );
// The "de-facto standard" shortcut, see #27305.
editor.addShortcut( 'meta+k', '', 'WP_Link' );
editor.addButton( 'link', {
icon: 'link',
tooltip: 'Insert/edit link',
cmd: 'WP_Link',
stateSelector: 'a[href]'
});
editor.addButton( 'unlink', {
icon: 'unlink',
tooltip: 'Remove link',
cmd: 'unlink'
});
editor.addMenuItem( 'link', {
icon: 'link',
text: 'Insert/edit link',
cmd: 'WP_Link',
stateSelector: 'a[href]',
context: 'insert',
prependToContext: true
});
editor.on( 'pastepreprocess', function( event ) {
var pastedStr = event.content,
regExp = /^(?:https?:)?\/\/\S+$/i;
if ( ! editor.selection.isCollapsed() && ! regExp.test( editor.selection.getContent() ) ) {
pastedStr = pastedStr.replace( /<[^>]+>/g, '' );
pastedStr = tinymce.trim( pastedStr );
if ( regExp.test( pastedStr ) ) {
editor.execCommand( 'mceInsertLink', false, {
href: editor.dom.decode( pastedStr )
} );
event.preventDefault();
}
}
} );
// Remove any remaining placeholders on saving.
editor.on( 'savecontent', function( event ) {
event.content = removePlaceholderStrings( event.content, true );
});
// Prevent adding undo levels on inserting link placeholder.
editor.on( 'BeforeAddUndo', function( event ) {
if ( event.lastLevel && event.lastLevel.content && event.level.content &&
event.lastLevel.content === removePlaceholderStrings( event.level.content ) ) {
event.preventDefault();
}
});
// When doing undo and redo with keyboard shortcuts (Ctrl|Cmd+Z, Ctrl|Cmd+Shift+Z, Ctrl|Cmd+Y),
// set a flag to not focus the inline dialog. The editor has to remain focused so the users can do consecutive undo/redo.
editor.on( 'keydown', function( event ) {
if ( event.keyCode === 27 ) { // Esc
editor.execCommand( 'wp_link_cancel' );
}
if ( event.altKey || ( tinymce.Env.mac && ( ! event.metaKey || event.ctrlKey ) ) ||
( ! tinymce.Env.mac && ! event.ctrlKey ) ) {
return;
}
if ( event.keyCode === 89 || event.keyCode === 90 ) { // Y or Z
doingUndoRedo = true;
window.clearTimeout( doingUndoRedoTimer );
doingUndoRedoTimer = window.setTimeout( function() {
doingUndoRedo = false;
}, 500 );
}
} );
editor.addButton( 'wp_link_preview', {
type: 'WPLinkPreview',
onPostRender: function() {
previewInstance = this;
}
} );
editor.addButton( 'wp_link_input', {
type: 'WPLinkInput',
onPostRender: function() {
var element = this.getEl(),
input = element.firstChild.nextSibling,
$input, cache, last;
inputInstance = this;
if ( $ && $.ui && $.ui.autocomplete ) {
$input = $( input );
$input.on( 'keydown', function() {
$input.removeAttr( 'aria-activedescendant' );
} )
.autocomplete( {
source: function( request, response ) {
if ( last === request.term ) {
response( cache );
return;
}
if ( /^https?:/.test( request.term ) || request.term.indexOf( '.' ) !== -1 ) {
return response();
}
$.post( window.ajaxurl, {
action: 'wp-link-ajax',
page: 1,
search: request.term,
_ajax_linking_nonce: $( '#_ajax_linking_nonce' ).val()
}, function( data ) {
cache = data;
response( data );
}, 'json' );
last = request.term;
},
focus: function( event, ui ) {
$input.attr( 'aria-activedescendant', 'mce-wp-autocomplete-' + ui.item.ID );
/*
* Don't empty the URL input field, when using the arrow keys to
* highlight items. See api.jqueryui.com/autocomplete/#event-focus
*/
event.preventDefault();
},
select: function( event, ui ) {
$input.val( ui.item.permalink );
$( element.firstChild.nextSibling.nextSibling ).val( ui.item.title );
if ( 9 === event.keyCode && typeof window.wpLinkL10n !== 'undefined' ) {
// Audible confirmation message when a link has been selected.
speak( window.wpLinkL10n.linkSelected );
}
return false;
},
open: function() {
$input.attr( 'aria-expanded', 'true' );
editToolbar.blockHide = true;
},
close: function() {
$input.attr( 'aria-expanded', 'false' );
editToolbar.blockHide = false;
},
minLength: 2,
position: {
my: 'left top+2'
},
messages: {
noResults: __( 'No results found.' ) ,
results: function( number ) {
return sprintf(
/* translators: %d: Number of search results found. */
_n(
'%d result found. Use up and down arrow keys to navigate.',
'%d results found. Use up and down arrow keys to navigate.',
number
),
number
);
}
}
} ).autocomplete( 'instance' )._renderItem = function( ul, item ) {
var fallbackTitle = ( typeof window.wpLinkL10n !== 'undefined' ) ? window.wpLinkL10n.noTitle : '',
title = item.title ? item.title : fallbackTitle;
return $( '<li role="option" id="mce-wp-autocomplete-' + item.ID + '">' )
.append( '<span>' + title + '</span> <span class="wp-editor-float-right">' + item.info + '</span>' )
.appendTo( ul );
};
$input.attr( {
'role': 'combobox',
'aria-autocomplete': 'list',
'aria-expanded': 'false',
'aria-owns': $input.autocomplete( 'widget' ).attr( 'id' )
} )
.on( 'focus', function() {
var inputValue = $input.val();
/*
* Don't trigger a search if the URL field already has a link or is empty.
* Also, avoids screen readers announce `No search results`.
*/
if ( inputValue && ! /^https?:/.test( inputValue ) ) {
$input.autocomplete( 'search' );
}
} )
// Returns a jQuery object containing the menu element.
.autocomplete( 'widget' )
.addClass( 'wplink-autocomplete' )
.attr( 'role', 'listbox' )
.removeAttr( 'tabindex' ) // Remove the `tabindex=0` attribute added by jQuery UI.
/*
* Looks like Safari and VoiceOver need an `aria-selected` attribute. See ticket #33301.
* The `menufocus` and `menublur` events are the same events used to add and remove
* the `ui-state-focus` CSS class on the menu items. See jQuery UI Menu Widget.
*/
.on( 'menufocus', function( event, ui ) {
ui.item.attr( 'aria-selected', 'true' );
})
.on( 'menublur', function() {
/*
* The `menublur` event returns an object where the item is `null`
* so we need to find the active item with other means.
*/
$( this ).find( '[aria-selected="true"]' ).removeAttr( 'aria-selected' );
});
}
tinymce.$( input ).on( 'keydown', function( event ) {
if ( event.keyCode === 13 ) {
editor.execCommand( 'wp_link_apply' );
event.preventDefault();
}
} );
}
} );
editor.on( 'wptoolbar', function( event ) {
var linkNode = editor.dom.getParent( event.element, 'a' ),
$linkNode, href, edit;
if ( typeof window.wpLink !== 'undefined' && window.wpLink.modalOpen ) {
editToolbar.tempHide = true;
return;
}
editToolbar.tempHide = false;
if ( linkNode ) {
$linkNode = editor.$( linkNode );
href = $linkNode.attr( 'href' );
edit = $linkNode.attr( 'data-wplink-edit' );
if ( href === '_wp_link_placeholder' || edit ) {
if ( href !== '_wp_link_placeholder' && ! inputInstance.getURL() ) {
inputInstance.setURL( href );
}
event.element = linkNode;
event.toolbar = editToolbar;
} else if ( href && ! $linkNode.find( 'img' ).length ) {
previewInstance.setURL( href );
event.element = linkNode;
event.toolbar = toolbar;
if ( $linkNode.attr( 'data-wplink-url-error' ) === 'true' ) {
toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
} else {
toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' );
hasLinkError = false;
}
}
} else if ( editToolbar.visible() ) {
editor.execCommand( 'wp_link_cancel' );
}
} );
editor.addButton( 'wp_link_edit', {
tooltip: 'Edit|button', // '|button' is not displayed, only used for context.
icon: 'dashicon dashicons-edit',
cmd: 'WP_Link'
} );
editor.addButton( 'wp_link_remove', {
tooltip: 'Remove link',
icon: 'dashicon dashicons-editor-unlink',
cmd: 'wp_unlink'
} );
editor.addButton( 'wp_link_advanced', {
tooltip: 'Link options',
icon: 'dashicon dashicons-admin-generic',
onclick: function() {
if ( typeof window.wpLink !== 'undefined' ) {
var url = inputInstance.getURL() || null,
text = inputInstance.getLinkText() || null;
window.wpLink.open( editor.id, url, text );
editToolbar.tempHide = true;
editToolbar.hide();
}
}
} );
editor.addButton( 'wp_link_apply', {
tooltip: 'Apply',
icon: 'dashicon dashicons-editor-break',
cmd: 'wp_link_apply',
classes: 'widget btn primary'
} );
return {
close: function() {
editToolbar.tempHide = false;
editor.execCommand( 'wp_link_cancel' );
},
checkLink: checkLink
};
} );
} )( window.tinymce );
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/hr/plugin.js 0000644 00000001627 15071302410 0021604 0 ustar 00 (function () {
var hr = (function () {
'use strict';
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var register = function (editor) {
editor.addCommand('InsertHorizontalRule', function () {
editor.execCommand('mceInsertContent', false, '<hr />');
});
};
var Commands = { register: register };
var register$1 = function (editor) {
editor.addButton('hr', {
icon: 'hr',
tooltip: 'Horizontal line',
cmd: 'InsertHorizontalRule'
});
editor.addMenuItem('hr', {
icon: 'hr',
text: 'Horizontal line',
cmd: 'InsertHorizontalRule',
context: 'insert'
});
};
var Buttons = { register: register$1 };
global.add('hr', function (editor) {
Commands.register(editor);
Buttons.register(editor);
});
function Plugin () {
}
return Plugin;
}());
})();
home/karenpetzb/ovh_www/wp-includes/js/tinymce/plugins/media/plugin.js 0000644 00000120572 15071360024 0022260 0 ustar 00 (function () {
var media = (function () {
'use strict';
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
var getScripts = function (editor) {
return editor.getParam('media_scripts');
};
var getAudioTemplateCallback = function (editor) {
return editor.getParam('audio_template_callback');
};
var getVideoTemplateCallback = function (editor) {
return editor.getParam('video_template_callback');
};
var hasLiveEmbeds = function (editor) {
return editor.getParam('media_live_embeds', true);
};
var shouldFilterHtml = function (editor) {
return editor.getParam('media_filter_html', true);
};
var getUrlResolver = function (editor) {
return editor.getParam('media_url_resolver');
};
var hasAltSource = function (editor) {
return editor.getParam('media_alt_source', true);
};
var hasPoster = function (editor) {
return editor.getParam('media_poster', true);
};
var hasDimensions = function (editor) {
return editor.getParam('media_dimensions', true);
};
var Settings = {
getScripts: getScripts,
getAudioTemplateCallback: getAudioTemplateCallback,
getVideoTemplateCallback: getVideoTemplateCallback,
hasLiveEmbeds: hasLiveEmbeds,
shouldFilterHtml: shouldFilterHtml,
getUrlResolver: getUrlResolver,
hasAltSource: hasAltSource,
hasPoster: hasPoster,
hasDimensions: hasDimensions
};
var Cell = function (initial) {
var value = initial;
var get = function () {
return value;
};
var set = function (v) {
value = v;
};
var clone = function () {
return Cell(get());
};
return {
get: get,
set: set,
clone: clone
};
};
var noop = function () {
};
var constant = function (value) {
return function () {
return value;
};
};
var never = constant(false);
var always = constant(true);
var none = function () {
return NONE;
};
var NONE = function () {
var eq = function (o) {
return o.isNone();
};
var call = function (thunk) {
return thunk();
};
var id = function (n) {
return n;
};
var me = {
fold: function (n, s) {
return n();
},
is: never,
isSome: never,
isNone: always,
getOr: id,
getOrThunk: call,
getOrDie: function (msg) {
throw new Error(msg || 'error: getOrDie called on none.');
},
getOrNull: constant(null),
getOrUndefined: constant(undefined),
or: id,
orThunk: call,
map: none,
each: noop,
bind: none,
exists: never,
forall: always,
filter: none,
equals: eq,
equals_: eq,
toArray: function () {
return [];
},
toString: constant('none()')
};
if (Object.freeze) {
Object.freeze(me);
}
return me;
}();
var some = function (a) {
var constant_a = constant(a);
var self = function () {
return me;
};
var bind = function (f) {
return f(a);
};
var me = {
fold: function (n, s) {
return s(a);
},
is: function (v) {
return a === v;
},
isSome: always,
isNone: never,
getOr: constant_a,
getOrThunk: constant_a,
getOrDie: constant_a,
getOrNull: constant_a,
getOrUndefined: constant_a,
or: self,
orThunk: self,
map: function (f) {
return some(f(a));
},
each: function (f) {
f(a);
},
bind: bind,
exists: bind,
forall: bind,
filter: function (f) {
return f(a) ? me : NONE;
},
toArray: function () {
return [a];
},
toString: function () {
return 'some(' + a + ')';
},
equals: function (o) {
return o.is(a);
},
equals_: function (o, elementEq) {
return o.fold(never, function (b) {
return elementEq(a, b);
});
}
};
return me;
};
var from = function (value) {
return value === null || value === undefined ? NONE : some(value);
};
var Option = {
some: some,
none: none,
from: from
};
var hasOwnProperty = Object.hasOwnProperty;
var get = function (obj, key) {
return has(obj, key) ? Option.from(obj[key]) : Option.none();
};
var has = function (obj, key) {
return hasOwnProperty.call(obj, key);
};
var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
var global$4 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');
var getVideoScriptMatch = function (prefixes, src) {
if (prefixes) {
for (var i = 0; i < prefixes.length; i++) {
if (src.indexOf(prefixes[i].filter) !== -1) {
return prefixes[i];
}
}
}
};
var VideoScript = { getVideoScriptMatch: getVideoScriptMatch };
var DOM = global$3.DOM;
var trimPx = function (value) {
return value.replace(/px$/, '');
};
var getEphoxEmbedData = function (attrs) {
var style = attrs.map.style;
var styles = style ? DOM.parseStyle(style) : {};
return {
type: 'ephox-embed-iri',
source1: attrs.map['data-ephox-embed-iri'],
source2: '',
poster: '',
width: get(styles, 'max-width').map(trimPx).getOr(''),
height: get(styles, 'max-height').map(trimPx).getOr('')
};
};
var htmlToData = function (prefixes, html) {
var isEphoxEmbed = Cell(false);
var data = {};
global$4({
validate: false,
allow_conditional_comments: true,
special: 'script,noscript',
start: function (name, attrs) {
if (isEphoxEmbed.get()) ; else if (has(attrs.map, 'data-ephox-embed-iri')) {
isEphoxEmbed.set(true);
data = getEphoxEmbedData(attrs);
} else {
if (!data.source1 && name === 'param') {
data.source1 = attrs.map.movie;
}
if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {
if (!data.type) {
data.type = name;
}
data = global$2.extend(attrs.map, data);
}
if (name === 'script') {
var videoScript = VideoScript.getVideoScriptMatch(prefixes, attrs.map.src);
if (!videoScript) {
return;
}
data = {
type: 'script',
source1: attrs.map.src,
width: videoScript.width,
height: videoScript.height
};
}
if (name === 'source') {
if (!data.source1) {
data.source1 = attrs.map.src;
} else if (!data.source2) {
data.source2 = attrs.map.src;
}
}
if (name === 'img' && !data.poster) {
data.poster = attrs.map.src;
}
}
}
}).parse(html);
data.source1 = data.source1 || data.src || data.data;
data.source2 = data.source2 || '';
data.poster = data.poster || '';
return data;
};
var HtmlToData = { htmlToData: htmlToData };
var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');
var guess = function (url) {
var mimes = {
mp3: 'audio/mpeg',
wav: 'audio/wav',
mp4: 'video/mp4',
webm: 'video/webm',
ogg: 'video/ogg',
swf: 'application/x-shockwave-flash'
};
var fileEnd = url.toLowerCase().split('.').pop();
var mime = mimes[fileEnd];
return mime ? mime : '';
};
var Mime = { guess: guess };
var global$6 = tinymce.util.Tools.resolve('tinymce.html.Schema');
var global$7 = tinymce.util.Tools.resolve('tinymce.html.Writer');
var DOM$1 = global$3.DOM;
var addPx = function (value) {
return /^[0-9.]+$/.test(value) ? value + 'px' : value;
};
var setAttributes = function (attrs, updatedAttrs) {
for (var name in updatedAttrs) {
var value = '' + updatedAttrs[name];
if (attrs.map[name]) {
var i = attrs.length;
while (i--) {
var attr = attrs[i];
if (attr.name === name) {
if (value) {
attrs.map[name] = value;
attr.value = value;
} else {
delete attrs.map[name];
attrs.splice(i, 1);
}
}
}
} else if (value) {
attrs.push({
name: name,
value: value
});
attrs.map[name] = value;
}
}
};
var updateEphoxEmbed = function (data, attrs) {
var style = attrs.map.style;
var styleMap = style ? DOM$1.parseStyle(style) : {};
styleMap['max-width'] = addPx(data.width);
styleMap['max-height'] = addPx(data.height);
setAttributes(attrs, { style: DOM$1.serializeStyle(styleMap) });
};
var updateHtml = function (html, data, updateAll) {
var writer = global$7();
var isEphoxEmbed = Cell(false);
var sourceCount = 0;
var hasImage;
global$4({
validate: false,
allow_conditional_comments: true,
special: 'script,noscript',
comment: function (text) {
writer.comment(text);
},
cdata: function (text) {
writer.cdata(text);
},
text: function (text, raw) {
writer.text(text, raw);
},
start: function (name, attrs, empty) {
if (isEphoxEmbed.get()) ; else if (has(attrs.map, 'data-ephox-embed-iri')) {
isEphoxEmbed.set(true);
updateEphoxEmbed(data, attrs);
} else {
switch (name) {
case 'video':
case 'object':
case 'embed':
case 'img':
case 'iframe':
if (data.height !== undefined && data.width !== undefined) {
setAttributes(attrs, {
width: data.width,
height: data.height
});
}
break;
}
if (updateAll) {
switch (name) {
case 'video':
setAttributes(attrs, {
poster: data.poster,
src: ''
});
if (data.source2) {
setAttributes(attrs, { src: '' });
}
break;
case 'iframe':
setAttributes(attrs, { src: data.source1 });
break;
case 'source':
sourceCount++;
if (sourceCount <= 2) {
setAttributes(attrs, {
src: data['source' + sourceCount],
type: data['source' + sourceCount + 'mime']
});
if (!data['source' + sourceCount]) {
return;
}
}
break;
case 'img':
if (!data.poster) {
return;
}
hasImage = true;
break;
}
}
}
writer.start(name, attrs, empty);
},
end: function (name) {
if (!isEphoxEmbed.get()) {
if (name === 'video' && updateAll) {
for (var index = 1; index <= 2; index++) {
if (data['source' + index]) {
var attrs = [];
attrs.map = {};
if (sourceCount < index) {
setAttributes(attrs, {
src: data['source' + index],
type: data['source' + index + 'mime']
});
writer.start('source', attrs, true);
}
}
}
}
if (data.poster && name === 'object' && updateAll && !hasImage) {
var imgAttrs = [];
imgAttrs.map = {};
setAttributes(imgAttrs, {
src: data.poster,
width: data.width,
height: data.height
});
writer.start('img', imgAttrs, true);
}
}
writer.end(name);
}
}, global$6({})).parse(html);
return writer.getContent();
};
var UpdateHtml = { updateHtml: updateHtml };
var urlPatterns = [
{
regex: /youtu\.be\/([\w\-_\?&=.]+)/i,
type: 'iframe',
w: 560,
h: 314,
url: '//www.youtube.com/embed/$1',
allowFullscreen: true
},
{
regex: /youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,
type: 'iframe',
w: 560,
h: 314,
url: '//www.youtube.com/embed/$2?$4',
allowFullscreen: true
},
{
regex: /youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,
type: 'iframe',
w: 560,
h: 314,
url: '//www.youtube.com/embed/$1',
allowFullscreen: true
},
{
regex: /vimeo\.com\/([0-9]+)/,
type: 'iframe',
w: 425,
h: 350,
url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',
allowFullscreen: true
},
{
regex: /vimeo\.com\/(.*)\/([0-9]+)/,
type: 'iframe',
w: 425,
h: 350,
url: '//player.vimeo.com/video/$2?title=0&byline=0',
allowFullscreen: true
},
{
regex: /maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,
type: 'iframe',
w: 425,
h: 350,
url: '//maps.google.com/maps/ms?msid=$2&output=embed"',
allowFullscreen: false
},
{
regex: /dailymotion\.com\/video\/([^_]+)/,
type: 'iframe',
w: 480,
h: 270,
url: '//www.dailymotion.com/embed/video/$1',
allowFullscreen: true
},
{
regex: /dai\.ly\/([^_]+)/,
type: 'iframe',
w: 480,
h: 270,
url: '//www.dailymotion.com/embed/video/$1',
allowFullscreen: true
}
];
var getUrl = function (pattern, url) {
var match = pattern.regex.exec(url);
var newUrl = pattern.url;
var _loop_1 = function (i) {
newUrl = newUrl.replace('$' + i, function () {
return match[i] ? match[i] : '';
});
};
for (var i = 0; i < match.length; i++) {
_loop_1(i);
}
return newUrl.replace(/\?$/, '');
};
var matchPattern = function (url) {
var pattern = urlPatterns.filter(function (pattern) {
return pattern.regex.test(url);
});
if (pattern.length > 0) {
return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });
} else {
return null;
}
};
var getIframeHtml = function (data) {
var allowFullscreen = data.allowFullscreen ? ' allowFullscreen="1"' : '';
return '<iframe src="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '"' + allowFullscreen + '></iframe>';
};
var getFlashHtml = function (data) {
var html = '<object data="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '" type="application/x-shockwave-flash">';
if (data.poster) {
html += '<img src="' + data.poster + '" width="' + data.width + '" height="' + data.height + '" />';
}
html += '</object>';
return html;
};
var getAudioHtml = function (data, audioTemplateCallback) {
if (audioTemplateCallback) {
return audioTemplateCallback(data);
} else {
return '<audio controls="controls" src="' + data.source1 + '">' + (data.source2 ? '\n<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') + '</audio>';
}
};
var getVideoHtml = function (data, videoTemplateCallback) {
if (videoTemplateCallback) {
return videoTemplateCallback(data);
} else {
return '<video width="' + data.width + '" height="' + data.height + '"' + (data.poster ? ' poster="' + data.poster + '"' : '') + ' controls="controls">\n' + '<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' + (data.source2 ? '<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') + '</video>';
}
};
var getScriptHtml = function (data) {
return '<script src="' + data.source1 + '"></script>';
};
var dataToHtml = function (editor, dataIn) {
var data = global$2.extend({}, dataIn);
if (!data.source1) {
global$2.extend(data, HtmlToData.htmlToData(Settings.getScripts(editor), data.embed));
if (!data.source1) {
return '';
}
}
if (!data.source2) {
data.source2 = '';
}
if (!data.poster) {
data.poster = '';
}
data.source1 = editor.convertURL(data.source1, 'source');
data.source2 = editor.convertURL(data.source2, 'source');
data.source1mime = Mime.guess(data.source1);
data.source2mime = Mime.guess(data.source2);
data.poster = editor.convertURL(data.poster, 'poster');
var pattern = matchPattern(data.source1);
if (pattern) {
data.source1 = pattern.url;
data.type = pattern.type;
data.allowFullscreen = pattern.allowFullscreen;
data.width = data.width || pattern.w;
data.height = data.height || pattern.h;
}
if (data.embed) {
return UpdateHtml.updateHtml(data.embed, data, true);
} else {
var videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), data.source1);
if (videoScript) {
data.type = 'script';
data.width = videoScript.width;
data.height = videoScript.height;
}
var audioTemplateCallback = Settings.getAudioTemplateCallback(editor);
var videoTemplateCallback = Settings.getVideoTemplateCallback(editor);
data.width = data.width || 300;
data.height = data.height || 150;
global$2.each(data, function (value, key) {
data[key] = editor.dom.encode(value);
});
if (data.type === 'iframe') {
return getIframeHtml(data);
} else if (data.source1mime === 'application/x-shockwave-flash') {
return getFlashHtml(data);
} else if (data.source1mime.indexOf('audio') !== -1) {
return getAudioHtml(data, audioTemplateCallback);
} else if (data.type === 'script') {
return getScriptHtml(data);
} else {
return getVideoHtml(data, videoTemplateCallback);
}
}
};
var DataToHtml = { dataToHtml: dataToHtml };
var cache = {};
var embedPromise = function (data, dataToHtml, handler) {
return new global$5(function (res, rej) {
var wrappedResolve = function (response) {
if (response.html) {
cache[data.source1] = response;
}
return res({
url: data.source1,
html: response.html ? response.html : dataToHtml(data)
});
};
if (cache[data.source1]) {
wrappedResolve(cache[data.source1]);
} else {
handler({ url: data.source1 }, wrappedResolve, rej);
}
});
};
var defaultPromise = function (data, dataToHtml) {
return new global$5(function (res) {
res({
html: dataToHtml(data),
url: data.source1
});
});
};
var loadedData = function (editor) {
return function (data) {
return DataToHtml.dataToHtml(editor, data);
};
};
var getEmbedHtml = function (editor, data) {
var embedHandler = Settings.getUrlResolver(editor);
return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));
};
var isCached = function (url) {
return cache.hasOwnProperty(url);
};
var Service = {
getEmbedHtml: getEmbedHtml,
isCached: isCached
};
var trimPx$1 = function (value) {
return value.replace(/px$/, '');
};
var addPx$1 = function (value) {
return /^[0-9.]+$/.test(value) ? value + 'px' : value;
};
var getSize = function (name) {
return function (elm) {
return elm ? trimPx$1(elm.style[name]) : '';
};
};
var setSize = function (name) {
return function (elm, value) {
if (elm) {
elm.style[name] = addPx$1(value);
}
};
};
var Size = {
getMaxWidth: getSize('maxWidth'),
getMaxHeight: getSize('maxHeight'),
setMaxWidth: setSize('maxWidth'),
setMaxHeight: setSize('maxHeight')
};
var doSyncSize = function (widthCtrl, heightCtrl) {
widthCtrl.state.set('oldVal', widthCtrl.value());
heightCtrl.state.set('oldVal', heightCtrl.value());
};
var doSizeControls = function (win, f) {
var widthCtrl = win.find('#width')[0];
var heightCtrl = win.find('#height')[0];
var constrained = win.find('#constrain')[0];
if (widthCtrl && heightCtrl && constrained) {
f(widthCtrl, heightCtrl, constrained.checked());
}
};
var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {
var oldWidth = widthCtrl.state.get('oldVal');
var oldHeight = heightCtrl.state.get('oldVal');
var newWidth = widthCtrl.value();
var newHeight = heightCtrl.value();
if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {
if (newWidth !== oldWidth) {
newHeight = Math.round(newWidth / oldWidth * newHeight);
if (!isNaN(newHeight)) {
heightCtrl.value(newHeight);
}
} else {
newWidth = Math.round(newHeight / oldHeight * newWidth);
if (!isNaN(newWidth)) {
widthCtrl.value(newWidth);
}
}
}
doSyncSize(widthCtrl, heightCtrl);
};
var syncSize = function (win) {
doSizeControls(win, doSyncSize);
};
var updateSize = function (win) {
doSizeControls(win, doUpdateSize);
};
var createUi = function (onChange) {
var recalcSize = function () {
onChange(function (win) {
updateSize(win);
});
};
return {
type: 'container',
label: 'Dimensions',
layout: 'flex',
align: 'center',
spacing: 5,
items: [
{
name: 'width',
type: 'textbox',
maxLength: 5,
size: 5,
onchange: recalcSize,
ariaLabel: 'Width'
},
{
type: 'label',
text: 'x'
},
{
name: 'height',
type: 'textbox',
maxLength: 5,
size: 5,
onchange: recalcSize,
ariaLabel: 'Height'
},
{
name: 'constrain',
type: 'checkbox',
checked: true,
text: 'Constrain proportions'
}
]
};
};
var SizeManager = {
createUi: createUi,
syncSize: syncSize,
updateSize: updateSize
};
var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';
var handleError = function (editor) {
return function (error) {
var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';
editor.notificationManager.open({
type: 'error',
text: errorMessage
});
};
};
var getData = function (editor) {
var element = editor.selection.getNode();
var dataEmbed = element.getAttribute('data-ephox-embed-iri');
if (dataEmbed) {
return {
'source1': dataEmbed,
'data-ephox-embed-iri': dataEmbed,
'width': Size.getMaxWidth(element),
'height': Size.getMaxHeight(element)
};
}
return element.getAttribute('data-mce-object') ? HtmlToData.htmlToData(Settings.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};
};
var getSource = function (editor) {
var elm = editor.selection.getNode();
if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {
return editor.selection.getContent();
}
};
var addEmbedHtml = function (win, editor) {
return function (response) {
var html = response.html;
var embed = win.find('#embed')[0];
var data = global$2.extend(HtmlToData.htmlToData(Settings.getScripts(editor), html), { source1: response.url });
win.fromJSON(data);
if (embed) {
embed.value(html);
SizeManager.updateSize(win);
}
};
};
var selectPlaceholder = function (editor, beforeObjects) {
var i;
var y;
var afterObjects = editor.dom.select('img[data-mce-object]');
for (i = 0; i < beforeObjects.length; i++) {
for (y = afterObjects.length - 1; y >= 0; y--) {
if (beforeObjects[i] === afterObjects[y]) {
afterObjects.splice(y, 1);
}
}
}
editor.selection.select(afterObjects[0]);
};
var handleInsert = function (editor, html) {
var beforeObjects = editor.dom.select('img[data-mce-object]');
editor.insertContent(html);
selectPlaceholder(editor, beforeObjects);
editor.nodeChanged();
};
var submitForm = function (win, editor) {
var data = win.toJSON();
data.embed = UpdateHtml.updateHtml(data.embed, data);
if (data.embed && Service.isCached(data.source1)) {
handleInsert(editor, data.embed);
} else {
Service.getEmbedHtml(editor, data).then(function (response) {
handleInsert(editor, response.html);
}).catch(handleError(editor));
}
};
var populateMeta = function (win, meta) {
global$2.each(meta, function (value, key) {
win.find('#' + key).value(value);
});
};
var showDialog = function (editor) {
var win;
var data;
var generalFormItems = [{
name: 'source1',
type: 'filepicker',
filetype: 'media',
size: 40,
autofocus: true,
label: 'Source',
onpaste: function () {
setTimeout(function () {
Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));
}, 1);
},
onchange: function (e) {
Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));
populateMeta(win, e.meta);
},
onbeforecall: function (e) {
e.meta = win.toJSON();
}
}];
var advancedFormItems = [];
var reserialise = function (update) {
update(win);
data = win.toJSON();
win.find('#embed').value(UpdateHtml.updateHtml(data.embed, data));
};
if (Settings.hasAltSource(editor)) {
advancedFormItems.push({
name: 'source2',
type: 'filepicker',
filetype: 'media',
size: 40,
label: 'Alternative source'
});
}
if (Settings.hasPoster(editor)) {
advancedFormItems.push({
name: 'poster',
type: 'filepicker',
filetype: 'image',
size: 40,
label: 'Poster'
});
}
if (Settings.hasDimensions(editor)) {
var control = SizeManager.createUi(reserialise);
generalFormItems.push(control);
}
data = getData(editor);
var embedTextBox = {
id: 'mcemediasource',
type: 'textbox',
flex: 1,
name: 'embed',
value: getSource(editor),
multiline: true,
rows: 5,
label: 'Source'
};
var updateValueOnChange = function () {
data = global$2.extend({}, HtmlToData.htmlToData(Settings.getScripts(editor), this.value()));
this.parent().parent().fromJSON(data);
};
embedTextBox[embedChange] = updateValueOnChange;
var body = [
{
title: 'General',
type: 'form',
items: generalFormItems
},
{
title: 'Embed',
type: 'container',
layout: 'flex',
direction: 'column',
align: 'stretch',
padding: 10,
spacing: 10,
items: [
{
type: 'label',
text: 'Paste your embed code below:',
forId: 'mcemediasource'
},
embedTextBox
]
}
];
if (advancedFormItems.length > 0) {
body.push({
title: 'Advanced',
type: 'form',
items: advancedFormItems
});
}
win = editor.windowManager.open({
title: 'Insert/edit media',
data: data,
bodyType: 'tabpanel',
body: body,
onSubmit: function () {
SizeManager.updateSize(win);
submitForm(win, editor);
}
});
SizeManager.syncSize(win);
};
var Dialog = { showDialog: showDialog };
var get$1 = function (editor) {
var showDialog = function () {
Dialog.showDialog(editor);
};
return { showDialog: showDialog };
};
var Api = { get: get$1 };
var register = function (editor) {
var showDialog = function () {
Dialog.showDialog(editor);
};
editor.addCommand('mceMedia', showDialog);
};
var Commands = { register: register };
var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');
var sanitize = function (editor, html) {
if (Settings.shouldFilterHtml(editor) === false) {
return html;
}
var writer = global$7();
var blocked;
global$4({
validate: false,
allow_conditional_comments: false,
special: 'script,noscript',
comment: function (text) {
writer.comment(text);
},
cdata: function (text) {
writer.cdata(text);
},
text: function (text, raw) {
writer.text(text, raw);
},
start: function (name, attrs, empty) {
blocked = true;
if (name === 'script' || name === 'noscript' || name === 'svg') {
return;
}
for (var i = attrs.length - 1; i >= 0; i--) {
var attrName = attrs[i].name;
if (attrName.indexOf('on') === 0) {
delete attrs.map[attrName];
attrs.splice(i, 1);
}
if (attrName === 'style') {
attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);
}
}
writer.start(name, attrs, empty);
blocked = false;
},
end: function (name) {
if (blocked) {
return;
}
writer.end(name);
}
}, global$6({})).parse(html);
return writer.getContent();
};
var Sanitize = { sanitize: sanitize };
var createPlaceholderNode = function (editor, node) {
var placeHolder;
var name = node.name;
placeHolder = new global$8('img', 1);
placeHolder.shortEnded = true;
retainAttributesAndInnerHtml(editor, node, placeHolder);
placeHolder.attr({
'width': node.attr('width') || '300',
'height': node.attr('height') || (name === 'audio' ? '30' : '150'),
'style': node.attr('style'),
'src': global$1.transparentSrc,
'data-mce-object': name,
'class': 'mce-object mce-object-' + name
});
return placeHolder;
};
var createPreviewIframeNode = function (editor, node) {
var previewWrapper;
var previewNode;
var shimNode;
var name = node.name;
previewWrapper = new global$8('span', 1);
previewWrapper.attr({
'contentEditable': 'false',
'style': node.attr('style'),
'data-mce-object': name,
'class': 'mce-preview-object mce-object-' + name
});
retainAttributesAndInnerHtml(editor, node, previewWrapper);
previewNode = new global$8(name, 1);
previewNode.attr({
src: node.attr('src'),
allowfullscreen: node.attr('allowfullscreen'),
style: node.attr('style'),
class: node.attr('class'),
width: node.attr('width'),
height: node.attr('height'),
frameborder: '0'
});
shimNode = new global$8('span', 1);
shimNode.attr('class', 'mce-shim');
previewWrapper.append(previewNode);
previewWrapper.append(shimNode);
return previewWrapper;
};
var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {
var attrName;
var attrValue;
var attribs;
var ai;
var innerHtml;
attribs = sourceNode.attributes;
ai = attribs.length;
while (ai--) {
attrName = attribs[ai].name;
attrValue = attribs[ai].value;
if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {
if (attrName === 'data' || attrName === 'src') {
attrValue = editor.convertURL(attrValue, attrName);
}
targetNode.attr('data-mce-p-' + attrName, attrValue);
}
}
innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;
if (innerHtml) {
targetNode.attr('data-mce-html', escape(Sanitize.sanitize(editor, innerHtml)));
targetNode.firstChild = null;
}
};
var isWithinEphoxEmbed = function (node) {
while (node = node.parent) {
if (node.attr('data-ephox-embed-iri')) {
return true;
}
}
return false;
};
var placeHolderConverter = function (editor) {
return function (nodes) {
var i = nodes.length;
var node;
var videoScript;
while (i--) {
node = nodes[i];
if (!node.parent) {
continue;
}
if (node.parent.attr('data-mce-object')) {
continue;
}
if (node.name === 'script') {
videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), node.attr('src'));
if (!videoScript) {
continue;
}
}
if (videoScript) {
if (videoScript.width) {
node.attr('width', videoScript.width.toString());
}
if (videoScript.height) {
node.attr('height', videoScript.height.toString());
}
}
if (node.name === 'iframe' && Settings.hasLiveEmbeds(editor) && global$1.ceFalse) {
if (!isWithinEphoxEmbed(node)) {
node.replace(createPreviewIframeNode(editor, node));
}
} else {
if (!isWithinEphoxEmbed(node)) {
node.replace(createPlaceholderNode(editor, node));
}
}
}
};
};
var Nodes = {
createPreviewIframeNode: createPreviewIframeNode,
createPlaceholderNode: createPlaceholderNode,
placeHolderConverter: placeHolderConverter
};
var setup = function (editor) {
editor.on('preInit', function () {
var specialElements = editor.schema.getSpecialElements();
global$2.each('video audio iframe object'.split(' '), function (name) {
specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');
});
var boolAttrs = editor.schema.getBoolAttrs();
global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {
boolAttrs[name] = {};
});
editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', Nodes.placeHolderConverter(editor));
editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {
var i = nodes.length;
var node;
var realElm;
var ai;
var attribs;
var innerHtml;
var innerNode;
var realElmName;
var className;
while (i--) {
node = nodes[i];
if (!node.parent) {
continue;
}
realElmName = node.attr(name);
realElm = new global$8(realElmName, 1);
if (realElmName !== 'audio' && realElmName !== 'script') {
className = node.attr('class');
if (className && className.indexOf('mce-preview-object') !== -1) {
realElm.attr({
width: node.firstChild.attr('width'),
height: node.firstChild.attr('height')
});
} else {
realElm.attr({
width: node.attr('width'),
height: node.attr('height')
});
}
}
realElm.attr({ style: node.attr('style') });
attribs = node.attributes;
ai = attribs.length;
while (ai--) {
var attrName = attribs[ai].name;
if (attrName.indexOf('data-mce-p-') === 0) {
realElm.attr(attrName.substr(11), attribs[ai].value);
}
}
if (realElmName === 'script') {
realElm.attr('type', 'text/javascript');
}
innerHtml = node.attr('data-mce-html');
if (innerHtml) {
innerNode = new global$8('#text', 3);
innerNode.raw = true;
innerNode.value = Sanitize.sanitize(editor, unescape(innerHtml));
realElm.append(innerNode);
}
node.replace(realElm);
}
});
});
editor.on('setContent', function () {
editor.$('span.mce-preview-object').each(function (index, elm) {
var $elm = editor.$(elm);
if ($elm.find('span.mce-shim', elm).length === 0) {
$elm.append('<span class="mce-shim"></span>');
}
});
});
};
var FilterContent = { setup: setup };
var setup$1 = function (editor) {
editor.on('ResolveName', function (e) {
var name;
if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {
e.name = name;
}
});
};
var ResolveName = { setup: setup$1 };
var setup$2 = function (editor) {
editor.on('click keyup', function () {
var selectedNode = editor.selection.getNode();
if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {
if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {
selectedNode.setAttribute('data-mce-selected', '2');
}
}
});
editor.on('ObjectSelected', function (e) {
var objectType = e.target.getAttribute('data-mce-object');
if (objectType === 'audio' || objectType === 'script') {
e.preventDefault();
}
});
editor.on('objectResized', function (e) {
var target = e.target;
var html;
if (target.getAttribute('data-mce-object')) {
html = target.getAttribute('data-mce-html');
if (html) {
html = unescape(html);
target.setAttribute('data-mce-html', escape(UpdateHtml.updateHtml(html, {
width: e.width,
height: e.height
})));
}
}
});
};
var Selection = { setup: setup$2 };
var register$1 = function (editor) {
editor.addButton('media', {
tooltip: 'Insert/edit media',
cmd: 'mceMedia',
stateSelector: [
'img[data-mce-object]',
'span[data-mce-object]',
'div[data-ephox-embed-iri]'
]
});
editor.addMenuItem('media', {
icon: 'media',
text: 'Media',
cmd: 'mceMedia',
context: 'insert',
prependToContext: true
});
};
var Buttons = { register: register$1 };
global.add('media', function (editor) {
Commands.register(editor);
Buttons.register(editor);
ResolveName.setup(editor);
FilterContent.setup(editor);
Selection.setup(editor);
return Api.get(editor);
});
function Plugin () {
}
return Plugin;
}());
})();