: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
function bindDocumentScrollHandler() {
if (!documentScrollHandler) {
documentScrollHandler = function () {
i = visiblePanels.length;
repositionPanel(visiblePanels[i]);
global$9(domGlobals.window).on('scroll', documentScrollHandler);
function bindWindowResizeHandler() {
if (!windowResizeHandler) {
var docElm_1 = domGlobals.document.documentElement;
var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
windowResizeHandler = function () {
if (!domGlobals.document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
clientWidth_1 = docElm_1.clientWidth;
clientHeight_1 = docElm_1.clientHeight;
global$9(domGlobals.window).on('resize', windowResizeHandler);
function repositionPanel(panel) {
var scrollY = funcs.getViewPort().y;
function toggleFixedChildPanels(fixed, deltaY) {
for (var i = 0; i < visiblePanels.length; i++) {
if (visiblePanels[i] !== panel) {
parent = visiblePanels[i].parent();
while (parent && (parent = parent.parent())) {
visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
if (panel.settings.autofix) {
if (!panel.state.get('fixed')) {
panel._autoFixY = panel.layoutRect().y;
if (panel._autoFixY < scrollY) {
panel.fixed(true).layoutRect({ y: 0 }).repaint();
toggleFixedChildPanels(true, scrollY - panel._autoFixY);
if (panel._autoFixY > scrollY) {
panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
toggleFixedChildPanels(false, panel._autoFixY - scrollY);
function addRemove(add, ctrl) {
var i, zIndex = FloatPanel.zIndex || 65535, topModal;
if (zOrder[i] === ctrl) {
for (i = 0; i < zOrder.length; i++) {
zOrder[i].getEl().style.zIndex = zIndex;
zOrder[i].zIndex = zIndex;
var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];
global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);
} else if (modalBlockEl) {
modalBlockEl.parentNode.removeChild(modalBlockEl);
FloatPanel.currentZIndex = zIndex;
var FloatPanel = Panel.extend({
init: function (settings) {
self.classes.add('floatpanel');
bindDocumentClickHandler();
bindWindowResizeHandler();
visiblePanels.push(self);
bindDocumentScrollHandler();
self.on('move', function () {
self.on('postrender show', function (e) {
if (e.control === self) {
var prefix_1 = self.classPrefix;
if (self.modal && !hasModal) {
$modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self.getContainerElm());
if (!$modalBlockEl_1[0]) {
$modalBlockEl_1 = global$9('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self.getContainerElm());
global$7.setTimeout(function () {
$modalBlockEl_1.addClass(prefix_1 + 'in');
global$9(self.getEl()).addClass(prefix_1 + 'in');
self.on('show', function () {
self.parents().each(function (ctrl) {
if (ctrl.state.get('fixed')) {
self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
self.classes.add('popover').add('bottom').add(self.isRtl() ? 'end' : 'start');
self.aria('label', settings.ariaLabel);
self.aria('labelledby', self._id);
self.aria('describedby', self.describedBy || self._id + '-none');
fixed: function (state) {
if (self.state.get('fixed') !== state) {
if (self.state.get('rendered')) {
var viewport = funcs.getViewPort();
self.layoutRect().y -= viewport.y;
self.layoutRect().y += viewport.y;
self.classes.toggle('fixed', state);
self.state.set('fixed', state);
var state = self._super();
i = visiblePanels.length;
if (visiblePanels[i] === self) {
visiblePanels.push(self);
removeVisiblePanel(this);
if (!self.fire('close').isDefaultPrevented()) {
removeVisiblePanel(this);
postRender: function () {
if (self.settings.bodyRole) {
this.getEl('body').setAttribute('role', self.settings.bodyRole);
FloatPanel.hideAll = function () {
var i = visiblePanels.length;
var panel = visiblePanels[i];
if (panel && panel.settings.autohide) {
visiblePanels.splice(i, 1);
function removeVisiblePanel(panel) {
i = visiblePanels.length;
if (visiblePanels[i] === panel) {
visiblePanels.splice(i, 1);
if (zOrder[i] === panel) {
var isFixed$1 = function (inlineToolbarContainer, editor) {
return !!(inlineToolbarContainer && !editor.settings.ui_container);
var render$1 = function (editor, theme, args) {
var panel, inlineToolbarContainer;
var fixedToolbarContainer = getFixedToolbarContainer(editor);
if (fixedToolbarContainer) {
inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];
var reposition = function () {
if (panel && panel.moveRel && panel.visible() && !panel._fixed) {
var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();
var deltaX = 0, deltaY = 0;
var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);
deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);
deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);
panel.fixed(false).moveRel(body, editor.rtl ? [
]).moveBy(deltaX, deltaY);
DOM.addClass(editor.getBody(), 'mce-edit-focus');
DOM.removeClass(editor.getBody(), 'mce-edit-focus');
var render = function () {
panel = theme.panel = global$4.create({
type: inlineToolbarContainer ? 'panel' : 'floatpanel',
classes: 'tinymce tinymce-inline',
fixed: isFixed$1(inlineToolbarContainer, editor),
hasMenubar(editor) === false ? null : {
items: Menubar.createMenuButtons(editor)
Toolbar.createToolbars(editor, getToolbarSize(editor))
UiContainer.setUiContainer(editor, panel);
Events.fireBeforeRenderUI(editor);
if (inlineToolbarContainer) {
panel.renderTo(inlineToolbarContainer).reflow();
panel.renderTo().reflow();
A11y.addKeys(editor, panel);
ContextToolbars.addContextualToolbars(editor);
editor.on('nodeChange', reposition);
editor.on('ResizeWindow', reposition);
editor.on('activate', show);
editor.on('deactivate', hide);
editor.settings.content_editable = true;
editor.on('focus', function () {
if (isSkinDisabled(editor) === false && args.skinUiCss) {
DOM.styleSheetLoader.load(args.skinUiCss, render, render);
editor.on('blur hide', hide);
editor.on('remove', function () {
if (isSkinDisabled(editor) === false && args.skinUiCss) {
DOM.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));
SkinLoaded.fireSkinLoaded(editor)();
var Inline = { render: render$1 };
function Throbber (elm, inline) {
var classPrefix = Control$1.classPrefix;
self.show = function (time, callback) {
global$9(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');
timer = global$7.setTimeout(render, time);
self.hide = function () {
var child = elm.lastChild;
global$7.clearTimeout(timer);
if (child && child.className.indexOf('throbber') !== -1) {
child.parentNode.removeChild(child);
var setup = function (editor, theme) {
editor.on('ProgressState', function (e) {
throbber = throbber || new Throbber(theme.panel.getEl('body'));
var ProgressState = { setup: setup };
var renderUI = function (editor, theme, args) {
var skinUrl = getSkinUrl(editor);
args.skinUiCss = skinUrl + '/skin.min.css';
editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');
ProgressState.setup(editor, theme);
return isInline(editor) ? Inline.render(editor, theme, args) : Iframe.render(editor, theme, args);
var Render = { renderUI: renderUI };
var Tooltip = Control$1.extend({
Defaults: { classes: 'widget tooltip tooltip-n' },
renderHtml: function () {
var self = this, prefix = self.classPrefix;
return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';
bindStates: function () {
self.state.on('change:text', function (e) {
self.getEl().lastChild.innerHTML = self.encode(e.value);
style = self.getEl().style;
style.left = rect.x + 'px';
style.top = rect.y + 'px';
style.zIndex = 65535 + 65535;
var Widget = Control$1.extend({
init: function (settings) {
settings = self.settings;
if (settings.tooltip && Widget.tooltips !== false) {
self.on('mouseenter', function (e) {
var tooltip = self.tooltip().moveTo(-65535);
if (e.control === self) {
var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [
tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
tooltip.moveRel(self.getEl(), rel);
self.on('mouseleave mousedown click', function () {
self.aria('label', settings.ariaLabel || settings.tooltip);
this._tooltip = new Tooltip({ type: 'tooltip' });
UiContainer.inheritUiContainer(this, this._tooltip);
this._tooltip.renderTo();
postRender: function () {
var self = this, settings = self.settings;
if (!self.parent() && (settings.width || settings.height)) {
if (settings.autofocus) {
bindStates: function () {
function disable(state) {
self.aria('disabled', state);
self.classes.toggle('disabled', state);
self.aria('pressed', state);
self.classes.toggle('active', state);
self.state.on('change:disabled', function (e) {
self.state.on('change:active', function (e) {
if (self.state.get('disabled')) {
if (self.state.get('active')) {