: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
editor.addButton('quickimage', {
Picker.pickFile().then(function (files) {
Conversions.blobToBase64(blob).then(function (base64) {
Actions.insertBlob(editor, base64, blob);
editor.addButton('quicktable', {
Actions.insertTable(editor, 2, 2);
addHeaderButtons(editor);
var Buttons = { addToEditor: addToEditor };
var getUiContainerDelta$1 = function () {
var uiContainer = global$1.container;
if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
var containerPos = global$2.DOM.getPos(uiContainer);
var dx = containerPos.x - uiContainer.scrollLeft;
var dy = containerPos.y - uiContainer.scrollTop;
var UiContainer$1 = { getUiContainerDelta: getUiContainerDelta$1 };
var isDomainLike = function (href) {
return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim());
var isAbsolute = function (href) {
return /^https?:\/\//.test(href.trim());
isDomainLike: isDomainLike,
var focusFirstTextBox = function (form) {
form.find('textbox').eq(0).each(function (ctrl) {
var createForm = function (name, spec) {
var form = global$b.create(global$4.extend({
form.on('show', function () {
var toggleVisibility = function (ctrl, state) {
return state ? ctrl.show() : ctrl.hide();
var askAboutPrefix = function (editor, href) {
return new global$c(function (resolve) {
editor.windowManager.confirm('The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (result) {
var output = result === true ? 'http://' + href : href;
var convertLinkToAbsolute = function (editor, href) {
return !UrlType.isAbsolute(href) && UrlType.isDomainLike(href) ? askAboutPrefix(editor, href) : global$c.resolve(href);
var createQuickLinkForm = function (editor, hide) {
var unlink = function () {
var onChangeHandler = function (e) {
if (meta && meta.attach) {
var onShowHandler = function (e) {
if (e.control === this) {
var elm = void 0, linkurl = '';
elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');
linkurl = editor.dom.getAttrib(elm, 'href');
this.fromJSON({ linkurl: linkurl });
toggleVisibility(this.find('#unlink'), elm);
this.find('#linkurl')[0].focus();
return createForm('quicklink', {
placeholder: 'Paste or type a link',
onchange: onChangeHandler
convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) {
editor.undoManager.transact(function () {
if (url === attachState.href) {
Actions.createLink(editor, url);
var Forms = { createQuickLinkForm: createQuickLinkForm };
var getSelectorStateResult = function (itemName, item) {
var result = function (selector, handler) {
var activeHandler = function (state) {
var disabledHandler = function (state) {
if (item.settings.stateSelector) {
return result(item.settings.stateSelector, activeHandler);
if (item.settings.disabledStateSelector) {
return result(item.settings.disabledStateSelector, disabledHandler);
var bindSelectorChanged = function (editor, itemName, item) {
var result = getSelectorStateResult(itemName, item);
editor.selection.selectorChanged(result.selector, result.handler);
var itemsToArray$1 = function (items) {
if (Type.isArray(items)) {
} else if (Type.isString(items)) {
return items.split(/[ ,]/);
var create$2 = function (editor, name, items) {
global$4.each(itemsToArray$1(items), function (item) {
if (editor.buttons[item]) {
toolbarItems.push(buttonGroup);
var button = editor.buttons[item];
if (Type.isFunction(button)) {
button.type = button.type || 'button';
button = global$b.create(button);
button.on('postRender', bindSelectorChanged(editor, item, button));
buttonGroup.items.push(button);
var Toolbar = { create: create$2 };
var create$3 = function () {
var createToolbars = function (editor, toolbars) {
return global$4.map(toolbars, function (toolbar) {
return Toolbar.create(editor, toolbar.id, toolbar.items);
var hasToolbarItems = function (toolbar) {
return toolbar.items().length > 0;
var create = function (editor, toolbars) {
var items = createToolbars(editor, toolbars).concat([
Toolbar.create(editor, 'text', Settings.getTextSelectionToolbarItems(editor)),
Toolbar.create(editor, 'insert', Settings.getInsertToolbarItems(editor)),
Forms.createQuickLinkForm(editor, hide)
classes: 'tinymce tinymce-inline arrow',
ariaLabel: 'Inline toolbar',
items: global$4.grep(items, hasToolbarItems),
var showPanel = function (panel) {
var movePanelTo = function (panel, pos) {
panel.moveTo(pos.x, pos.y);
var togglePositionClass = function (panel, relPos) {
relPos = relPos ? relPos.substr(0, 2) : '';
panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1));
panel.classes.toggle('arrow-left', true);
panel.classes.toggle('arrow-right', false);
} else if (relPos === 'cl') {
panel.classes.toggle('arrow-left', false);
panel.classes.toggle('arrow-right', true);
panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1));
var showToolbar = function (panel, id) {
var toolbars = panel.items().filter('#' + id);
if (toolbars.length > 0) {
var repositionPanelAt = function (panel, id, editor, targetRect) {
var contentAreaRect, panelRect, result, userConstainHandler;
userConstainHandler = Settings.getPositionHandler(editor);
contentAreaRect = Measure.getContentAreaRect(editor);
panelRect = global$2.DOM.getRect(panel.getEl());
result = Layout.calcInsert(targetRect, contentAreaRect, panelRect);
result = Layout.calc(targetRect, contentAreaRect, panelRect);
var delta = UiContainer$1.getUiContainerDelta().getOr({
var transposedPanelRect = {
x: result.rect.x - delta.x,
y: result.rect.y - delta.y,
currentRect = targetRect;
movePanelTo(panel, Layout.userConstrain(userConstainHandler, targetRect, contentAreaRect, transposedPanelRect));
togglePositionClass(panel, result.position);
var showPanelAt = function (panel, id, editor, targetRect) {
if (!showToolbar(panel, id)) {
if (repositionPanelAt(panel, id, editor, targetRect) === false) {
var hasFormVisible = function () {
return panel.items().filter('form:visible').length > 0;
var showForm = function (editor, id) {
if (!showToolbar(panel, id)) {
var contentAreaRect = void 0, panelRect = void 0, result = void 0, userConstainHandler = void 0;
userConstainHandler = Settings.getPositionHandler(editor);
contentAreaRect = Measure.getContentAreaRect(editor);
panelRect = global$2.DOM.getRect(panel.getEl());
result = Layout.calc(currentRect, contentAreaRect, panelRect);
movePanelTo(panel, Layout.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect));
togglePositionClass(panel, result.position);
var show = function (editor, id, targetRect, toolbars) {
Events.fireBeforeRenderUI(editor);
panel = create(editor, toolbars);
panel.renderTo().reflow().moveTo(targetRect.x, targetRect.y);
showPanelAt(panel, id, editor, targetRect);
var reposition = function (editor, id, targetRect) {
repositionPanelAt(panel, id, editor, targetRect);
var focus = function () {
panel.find('toolbar:visible').eq(0).each(function (item) {
var remove = function () {
var inForm = function () {
return panel && panel.visible() && hasFormVisible();
var Layout$1 = global$8.extend({
firstControlClass: 'first',
init: function (settings) {
this.settings = global$4.extend({}, this.Defaults, settings);
preRender: function (container) {
container.bodyClasses.add(this.settings.containerClass);
applyClasses: function (items) {
var settings = self.settings;
var firstClass, lastClass, firstItem, lastItem;
firstClass = settings.firstControlClass;
lastClass = settings.lastControlClass;
items.each(function (item) {
item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);
firstItem.classes.add(firstClass);
lastItem.classes.add(lastClass);
renderHtml: function (container) {
self.applyClasses(container.items());
container.items().each(function (item) {
html += item.renderHtml();
postRender: function () {
var AbsoluteLayout = Layout$1.extend({
containerClass: 'abs-layout',
controlClass: 'abs-layout-item'
recalc: function (container) {
container.items().filter(':visible').each(function (ctrl) {
var settings = ctrl.settings;
renderHtml: function (container) {
return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
var Button = Widget.extend({
init: function (settings) {