: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
resultData.href = 'mailto:' + href;
if (assumeExternalTargets === true && !/^\w+:/i.test(href) || assumeExternalTargets === false && /^\s*www[\.|\d\.]/i.test(href)) {
delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {
resultData.href = 'http://' + href;
var open$1 = function (editor) {
createLinkList(editor, showDialog);
var Dialog = { open: open$1 };
var getLink = function (editor, elm) {
return editor.dom.getParent(elm, 'a[href]');
var getSelectedLink = function (editor) {
return getLink(editor, editor.selection.getStart());
var getHref = function (elm) {
var href = elm.getAttribute('data-mce-href');
return href ? href : elm.getAttribute('href');
var isContextMenuVisible = function (editor) {
var contextmenu = editor.plugins.contextmenu;
return contextmenu ? contextmenu.isContextMenuVisible() : false;
var hasOnlyAltModifier = function (e) {
return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;
var gotoLink = function (editor, a) {
var targetEl = editor.$(href);
editor.selection.scrollIntoView(targetEl[0], true);
var openDialog = function (editor) {
var gotoSelectedLink = function (editor) {
gotoLink(editor, getSelectedLink(editor));
var leftClickedOnAHref = function (editor) {
if (Settings.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && Utils.isLink(elm)) {
node = rng.startContainer;
if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {
var setupGotoLinks = function (editor) {
editor.on('click', function (e) {
var link = getLink(editor, e.target);
if (link && global$1.metaKeyPressed(e)) {
editor.on('keydown', function (e) {
var link = getSelectedLink(editor);
if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {
var toggleActiveState = function (editor) {
editor.on('nodechange', function (e) {
self.active(!editor.readonly && !!Utils.getAnchorElement(editor, e.element));
var toggleViewLinkState = function (editor) {
var toggleVisibility = function (e) {
if (Utils.hasLinks(e.parents)) {
if (!Utils.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {
editor.on('nodechange', toggleVisibility);
self.on('remove', function () {
editor.off('nodechange', toggleVisibility);
gotoSelectedLink: gotoSelectedLink,
leftClickedOnAHref: leftClickedOnAHref,
setupGotoLinks: setupGotoLinks,
toggleActiveState: toggleActiveState,
toggleViewLinkState: toggleViewLinkState
var register = function (editor) {
editor.addCommand('mceLink', Actions.openDialog(editor));
var Commands = { register: register };
var setup = function (editor) {
editor.addShortcut('Meta+K', '', Actions.openDialog(editor));
var Keyboard = { setup: setup };
var setupButtons = function (editor) {
editor.addButton('link', {
tooltip: 'Insert/edit link',
onclick: Actions.openDialog(editor),
onpostrender: Actions.toggleActiveState(editor)
editor.addButton('unlink', {
onclick: Utils.unlink(editor),
onpostrender: Actions.toggleActiveState(editor)
if (editor.addContextToolbar) {
editor.addButton('openlink', {
onclick: Actions.gotoSelectedLink(editor)
var setupMenuItems = function (editor) {
editor.addMenuItem('openlink', {
onclick: Actions.gotoSelectedLink(editor),
onPostRender: Actions.toggleViewLinkState(editor),
editor.addMenuItem('link', {
onclick: Actions.openDialog(editor),
stateSelector: 'a[href]',
editor.addMenuItem('unlink', {
onclick: Utils.unlink(editor),
var setupContextToolbars = function (editor) {
if (editor.addContextToolbar) {
editor.addContextToolbar(Actions.leftClickedOnAHref(editor), 'openlink | link unlink');
setupButtons: setupButtons,
setupMenuItems: setupMenuItems,
setupContextToolbars: setupContextToolbars
global.add('link', function (editor) {
Controls.setupButtons(editor);
Controls.setupMenuItems(editor);
Controls.setupContextToolbars(editor);
Actions.setupGotoLinks(editor);
Commands.register(editor);