: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
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 cached = function (f) {
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
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;
var TEXT = domGlobals.Node.TEXT_NODE;
var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
var ENTITY = domGlobals.Node.ENTITY_NODE;
var NOTATION = domGlobals.Node.NOTATION_NODE;
var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
var path = function (parts, scope) {
var o = scope !== undefined && scope !== null ? scope : Global;
for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) {
var resolve = function (p, scope) {
var parts = p.split('.');
return path(parts, scope);
var unsafe = function (name, scope) {
return resolve(name, scope);
var getOrDie = function (name, scope) {
var actual = unsafe(name, scope);
if (actual === undefined || actual === null) {
throw new Error(name + ' not available on this browser');
var Global$1 = { getOrDie: getOrDie };
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 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 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 windows$1 = 'Windows';
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$1, 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$1),
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 DOCUMENT$1 = DOCUMENT;
var bypassSelector = function (dom) {
return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
var all = function (selector, scope) {
var base = scope === undefined ? domGlobals.document : scope.dom();
return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element.fromDom);
var one = function (selector, scope) {
var base = scope === undefined ? domGlobals.document : scope.dom();
return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom);
var regularContains = function (e1, e2) {
return d1 === d2 ? false : d1.contains(d2);
var ieContains = function (e1, e2) {
return Node.documentPositionContainedBy(e1.dom(), e2.dom());
var browser = PlatformDetection$1.detect().browser;
var contains$1 = browser.isIE() ? ieContains : regularContains;
var spot = Immutable('element', 'offset');
var descendants = function (scope, selector) {
return all(selector, scope);
var trim = global$2.trim;
var hasContentEditableState = function (value) {
if (node && node.nodeType === 1) {
if (node.contentEditable === value) {
if (node.getAttribute('data-mce-contenteditable') === value) {
var isContentEditableTrue = hasContentEditableState('true');
var isContentEditableFalse = hasContentEditableState('false');
var create = function (type, title, url, level, attach) {
var isChildOfContentEditableTrue = function (node) {