: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
var getSelectedSubLists = function (editor) {
var parentList = getParentList(editor);
var selectedBlocks = editor.selection.getSelectedBlocks();
if (isParentListSelected(parentList, selectedBlocks)) {
return findSubLists(parentList);
return global$5.grep(selectedBlocks, function (elm) {
return NodeType.isListNode(elm) && parentList !== elm;
var findParentListItemsNodes = function (editor, elms) {
var listItemsElms = global$5.map(elms, function (elm) {
var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));
return parentLi ? parentLi : elm;
return global$7.unique(listItemsElms);
var getSelectedListItems = function (editor) {
var selectedBlocks = editor.selection.getSelectedBlocks();
return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {
return NodeType.isListItemNode(block);
var getSelectedDlItems = function (editor) {
return filter(getSelectedListItems(editor), NodeType.isDlItemNode);
var getClosestListRootElm = function (editor, elm) {
var parentTableCell = editor.dom.getParents(elm, 'TD,TH');
var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();
var findLastParentListNode = function (editor, elm) {
var parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListRootElm(editor, elm));
return last(parentLists);
var getSelectedLists = function (editor) {
var firstList = findLastParentListNode(editor, editor.selection.getStart());
var subsequentLists = filter(editor.selection.getSelectedBlocks(), NodeType.isOlUlNode);
return firstList.toArray().concat(subsequentLists);
var getSelectedListRoots = function (editor) {
var selectedLists = getSelectedLists(editor);
return getUniqueListRoots(editor, selectedLists);
var getUniqueListRoots = function (editor, lists) {
var listRoots = map(lists, function (list) {
return findLastParentListNode(editor, list).getOr(list);
return global$7.unique(listRoots);
var isList = function (editor) {
var list = getParentList(editor);
return HTMLElement.isPrototypeOf(list);
getParentList: getParentList,
getSelectedSubLists: getSelectedSubLists,
getSelectedListItems: getSelectedListItems,
getClosestListRootElm: getClosestListRootElm,
getSelectedDlItems: getSelectedDlItems,
getSelectedListRoots: getSelectedListRoots
var fromHtml = function (html, scope) {
var doc = scope || domGlobals.document;
var div = doc.createElement('div');
if (!div.hasChildNodes() || div.childNodes.length > 1) {
domGlobals.console.error('HTML does not have a single root node', html);
throw new Error('HTML must have a single root node');
return fromDom(div.childNodes[0]);
var fromTag = function (tag, scope) {
var doc = scope || domGlobals.document;
var node = doc.createElement(tag);
var fromText = function (text, scope) {
var doc = scope || domGlobals.document;
var node = doc.createTextNode(text);
var fromDom = function (node) {
if (node === null || node === undefined) {
throw new Error('Node cannot be null or undefined');
return { dom: constant(node) };
var fromPoint = function (docElm, x, y) {
return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
var lift2 = function (oa, ob, f) {
return oa.isSome() && ob.isSome() ? Option.some(f(oa.getOrDie(), ob.getOrDie())) : Option.none();
var fromElements = function (elements, scope) {
var doc = scope || domGlobals.document;
var fragment = doc.createDocumentFragment();
each(elements, function (element) {
fragment.appendChild(element.dom());
return Element.fromDom(fragment);
var Immutable = function () {
for (var _i = 0; _i < arguments.length; _i++) {
fields[_i] = arguments[_i];
for (var _i = 0; _i < arguments.length; _i++) {
values[_i] = arguments[_i];
if (fields.length !== values.length) {
throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');
each(fields, function (name, i) {
struct[name] = constant(values[i]);
var each$1 = function (obj, f) {
for (var k = 0, len = props.length; k < len; k++) {
var f = Global$1.getOrDie('Node');
var compareDocumentPosition = function (a, b, match) {
return (a.compareDocumentPosition(b) & match) !== 0;
var documentPositionPreceding = function (a, b) {
return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);
var documentPositionContainedBy = function (a, b) {
return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
documentPositionPreceding: documentPositionPreceding,
documentPositionContainedBy: documentPositionContainedBy
var cached = function (f) {
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
var firstMatch = function (regexes, s) {
for (var i = 0; i < regexes.length; i++) {
var find$1 = function (regexes, agent) {
var r = firstMatch(regexes, agent);
var group = function (i) {
return Number(agent.replace(r, '$' + i));
return nu(group(1), group(2));
var detect = function (versionRegexes, agent) {
var cleanedAgent = String(agent).toLowerCase();
if (versionRegexes.length === 0) {
return find$1(versionRegexes, cleanedAgent);
var unknown = function () {
var nu = function (major, minor) {
var isBrowser = function (name, current) {
var unknown$1 = function () {
version: Version.unknown()
var nu$1 = function (info) {
var current = info.current;
var version = info.version;
isEdge: isBrowser(edge, current),
isChrome: isBrowser(chrome, current),
isIE: isBrowser(ie, current),
isOpera: isBrowser(opera, current),
isFirefox: isBrowser(firefox, current),
isSafari: isBrowser(safari, current)
chrome: constant(chrome),
firefox: constant(firefox),
var isOS = function (name, current) {
var unknown$2 = function () {
version: Version.unknown()
var nu$2 = function (info) {
var current = info.current;
var version = info.version;
isWindows: isOS(windows, current),
isiOS: isOS(ios, current),
isAndroid: isOS(android, current),
isOSX: isOS(osx, current),
isLinux: isOS(linux, current),
isSolaris: isOS(solaris, current),
isFreeBSD: isOS(freebsd, current)
windows: constant(windows),
android: constant(android),
solaris: constant(solaris),
freebsd: constant(freebsd)
var DeviceType = function (os, browser, userAgent) {
var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;
var isiPhone = os.isiOS() && !isiPad;
var isAndroid3 = os.isAndroid() && os.version.major === 3;
var isAndroid4 = os.isAndroid() && os.version.major === 4;
var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;
var isTouch = os.isiOS() || os.isAndroid();
var isPhone = isTouch && !isTablet;
var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;
isiPad: constant(isiPad),
isiPhone: constant(isiPhone),
isTablet: constant(isTablet),
isPhone: constant(isPhone),
isTouch: constant(isTouch),
isWebView: constant(iOSwebview)
var detect$1 = function (candidates, userAgent) {
var agent = String(userAgent).toLowerCase();
return find(candidates, function (candidate) {
return candidate.search(agent);
var detectBrowser = function (browsers, userAgent) {
return detect$1(browsers, userAgent).map(function (browser) {
var version = Version.detect(browser.versionRegexes, userAgent);
var detectOs = function (oses, userAgent) {
return detect$1(oses, userAgent).map(function (os) {
var version = Version.detect(os.versionRegexes, userAgent);
detectBrowser: detectBrowser,
var contains = function (str, substr) {
return str.indexOf(substr) !== -1;
var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
var checkContains = function (target) {
return function (uastring) {
return contains(uastring, target);
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function (uastring) {
return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');
/.*?chrome\/([0-9]+)\.([0-9]+).*/,
search: function (uastring) {
return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
/.*?rv:([0-9]+)\.([0-9]+).*/
search: function (uastring) {
return contains(uastring, 'msie') || contains(uastring, 'trident');
/.*?opera\/([0-9]+)\.([0-9]+).*/
search: checkContains('opera')
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: checkContains('firefox')
/.*?cpu os ([0-9]+)_([0-9]+).*/
search: function (uastring) {
return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');
search: checkContains('win'),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
search: function (uastring) {
return contains(uastring, 'iphone') || contains(uastring, 'ipad');
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
/.*cpu os ([0-9]+)_([0-9]+).*/,
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
search: checkContains('android'),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
search: checkContains('os x'),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
search: checkContains('linux'),
search: checkContains('sunos'),
search: checkContains('freebsd'),
browsers: constant(browsers),
var detect$2 = function (userAgent) {
var browsers = PlatformInfo.browsers();
var oses = PlatformInfo.oses();
var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);
var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
var deviceType = DeviceType(os, browser, userAgent);
var PlatformDetection = { detect: detect$2 };
var detect$3 = cached(function () {
var userAgent = domGlobals.navigator.userAgent;
return PlatformDetection.detect(userAgent);
var PlatformDetection$1 = { detect: detect$3 };
var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
var COMMENT = domGlobals.Node.COMMENT_NODE;
var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
var ELEMENT = domGlobals.Node.ELEMENT_NODE;