: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
this.fire('change', args);
return name in this.data;
return Binding.create(this, name);
var dirtyCtrls = {}, animationFrameRequested;
var parent = ctrl.parent();
if (!parent._layout || parent._layout.isNative()) {
if (!dirtyCtrls[parent._id]) {
dirtyCtrls[parent._id] = parent;
if (!animationFrameRequested) {
animationFrameRequested = true;
global$7.requestAnimationFrame(function () {
animationFrameRequested = false;
if (ctrl.state.get('rendered')) {
}, domGlobals.document.body);
remove: function (ctrl) {
if (dirtyCtrls[ctrl._id]) {
delete dirtyCtrls[ctrl._id];
var hasMouseWheelEventSupport = 'onmousewheel' in domGlobals.document;
var hasWheelEventSupport = false;
var classPrefix = 'mce-';
var Control, idCounter = 0;
Statics: { classPrefix: classPrefix },
classPrefix: classPrefix,
init: function (settings) {
var classes, defaultClasses;
function applyClasses(classes) {
classes = classes.split(' ');
for (i = 0; i < classes.length; i++) {
self.classes.add(classes[i]);
self.settings = settings = global$2.extend({}, self.Defaults, settings);
self._id = settings.id || 'mceu_' + idCounter++;
self._aria = { role: settings.role };
self.state = new ObservableObject({
self.data = new ObservableObject(settings.data);
self.classes = new ClassList(function () {
if (self.state.get('rendered')) {
self.getEl().className = this.toString();
self.classes.prefix = self.classPrefix;
classes = settings.classes;
defaultClasses = self.Defaults.classes;
if (defaultClasses && classes !== defaultClasses) {
applyClasses(defaultClasses);
global$2.each('title text name visible disabled active value'.split(' '), function (name) {
self[name](settings[name]);
self.on('click', function () {
self.settings = settings;
self.borderBox = BoxUtils.parseBox(settings.border);
self.paddingBox = BoxUtils.parseBox(settings.padding);
self.marginBox = BoxUtils.parseBox(settings.margin);
Properties: 'parent,name',
getContainerElm: function () {
var uiContainer = UiContainer.getUiContainer(this);
return uiContainer ? uiContainer : funcs.getContainer();
getParentCtrl: function (elm) {
var lookup = this.getRoot().controlIdLookup;
initLayoutRect: function () {
var settings = self.settings;
var borderBox, layoutRect;
var width, height, minWidth, minHeight, autoResize;
var startMinWidth, startMinHeight, initialSize;
borderBox = self.borderBox = self.borderBox || BoxUtils.measureBox(elm, 'border');
self.paddingBox = self.paddingBox || BoxUtils.measureBox(elm, 'padding');
self.marginBox = self.marginBox || BoxUtils.measureBox(elm, 'margin');
initialSize = funcs.getSize(elm);
startMinWidth = settings.minWidth;
startMinHeight = settings.minHeight;
minWidth = startMinWidth || initialSize.width;
minHeight = startMinHeight || initialSize.height;
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._layoutRect = layoutRect = {
contentW: width - deltaW,
contentH: height - deltaH,
startMinWidth: startMinWidth || 0,
startMinHeight: startMinHeight || 0,
minW: Math.min(minWidth, maxW),
minH: Math.min(minHeight, maxH),
self._lastLayoutRect = {};
layoutRect: function (newRect) {
var curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
curRect = self.initLayoutRect();
deltaWidth = curRect.deltaW;
deltaHeight = curRect.deltaH;
if (newRect.x !== undefined) {
if (newRect.y !== undefined) {
if (newRect.minW !== undefined) {
curRect.minW = newRect.minW;
if (newRect.minH !== undefined) {
curRect.minH = newRect.minH;
if (size !== undefined) {
size = size < curRect.minW ? curRect.minW : size;
size = size > curRect.maxW ? curRect.maxW : size;
curRect.innerW = size - deltaWidth;
if (size !== undefined) {
size = size < curRect.minH ? curRect.minH : size;
size = size > curRect.maxH ? curRect.maxH : size;
curRect.innerH = size - deltaHeight;
if (size !== undefined) {
size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
curRect.w = size + deltaWidth;
if (size !== undefined) {
size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
curRect.h = size + deltaHeight;
if (newRect.contentW !== undefined) {
curRect.contentW = newRect.contentW;
if (newRect.contentH !== undefined) {
curRect.contentH = newRect.contentH;
lastLayoutRect = self._lastLayoutRect;
if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
repaintControls = Control.repaintControls;
if (repaintControls.map && !repaintControls.map[self._id]) {
repaintControls.push(self);
repaintControls.map[self._id] = true;
lastLayoutRect.x = curRect.x;
lastLayoutRect.y = curRect.y;
lastLayoutRect.w = curRect.w;
lastLayoutRect.h = curRect.h;
var style, bodyStyle, bodyElm, rect, borderBox;
var borderW, borderH, lastRepaintRect, round, value;
round = !domGlobals.document.createRange ? Math.round : function (value) {
style = self.getEl().style;
lastRepaintRect = self._lastRepaintRect || {};
borderBox = self.borderBox;
borderW = borderBox.left + borderBox.right;
borderH = borderBox.top + borderBox.bottom;
if (rect.x !== lastRepaintRect.x) {
style.left = round(rect.x) + 'px';
lastRepaintRect.x = rect.x;
if (rect.y !== lastRepaintRect.y) {
style.top = round(rect.y) + 'px';
lastRepaintRect.y = rect.y;
if (rect.w !== lastRepaintRect.w) {
value = round(rect.w - borderW);
style.width = (value >= 0 ? value : 0) + 'px';
lastRepaintRect.w = rect.w;
if (rect.h !== lastRepaintRect.h) {
value = round(rect.h - borderH);
style.height = (value >= 0 ? value : 0) + 'px';
lastRepaintRect.h = rect.h;
if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {
value = round(rect.innerW);
bodyElm = self.getEl('body');
bodyStyle = bodyElm.style;
bodyStyle.width = (value >= 0 ? value : 0) + 'px';
lastRepaintRect.innerW = rect.innerW;
if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {
value = round(rect.innerH);
bodyElm = bodyElm || self.getEl('body');
bodyStyle = bodyStyle || bodyElm.style;
bodyStyle.height = (value >= 0 ? value : 0) + 'px';
lastRepaintRect.innerH = rect.innerH;
self._lastRepaintRect = lastRepaintRect;
self.fire('repaint', {}, false);
updateLayoutRect: function () {
self.parent()._lastRect = null;
funcs.css(self.getEl(), {
self._layoutRect = self._lastRepaintRect = self._lastLayoutRect = null;
on: function (name, callback) {
function resolveCallbackName(name) {
if (typeof name !== 'string') {
self.parentsAndSelf().each(function (ctrl) {
var callbacks = ctrl.settings.callbacks;
if (callbacks && (callback = callbacks[name])) {
return callback.call(scope, e);
getEventDispatcher(self).on(name, resolveCallbackName(callback));
off: function (name, callback) {
getEventDispatcher(this).off(name, callback);
fire: function (name, args, bubble) {
args = getEventDispatcher(self).fire(name, args);
if (bubble !== false && self.parent) {
var parent = self.parent();
while (parent && !args.isPropagationStopped()) {
parent.fire(name, args, false);
parent = parent.parent();
hasEventListeners: function (name) {
return getEventDispatcher(this).has(name);
parents: function (selector) {
var ctrl, parents = new Collection$2();
for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
parents = parents.filter(selector);
parentsAndSelf: function (selector) {
return new Collection$2(this).add(this.parents(selector));
var parentControls = this.parent().items();
return parentControls[parentControls.indexOf(this) + 1];
var parentControls = this.parent().items();
return parentControls[parentControls.indexOf(this) - 1];
innerHtml: function (html) {
getEl: function (suffix) {
var id = suffix ? this._id + '-' + suffix : this._id;
if (!this._elmCache[id]) {
this._elmCache[id] = global$9('#' + id)[0];
return this._elmCache[id];
return this.visible(true);
return this.visible(false);
aria: function (name, value) {
var self = this, elm = self.getEl(self.ariaTarget);
if (typeof value === 'undefined') {
self._aria[name] = value;
if (self.state.get('rendered')) {
elm.setAttribute(name === 'role' ? name : 'aria-' + name, value);
encode: function (text, translate) {
if (translate !== false) {
text = this.translate(text);
return (text || '').replace(/[&<>"]/g, function (match) {
return '&#' + match.charCodeAt(0) + ';';
translate: function (text) {
return Control.translate ? Control.translate(text) : text;
before: function (items) {
var self = this, parent = self.parent();
parent.insert(items, parent.items().indexOf(self), true);
after: function (items) {
var self = this, parent = self.parent();
parent.insert(items, parent.items().indexOf(self));
var parent = self.parent();
var controls = self.items().toArray();
if (parent && parent.items) {
parent.items().each(function (item) {
parent.items().set(newItems);
if (self._eventsRoot && self._eventsRoot === self) {
var lookup = self.getRoot().controlIdLookup;
if (elm && elm.parentNode) {
elm.parentNode.removeChild(elm);
self.state.set('rendered', false);
renderBefore: function (elm) {
global$9(elm).before(this.renderHtml());
renderTo: function (elm) {
global$9(elm || this.getContainerElm()).append(this.renderHtml());