הבדלים בין גרסאות בדף "מדיה ויקי:Mobile.js"

מאגר הידע של דואלוג: מאגר הידע המקיף בעברית בתחומי האסטרטגיה והחשיבה המערכתית
קפיצה לניווט קפיצה לחיפוש
שורה 79: שורה 79:
 
   });
 
   });
 
}
 
}
 +
 +
/*!***************************************************
 +
* mark.js v8.6.0
 +
* https://github.com/julmot/mark.js
 +
* Copyright (c) 2014–2017, Julian Motz
 +
* Released under the MIT license https://git.io/vwTVl
 +
*****************************************************/
 +
( function ( $ ) {
 +
  /*!***************************************************
 +
* mark.js v8.11.1
 +
* https://markjs.io/
 +
* Copyright (c) 2014–2018, Julian Kühnel
 +
* Released under the MIT license https://git.io/vwTVl
 +
*****************************************************/
 +
 +
(function (global, factory) {
 +
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
 +
typeof define === 'function' && define.amd ? define(['jquery'], factory) :
 +
(global.Mark = factory(global.jQuery));
 +
}(this, (function ($) { 'use strict';
 +
 +
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
 +
 +
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
 +
  return typeof obj;
 +
} : function (obj) {
 +
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
 +
};
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
var classCallCheck = function (instance, Constructor) {
 +
  if (!(instance instanceof Constructor)) {
 +
    throw new TypeError("Cannot call a class as a function");
 +
  }
 +
};
 +
 +
var createClass = function () {
 +
  function defineProperties(target, props) {
 +
    for (var i = 0; i < props.length; i++) {
 +
      var descriptor = props[i];
 +
      descriptor.enumerable = descriptor.enumerable || false;
 +
      descriptor.configurable = true;
 +
      if ("value" in descriptor) descriptor.writable = true;
 +
      Object.defineProperty(target, descriptor.key, descriptor);
 +
    }
 +
  }
 +
 +
  return function (Constructor, protoProps, staticProps) {
 +
    if (protoProps) defineProperties(Constructor.prototype, protoProps);
 +
    if (staticProps) defineProperties(Constructor, staticProps);
 +
    return Constructor;
 +
  };
 +
}();
 +
 +
 +
 +
 +
 +
 +
 +
var _extends = Object.assign || function (target) {
 +
  for (var i = 1; i < arguments.length; i++) {
 +
    var source = arguments[i];
 +
 +
    for (var key in source) {
 +
      if (Object.prototype.hasOwnProperty.call(source, key)) {
 +
        target[key] = source[key];
 +
      }
 +
    }
 +
  }
 +
 +
  return target;
 +
};
 +
 +
var DOMIterator = function () {
 +
  function DOMIterator(ctx) {
 +
    var iframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
 +
    var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
 +
    var iframesTimeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5000;
 +
    classCallCheck(this, DOMIterator);
 +
 +
    this.ctx = ctx;
 +
    this.iframes = iframes;
 +
    this.exclude = exclude;
 +
    this.iframesTimeout = iframesTimeout;
 +
  }
 +
 +
  createClass(DOMIterator, [{
 +
    key: 'getContexts',
 +
    value: function getContexts() {
 +
      var ctx = void 0,
 +
          filteredCtx = [];
 +
      if (typeof this.ctx === 'undefined' || !this.ctx) {
 +
        ctx = [];
 +
      } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {
 +
        ctx = Array.prototype.slice.call(this.ctx);
 +
      } else if (Array.isArray(this.ctx)) {
 +
        ctx = this.ctx;
 +
      } else if (typeof this.ctx === 'string') {
 +
        ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));
 +
      } else {
 +
        ctx = [this.ctx];
 +
      }
 +
      ctx.forEach(function (ctx) {
 +
        var isDescendant = filteredCtx.filter(function (contexts) {
 +
          return contexts.contains(ctx);
 +
        }).length > 0;
 +
        if (filteredCtx.indexOf(ctx) === -1 && !isDescendant) {
 +
          filteredCtx.push(ctx);
 +
        }
 +
      });
 +
      return filteredCtx;
 +
    }
 +
  }, {
 +
    key: 'getIframeContents',
 +
    value: function getIframeContents(ifr, successFn) {
 +
      var errorFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
 +
 +
      var doc = void 0;
 +
      try {
 +
        var ifrWin = ifr.contentWindow;
 +
        doc = ifrWin.document;
 +
        if (!ifrWin || !doc) {
 +
          throw new Error('iframe inaccessible');
 +
        }
 +
      } catch (e) {
 +
        errorFn();
 +
      }
 +
      if (doc) {
 +
        successFn(doc);
 +
      }
 +
    }
 +
  }, {
 +
    key: 'isIframeBlank',
 +
    value: function isIframeBlank(ifr) {
 +
      var bl = 'about:blank',
 +
          src = ifr.getAttribute('src').trim(),
 +
          href = ifr.contentWindow.location.href;
 +
      return href === bl && src !== bl && src;
 +
    }
 +
  }, {
 +
    key: 'observeIframeLoad',
 +
    value: function observeIframeLoad(ifr, successFn, errorFn) {
 +
      var _this = this;
 +
 +
      var called = false,
 +
          tout = null;
 +
      var listener = function listener() {
 +
        if (called) {
 +
          return;
 +
        }
 +
        called = true;
 +
        clearTimeout(tout);
 +
        try {
 +
          if (!_this.isIframeBlank(ifr)) {
 +
            ifr.removeEventListener('load', listener);
 +
            _this.getIframeContents(ifr, successFn, errorFn);
 +
          }
 +
        } catch (e) {
 +
          errorFn();
 +
        }
 +
      };
 +
      ifr.addEventListener('load', listener);
 +
      tout = setTimeout(listener, this.iframesTimeout);
 +
    }
 +
  }, {
 +
    key: 'onIframeReady',
 +
    value: function onIframeReady(ifr, successFn, errorFn) {
 +
      try {
 +
        if (ifr.contentWindow.document.readyState === 'complete') {
 +
          if (this.isIframeBlank(ifr)) {
 +
            this.observeIframeLoad(ifr, successFn, errorFn);
 +
          } else {
 +
            this.getIframeContents(ifr, successFn, errorFn);
 +
          }
 +
        } else {
 +
          this.observeIframeLoad(ifr, successFn, errorFn);
 +
        }
 +
      } catch (e) {
 +
        errorFn();
 +
      }
 +
    }
 +
  }, {
 +
    key: 'waitForIframes',
 +
    value: function waitForIframes(ctx, done) {
 +
      var _this2 = this;
 +
 +
      var eachCalled = 0;
 +
      this.forEachIframe(ctx, function () {
 +
        return true;
 +
      }, function (ifr) {
 +
        eachCalled++;
 +
        _this2.waitForIframes(ifr.querySelector('html'), function () {
 +
          if (! --eachCalled) {
 +
            done();
 +
          }
 +
        });
 +
      }, function (handled) {
 +
        if (!handled) {
 +
          done();
 +
        }
 +
      });
 +
    }
 +
  }, {
 +
    key: 'forEachIframe',
 +
    value: function forEachIframe(ctx, filter, each) {
 +
      var _this3 = this;
 +
 +
      var end = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};
 +
 +
      var ifr = ctx.querySelectorAll('iframe'),
 +
          open = ifr.length,
 +
          handled = 0;
 +
      ifr = Array.prototype.slice.call(ifr);
 +
      var checkEnd = function checkEnd() {
 +
        if (--open <= 0) {
 +
          end(handled);
 +
        }
 +
      };
 +
      if (!open) {
 +
        checkEnd();
 +
      }
 +
      ifr.forEach(function (ifr) {
 +
        if (DOMIterator.matches(ifr, _this3.exclude)) {
 +
          checkEnd();
 +
        } else {
 +
          _this3.onIframeReady(ifr, function (con) {
 +
            if (filter(ifr)) {
 +
              handled++;
 +
              each(con);
 +
            }
 +
            checkEnd();
 +
          }, checkEnd);
 +
        }
 +
      });
 +
    }
 +
  }, {
 +
    key: 'createIterator',
 +
    value: function createIterator(ctx, whatToShow, filter) {
 +
      return document.createNodeIterator(ctx, whatToShow, filter, false);
 +
    }
 +
  }, {
 +
    key: 'createInstanceOnIframe',
 +
    value: function createInstanceOnIframe(contents) {
 +
      return new DOMIterator(contents.querySelector('html'), this.iframes);
 +
    }
 +
  }, {
 +
    key: 'compareNodeIframe',
 +
    value: function compareNodeIframe(node, prevNode, ifr) {
 +
      var compCurr = node.compareDocumentPosition(ifr),
 +
          prev = Node.DOCUMENT_POSITION_PRECEDING;
 +
      if (compCurr & prev) {
 +
        if (prevNode !== null) {
 +
          var compPrev = prevNode.compareDocumentPosition(ifr),
 +
              after = Node.DOCUMENT_POSITION_FOLLOWING;
 +
          if (compPrev & after) {
 +
            return true;
 +
          }
 +
        } else {
 +
          return true;
 +
        }
 +
      }
 +
      return false;
 +
    }
 +
  }, {
 +
    key: 'getIteratorNode',
 +
    value: function getIteratorNode(itr) {
 +
      var prevNode = itr.previousNode();
 +
      var node = void 0;
 +
      if (prevNode === null) {
 +
        node = itr.nextNode();
 +
      } else {
 +
        node = itr.nextNode() && itr.nextNode();
 +
      }
 +
      return {
 +
        prevNode: prevNode,
 +
        node: node
 +
      };
 +
    }
 +
  }, {
 +
    key: 'checkIframeFilter',
 +
    value: function checkIframeFilter(node, prevNode, currIfr, ifr) {
 +
      var key = false,
 +
          handled = false;
 +
      ifr.forEach(function (ifrDict, i) {
 +
        if (ifrDict.val === currIfr) {
 +
          key = i;
 +
          handled = ifrDict.handled;
 +
        }
 +
      });
 +
      if (this.compareNodeIframe(node, prevNode, currIfr)) {
 +
        if (key === false && !handled) {
 +
          ifr.push({
 +
            val: currIfr,
 +
            handled: true
 +
          });
 +
        } else if (key !== false && !handled) {
 +
          ifr[key].handled = true;
 +
        }
 +
        return true;
 +
      }
 +
      if (key === false) {
 +
        ifr.push({
 +
          val: currIfr,
 +
          handled: false
 +
        });
 +
      }
 +
      return false;
 +
    }
 +
  }, {
 +
    key: 'handleOpenIframes',
 +
    value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {
 +
      var _this4 = this;
 +
 +
      ifr.forEach(function (ifrDict) {
 +
        if (!ifrDict.handled) {
 +
          _this4.getIframeContents(ifrDict.val, function (con) {
 +
            _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);
 +
          });
 +
        }
 +
      });
 +
    }
 +
  }, {
 +
    key: 'iterateThroughNodes',
 +
    value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {
 +
      var _this5 = this;
 +
 +
      var itr = this.createIterator(ctx, whatToShow, filterCb);
 +
      var ifr = [],
 +
          elements = [],
 +
          node = void 0,
 +
          prevNode = void 0,
 +
          retrieveNodes = function retrieveNodes() {
 +
        var _getIteratorNode = _this5.getIteratorNode(itr);
 +
 +
        prevNode = _getIteratorNode.prevNode;
 +
        node = _getIteratorNode.node;
 +
 +
        return node;
 +
      };
 +
      while (retrieveNodes()) {
 +
        if (this.iframes) {
 +
          this.forEachIframe(ctx, function (currIfr) {
 +
            return _this5.checkIframeFilter(node, prevNode, currIfr, ifr);
 +
          }, function (con) {
 +
            _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function (ifrNode) {
 +
              return elements.push(ifrNode);
 +
            }, filterCb);
 +
          });
 +
        }
 +
        elements.push(node);
 +
      }
 +
      elements.forEach(function (node) {
 +
        eachCb(node);
 +
      });
 +
      if (this.iframes) {
 +
        this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);
 +
      }
 +
      doneCb();
 +
    }
 +
  }, {
 +
    key: 'forEachNode',
 +
    value: function forEachNode(whatToShow, each, filter) {
 +
      var _this6 = this;
 +
 +
      var done = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};
 +
 +
      var contexts = this.getContexts();
 +
      var open = contexts.length;
 +
      if (!open) {
 +
        done();
 +
      }
 +
      contexts.forEach(function (ctx) {
 +
        var ready = function ready() {
 +
          _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function () {
 +
            if (--open <= 0) {
 +
              done();
 +
            }
 +
          });
 +
        };
 +
        if (_this6.iframes) {
 +
          _this6.waitForIframes(ctx, ready);
 +
        } else {
 +
          ready();
 +
        }
 +
      });
 +
    }
 +
  }], [{
 +
    key: 'matches',
 +
    value: function matches(element, selector) {
 +
      var selectors = typeof selector === 'string' ? [selector] : selector,
 +
          fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;
 +
      if (fn) {
 +
        var match = false;
 +
        selectors.every(function (sel) {
 +
          if (fn.call(element, sel)) {
 +
            match = true;
 +
            return false;
 +
          }
 +
          return true;
 +
        });
 +
        return match;
 +
      } else {
 +
        return false;
 +
      }
 +
    }
 +
  }]);
 +
  return DOMIterator;
 +
}();
 +
 +
