: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
URL.revokeObjectURL(blobUri);
return Utils.blobToDataUri(file).then(function (dataUrl) {
var blobInfo = editor.editorUpload.blobCache.create({
name: file.name ? file.name.replace(/\.[^\.]+$/, '') : null,
base64: dataUrl.split(',')[1]
return uploader.upload(blobInfo).then(function (url) {
var src = rootControl.find('#src');
rootControl.find('tabpanel')[0].activateTab(0);
}).catch(function (err) {
editor.windowManager.alert(err);
var acceptExts = '.jpg,.jpeg,.png,.gif';
var makeTab$2 = function (editor) {
text: 'Browse for an image',
onchange: onFileInput(editor)
text: 'Drop an image here',
onchange: onFileInput(editor)
var UploadTab = { makeTab: makeTab$2 };
for (var _i = 1; _i < arguments.length; _i++) {
initialArgs[_i - 1] = arguments[_i];
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);
values: Utils.buildListItems(imageList, function (item) {
item.value = editor.convertURL(item.value || item.url, 'src');
value: data.src && editor.convertURL(data.src, 'src'),
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 () {
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',
onSubmit: curry(submitForm, editor)
win = editor.windowManager.open({
title: 'Insert/edit image',
body: MainTab.getGeneralItems(editor, imageListCtrl),
onSubmit: curry(submitForm, editor)
SizeManager.syncSize(win);
Utils.createImageList(editor, showDialog);
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);
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', {
tooltip: 'Insert/edit image',
onclick: Dialog(editor).open,
stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'
editor.addMenuItem('image', {
onclick: Dialog(editor).open,
var Buttons = { register: register$1 };
global.add('image', function (editor) {
FilterContent.setup(editor);
Buttons.register(editor);
Commands.register(editor);