code: function compute(el, prop, is_computed) {
          if (!Embedo.utils.validateElement(el) || !prop) {
            return;
          }
  
          var bounds = el.getBoundingClientRect();
          var value = bounds[prop];
  
          if (is_computed || !value) {
            if (document.defaultView && document.defaultView.getComputedStyle) {
              value = document.defaultView.getComputedStyle(el, '').getPropertyValue(prop);
            } else if (el.currentStyle) {
              prop = prop.replace(/\-(\w)/g, function (m, p) {
                return p.toUpperCase();
              });
              value = el.currentStyle[prop];
            }
          }
  
          if (typeof value === 'string' && !/^\d+(\.\d+)?%$/.test(value)) {
            value = value.replace(/[^\d.-]/g, '');
          }
  
          return isNaN(Number(value)) ? value : Number(value);
        }
docs: @function compute
  Computes property value of HTMLElement
  
  @param {HTMLElement} el
  @param {string} prop
  @param {Boolean} stylesheet
  @returns {Number}