var Mark = function () {
 +
  function Mark(ctx) {
 +
    classCallCheck(this, Mark);
 +
 +
    this.ctx = ctx;
 +
    this.ie = false;
 +
    var ua = window.navigator.userAgent;
 +
    if (ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1) {
 +
      this.ie = true;
 +
    }
 +
  }
 +
 +
  createClass(Mark, [{
 +
    key: 'log',
 +
    value: function log(msg) {
 +
      var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'debug';
 +
 +
      var log = this.opt.log;
 +
      if (!this.opt.debug) {
 +
        return;
 +
      }
 +
      if ((typeof log === 'undefined' ? 'undefined' : _typeof(log)) === 'object' && typeof log[level] === 'function') {
 +
        log[level]('mark.js: ' + msg);
 +
      }
 +
    }
 +
  }, {
 +
    key: 'escapeStr',
 +
    value: function escapeStr(str) {
 +
      return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
 +
    }
 +
  }, {
 +
    key: 'createRegExp',
 +
    value: function createRegExp(str) {
 +
      if (this.opt.wildcards !== 'disabled') {
 +
        str = this.setupWildcardsRegExp(str);
 +
      }
 +
      str = this.escapeStr(str);
 +
      if (Object.keys(this.opt.synonyms).length) {
 +
        str = this.createSynonymsRegExp(str);
 +
      }
 +
      if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
 +
        str = this.setupIgnoreJoinersRegExp(str);
 +
      }
 +
      if (this.opt.diacritics) {
 +
        str = this.createDiacriticsRegExp(str);
 +
      }
 +
      str = this.createMergedBlanksRegExp(str);
 +
      if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
 +
        str = this.createJoinersRegExp(str);
 +
      }
 +
      if (this.opt.wildcards !== 'disabled') {
 +
        str = this.createWildcardsRegExp(str);
 +
      }
 +
      str = this.createAccuracyRegExp(str);
 +
      return str;
 +
    }
 +
  }, {
 +
    key: 'createSynonymsRegExp',
 +
    value: function createSynonymsRegExp(str) {
 +
      var syn = this.opt.synonyms,
 +
          sens = this.opt.caseSensitive ? '' : 'i',
 +
          joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? '\0' : '';
 +
      for (var index in syn) {
 +
        if (syn.hasOwnProperty(index)) {
 +
          var value = syn[index],
 +
              k1 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(index) : this.escapeStr(index),
 +
              k2 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(value) : this.escapeStr(value);
 +
          if (k1 !== '' && k2 !== '') {
 +
            str = str.replace(new RegExp('(' + this.escapeStr(k1) + '|' + this.escapeStr(k2) + ')', 'gm' + sens), joinerPlaceholder + ('(' + this.processSynomyms(k1) + '|') + (this.processSynomyms(k2) + ')') + joinerPlaceholder);
 +
          }
 +
        }
 +
      }
 +
      return str;
 +
    }
 +
  }, {
 +
    key: 'processSynomyms',
 +
    value: function processSynomyms(str) {
 +
      if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
 +
        str = this.setupIgnoreJoinersRegExp(str);
 +
      }
 +
      return str;
 +
    }
 +
  }, {
 +
    key: 'setupWildcardsRegExp',
 +
    value: function setupWildcardsRegExp(str) {
 +
      str = str.replace(/(?:\\)*\?/g, function (val) {
 +
        return val.charAt(0) === '\\' ? '?' : '\x01';
 +
      });
 +
      return str.replace(/(?:\\)*\*/g, function (val) {
 +
        return val.charAt(0) === '\\' ? '*' : '\x02';
 +
      });
 +
    }
 +
  }, {
 +
    key: 'createWildcardsRegExp',
 +
    value: function createWildcardsRegExp(str) {
 +
      var spaces = this.opt.wildcards === 'withSpaces';
 +
      return str.replace(/\u0001/g, spaces ? '[\\S\\s]?' : '\\S?').replace(/\u0002/g, spaces ? '[\\S\\s]*?' : '\\S*');
 +
    }
 +
  }, {
 +
    key: 'setupIgnoreJoinersRegExp',
 +
    value: function setupIgnoreJoinersRegExp(str) {
 +
      return str.replace(/[^(|)\\]/g, function (val, indx, original) {
 +
        var nextChar = original.charAt(indx + 1);
 +
        if (/[(|)\\]/.test(nextChar) || nextChar === '') {
 +
          return val;
 +
        } else {
 +
          return val + '\0';
 +
        }
 +
      });
 +
    }
 +
  }, {
 +
    key: 'createJoinersRegExp',
 +
    value: function createJoinersRegExp(str) {
 +
      var joiner = [];
 +
      var ignorePunctuation = this.opt.ignorePunctuation;
 +
      if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {
 +
        joiner.push(this.escapeStr(ignorePunctuation.join('')));
 +
      }
 +
      if (this.opt.ignoreJoiners) {
 +
        joiner.push('\\u00ad\\u200b\\u200c\\u200d');
 +
      }
 +
      return joiner.length ? str.split(/\u0000+/).join('[' + joiner.join('') + ']*') : str;
 +
    }
 +
  }, {
 +
    key: 'createDiacriticsRegExp',
 +
    value: function createDiacriticsRegExp(str) {
 +
      var sens = this.opt.caseSensitive ? '' : 'i',
 +
          dct = this.opt.caseSensitive ? ['aàáảãạăằắẳẵặâầấẩẫậäåāą', 'AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćč', 'CÇĆČ', 'dđď', 'DĐĎ', 'eèéẻẽẹêềếểễệëěēę', 'EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïī', 'IÌÍỈĨỊÎÏĪ', 'lł', 'LŁ', 'nñňń', 'NÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøō', 'OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rř', 'RŘ', 'sšśșş', 'SŠŚȘŞ', 'tťțţ', 'TŤȚŢ', 'uùúủũụưừứửữựûüůū', 'UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿ', 'YÝỲỶỸỴŸ', 'zžżź', 'ZŽŻŹ'] : ['aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćčCÇĆČ', 'dđďDĐĎ', 'eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïīIÌÍỈĨỊÎÏĪ', 'lłLŁ', 'nñňńNÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rřRŘ', 'sšśșşSŠŚȘŞ', 'tťțţTŤȚŢ', 'uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿYÝỲỶỸỴŸ', 'zžżźZŽŻŹ'];
 +
      var handled = [];
 +
      str.split('').forEach(function (ch) {
 +
        dct.every(function (dct) {
 +
          if (dct.indexOf(ch) !== -1) {
 +
            if (handled.indexOf(dct) > -1) {
 +
              return false;
 +
            }
 +
            str = str.replace(new RegExp('[' + dct + ']', 'gm' + sens), '[' + dct + ']');
 +
            handled.push(dct);
 +
          }
 +
          return true;
 +
        });
 +
      });
 +
      return str;
 +
    }
 +
  }, {
 +
    key: 'createMergedBlanksRegExp',
 +
    value: function createMergedBlanksRegExp(str) {
 +
      return str.replace(/[\s]+/gmi, '[\\s]+');
 +
    }
 +
  }, {
 +
    key: 'createAccuracyRegExp',
 +
    value: function createAccuracyRegExp(str) {
 +
      var _this = this;
 +
 +
      var chars = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~¡¿';
 +
      var acc = this.opt.accuracy,
 +
          val = typeof acc === 'string' ? acc : acc.value,
 +
          ls = typeof acc === 'string' ? [] : acc.limiters,
 +
          lsJoin = '';
 +
      ls.forEach(function (limiter) {
 +
        lsJoin += '|' + _this.escapeStr(limiter);
 +
      });
 +
      switch (val) {
 +
        case 'partially':
 +
        default:
 +
          return '()(' + str + ')';
 +
        case 'complementary':
 +
          lsJoin = '\\s' + (lsJoin ? lsJoin : this.escapeStr(chars));
 +
          return '()([^' + lsJoin + ']*' + str + '[^' + lsJoin + ']*)';
 +
        case 'exactly':
 +
          return '(^|\\s' + lsJoin + ')(' + str + ')(?=$|\\s' + lsJoin + ')';
 +
      }
 +
    }
 +
  }, {
 +
    key: 'getSeparatedKeywords',
 +
    value: function getSeparatedKeywords(sv) {
 +
      var _this2 = this;
 +
 +
      var stack = [];
 +
      sv.forEach(function (kw) {
 +
        if (!_this2.opt.separateWordSearch) {
 +
          if (kw.trim() && stack.indexOf(kw) === -1) {
 +
            stack.push(kw);
 +
          }
 +
        } else {
 +
          kw.split(' ').forEach(function (kwSplitted) {
 +
            if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {
 +
              stack.push(kwSplitted);
 +
            }
 +
          });
 +
        }
 +
      });
 +
      return {
 +
        'keywords': stack.sort(function (a, b) {
 +
          return b.length - a.length;
 +
        }),
 +
        'length': stack.length
 +
      };
 +
    }
 +
  }, {
 +
    key: 'isNumeric',
 +
    value: function isNumeric(value) {
 +
      return Number(parseFloat(value)) == value;
 +
    }
 +
  }, {
 +
    key: 'checkRanges',
 +
    value: function checkRanges(array) {
 +
      var _this3 = this;
 +
 +
      if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== '[object Object]') {
 +
        this.log('markRanges() will only accept an array of objects');
 +
        this.opt.noMatch(array);
 +
        return [];
 +
      }
 +
      var stack = [];
 +
      var last = 0;
 +
      array.sort(function (a, b) {
 +
        return a.start - b.start;
 +
      }).forEach(function (item) {
 +
        var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last),
 +
            start = _callNoMatchOnInvalid.start,
 +
            end = _callNoMatchOnInvalid.end,
 +
            valid = _callNoMatchOnInvalid.valid;
 +
 +
        if (valid) {
 +
          item.start = start;
 +
          item.length = end - start;
 +
          stack.push(item);
 +
          last = end;
 +
        }
 +
      });
 +
      return stack;
 +
    }
 +
  }, {
 +
    key: 'callNoMatchOnInvalidRanges',
 +
    value: function callNoMatchOnInvalidRanges(range, last) {
 +
      var start = void 0,
 +
          end = void 0,
 +
          valid = false;
 +
      if (range && typeof range.start !== 'undefined') {
 +
        start = parseInt(range.start, 10);
 +
        end = start + parseInt(range.length, 10);
 +
        if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) {
 +
          valid = true;
 +
        } else {
 +
          this.log('Ignoring invalid or overlapping range: ' + ('' + JSON.stringify(range)));
 +
          this.opt.noMatch(range);
 +
        }
 +
      } else {
 +
        this.log('Ignoring invalid range: ' + JSON.stringify(range));
 +
        this.opt.noMatch(range);
 +
      }
 +
      return {
 +
        start: start,
 +
        end: end,
 +
        valid: valid
 +
      };
 +
    }
 +
  }, {
 +
    key: 'checkWhitespaceRanges',
 +
    value: function checkWhitespaceRanges(range, originalLength, string) {
 +
      var end = void 0,
 +
          valid = true,
 +
          max = string.length,
 +
          offset = originalLength - max,
 +
          start = parseInt(range.start, 10) - offset;
 +
      start = start > max ? max : start;
 +
      end = start + parseInt(range.length, 10);
 +
      if (end > max) {
 +
        end = max;
 +
        this.log('End range automatically set to the max value of ' + max);
 +
      }
 +
      if (start < 0 || end - start < 0 || start > max || end > max) {
 +
        valid = false;
 +
        this.log('Invalid range: ' + JSON.stringify(range));
 +
        this.opt.noMatch(range);
 +
      } else if (string.substring(start, end).replace(/\s+/g, '') === '') {
 +
        valid = false;
 +
        this.log('Skipping whitespace only range: ' + JSON.stringify(range));
 +
        this.opt.noMatch(range);
 +
      }
 +
      return {
 +
        start: start,
 +
        end: end,
 +
        valid: valid
 +
      };
 +
    }
 +
  }, {
 +
    key: 'getTextNodes',
 +
    value: function getTextNodes(cb) {
 +
      var _this4 = this;
 +
 +
      var val = '',
 +
          nodes = [];
 +
      this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function (node) {
 +
        nodes.push({
 +
          start: val.length,
 +
          end: (val += node.textContent).length,
 +
          node: node
 +
        });
 +
      }, function (node) {
 +
        if (_this4.matchesExclude(node.parentNode)) {
 +
          return NodeFilter.FILTER_REJECT;
 +
        } else {
 +
          return NodeFilter.FILTER_ACCEPT;
 +
        }
 +
      }, function () {
 +
        cb({
 +
          value: val,
 +
          nodes: nodes
 +
        });
 +
      });
 +
    }
 +
  }, {
 +
    key: 'matchesExclude',
 +
    value: function matchesExclude(el) {
 +
      return DOMIterator.matches(el, this.opt.exclude.concat(['script', 'style', 'title', 'head', 'html']));
 +
    }
 +
  }, {
 +
    key: 'wrapRangeInTextNode',
 +
    value: function wrapRangeInTextNode(node, start, end) {
 +
      var hEl = !this.opt.element ? 'mark' : this.opt.element,
 +
          startNode = node.splitText(start),
 +
          ret = startNode.splitText(end - start);
 +
      var repl = document.createElement(hEl);
 +
      repl.setAttribute('data-markjs', 'true');
 +
      if (this.opt.className) {
 +
        repl.setAttribute('class', this.opt.className);
 +
      }
 +
      repl.textContent = startNode.textContent;
 +
      startNode.parentNode.replaceChild(repl, startNode);
 +
      return ret;
 +
    }
 +
  }, {
 +
    key: 'wrapRangeInMappedTextNode',
 +
    value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {
 +
      var _this5 = this;
 +
 +
      dict.nodes.every(function (n, i) {
 +
        var sibl = dict.nodes[i + 1];
 +
        if (typeof sibl === 'undefined' || sibl.start > start) {
 +
          if (!filterCb(n.node)) {
 +
            return false;
 +
          }
 +
          var s = start - n.start,
 +
              e = (end > n.end ? n.end : end) - n.start,
 +
              startStr = dict.value.substr(0, n.start),
 +
              endStr = dict.value.substr(e + n.start);
 +
          n.node = _this5.wrapRangeInTextNode(n.node, s, e);
 +
          dict.value = startStr + endStr;
 +
          dict.nodes.forEach(function (k, j) {
 +
            if (j >= i) {
 +
              if (dict.nodes[j].start > 0 && j !== i) {
 +
                dict.nodes[j].start -= e;
 +
              }
 +
              dict.nodes[j].end -= e;
 +
            }
 +
          });
 +
          end -= e;
 +
          eachCb(n.node.previousSibling, n.start);
 +
          if (end > n.end) {
 +
            start = n.end;
 +
          } else {
 +
            return false;
 +
          }
 +
        }
 +
        return true;
 +
      });
 +
    }
 +
  }, {
 +
    key: 'wrapMatches',
 +
    value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {
 +
      var _this6 = this;
 +
 +
      var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
 +
      this.getTextNodes(function (dict) {
 +
        dict.nodes.forEach(function (node) {
 +
          node = node.node;
 +
          var match = void 0;
 +
          while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== '') {
 +
            if (!filterCb(match[matchIdx], node)) {
 +
              continue;
 +
            }
 +
            var pos = match.index;
 +
            if (matchIdx !== 0) {
 +
              for (var i = 1; i < matchIdx; i++) {
 +
                pos += match[i].length;
 +
              }
 +
            }
 +
            node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);
 +
            eachCb(node.previousSibling);
 +
            regex.lastIndex = 0;
 +
          }
 +
        });
 +
        endCb();
 +
      });
 +
    }
 +
  }, {
 +
    key: 'wrapMatchesAcrossElements',
 +
    value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {
 +
      var _this7 = this;
 +
 +
      var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
 +
      this.getTextNodes(function (dict) {
 +
        var match = void 0;
 +
        while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== '') {
 +
          var start = match.index;
 +
          if (matchIdx !== 0) {
 +
            for (var i = 1; i < matchIdx; i++) {
 +
              start += match[i].length;
 +
            }
 +
          }
 +
          var end = start + match[matchIdx].length;
 +
          _this7.wrapRangeInMappedTextNode(dict, start, end, function (node) {
 +
            return filterCb(match[matchIdx], node);
 +
          }, function (node, lastIndex) {
 +
            regex.lastIndex = lastIndex;
 +
            eachCb(node);
 +
          });
 +
        }
 +
        endCb();
 +
      });
 +
    }
 +
  }, {
 +
    key: 'wrapRangeFromIndex',
 +
    value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {
 +
      var _this8 = this;
 +
 +
      this.getTextNodes(function (dict) {
 +
        var originalLength = dict.value.length;
 +
        ranges.forEach(function (range, counter) {
 +
          var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value),
 +
              start = _checkWhitespaceRange.start,
 +
              end = _checkWhitespaceRange.end,
 +
              valid = _checkWhitespaceRange.valid;
 +
 +
          if (valid) {
 +
            _this8.wrapRangeInMappedTextNode(dict, start, end, function (node) {
 +
              return filterCb(node, range, dict.value.substring(start, end), counter);
 +
            }, function (node) {
 +
              eachCb(node, range);
 +
            });
 +
          }
 +
        });
 +
        endCb();
 +
      });
 +
    }
 +
  }, {
 +
    key: 'unwrapMatches',
 +
    value: function unwrapMatches(node) {
 +
      var parent = node.parentNode;
 +
      var docFrag = document.createDocumentFragment();
 +
      while (node.firstChild) {
 +
        docFrag.appendChild(node.removeChild(node.firstChild));
 +
      }
 +
      parent.replaceChild(docFrag, node);
 +
      if (!this.ie) {
 +
        parent.normalize();
 +
      } else {
 +
        this.normalizeTextNode(parent);
 +
      }
 +
    }
 +
  }, {
 +
    key: 'normalizeTextNode',
 +
    value: function normalizeTextNode(node) {
 +
      if (!node) {
 +
        return;
 +
      }
 +
      if (node.nodeType === 3) {
 +
        while (node.nextSibling && node.nextSibling.nodeType === 3) {
 +
          node.nodeValue += node.nextSibling.nodeValue;
 +
          node.parentNode.removeChild(node.nextSibling);
 +
        }
 +
      } else {
 +
        this.normalizeTextNode(node.firstChild);
 +
      }
 +
      this.normalizeTextNode(node.nextSibling);
 +
    }
 +
  }, {
 +
    key: 'markRegExp',
 +
    value: function markRegExp(regexp, opt) {
 +
      var _this9 = this;
 +
 +
      this.opt = opt;
 +
      this.log('Searching with expression "' + regexp + '"');
 +
      var totalMatches = 0,
 +
          fn = 'wrapMatches';
 +
      var eachCb = function eachCb(element) {
 +
        totalMatches++;
 +
        _this9.opt.each(element);
 +
      };
 +
      if (this.opt.acrossElements) {
 +
        fn = 'wrapMatchesAcrossElements';
 +
      }
 +
      this[fn](regexp, this.opt.ignoreGroups, function (match, node) {
 +
        return _this9.opt.filter(node, match, totalMatches);
 +
      }, eachCb, function () {
 +
        if (totalMatches === 0) {
 +
          _this9.opt.noMatch(regexp);
 +
        }
 +
        _this9.opt.done(totalMatches);
 +
      });
 +
    }
 +
  }, {
 +
    key: 'mark',
 +
    value: function mark(sv, opt) {
 +
      var _this10 = this;
 +
 +
      this.opt = opt;
 +
      var totalMatches = 0,
 +
          fn = 'wrapMatches';
 +
 +
      var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === 'string' ? [sv] : sv),
 +
          kwArr = _getSeparatedKeywords.keywords,
 +
          kwArrLen = _getSeparatedKeywords.length,
 +
          sens = this.opt.caseSensitive ? '' : 'i',
 +
          handler = function handler(kw) {
 +
        var regex = new RegExp(_this10.createRegExp(kw), 'gm' + sens),
 +
            matches = 0;
 +
        _this10.log('Searching with expression "' + regex + '"');
 +
        _this10[fn](regex, 1, function (term, node) {
 +
          return _this10.opt.filter(node, kw, totalMatches, matches);
 +
        }, function (element) {
 +
          matches++;
 +
          totalMatches++;
 +
          _this10.opt.each(element);
 +
        }, function () {
 +
          if (matches === 0) {
 +
            _this10.opt.noMatch(kw);
 +
          }
 +
          if (kwArr[kwArrLen - 1] === kw) {
 +
            _this10.opt.done(totalMatches);
 +
          } else {
 +
            handler(kwArr[kwArr.indexOf(kw) + 1]);
 +
          }
 +
        });
 +
      };
 +
 +
      if (this.opt.acrossElements) {
 +
        fn = 'wrapMatchesAcrossElements';
 +
      }
 +
      if (kwArrLen === 0) {
 +
        this.opt.done(totalMatches);
 +
      } else {
 +
        handler(kwArr[0]);
 +
      }
 +
    }
 +
  }, {
 +
    key: 'markRanges',
 +
    value: function markRanges(rawRanges, opt) {
 +
      var _this11 = this;
 +
 +
      this.opt = opt;
 +
      var totalMatches = 0,
 +
          ranges = this.checkRanges(rawRanges);
 +
      if (ranges && ranges.length) {
 +
        this.log('Starting to mark with the following ranges: ' + JSON.stringify(ranges));
 +
        this.wrapRangeFromIndex(ranges, function (node, range, match, counter) {
 +
          return _this11.opt.filter(node, range, match, counter);
 +
        }, function (element, range) {
 +
          totalMatches++;
 +
          _this11.opt.each(element, range);
 +
        }, function () {
 +
          _this11.opt.done(totalMatches);
 +
        });
 +
      } else {
 +
        this.opt.done(totalMatches);
 +
      }
 +
    }
 +
  }, {
 +
    key: 'unmark',
 +
    value: function unmark(opt) {
 +
      var _this12 = this;
 +
 +
      this.opt = opt;
 +
      var sel = this.opt.element ? this.opt.element : '*';
 +
      sel += '[data-markjs]';
 +
      if (this.opt.className) {
 +
        sel += '.' + this.opt.className;
 +
      }
 +
      this.log('Removal selector "' + sel + '"');
 +
      this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function (node) {
 +
        _this12.unwrapMatches(node);
 +
      }, function (node) {
 +
        var matchesSel = DOMIterator.matches(node, sel),
 +
            matchesExclude = _this12.matchesExclude(node);
 +
        if (!matchesSel || matchesExclude) {
 +
          return NodeFilter.FILTER_REJECT;
 +
        } else {
 +
          return NodeFilter.FILTER_ACCEPT;
 +
        }
 +
      }, this.opt.done);
 +
    }
 +
  }, {
 +
    key: 'opt',
 +
    set: function set$$1(val) {
 +
      this._opt = _extends({}, {
 +
        'element': '',
 +
        'className': '',
 +
        'exclude': [],
 +
        'iframes': false,
 +
        'iframesTimeout': 5000,
 +
        'separateWordSearch': true,
 +
        'diacritics': true,
 +
        'synonyms': {},
 +
        'accuracy': 'partially',
 +
        'acrossElements': false,
 +
        'caseSensitive': false,
 +
        'ignoreJoiners': false,
 +
        'ignoreGroups': 0,
 +
        'ignorePunctuation': [],
 +
        'wildcards': 'disabled',
 +
        'each': function each() {},
 +
        'noMatch': function noMatch() {},
 +
        'filter': function filter() {
 +
          return true;
 +
        },
 +
        'done': function done() {},
 +
        'debug': false,
 +
        'log': window.console
 +
      }, val);
 +
    },
 +
    get: function get$$1() {
 +
      return this._opt;
 +
    }
 +
  }, {
 +
    key: 'iterator',
 +
    get: function get$$1() {
 +
      return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout);
 +
    }
 +
  }]);
 +
  return Mark;
 +
}();
 +
 +
