UNPKG

yy-form-making

Version:
1,763 lines (1,695 loc) 318 kB
(function () { var inlite = (function () { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.ThemeManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay'); var flatten = function (arr) { return arr.reduce(function (results, item) { return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item); }, []); }; var $_g0v1s917zjnlpb9f4 = { flatten: flatten }; var result = function (id, rect) { return { id: id, rect: rect }; }; var match = function (editor, matchers) { for (var i = 0; i < matchers.length; i++) { var f = matchers[i]; var result_1 = f(editor); if (result_1) { return result_1; } } return null; }; var $_800pcq181jnlpb9f7 = { match: match, result: result }; var fromClientRect = function (clientRect) { return { x: clientRect.left, y: clientRect.top, w: clientRect.width, h: clientRect.height }; }; var toClientRect = function (geomRect) { return { left: geomRect.x, top: geomRect.y, width: geomRect.w, height: geomRect.h, right: geomRect.x + geomRect.w, bottom: geomRect.y + geomRect.h }; }; var $_ek0w81183jnlpb9f9 = { fromClientRect: fromClientRect, toClientRect: toClientRect }; var toAbsolute = function (rect) { var vp = global$2.DOM.getViewPort(); return { x: rect.x + vp.x, y: rect.y + vp.y, w: rect.w, h: rect.h }; }; var measureElement = function (elm) { var clientRect = elm.getBoundingClientRect(); return toAbsolute({ x: clientRect.left, y: clientRect.top, w: Math.max(elm.clientWidth, elm.offsetWidth), h: Math.max(elm.clientHeight, elm.offsetHeight) }); }; var getElementRect = function (editor, elm) { return measureElement(elm); }; var getPageAreaRect = function (editor) { return measureElement(editor.getElement().ownerDocument.body); }; var getContentAreaRect = function (editor) { return measureElement(editor.getContentAreaContainer() || editor.getBody()); }; var getSelectionRect = function (editor) { var clientRect = editor.selection.getBoundingClientRect(); return clientRect ? toAbsolute($_ek0w81183jnlpb9f9.fromClientRect(clientRect)) : null; }; var $_f9q9d182jnlpb9f8 = { getElementRect: getElementRect, getPageAreaRect: getPageAreaRect, getContentAreaRect: getContentAreaRect, getSelectionRect: getSelectionRect }; var element = function (element, predicateIds) { return function (editor) { for (var i = 0; i < predicateIds.length; i++) { if (predicateIds[i].predicate(element)) { var result = $_800pcq181jnlpb9f7.result(predicateIds[i].id, $_f9q9d182jnlpb9f8.getElementRect(editor, element)); return result; } } return null; }; }; var parent = function (elements, predicateIds) { return function (editor) { for (var i = 0; i < elements.length; i++) { for (var x = 0; x < predicateIds.length; x++) { if (predicateIds[x].predicate(elements[i])) { return $_800pcq181jnlpb9f7.result(predicateIds[x].id, $_f9q9d182jnlpb9f8.getElementRect(editor, elements[i])); } } } return null; }; }; var $_2yam1d180jnlpb9f5 = { element: element, parent: parent }; var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var create = function (id, predicate) { return { id: id, predicate: predicate }; }; var fromContextToolbars = function (toolbars) { return global$4.map(toolbars, function (toolbar) { return create(toolbar.id, toolbar.predicate); }); }; var $_47e772184jnlpb9fb = { create: create, fromContextToolbars: fromContextToolbars }; var textSelection = function (id) { return function (editor) { if (!editor.selection.isCollapsed()) { var result = $_800pcq181jnlpb9f7.result(id, $_f9q9d182jnlpb9f8.getSelectionRect(editor)); return result; } return null; }; }; var emptyTextBlock = function (elements, id) { return function (editor) { var i; var textBlockElementsMap = editor.schema.getTextBlockElements(); for (i = 0; i < elements.length; i++) { if (elements[i].nodeName === 'TABLE') { return null; } } for (i = 0; i < elements.length; i++) { if (elements[i].nodeName in textBlockElementsMap) { if (editor.dom.isEmpty(elements[i])) { return $_800pcq181jnlpb9f7.result(id, $_f9q9d182jnlpb9f8.getSelectionRect(editor)); } return null; } } return null; }; }; var $_bcakpn186jnlpb9fc = { textSelection: textSelection, emptyTextBlock: emptyTextBlock }; var fireSkinLoaded = function (editor) { editor.fire('SkinLoaded'); }; var fireBeforeRenderUI = function (editor) { return editor.fire('BeforeRenderUI'); }; var $_3u73qy188jnlpb9ff = { fireSkinLoaded: fireSkinLoaded, fireBeforeRenderUI: fireBeforeRenderUI }; var global$5 = tinymce.util.Tools.resolve('tinymce.EditorManager'); var isType = function (type) { return function (value) { return typeof value === type; }; }; var isArray = function (value) { return Array.isArray(value); }; var isNull = function (value) { return value === null; }; var isObject = function (predicate) { return function (value) { return !isNull(value) && !isArray(value) && predicate(value); }; }; var isString = function (value) { return isType('string')(value); }; var isNumber = function (value) { return isType('number')(value); }; var isFunction = function (value) { return isType('function')(value); }; var isBoolean = function (value) { return isType('boolean')(value); }; var $_iftpu18cjnlpb9fl = { isString: isString, isNumber: isNumber, isBoolean: isBoolean, isFunction: isFunction, isObject: isObject(isType('object')), isNull: isNull, isArray: isArray }; var validDefaultOrDie = function (value, predicate) { if (predicate(value)) { return true; } throw new Error('Default value doesn\'t match requested type.'); }; var getByTypeOr = function (predicate) { return function (editor, name, defaultValue) { var settings = editor.settings; validDefaultOrDie(defaultValue, predicate); return name in settings && predicate(settings[name]) ? settings[name] : defaultValue; }; }; var splitNoEmpty = function (str, delim) { return str.split(delim).filter(function (item) { return item.length > 0; }); }; var itemsToArray = function (value, defaultValue) { var stringToItemsArray = function (value) { return typeof value === 'string' ? splitNoEmpty(value, /[ ,]/) : value; }; var boolToItemsArray = function (value, defaultValue) { return value === false ? [] : defaultValue; }; if ($_iftpu18cjnlpb9fl.isArray(value)) { return value; } else if ($_iftpu18cjnlpb9fl.isString(value)) { return stringToItemsArray(value); } else if ($_iftpu18cjnlpb9fl.isBoolean(value)) { return boolToItemsArray(value, defaultValue); } return defaultValue; }; var getToolbarItemsOr = function (predicate) { return function (editor, name, defaultValue) { var value = name in editor.settings ? editor.settings[name] : defaultValue; validDefaultOrDie(defaultValue, predicate); return itemsToArray(value, defaultValue); }; }; var $_eds8zp18bjnlpb9fj = { getStringOr: getByTypeOr($_iftpu18cjnlpb9fl.isString), getBoolOr: getByTypeOr($_iftpu18cjnlpb9fl.isBoolean), getNumberOr: getByTypeOr($_iftpu18cjnlpb9fl.isNumber), getHandlerOr: getByTypeOr($_iftpu18cjnlpb9fl.isFunction), getToolbarItemsOr: getToolbarItemsOr($_iftpu18cjnlpb9fl.isArray) }; var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect'); var result$1 = function (rect, position) { return { rect: rect, position: position }; }; var moveTo = function (rect, toRect) { return { x: toRect.x, y: toRect.y, w: rect.w, h: rect.h }; }; var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) { var relPos, relRect, outputPanelRect; var paddedContentRect = { x: contentAreaRect.x, y: contentAreaRect.y, w: contentAreaRect.w + (contentAreaRect.w < panelRect.w + targetRect.w ? panelRect.w : 0), h: contentAreaRect.h + (contentAreaRect.h < panelRect.h + targetRect.h ? panelRect.h : 0) }; relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions1); targetRect = global$6.clamp(targetRect, paddedContentRect); if (relPos) { relRect = global$6.relativePosition(panelRect, targetRect, relPos); outputPanelRect = moveTo(panelRect, relRect); return result$1(outputPanelRect, relPos); } targetRect = global$6.intersect(paddedContentRect, targetRect); if (targetRect) { relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions2); if (relPos) { relRect = global$6.relativePosition(panelRect, targetRect, relPos); outputPanelRect = moveTo(panelRect, relRect); return result$1(outputPanelRect, relPos); } outputPanelRect = moveTo(panelRect, targetRect); return result$1(outputPanelRect, relPos); } return null; }; var calcInsert = function (targetRect, contentAreaRect, panelRect) { return calcByPositions([ 'cr-cl', 'cl-cr' ], [ 'bc-tc', 'bl-tl', 'br-tr' ], targetRect, contentAreaRect, panelRect); }; var calc = function (targetRect, contentAreaRect, panelRect) { return calcByPositions([ 'tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr', 'cr-cl', 'cl-cr' ], [ 'bc-tc', 'bl-tl', 'br-tr', 'cr-cl' ], targetRect, contentAreaRect, panelRect); }; var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) { var userConstrainedPanelRect; if (typeof handler === 'function') { userConstrainedPanelRect = handler({ elementRect: $_ek0w81183jnlpb9f9.toClientRect(targetRect), contentAreaRect: $_ek0w81183jnlpb9f9.toClientRect(contentAreaRect), panelRect: $_ek0w81183jnlpb9f9.toClientRect(panelRect) }); return $_ek0w81183jnlpb9f9.fromClientRect(userConstrainedPanelRect); } return panelRect; }; var defaultHandler = function (rects) { return rects.panelRect; }; var $_2uy0ji18djnlpb9fm = { calcInsert: calcInsert, calc: calc, userConstrain: userConstrain, defaultHandler: defaultHandler }; var toAbsoluteUrl = function (editor, url) { return editor.documentBaseURI.toAbsolute(url); }; var urlFromName = function (name) { var prefix = global$5.baseURL + '/skins/'; return name ? prefix + name : prefix + 'lightgray'; }; var getTextSelectionToolbarItems = function (editor) { return $_eds8zp18bjnlpb9fj.getToolbarItemsOr(editor, 'selection_toolbar', [ 'bold', 'italic', '|', 'quicklink', 'h2', 'h3', 'blockquote' ]); }; var getInsertToolbarItems = function (editor) { return $_eds8zp18bjnlpb9fj.getToolbarItemsOr(editor, 'insert_toolbar', [ 'quickimage', 'quicktable' ]); }; var getPositionHandler = function (editor) { return $_eds8zp18bjnlpb9fj.getHandlerOr(editor, 'inline_toolbar_position_handler', $_2uy0ji18djnlpb9fm.defaultHandler); }; var getSkinUrl = function (editor) { var settings = editor.settings; return settings.skin_url ? toAbsoluteUrl(editor, settings.skin_url) : urlFromName(settings.skin); }; var isSkinDisabled = function (editor) { return editor.settings.skin === false; }; var $_944bid189jnlpb9fh = { getTextSelectionToolbarItems: getTextSelectionToolbarItems, getInsertToolbarItems: getInsertToolbarItems, getPositionHandler: getPositionHandler, getSkinUrl: getSkinUrl, isSkinDisabled: isSkinDisabled }; var fireSkinLoaded$1 = function (editor, callback) { var done = function () { editor._skinLoaded = true; $_3u73qy188jnlpb9ff.fireSkinLoaded(editor); callback(); }; if (editor.initialized) { done(); } else { editor.on('init', done); } }; var load = function (editor, callback) { var skinUrl = $_944bid189jnlpb9fh.getSkinUrl(editor); var done = function () { fireSkinLoaded$1(editor, callback); }; if ($_944bid189jnlpb9fh.isSkinDisabled(editor)) { done(); } else { global$2.DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done); editor.contentCSS.push(skinUrl + '/content.inline.min.css'); } }; var $_8ss1rb187jnlpb9fe = { load: load }; var getSelectionElements = function (editor) { var node = editor.selection.getNode(); var elms = editor.dom.getParents(node, '*'); return elms; }; var createToolbar = function (editor, selector, id, items) { var selectorPredicate = function (elm) { return editor.dom.is(elm, selector); }; return { predicate: selectorPredicate, id: id, items: items }; }; var getToolbars = function (editor) { var contextToolbars = editor.contextToolbars; return $_g0v1s917zjnlpb9f4.flatten([ contextToolbars ? contextToolbars : [], createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright') ]); }; var findMatchResult = function (editor, toolbars) { var result, elements, contextToolbarsPredicateIds; elements = getSelectionElements(editor); contextToolbarsPredicateIds = $_47e772184jnlpb9fb.fromContextToolbars(toolbars); result = $_800pcq181jnlpb9f7.match(editor, [ $_2yam1d180jnlpb9f5.element(elements[0], contextToolbarsPredicateIds), $_bcakpn186jnlpb9fc.textSelection('text'), $_bcakpn186jnlpb9fc.emptyTextBlock(elements, 'insert'), $_2yam1d180jnlpb9f5.parent(elements, contextToolbarsPredicateIds) ]); return result && result.rect ? result : null; }; var editorHasFocus = function (editor) { return document.activeElement === editor.getBody(); }; var togglePanel = function (editor, panel) { var toggle = function () { var toolbars = getToolbars(editor); var result = findMatchResult(editor, toolbars); if (result) { panel.show(editor, result.id, result.rect, toolbars); } else { panel.hide(); } }; return function () { if (!editor.removed && editorHasFocus(editor)) { toggle(); } }; }; var repositionPanel = function (editor, panel) { return function () { var toolbars = getToolbars(editor); var result = findMatchResult(editor, toolbars); if (result) { panel.reposition(editor, result.id, result.rect); } }; }; var ignoreWhenFormIsVisible = function (editor, panel, f) { return function () { if (!editor.removed && !panel.inForm()) { f(); } }; }; var bindContextualToolbarsEvents = function (editor, panel) { var throttledTogglePanel = global$3.throttle(togglePanel(editor, panel), 0); var throttledTogglePanelWhenNotInForm = global$3.throttle(ignoreWhenFormIsVisible(editor, panel, togglePanel(editor, panel)), 0); var reposition = repositionPanel(editor, panel); editor.on('blur hide ObjectResizeStart', panel.hide); editor.on('click', throttledTogglePanel); editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm); editor.on('ResizeEditor keyup', throttledTogglePanel); editor.on('ResizeWindow', reposition); global$2.DOM.bind(global$1.container, 'scroll', reposition); editor.on('remove', function () { global$2.DOM.unbind(global$1.container, 'scroll', reposition); panel.remove(); }); editor.shortcuts.add('Alt+F10,F10', '', panel.focus); }; var overrideLinkShortcut = function (editor, panel) { editor.shortcuts.remove('meta+k'); editor.shortcuts.add('meta+k', '', function () { var toolbars = getToolbars(editor); var result = $_800pcq181jnlpb9f7.match(editor, [$_bcakpn186jnlpb9fc.textSelection('quicklink')]); if (result) { panel.show(editor, result.id, result.rect, toolbars); } }); }; var renderInlineUI = function (editor, panel) { $_8ss1rb187jnlpb9fe.load(editor, function () { bindContextualToolbarsEvents(editor, panel); overrideLinkShortcut(editor, panel); }); return {}; }; var fail = function (message) { throw new Error(message); }; var renderUI = function (editor, panel) { return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.'); }; var $_3wech617vjnlpb9ez = { renderUI: renderUI }; var noop = function () { var x = []; for (var _i = 0; _i < arguments.length; _i++) { x[_i] = arguments[_i]; } }; var compose = function (fa, fb) { return function () { var x = []; for (var _i = 0; _i < arguments.length; _i++) { x[_i] = arguments[_i]; } return fa(fb.apply(null, arguments)); }; }; var constant = function (value) { return function () { return value; }; }; var curry = function (f) { var x = []; for (var _i = 1; _i < arguments.length; _i++) { x[_i - 1] = arguments[_i]; } var args = new Array(arguments.length - 1); for (var i = 1; i < arguments.length; i++) args[i - 1] = arguments[i]; return function () { var x = []; for (var _i = 0; _i < arguments.length; _i++) { x[_i] = arguments[_i]; } var newArgs = new Array(arguments.length); for (var j = 0; j < newArgs.length; j++) newArgs[j] = arguments[j]; var all = args.concat(newArgs); return f.apply(null, all); }; }; var never = constant(false); var always = constant(true); var never$1 = never; var always$1 = always; var none = function () { return NONE; }; var NONE = function () { var eq = function (o) { return o.isNone(); }; var call$$1 = function (thunk) { return thunk(); }; var id = function (n) { return n; }; var noop$$1 = function () { }; var nul = function () { return null; }; var undef = function () { return undefined; }; var me = { fold: function (n, s) { return n(); }, is: never$1, isSome: never$1, isNone: always$1, getOr: id, getOrThunk: call$$1, getOrDie: function (msg) { throw new Error(msg || 'error: getOrDie called on none.'); }, getOrNull: nul, getOrUndefined: undef, or: id, orThunk: call$$1, map: none, ap: none, each: noop$$1, bind: none, flatten: none, exists: never$1, forall: always$1, 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 = function () { return a; }; var self = function () { return me; }; var map = function (f) { return some(f(a)); }; var bind = function (f) { return f(a); }; var me = { fold: function (n, s) { return s(a); }, is: function (v) { return a === v; }, isSome: always$1, isNone: never$1, getOr: constant_a, getOrThunk: constant_a, getOrDie: constant_a, getOrNull: constant_a, getOrUndefined: constant_a, or: self, orThunk: self, map: map, ap: function (optfab) { return optfab.fold(none, function (fab) { return some(fab(a)); }); }, each: function (f) { f(a); }, bind: bind, flatten: constant_a, exists: bind, forall: bind, filter: function (f) { return f(a) ? me : NONE; }, equals: function (o) { return o.is(a); }, equals_: function (o, elementEq) { return o.fold(never$1, function (b) { return elementEq(a, b); }); }, toArray: function () { return [a]; }, toString: function () { return 'some(' + a + ')'; } }; 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)) return 'array'; if (t === 'object' && String.prototype.isPrototypeOf(x)) return 'string'; return t; }; var isType$1 = function (type) { return function (value) { return typeOf(value) === type; }; }; var isFunction$1 = isType$1('function'); var isNumber$1 = isType$1('number'); var rawIndexOf = function () { var pIndexOf = Array.prototype.indexOf; var fastIndex = function (xs, x) { return pIndexOf.call(xs, x); }; var slowIndex = function (xs, x) { return slowIndexOf(xs, x); }; return pIndexOf === undefined ? slowIndex : fastIndex; }(); var indexOf = function (xs, x) { var r = rawIndexOf(xs, x); return r === -1 ? Option.none() : Option.some(r); }; var exists = function (xs, pred) { return findIndex(xs, pred).isSome(); }; 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, xs); } return r; }; var each = function (xs, f) { for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; f(x, i, xs); } }; 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, xs)) { r.push(x); } } 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, xs)) { return Option.some(x); } } return Option.none(); }; var findIndex = function (xs, pred) { for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; if (pred(x, i, xs)) { return Option.some(i); } } return Option.none(); }; var slowIndexOf = function (xs, x) { for (var i = 0, len = xs.length; i < len; ++i) { if (xs[i] === x) { return i; } } return -1; }; var push = Array.prototype.push; var flatten$1 = function (xs) { var r = []; for (var i = 0, len = xs.length; i < len; ++i) { if (!Array.prototype.isPrototypeOf(xs[i])) throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); push.apply(r, xs[i]); } return r; }; var slice = Array.prototype.slice; var reverse = function (xs) { var r = slice.call(xs, 0); r.reverse(); return r; }; var from$1 = isFunction$1(Array.from) ? Array.from : function (x) { return slice.call(x); }; var count = 0; var funcs = { id: function () { return 'mceu_' + count++; }, create: function (name$$1, attrs, children) { var elm = document.createElement(name$$1); global$2.DOM.setAttribs(elm, attrs); if (typeof children === 'string') { elm.innerHTML = children; } else { global$4.each(children, function (child) { if (child.nodeType) { elm.appendChild(child); } }); } return elm; }, createFragment: function (html) { return global$2.DOM.createFragment(html); }, getWindowSize: function () { return global$2.DOM.getViewPort(); }, getSize: function (elm) { var width, height; if (elm.getBoundingClientRect) { var rect = elm.getBoundingClientRect(); width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth); height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight); } else { width = elm.offsetWidth; height = elm.offsetHeight; } return { width: width, height: height }; }, getPos: function (elm, root) { return global$2.DOM.getPos(elm, root || funcs.getContainer()); }, getContainer: function () { return global$1.container ? global$1.container : document.body; }, getViewPort: function (win) { return global$2.DOM.getViewPort(win); }, get: function (id) { return document.getElementById(id); }, addClass: function (elm, cls) { return global$2.DOM.addClass(elm, cls); }, removeClass: function (elm, cls) { return global$2.DOM.removeClass(elm, cls); }, hasClass: function (elm, cls) { return global$2.DOM.hasClass(elm, cls); }, toggleClass: function (elm, cls, state) { return global$2.DOM.toggleClass(elm, cls, state); }, css: function (elm, name$$1, value) { return global$2.DOM.setStyle(elm, name$$1, value); }, getRuntimeStyle: function (elm, name$$1) { return global$2.DOM.getStyle(elm, name$$1, true); }, on: function (target, name$$1, callback, scope) { return global$2.DOM.bind(target, name$$1, callback, scope); }, off: function (target, name$$1, callback) { return global$2.DOM.unbind(target, name$$1, callback); }, fire: function (target, name$$1, args) { return global$2.DOM.fire(target, name$$1, args); }, innerHtml: function (elm, html) { global$2.DOM.setHTML(elm, html); } }; var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery'); var global$8 = tinymce.util.Tools.resolve('tinymce.util.Class'); var global$9 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher'); var $_f2efut18rjnlpb9nb = { parseBox: function (value) { var len; var radix = 10; if (!value) { return; } if (typeof value === 'number') { value = value || 0; return { top: value, left: value, bottom: value, right: value }; } value = value.split(' '); len = value.length; if (len === 1) { value[1] = value[2] = value[3] = value[0]; } else if (len === 2) { value[2] = value[0]; value[3] = value[1]; } else if (len === 3) { value[3] = value[1]; } return { top: parseInt(value[0], radix) || 0, right: parseInt(value[1], radix) || 0, bottom: parseInt(value[2], radix) || 0, left: parseInt(value[3], radix) || 0 }; }, measureBox: function (elm, prefix) { function getStyle(name) { var defaultView = elm.ownerDocument.defaultView; if (defaultView) { var computedStyle = defaultView.getComputedStyle(elm, null); if (computedStyle) { name = name.replace(/[A-Z]/g, function (a) { return '-' + a; }); return computedStyle.getPropertyValue(name); } else { return null; } } return elm.currentStyle[name]; } function getSide(name) { var val = parseFloat(getStyle(name)); return isNaN(val) ? 0 : val; } return { top: getSide(prefix + 'TopWidth'), right: getSide(prefix + 'RightWidth'), bottom: getSide(prefix + 'BottomWidth'), left: getSide(prefix + 'LeftWidth') }; } }; function noop$1() { } function ClassList(onchange) { this.cls = []; this.cls._map = {}; this.onchange = onchange || noop$1; this.prefix = ''; } global$4.extend(ClassList.prototype, { add: function (cls) { if (cls && !this.contains(cls)) { this.cls._map[cls] = true; this.cls.push(cls); this._change(); } return this; }, remove: function (cls) { if (this.contains(cls)) { var i = void 0; for (i = 0; i < this.cls.length; i++) { if (this.cls[i] === cls) { break; } } this.cls.splice(i, 1); delete this.cls._map[cls]; this._change(); } return this; }, toggle: function (cls, state) { var curState = this.contains(cls); if (curState !== state) { if (curState) { this.remove(cls); } else { this.add(cls); } this._change(); } return this; }, contains: function (cls) { return !!this.cls._map[cls]; }, _change: function () { delete this.clsValue; this.onchange.call(this); } }); ClassList.prototype.toString = function () { var value; if (this.clsValue) { return this.clsValue; } value = ''; for (var i = 0; i < this.cls.length; i++) { if (i > 0) { value += ' '; } value += this.prefix + this.cls[i]; } return value; }; function unique(array) { var uniqueItems = []; var i = array.length, item; while (i--) { item = array[i]; if (!item.__checked) { uniqueItems.push(item); item.__checked = 1; } } i = uniqueItems.length; while (i--) { delete uniqueItems[i].__checked; } return uniqueItems; } var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i; var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g; var whiteSpace = /^\s*|\s*$/g; var Collection; var Selector = global$8.extend({ init: function (selector) { var match = this.match; function compileNameFilter(name) { if (name) { name = name.toLowerCase(); return function (item) { return name === '*' || item.type === name; }; } } function compileIdFilter(id) { if (id) { return function (item) { return item._name === id; }; } } function compileClassesFilter(classes) { if (classes) { classes = classes.split('.'); return function (item) { var i = classes.length; while (i--) { if (!item.classes.contains(classes[i])) { return false; } } return true; }; } } function compileAttrFilter(name, cmp, check) { if (name) { return function (item) { var value = item[name] ? item[name]() : ''; return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false; }; } } function compilePsuedoFilter(name) { var notSelectors; if (name) { name = /(?:not\((.+)\))|(.+)/i.exec(name); if (!name[1]) { name = name[2]; return function (item, index, length) { return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false; }; } notSelectors = parseChunks(name[1], []); return function (item) { return !match(item, notSelectors); }; } } function compile(selector, filters, direct) { var parts; function add(filter) { if (filter) { filters.push(filter); } } parts = expression.exec(selector.replace(whiteSpace, '')); add(compileNameFilter(parts[1])); add(compileIdFilter(parts[2])); add(compileClassesFilter(parts[3])); add(compileAttrFilter(parts[4], parts[5], parts[6])); add(compilePsuedoFilter(parts[7])); filters.pseudo = !!parts[7]; filters.direct = direct; return filters; } function parseChunks(selector, selectors) { var parts = []; var extra, matches, i; do { chunker.exec(''); matches = chunker.exec(selector); if (matches) { selector = matches[3]; parts.push(matches[1]); if (matches[2]) { extra = matches[3]; break; } } } while (matches); if (extra) { parseChunks(extra, selectors); } selector = []; for (i = 0; i < parts.length; i++) { if (parts[i] !== '>') { selector.push(compile(parts[i], [], parts[i - 1] === '>')); } } selectors.push(selector); return selectors; } this._selectors = parseChunks(selector, []); }, match: function (control, selectors) { var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item; selectors = selectors || this._selectors; for (i = 0, l = selectors.length; i < l; i++) { selector = selectors[i]; sl = selector.length; item = control; count = 0; for (si = sl - 1; si >= 0; si--) { filters = selector[si]; while (item) { if (filters.pseudo) { siblings = item.parent().items(); index = length = siblings.length; while (index--) { if (siblings[index] === item) { break; } } } for (fi = 0, fl = filters.length; fi < fl; fi++) { if (!filters[fi](item, index, length)) { fi = fl + 1; break; } } if (fi === fl) { count++; break; } else { if (si === sl - 1) { break; } } item = item.parent(); } } if (count === sl) { return true; } } return false; }, find: function (container) { var matches = [], i, l; var selectors = this._selectors; function collect(items, selector, index) { var i, l, fi, fl, item; var filters = selector[index]; for (i = 0, l = items.length; i < l; i++) { item = items[i]; for (fi = 0, fl = filters.length; fi < fl; fi++) { if (!filters[fi](item, i, l)) { fi = fl + 1; break; } } if (fi === fl) { if (index === selector.length - 1) { matches.push(item); } else { if (item.items) { collect(item.items(), selector, index + 1); } } } else if (filters.direct) { return; } if (item.items) { collect(item.items(), selector, index); } } } if (container.items) { for (i = 0, l = selectors.length; i < l; i++) { collect(container.items(), selectors[i], 0); } if (l > 1) { matches = unique(matches); } } if (!Collection) { Collection = Selector.Collection; } return new Collection(matches); } }); var Collection$1; var proto; var push$1 = Array.prototype.push; var slice$1 = Array.prototype.slice; proto = { length: 0, init: function (items) { if (items) { this.add(items); } }, add: function (items) { var self = this; if (!global$4.isArray(items)) { if (items instanceof Collection$1) { self.add(items.toArray()); } else { push$1.call(self, items); } } else { push$1.apply(self, items); } return self; }, set: function (items) { var self = this; var len = self.length; var i; self.length = 0; self.add(items); for (i = self.length; i < len; i++) { delete self[i]; } return self; }, filter: function (selector) { var self = this; var i, l; var matches = []; var item, match; if (typeof selector === 'string') { selector = new Selector(selector); match = function (item) { return selector.match(item); }; } else { match = selector; } for (i = 0, l = self.length; i < l; i++) { item = self[i]; if (match(item)) { matches.push(item); } } return new Collection$1(matches); }, slice: function () { return new Collection$1(slice$1.apply(this, arguments)); }, eq: function (index) { return index === -1 ? this.slice(index) : this.slice(index, +index + 1); }, each: function (callback) { global$4.each(this, callback); return this; }, toArray: function () { return global$4.toArray(this); }, indexOf: function (ctrl) { var self = this; var i = self.length; while (i--) { if (self[i] === ctrl) { break; } } return i; }, reverse: function () { return new Collection$1(global$4.toArray(this).reverse()); }, hasClass: function (cls) { return this[0] ? this[0].classes.contains(cls) : false; }, prop: function (name, value) { var self = this; var item; if (value !== undefined) { self.each(function (item) { if (item[name]) { item[name](value); } }); return self; } item = self[0]; if (item && item[name]) { return item[name](); } }, exec: function (name) { var self = this, args = global$4.toArray(arguments).slice(1); self.each(function (item) { if (item[name]) { item[name].apply(item, args); } }); return self; }, remove: function () { var i = this.length; while (i--) { this[i].remove(); } return this; }, addClass: function (cls) { return this.each(function (item) { item.classes.add(cls); }); }, removeClass: function (cls) { return this.each(function (item) { item.classes.remove(cls); }); } }; global$4.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) { proto[name] = function () { var args = global$4.toArray(arguments); this.each(function (ctrl) { if (name in ctrl) { ctrl[name].apply(ctrl, args); } }); return this; }; }); global$4.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) { proto[name] = function (value) { return this.prop(name, value); }; }); Collection$1 = global$8.extend(proto); Selector.Collection = Collection$1; var Collection$2 = Collection$1; var Binding = function (settings) { this.create = settings.create; }; Binding.create = function (model, name) { return new Binding({ create: function (otherModel, otherName) { var bindings; var fromSelfToOther = function (e) { otherModel.set(otherName, e.value); }; var fromOtherToSelf = function (e) { model.set(name, e.value); }; otherModel.on('change:' + otherName, fromOtherToSelf); model.on('change:' + name, fromSelfToOther); bindings = otherModel._bindings; if (!bindings) { bindings = otherModel._bindings = []; otherModel.on('destroy', function () { var i = bindings.length; while (i--) { bindings[i](); } }); } bindings.push(function () { model.off('change:' + name, fromSelfToOther); }); return model.get(name); } }); }; var global$10 = tinymce.util.Tools.resolve('tinymce.util.Observable'); function isNode(node) { return node.nodeType > 0; } function isEqual(a, b) { var k, checked; if (a === b) { return true; } if (a === null || b === null) { return a === b; } if (typeof a !== 'object' || typeof b !== 'object') { return a === b; } if (global$4.isArray(b)) { if (a.length !== b.length) { return false; } k = a.length; while (k--) { if (!isEqual(a[k], b[k])) { return false; } } } if (isNode(a) || isNode(b)) { return a === b; } checked = {}; for (k in b) { if (!isEqual(a[k], b[k])) { return false; } checked[k] = true; } for (k in a) { if (!checked[k] && !isEqual(a[k], b[k])) { return false; } } return true; } var ObservableObject = global$8.extend({ Mixins: [global$10], init: function (data) { var name, value; data = data || {}; for (name in data) { value = data[name]; if (value instanceof Binding) { data[name] = value.create(this, name); } } this.data = data; }, set: function (name, value) { var key, args; var oldValue = this.data[name]; if (value instanceof Binding) { value = value.create(this, name); } if (typeof name === 'object') { for (key in name) { this.set(key, name[key]); } return this; } if (!isEqual(oldValue, value)) { this.data[name] = value; args = { target: this, name: name, value: value, oldValue: oldValue }; this.fire('change:' + name, args); this.fire('change', args); } return this; }, get: function (name) { return this.data[name]; }, has: function (name) { return name in this.data; }, bind: function (name) { return Binding.create(this, name); }, destroy: function () { this.fire('destroy'); } }); var dirtyCtrls = {}; var animationFrameRequested; var $_oxj0818yjnlpb9nw = { add: function (ctrl) { var parent$$1 = ctrl.parent(); if (parent$$1) { if (!parent$$1._layout || parent$$1._layout.isNative()) { return; } if (!dirtyCtrls[parent$$1._id]) { dirtyCtrls[parent$$1._id] = parent$$1; } if (!animationFrameRequested) { animationFrameRequested = true; global$3.requestAnimationFrame(function () { var id, ctrl; animationFrameRequested = false; for (id in dirtyCtrls) { ctrl = dirtyCtrls[id]; if (ctrl.state.get('rendered')) { ctrl.reflow(); } } dirtyCtrls = {}; }, document.body); } } }, remove: function (ctrl) { if (dirtyCtrls[ctrl._id]) { delete dirtyCtrls[ctrl._id]; } } }; var getUiContainerDelta = function (ctrl) { var uiContainer = getUiContainer(ctrl); if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') { var containerPos = global$2.DOM.getPos(uiContainer); var dx = uiContainer.scrollLeft - containerPos.x; var dy = uiContainer.scrollTop - containerPos.y; return Option.some({ x: dx, y: dy }); } else { return Option.none(); } }; var setUiContainer = function (editor, ctrl) { var uiContainer = global$2.DOM.select(editor.settings.ui_container)[0]; ctrl.getRoot().uiContainer = uiContainer; }; var getUiContainer = function (ctrl) { return ctrl ? ctrl.getRoot().uiContainer : null; }; var inheritUiContainer = function (fromCtrl, toCtrl) { return toCtrl.uiContainer = getUiContainer(fromCtrl); }; var $_5zalyo18zjnlpb9ny = { getUiContainerDelta: getUiContainerDelta, setUiContainer: setUiContainer, getUiContainer: getUiContainer, inheritUiContainer: inheritUiContainer }; var hasMouseWheelEventSupport = 'onmousewheel' in document; var hasWheelEventSupport = false; var classPrefix = 'mce-'; var Control; var idCounter = 0; var proto$1 = { Statics: { classPrefix: classPrefix }, isRtl: function () { return Control.rtl; }, classPrefix: classPrefix, init: function (settings) { var self$$1 = this; var classes, defaultClasses; function applyClasses(classes) { var i; classes = classes.split(' '); for (i = 0; i < classes.length; i++) { self$$1.classes.add(classes[i]); } } self$$1.settings = settings = global$4.extend({}, self$$1.Defaults, settings); self$$1._id = settings.id || 'mceu_' + idCounter++; self$$1._aria = { role: settings.role }; self$$1._elmCache = {}; self$$1.$ = global$7; self$$1.state = new ObservableObject({ visible: true, active: false, disabled: false, value: '' }); self$$1.data = new ObservableObject(settings.data); self$$1.classes = new ClassList(function () { if (self$$1.state.get('rendered')) { self$$1.getEl().className = this.toString(); } }); self$$1.classes.prefix = self$$1.classPrefix; classes = settings.classes; if (classes) { if (self$$1.Defaults) { defaultClasses = self$$1.Defaults.classes; if (defaultClasses && classes !== defaultClasses) { applyClasses(defaultClasses); } } applyClasses(classes); } global$4.each('title text name visible disabled active value'.split(' '), function (name$$1) { if (name$$1 in settings) { self$$1[name$$1](settings[name$$1]); } }); self$$1.on('click', function () { if (self$$1.disabled()) { return false; } }); self$$1.settings = settings; self$$1.borderBox = $_f2efut18rjnlpb9nb.parseBox(settings.border); self$$1.paddingBox = $_f2efut18rjnlpb9nb.parseBox(settings.padding); self$$1.marginBox = $_f2efut18rjnlpb9nb.parseBox(settings.margin); if (settings.hidden) { self$$1.hide(); } }, Properties: 'parent,name', getContainerElm: function () { var uiContainer = $_5zalyo18zjnlpb9ny.getUiContainer(this); return uiContainer ? uiContainer : funcs.getContainer(); }, getParentCtrl: function (elm) { var ctrl; var lookup = this.getRoot().controlIdLookup; while (elm && lookup) { ctrl = lookup[elm.id]; if (ctrl) { break; } elm = elm.parentNode; } return ctrl; }, initLayoutRect: function () { var self$$1 = this; var settings = self$$1.settings; var borderBox, layoutRect; var elm = self$$1.getEl(); var width, height, minWidth, minHeight, autoResize; var startMinWidth, startMinHeight, initialSize; borderBox = self$$1.borderBox = self$$1.borderBox || $_f2efut18rjnlpb9nb.measureBox(elm, 'border'); self$$1.paddingBox = self$$1.paddingBox || $_f2efut18rjnlpb9nb.measureBox(elm, 'padding'); self$$1.marginBox = self$$1.marginBox || $_f2efut18rjnlpb9nb.measureBox(elm, 'margin'); initialSize = funcs.getSize(elm); startMinWidth = settings.minWidth; startMinHeight = settings.minHeight; minWidth = startMinWidth || initialSize.width; minHeight = startMinHeight || initialSize.height; width = settings.width; height = settings.height; autoResize = settings.autoResize; autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height; width = width || minWidth; height = height || minHeight; var deltaW = borderBox.left + borderBox.right; var deltaH = borderBox.top + borderBox.bottom; var maxW = settings.maxWidth || 65535; var maxH = settings.maxHeight || 65535; self$$1._layoutRect = layoutRect = { x: settings.x || 0, y: settings.y || 0, w: width, h: height, deltaW: deltaW, deltaH: deltaH, contentW: width - deltaW, contentH: height - deltaH, innerW: width - deltaW, innerH: height - deltaH, startMinWidth: startMinWidth || 0, startMinHeight: startMinHeight || 0, minW: Math.min(minWidth, maxW), minH: Math.min(minHeight, maxH), maxW: maxW, maxH: maxH, autoResize