$.fn.mark = function (sv, opt) {
 +
  new Mark(this.get()).mark(sv, opt);
 +
  return this;
 +
};
 +
$.fn.markRegExp = function (regexp, opt) {
 +
  new Mark(this.get()).markRegExp(regexp, opt);
 +
  return this;
 +
};
 +
$.fn.markRanges = function (ranges, opt) {
 +
  new Mark(this.get()).markRanges(ranges, opt);
 +
  return this;
 +
};
 +
$.fn.unmark = function (opt) {
 +
  new Mark(this.get()).unmark(opt);
 +
  return this;
 +
};
 +
 +
return $;
 +
 +
})));
 +
}( jQuery ) );
 +
 +
/* סינון מונחון */
 +
$(function() {
 +
  var $input = $("input[name='keyword']"),
 +
    $context = $("#context ul li");
 +
  $outofcontext = $("#context h3 "),
 +
  $input.on("input", function() {
 +
    var term = $(this).val();
 +
    $context.show().unmark();
 +
    if (term) {
 +
      $context.mark(term, {
 +
        done: function() {
 +
          $context.not(":has(mark)").hide();
 +
          $outofcontext.hide();
 +
        }
 +
      });
 +
    }  else {
 +
          $outofcontext.show();
 +
    }
 +
  });
 +
});

גרסה מ־13:46, 20 באוגוסט 2018

// menu
window.onload=function(){
var d1 = document.getElementById( 'mw-mf-page-left' ).getElementsByTagName( 'ul' )[0];
d1.insertAdjacentHTML('beforeend', '<li><a href="/wiki/פורטלים" class="icon-portal icon icon-text" id="portalButton">פורטלים</a></li><li><a href="/blog" class="icon-blog icon icon-text" id="blogButton">בלוג</a></li><li><a href="/wiki/ייעוץ_אסטרטגי" class="icon-strat icon  icon-text" id="stratButton">ייעוץ אסטרטגי</a></li><li><a href="/wiki/קורסים_והכשרות" class="icon-course icon  icon-text" id="courseButton">קורסים והכשרות</a></li><li><a href="/#contact" class="icon-contact icon icon-text" id="contactButton">צור קשר</a></li><li id="contact-icons"><a href="tel:+972544702895" class="icon-phone icon-text" id="phoneButton"></a><a href="//www.facebook.com/doalogue" class="icon-facebook icon-text" id="FBButton"></a><a href="//twitter.com/doalogue" class="icon-twitter icon-text" id="twitterButton"></a><a href="//linkedin.com/company/doalogue" class="icon-linkedin icon-text" id="twitterButton"></a></li>');
}
// banner

$( document ).ready(function(){
$('head').append('<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" type="text/css" /><meta name="theme-color" content="#52A3F6"><meta name="msapplication-navbutton-color" content="#52A3F6"><meta name="apple-mobile-web-app-status-bar-style" content="#52A3F6">');
if ($('#image-banner').length > 0) { 
$('#image-banner').css('background-image', 'url(' + $('.image img').attr('src') + ')').css('opacity', '1');

var PageHead = document.getElementById("section_0");
// Copy the element and its child nodes
var clnPageHead = PageHead.cloneNode(true);
var PageHeader = document.getElementById("image-banner");
var clnPageHeader = PageHeader.cloneNode(true);


if ($('.image').length > 0) {    
    document.getElementById("image-banner").remove();    
    $(".header").after(clnPageHeader);
document.getElementById("section_0").remove();    
document.getElementById("newHeading").appendChild(clnPageHead);
}
}
});

if (typeof jQuery != 'undefined') {
  jQuery(document).ready(function($) {
    var filetypes = /\.(zip|exe|dmg|pdf|doc.*|xls.*|ppt.*|mp3|txt|rar|wma|mov|avi|wmv|flv|wav)$/i;
    var baseHref = '';
    if (jQuery('base').attr('href') != undefined) baseHref = jQuery('base').attr('href');

    jQuery('a').on('click', function(event) {
      var el = jQuery(this);
      var track = true;
      var href = (typeof(el.attr('href')) != 'undefined' ) ? el.attr('href') :"";
      var isThisDomain = href.match(document.domain.split('.').reverse()[1] + '.' + document.domain.split('.').reverse()[0]);
      if (!href.match(/^javascript:/i)) {
    	var elEv = []; elEv.value=0, elEv.non_i=false;
        if (href.match(/^mailto\:/i)) {
          elEv.category = "email";
          elEv.action = "click";
          elEv.label = href.replace(/^mailto\:/i, '');
          elEv.loc = href;
        }
        else if (href.match(filetypes)) {
          var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
          elEv.category = "download";
          elEv.action = "click-" + extension[0];
          elEv.label = href.replace(/ /g,"-");
          elEv.loc = baseHref + href;
        }
        else if (href.match(/^https?\:/i) && !isThisDomain) {
          elEv.category = "external";
          elEv.action = "click";
          elEv.label = href.replace(/^https?\:\/\//i, '');
          elEv.non_i = true;
          elEv.loc = href;
        }
        else if (href.match(/^tel\:/i)) {
          elEv.category = "telephone";
          elEv.action = "click";
          elEv.label = href.replace(/^tel\:/i, '');
          elEv.loc = href;
        }
        else track = false;

       	if (track) {
          _gaq.push(['_trackEvent', elEv.category.toLowerCase(), elEv.action.toLowerCase(), elEv.label.toLowerCase(), elEv.value, elEv.non_i]);
          if ( el.attr('target') == undefined || el.attr('target').toLowerCase() != '_blank') {
            setTimeout(function() { location.href = elEv.loc; }, 400);
            return false;
	  }
	}
      }
    });
  });
}

/*!***************************************************
 * mark.js v8.6.0
 * https://github.com/julmot/mark.js
 * Copyright (c) 2014–2017, Julian Motz
 * Released under the MIT license https://git.io/vwTVl
 *****************************************************/
 ( function ( $ ) {
   /*!***************************************************
 * mark.js v8.11.1
 * https://markjs.io/
 * Copyright (c) 2014–2018, Julian Kühnel
 * Released under the MIT license https://git.io/vwTVl
 *****************************************************/

 (function (global, factory) {
 	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
 	typeof define === 'function' && define.amd ? define(['jquery'], factory) :
 	(global.Mark = factory(global.jQuery));
 }(this, (function ($) { 'use strict';

 $ = $ && $.hasOwnProperty('default') ? $['default'] : $;

 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
   return typeof obj;
 } : function (obj) {
   return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
 };











 var classCallCheck = function (instance, Constructor) {
   if (!(instance instanceof Constructor)) {
     throw new TypeError("Cannot call a class as a function");
   }
 };

 var createClass = function () {
   function defineProperties(target, props) {
     for (var i = 0; i < props.length; i++) {
       var descriptor = props[i];
       descriptor.enumerable = descriptor.enumerable || false;
       descriptor.configurable = true;
       if ("value" in descriptor) descriptor.writable = true;
       Object.defineProperty(target, descriptor.key, descriptor);
     }
   }

   return function (Constructor, protoProps, staticProps) {
     if (protoProps) defineProperties(Constructor.prototype, protoProps);
     if (staticProps) defineProperties(Constructor, staticProps);
     return Constructor;
   };
 }();







 var _extends = Object.assign || function (target) {
   for (var i = 1; i < arguments.length; i++) {
     var source = arguments[i];

     for (var key in source) {
       if (Object.prototype.hasOwnProperty.call(source, key)) {
         target[key] = source[key];
       }
     }
   }

   return target;
 };

 var DOMIterator = function () {
   function DOMIterator(ctx) {
     var iframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
     var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
     var iframesTimeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5000;
     classCallCheck(this, DOMIterator);

     this.ctx = ctx;
     this.iframes = iframes;
     this.exclude = exclude;
     this.iframesTimeout = iframesTimeout;
   }

   createClass(DOMIterator, [{
     key: 'getContexts',
     value: function getContexts() {
       var ctx = void 0,
           filteredCtx = [];
       if (typeof this.ctx === 'undefined' || !this.ctx) {
         ctx = [];
       } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {
         ctx = Array.prototype.slice.call(this.ctx);
       } else if (Array.isArray(this.ctx)) {
         ctx = this.ctx;
       } else if (typeof this.ctx === 'string') {
         ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));
       } else {
         ctx = [this.ctx];
       }
       ctx.forEach(function (ctx) {
         var isDescendant = filteredCtx.filter(function (contexts) {
           return contexts.contains(ctx);
         }).length > 0;
         if (filteredCtx.indexOf(ctx) === -1 && !isDescendant) {
           filteredCtx.push(ctx);
         }
       });
       return filteredCtx;
     }
   }, {
     key: 'getIframeContents',
     value: function getIframeContents(ifr, successFn) {
       var errorFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};

       var doc = void 0;
       try {
         var ifrWin = ifr.contentWindow;
         doc = ifrWin.document;
         if (!ifrWin || !doc) {
           throw new Error('iframe inaccessible');
         }
       } catch (e) {
         errorFn();
       }
       if (doc) {
         successFn(doc);
       }
     }
   }, {
     key: 'isIframeBlank',
     value: function isIframeBlank(ifr) {
       var bl = 'about:blank',
           src = ifr.getAttribute('src').trim(),
           href = ifr.contentWindow.location.href;
       return href === bl && src !== bl && src;
     }
   }, {
     key: 'observeIframeLoad',
     value: function observeIframeLoad(ifr, successFn, errorFn) {
       var _this = this;

       var called = false,
           tout = null;
       var listener = function listener() {
         if (called) {
           return;
         }
         called = true;
         clearTimeout(tout);
         try {
           if (!_this.isIframeBlank(ifr)) {
             ifr.removeEventListener('load', listener);
             _this.getIframeContents(ifr, successFn, errorFn);
           }
         } catch (e) {
           errorFn();
         }
       };
       ifr.addEventListener('load', listener);
       tout = setTimeout(listener, this.iframesTimeout);
     }
   }, {
     key: 'onIframeReady',
     value: function onIframeReady(ifr, successFn, errorFn) {
       try {
         if (ifr.contentWindow.document.readyState === 'complete') {
           if (this.isIframeBlank(ifr)) {
             this.observeIframeLoad(ifr, successFn, errorFn);
           } else {
             this.getIframeContents(ifr, successFn, errorFn);
           }
         } else {
           this.observeIframeLoad(ifr, successFn, errorFn);
         }
       } catch (e) {
         errorFn();
       }
     }
   }, {
     key: 'waitForIframes',
     value: function waitForIframes(ctx, done) {
       var _this2 = this;

       var eachCalled = 0;
       this.forEachIframe(ctx, function () {
         return true;
       }, function (ifr) {
         eachCalled++;
         _this2.waitForIframes(ifr.querySelector('html'), function () {
           if (! --eachCalled) {
             done();
           }
         });
       }, function (handled) {
         if (!handled) {
           done();
         }
       });
     }
   }, {
     key: 'forEachIframe',
     value: function forEachIframe(ctx, filter, each) {
       var _this3 = this;

       var end = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};

       var ifr = ctx.querySelectorAll('iframe'),
           open = ifr.length,
           handled = 0;
       ifr = Array.prototype.slice.call(ifr);
       var checkEnd = function checkEnd() {
         if (--open <= 0) {
           end(handled);
         }
       };
       if (!open) {
         checkEnd();
       }
       ifr.forEach(function (ifr) {
         if (DOMIterator.matches(ifr, _this3.exclude)) {
           checkEnd();
         } else {
           _this3.onIframeReady(ifr, function (con) {
             if (filter(ifr)) {
               handled++;
               each(con);
             }
             checkEnd();
           }, checkEnd);
         }
       });
     }
   }, {
     key: 'createIterator',
     value: function createIterator(ctx, whatToShow, filter) {
       return document.createNodeIterator(ctx, whatToShow, filter, false);
     }
   }, {
     key: 'createInstanceOnIframe',
     value: function createInstanceOnIframe(contents) {
       return new DOMIterator(contents.querySelector('html'), this.iframes);
     }
   }, {
     key: 'compareNodeIframe',
     value: function compareNodeIframe(node, prevNode, ifr) {
       var compCurr = node.compareDocumentPosition(ifr),
           prev = Node.DOCUMENT_POSITION_PRECEDING;
       if (compCurr & prev) {
         if (prevNode !== null) {
           var compPrev = prevNode.compareDocumentPosition(ifr),
               after = Node.DOCUMENT_POSITION_FOLLOWING;
           if (compPrev & after) {
             return true;
           }
         } else {
           return true;
         }
       }
       return false;
     }
   }, {
     key: 'getIteratorNode',
     value: function getIteratorNode(itr) {
       var prevNode = itr.previousNode();
       var node = void 0;
       if (prevNode === null) {
         node = itr.nextNode();
       } else {
         node = itr.nextNode() && itr.nextNode();
       }
       return {
         prevNode: prevNode,
         node: node
       };
     }
   }, {
     key: 'checkIframeFilter',
     value: function checkIframeFilter(node, prevNode, currIfr, ifr) {
       var key = false,
           handled = false;
       ifr.forEach(function (ifrDict, i) {
         if (ifrDict.val === currIfr) {
           key = i;
           handled = ifrDict.handled;
         }
       });
       if (this.compareNodeIframe(node, prevNode, currIfr)) {
         if (key === false && !handled) {
           ifr.push({
             val: currIfr,
             handled: true
           });
         } else if (key !== false && !handled) {
           ifr[key].handled = true;
         }
         return true;
       }
       if (key === false) {
         ifr.push({
           val: currIfr,
           handled: false
         });
       }
       return false;
     }
   }, {
     key: 'handleOpenIframes',
     value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {
       var _this4 = this;

       ifr.forEach(function (ifrDict) {
         if (!ifrDict.handled) {
           _this4.getIframeContents(ifrDict.val, function (con) {
             _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);
           });
         }
       });
     }
   }, {
     key: 'iterateThroughNodes',
     value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {
       var _this5 = this;

       var itr = this.createIterator(ctx, whatToShow, filterCb);
       var ifr = [],
           elements = [],
           node = void 0,
           prevNode = void 0,
           retrieveNodes = function retrieveNodes() {
         var _getIteratorNode = _this5.getIteratorNode(itr);

         prevNode = _getIteratorNode.prevNode;
         node = _getIteratorNode.node;

         return node;
       };
       while (retrieveNodes()) {
         if (this.iframes) {
           this.forEachIframe(ctx, function (currIfr) {
             return _this5.checkIframeFilter(node, prevNode, currIfr, ifr);
           }, function (con) {
             _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function (ifrNode) {
               return elements.push(ifrNode);
             }, filterCb);
           });
         }
         elements.push(node);
       }
       elements.forEach(function (node) {
         eachCb(node);
       });
       if (this.iframes) {
         this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);
       }
       doneCb();
     }
   }, {
     key: 'forEachNode',
     value: function forEachNode(whatToShow, each, filter) {
       var _this6 = this;

       var done = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};

       var contexts = this.getContexts();
       var open = contexts.length;
       if (!open) {
         done();
       }
       contexts.forEach(function (ctx) {
         var ready = function ready() {
           _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function () {
             if (--open <= 0) {
               done();
             }
           });
         };
         if (_this6.iframes) {
           _this6.waitForIframes(ctx, ready);
         } else {
           ready();
         }
       });
     }
   }], [{
     key: 'matches',
     value: function matches(element, selector) {
       var selectors = typeof selector === 'string' ? [selector] : selector,
           fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;
       if (fn) {
         var match = false;
         selectors.every(function (sel) {
           if (fn.call(element, sel)) {
             match = true;
             return false;
           }
           return true;
         });
         return match;
       } else {
         return false;
       }
     }
   }]);
   return DOMIterator;
 }();

 var Mark = function () {
   function Mark(ctx) {
     classCallCheck(this, Mark);

     this.ctx = ctx;
     this.ie = false;
     var ua = window.navigator.userAgent;
     if (ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1) {
       this.ie = true;
     }
   }

   createClass(Mark, [{
     key: 'log',
     value: function log(msg) {
       var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'debug';

       var log = this.opt.log;
       if (!this.opt.debug) {
         return;
       }
       if ((typeof log === 'undefined' ? 'undefined' : _typeof(log)) === 'object' && typeof log[level] === 'function') {
         log[level]('mark.js: ' + msg);
       }
     }
   }, {
     key: 'escapeStr',
     value: function escapeStr(str) {
       return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
     }
   }, {
     key: 'createRegExp',
     value: function createRegExp(str) {
       if (this.opt.wildcards !== 'disabled') {
         str = this.setupWildcardsRegExp(str);
       }
       str = this.escapeStr(str);
       if (Object.keys(this.opt.synonyms).length) {
         str = this.createSynonymsRegExp(str);
       }
       if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
         str = this.setupIgnoreJoinersRegExp(str);
       }
       if (this.opt.diacritics) {
         str = this.createDiacriticsRegExp(str);
       }
       str = this.createMergedBlanksRegExp(str);
       if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
         str = this.createJoinersRegExp(str);
       }
       if (this.opt.wildcards !== 'disabled') {
         str = this.createWildcardsRegExp(str);
       }
       str = this.createAccuracyRegExp(str);
       return str;
     }
   }, {
     key: 'createSynonymsRegExp',
     value: function createSynonymsRegExp(str) {
       var syn = this.opt.synonyms,
           sens = this.opt.caseSensitive ? '' : 'i',
           joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? '\0' : '';
       for (var index in syn) {
         if (syn.hasOwnProperty(index)) {
           var value = syn[index],
               k1 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(index) : this.escapeStr(index),
               k2 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(value) : this.escapeStr(value);
           if (k1 !== '' && k2 !== '') {
             str = str.replace(new RegExp('(' + this.escapeStr(k1) + '|' + this.escapeStr(k2) + ')', 'gm' + sens), joinerPlaceholder + ('(' + this.processSynomyms(k1) + '|') + (this.processSynomyms(k2) + ')') + joinerPlaceholder);
           }
         }
       }
       return str;
     }
   }, {
     key: 'processSynomyms',
     value: function processSynomyms(str) {
       if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
         str = this.setupIgnoreJoinersRegExp(str);
       }
       return str;
     }
   }, {
     key: 'setupWildcardsRegExp',
     value: function setupWildcardsRegExp(str) {
       str = str.replace(/(?:\\)*\?/g, function (val) {
         return val.charAt(0) === '\\' ? '?' : '\x01';
       });
       return str.replace(/(?:\\)*\*/g, function (val) {
         return val.charAt(0) === '\\' ? '*' : '\x02';
       });
     }
   }, {
     key: 'createWildcardsRegExp',
     value: function createWildcardsRegExp(str) {
       var spaces = this.opt.wildcards === 'withSpaces';
       return str.replace(/\u0001/g, spaces ? '[\\S\\s]?' : '\\S?').replace(/\u0002/g, spaces ? '[\\S\\s]*?' : '\\S*');
     }
   }, {
     key: 'setupIgnoreJoinersRegExp',
     value: function setupIgnoreJoinersRegExp(str) {
       return str.replace(/[^(|)\\]/g, function (val, indx, original) {
         var nextChar = original.charAt(indx + 1);
         if (/[(|)\\]/.test(nextChar) || nextChar === '') {
           return val;
         } else {
           return val + '\0';
         }
       });
     }
   }, {
     key: 'createJoinersRegExp',
     value: function createJoinersRegExp(str) {
       var joiner = [];
       var ignorePunctuation = this.opt.ignorePunctuation;
       if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {
         joiner.push(this.escapeStr(ignorePunctuation.join('')));
       }
       if (this.opt.ignoreJoiners) {
         joiner.push('\\u00ad\\u200b\\u200c\\u200d');
       }
       return joiner.length ? str.split(/\u0000+/).join('[' + joiner.join('') + ']*') : str;
     }
   }, {
     key: 'createDiacriticsRegExp',
     value: function createDiacriticsRegExp(str) {
       var sens = this.opt.caseSensitive ? '' : 'i',
           dct = this.opt.caseSensitive ? ['aàáảãạăằắẳẵặâầấẩẫậäåāą', 'AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćč', 'CÇĆČ', 'dđď', 'DĐĎ', 'eèéẻẽẹêềếểễệëěēę', 'EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïī', 'IÌÍỈĨỊÎÏĪ', 'lł', 'LŁ', 'nñňń', 'NÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøō', 'OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rř', 'RŘ', 'sšśșş', 'SŠŚȘŞ', 'tťțţ', 'TŤȚŢ', 'uùúủũụưừứửữựûüůū', 'UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿ', 'YÝỲỶỸỴŸ', 'zžżź', 'ZŽŻŹ'] : ['aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćčCÇĆČ', 'dđďDĐĎ', 'eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïīIÌÍỈĨỊÎÏĪ', 'lłLŁ', 'nñňńNÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rřRŘ', 'sšśșşSŠŚȘŞ', 'tťțţTŤȚŢ', 'uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿYÝỲỶỸỴŸ', 'zžżźZŽŻŹ'];
       var handled = [];
       str.split('').forEach(function (ch) {
         dct.every(function (dct) {
           if (dct.indexOf(ch) !== -1) {
             if (handled.indexOf(dct) > -1) {
               return false;
             }
             str = str.replace(new RegExp('[' + dct + ']', 'gm' + sens), '[' + dct + ']');
             handled.push(dct);
           }
           return true;
         });
       });
       return str;
     }
   }, {
     key: 'createMergedBlanksRegExp',
     value: function createMergedBlanksRegExp(str) {
       return str.replace(/[\s]+/gmi, '[\\s]+');
     }
   }, {
     key: 'createAccuracyRegExp',
     value: function createAccuracyRegExp(str) {
       var _this = this;

       var chars = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~¡¿';
       var acc = this.opt.accuracy,
           val = typeof acc === 'string' ? acc : acc.value,
           ls = typeof acc === 'string' ? [] : acc.limiters,
           lsJoin = '';
       ls.forEach(function (limiter) {
         lsJoin += '|' + _this.escapeStr(limiter);
       });
       switch (val) {
         case 'partially':
         default:
           return '()(' + str + ')';
         case 'complementary':
           lsJoin = '\\s' + (lsJoin ? lsJoin : this.escapeStr(chars));
           return '()([^' + lsJoin + ']*' + str + '[^' + lsJoin + ']*)';
         case 'exactly':
           return '(^|\\s' + lsJoin + ')(' + str + ')(?=$|\\s' + lsJoin + ')';
       }
     }
   }, {
     key: 'getSeparatedKeywords',
     value: function getSeparatedKeywords(sv) {
       var _this2 = this;

       var stack = [];
       sv.forEach(function (kw) {
         if (!_this2.opt.separateWordSearch) {
           if (kw.trim() && stack.indexOf(kw) === -1) {
             stack.push(kw);
           }
         } else {
           kw.split(' ').forEach(function (kwSplitted) {
             if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {
               stack.push(kwSplitted);
             }
           });
         }
       });
       return {
         'keywords': stack.sort(function (a, b) {
           return b.length - a.length;
         }),
         'length': stack.length
       };
     }
   }, {
     key: 'isNumeric',
     value: function isNumeric(value) {
       return Number(parseFloat(value)) == value;
     }
   }, {
     key: 'checkRanges',
     value: function checkRanges(array) {
       var _this3 = this;

       if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== '[object Object]') {
         this.log('markRanges() will only accept an array of objects');
         this.opt.noMatch(array);
         return [];
       }
       var stack = [];
       var last = 0;
       array.sort(function (a, b) {
         return a.start - b.start;
       }).forEach(function (item) {
         var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last),
             start = _callNoMatchOnInvalid.start,
             end = _callNoMatchOnInvalid.end,
             valid = _callNoMatchOnInvalid.valid;

         if (valid) {
           item.start = start;
           item.length = end - start;
           stack.push(item);
           last = end;
         }
       });
       return stack;
     }
   }, {
     key: 'callNoMatchOnInvalidRanges',
     value: function callNoMatchOnInvalidRanges(range, last) {
       var start = void 0,
           end = void 0,
           valid = false;
       if (range && typeof range.start !== 'undefined') {
         start = parseInt(range.start, 10);
         end = start + parseInt(range.length, 10);
         if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) {
           valid = true;
         } else {
           this.log('Ignoring invalid or overlapping range: ' + ('' + JSON.stringify(range)));
           this.opt.noMatch(range);
         }
       } else {
         this.log('Ignoring invalid range: ' + JSON.stringify(range));
         this.opt.noMatch(range);
       }
       return {
         start: start,
         end: end,
         valid: valid
       };
     }
   }, {
     key: 'checkWhitespaceRanges',
     value: function checkWhitespaceRanges(range, originalLength, string) {
       var end = void 0,
           valid = true,
           max = string.length,
           offset = originalLength - max,
           start = parseInt(range.start, 10) - offset;
       start = start > max ? max : start;
       end = start + parseInt(range.length, 10);
       if (end > max) {
         end = max;
         this.log('End range automatically set to the max value of ' + max);
       }
       if (start < 0 || end - start < 0 || start > max || end > max) {
         valid = false;
         this.log('Invalid range: ' + JSON.stringify(range));
         this.opt.noMatch(range);
       } else if (string.substring(start, end).replace(/\s+/g, '') === '') {
         valid = false;
         this.log('Skipping whitespace only range: ' + JSON.stringify(range));
         this.opt.noMatch(range);
       }
       return {
         start: start,
         end: end,
         valid: valid
       };
     }
   }, {
     key: 'getTextNodes',
     value: function getTextNodes(cb) {
       var _this4 = this;

       var val = '',
           nodes = [];
       this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function (node) {
         nodes.push({
           start: val.length,
           end: (val += node.textContent).length,
           node: node
         });
       }, function (node) {
         if (_this4.matchesExclude(node.parentNode)) {
           return NodeFilter.FILTER_REJECT;
         } else {
           return NodeFilter.FILTER_ACCEPT;
         }
       }, function () {
         cb({
           value: val,
           nodes: nodes
         });
       });
     }
   }, {
     key: 'matchesExclude',
     value: function matchesExclude(el) {
       return DOMIterator.matches(el, this.opt.exclude.concat(['script', 'style', 'title', 'head', 'html']));
     }
   }, {
     key: 'wrapRangeInTextNode',
     value: function wrapRangeInTextNode(node, start, end) {
       var hEl = !this.opt.element ? 'mark' : this.opt.element,
           startNode = node.splitText(start),
           ret = startNode.splitText(end - start);
       var repl = document.createElement(hEl);
       repl.setAttribute('data-markjs', 'true');
       if (this.opt.className) {
         repl.setAttribute('class', this.opt.className);
       }
       repl.textContent = startNode.textContent;
       startNode.parentNode.replaceChild(repl, startNode);
       return ret;
     }
   }, {
     key: 'wrapRangeInMappedTextNode',
     value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {
       var _this5 = this;

       dict.nodes.every(function (n, i) {
         var sibl = dict.nodes[i + 1];
         if (typeof sibl === 'undefined' || sibl.start > start) {
           if (!filterCb(n.node)) {
             return false;
           }
           var s = start - n.start,
               e = (end > n.end ? n.end : end) - n.start,
               startStr = dict.value.substr(0, n.start),
               endStr = dict.value.substr(e + n.start);
           n.node = _this5.wrapRangeInTextNode(n.node, s, e);
           dict.value = startStr + endStr;
           dict.nodes.forEach(function (k, j) {
             if (j >= i) {
               if (dict.nodes[j].start > 0 && j !== i) {
                 dict.nodes[j].start -= e;
               }
               dict.nodes[j].end -= e;
             }
           });
           end -= e;
           eachCb(n.node.previousSibling, n.start);
           if (end > n.end) {
             start = n.end;
           } else {
             return false;
           }
         }
         return true;
       });
     }
   }, {
     key: 'wrapMatches',
     value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {
       var _this6 = this;

       var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
       this.getTextNodes(function (dict) {
         dict.nodes.forEach(function (node) {
           node = node.node;
           var match = void 0;
           while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== '') {
             if (!filterCb(match[matchIdx], node)) {
               continue;
             }
             var pos = match.index;
             if (matchIdx !== 0) {
               for (var i = 1; i < matchIdx; i++) {
                 pos += match[i].length;
               }
             }
             node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);
             eachCb(node.previousSibling);
             regex.lastIndex = 0;
           }
         });
         endCb();
       });
     }
   }, {
     key: 'wrapMatchesAcrossElements',
     value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {
       var _this7 = this;

       var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
       this.getTextNodes(function (dict) {
         var match = void 0;
         while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== '') {
           var start = match.index;
           if (matchIdx !== 0) {
             for (var i = 1; i < matchIdx; i++) {
               start += match[i].length;
             }
           }
           var end = start + match[matchIdx].length;
           _this7.wrapRangeInMappedTextNode(dict, start, end, function (node) {
             return filterCb(match[matchIdx], node);
           }, function (node, lastIndex) {
             regex.lastIndex = lastIndex;
             eachCb(node);
           });
         }
         endCb();
       });
     }
   }, {
     key: 'wrapRangeFromIndex',
     value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {
       var _this8 = this;

       this.getTextNodes(function (dict) {
         var originalLength = dict.value.length;
         ranges.forEach(function (range, counter) {
           var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value),
               start = _checkWhitespaceRange.start,
               end = _checkWhitespaceRange.end,
               valid = _checkWhitespaceRange.valid;

           if (valid) {
             _this8.wrapRangeInMappedTextNode(dict, start, end, function (node) {
               return filterCb(node, range, dict.value.substring(start, end), counter);
             }, function (node) {
               eachCb(node, range);
             });
           }
         });
         endCb();
       });
     }
   }, {
     key: 'unwrapMatches',
     value: function unwrapMatches(node) {
       var parent = node.parentNode;
       var docFrag = document.createDocumentFragment();
       while (node.firstChild) {
         docFrag.appendChild(node.removeChild(node.firstChild));
       }
       parent.replaceChild(docFrag, node);
       if (!this.ie) {
         parent.normalize();
       } else {
         this.normalizeTextNode(parent);
       }
     }
   }, {
     key: 'normalizeTextNode',
     value: function normalizeTextNode(node) {
       if (!node) {
         return;
       }
       if (node.nodeType === 3) {
         while (node.nextSibling && node.nextSibling.nodeType === 3) {
           node.nodeValue += node.nextSibling.nodeValue;
           node.parentNode.removeChild(node.nextSibling);
         }
       } else {
         this.normalizeTextNode(node.firstChild);
       }
       this.normalizeTextNode(node.nextSibling);
     }
   }, {
     key: 'markRegExp',
     value: function markRegExp(regexp, opt) {
       var _this9 = this;

       this.opt = opt;
       this.log('Searching with expression "' + regexp + '"');
       var totalMatches = 0,
           fn = 'wrapMatches';
       var eachCb = function eachCb(element) {
         totalMatches++;
         _this9.opt.each(element);
       };
       if (this.opt.acrossElements) {
         fn = 'wrapMatchesAcrossElements';
       }
       this[fn](regexp, this.opt.ignoreGroups, function (match, node) {
         return _this9.opt.filter(node, match, totalMatches);
       }, eachCb, function () {
         if (totalMatches === 0) {
           _this9.opt.noMatch(regexp);
         }
         _this9.opt.done(totalMatches);
       });
     }
   }, {
     key: 'mark',
     value: function mark(sv, opt) {
       var _this10 = this;

       this.opt = opt;
       var totalMatches = 0,
           fn = 'wrapMatches';

       var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === 'string' ? [sv] : sv),
           kwArr = _getSeparatedKeywords.keywords,
           kwArrLen = _getSeparatedKeywords.length,
           sens = this.opt.caseSensitive ? '' : 'i',
           handler = function handler(kw) {
         var regex = new RegExp(_this10.createRegExp(kw), 'gm' + sens),
             matches = 0;
         _this10.log('Searching with expression "' + regex + '"');
         _this10[fn](regex, 1, function (term, node) {
           return _this10.opt.filter(node, kw, totalMatches, matches);
         }, function (element) {
           matches++;
           totalMatches++;
           _this10.opt.each(element);
         }, function () {
           if (matches === 0) {
             _this10.opt.noMatch(kw);
           }
           if (kwArr[kwArrLen - 1] === kw) {
             _this10.opt.done(totalMatches);
           } else {
             handler(kwArr[kwArr.indexOf(kw) + 1]);
           }
         });
       };

       if (this.opt.acrossElements) {
         fn = 'wrapMatchesAcrossElements';
       }
       if (kwArrLen === 0) {
         this.opt.done(totalMatches);
       } else {
         handler(kwArr[0]);
       }
     }
   }, {
     key: 'markRanges',
     value: function markRanges(rawRanges, opt) {
       var _this11 = this;

       this.opt = opt;
       var totalMatches = 0,
           ranges = this.checkRanges(rawRanges);
       if (ranges && ranges.length) {
         this.log('Starting to mark with the following ranges: ' + JSON.stringify(ranges));
         this.wrapRangeFromIndex(ranges, function (node, range, match, counter) {
           return _this11.opt.filter(node, range, match, counter);
         }, function (element, range) {
           totalMatches++;
           _this11.opt.each(element, range);
         }, function () {
           _this11.opt.done(totalMatches);
         });
       } else {
         this.opt.done(totalMatches);
       }
     }
   }, {
     key: 'unmark',
     value: function unmark(opt) {
       var _this12 = this;

       this.opt = opt;
       var sel = this.opt.element ? this.opt.element : '*';
       sel += '[data-markjs]';
       if (this.opt.className) {
         sel += '.' + this.opt.className;
       }
       this.log('Removal selector "' + sel + '"');
       this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function (node) {
         _this12.unwrapMatches(node);
       }, function (node) {
         var matchesSel = DOMIterator.matches(node, sel),
             matchesExclude = _this12.matchesExclude(node);
         if (!matchesSel || matchesExclude) {
           return NodeFilter.FILTER_REJECT;
         } else {
           return NodeFilter.FILTER_ACCEPT;
         }
       }, this.opt.done);
     }
   }, {
     key: 'opt',
     set: function set$$1(val) {
       this._opt = _extends({}, {
         'element': '',
         'className': '',
         'exclude': [],
         'iframes': false,
         'iframesTimeout': 5000,
         'separateWordSearch': true,
         'diacritics': true,
         'synonyms': {},
         'accuracy': 'partially',
         'acrossElements': false,
         'caseSensitive': false,
         'ignoreJoiners': false,
         'ignoreGroups': 0,
         'ignorePunctuation': [],
         'wildcards': 'disabled',
         'each': function each() {},
         'noMatch': function noMatch() {},
         'filter': function filter() {
           return true;
         },
         'done': function done() {},
         'debug': false,
         'log': window.console
       }, val);
     },
     get: function get$$1() {
       return this._opt;
     }
   }, {
     key: 'iterator',
     get: function get$$1() {
       return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout);
     }
   }]);
   return Mark;
 }();

 $.fn.mark = function (sv, opt) {
   new Mark(this.get()).mark(sv, opt);
   return this;
 };
 $.fn.markRegExp = function (regexp, opt) {
   new Mark(this.get()).markRegExp(regexp, opt);
   return this;
 };
 $.fn.markRanges = function (ranges, opt) {
   new Mark(this.get()).markRanges(ranges, opt);
   return this;
 };
 $.fn.unmark = function (opt) {
   new Mark(this.get()).unmark(opt);
   return this;
 };

 return $;

 })));
}( jQuery ) );

/* סינון מונחון */
$(function() {
  var $input = $("input[name='keyword']"),
    $context = $("#context ul li");
  	$outofcontext = $("#context h3 "),
  $input.on("input", function() {
    var term = $(this).val();
    $context.show().unmark();
    if (term) {
      $context.mark(term, {
        done: function() {
          $context.not(":has(mark)").hide();
          $outofcontext.hide();
        }
      });
    }  else {
          $outofcontext.show();
    }
  });
});

הודפס מתוך מאגר הידע של דואלוג בכתובת: "https://doalogue.co.il/wiki/index.php?title=מדיה_ויקי:Mobile.js&oldid=8570"

משותף תחת רישיון CC-BY 4.0. ניתן להפיץ באופן חופשי תוך מתן קרדיט לדואלוג וקישור למקור.