{"version":3,"file":"jquery.smartbanner.min.js","sources":["jquery.smartbanner.js"],"sourcesContent":["/*!\n * smartbanner.js v1.13.0 <https://github.com/ain/smartbanner.js>\n * Copyright © 2019 Ain Tohvri, contributors. Licensed under GPL-3.0.\n */\n(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n  \"use strict\";\n  \n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = void 0;\n  \n  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n  \n  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); } }\n  \n  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n  \n  var Bakery =\n  /*#__PURE__*/\n  function () {\n    function Bakery() {\n      _classCallCheck(this, Bakery);\n    }\n  \n    _createClass(Bakery, null, [{\n      key: \"getCookieExpiresString\",\n      value: function getCookieExpiresString(hideTtl) {\n        var now = new Date();\n        var expireTime = new Date(now.getTime() + hideTtl);\n        return \"expires=\".concat(expireTime.toGMTString(), \";\");\n      }\n    }, {\n      key: \"bake\",\n      value: function bake(hideTtl, hidePath) {\n        document.cookie = \"smartbanner_exited=1; \".concat(hideTtl ? Bakery.getCookieExpiresString(hideTtl) : '', \" path=\").concat(hidePath);\n      }\n    }, {\n      key: \"unbake\",\n      value: function unbake() {\n        document.cookie = 'smartbanner_exited=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n      }\n    }, {\n      key: \"baked\",\n      get: function get() {\n        var value = document.cookie.replace(/(?:(?:^|.*;\\s*)smartbanner_exited\\s*=\\s*([^;]*).*$)|^.*$/, '$1');\n        return value === '1';\n      }\n    }]);\n  \n    return Bakery;\n  }();\n  \n  exports.default = Bakery;\n  \n  },{}],2:[function(require,module,exports){\n  (function (global){\n  \"use strict\";\n  \n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = void 0;\n  \n  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n  \n  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); } }\n  \n  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n  \n  var Detector =\n  /*#__PURE__*/\n  function () {\n    function Detector() {\n      _classCallCheck(this, Detector);\n    }\n  \n    _createClass(Detector, null, [{\n      key: \"platform\",\n      value: function platform() {\n        if (/iPhone|iPad|iPod/i.test(window.navigator.userAgent)) {\n          return 'ios';\n        } else if (/Android/i.test(window.navigator.userAgent)) {\n          return 'android';\n        }\n      }\n    }, {\n      key: \"userAgentMatchesRegex\",\n      value: function userAgentMatchesRegex(regexString) {\n        return new RegExp(regexString).test(window.navigator.userAgent);\n      }\n    }, {\n      key: \"jQueryMobilePage\",\n      value: function jQueryMobilePage() {\n        return typeof global.$ !== 'undefined' && global.$.mobile !== 'undefined' && document.querySelector('.ui-page') !== null;\n      }\n    }, {\n      key: \"wrapperElement\",\n      value: function wrapperElement() {\n        var selector = Detector.jQueryMobilePage() ? '.ui-page' : 'html';\n        return document.querySelectorAll(selector);\n      }\n    }]);\n  \n    return Detector;\n  }();\n  \n  exports.default = Detector;\n  \n  }).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n  },{}],3:[function(require,module,exports){\n  \"use strict\";\n  \n  var _smartbanner = _interopRequireDefault(require(\"./smartbanner.js\"));\n  \n  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n  \n  var smartbanner;\n  window.addEventListener('load', function () {\n    smartbanner = new _smartbanner.default();\n    smartbanner.publish();\n  });\n  \n  },{\"./smartbanner.js\":5}],4:[function(require,module,exports){\n  \"use strict\";\n  \n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = void 0;\n  \n  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n  \n  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); } }\n  \n  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n  \n  function valid(name) {\n    // TODO: validate against options dictionary\n    return name.indexOf('smartbanner:') !== -1 && name.split(':')[1].length > 0;\n  }\n  \n  function convertToCamelCase(name) {\n    var parts = name.split('-');\n    parts.map(function (part, index) {\n      if (index > 0) {\n        parts[index] = part.charAt(0).toUpperCase() + part.substring(1);\n      }\n    });\n    return parts.join('');\n  }\n  \n  var OptionParser =\n  /*#__PURE__*/\n  function () {\n    function OptionParser() {\n      _classCallCheck(this, OptionParser);\n    }\n  \n    _createClass(OptionParser, [{\n      key: \"parse\",\n      value: function parse() {\n        var metas = document.getElementsByTagName('meta');\n        var options = {};\n        Array.apply(null, metas).forEach(function (meta) {\n          var optionName = null;\n          var name = meta.getAttribute('name');\n          var content = meta.getAttribute('content');\n  \n          if (name && content && valid(name) && content.length > 0) {\n            optionName = name.split(':')[1];\n  \n            if (optionName.indexOf('-') !== -1) {\n              optionName = convertToCamelCase(optionName);\n            }\n  \n            options[optionName] = content;\n          }\n        });\n        return options;\n      }\n    }]);\n  \n    return OptionParser;\n  }();\n  \n  exports.default = OptionParser;\n  \n  },{}],5:[function(require,module,exports){\n  \"use strict\";\n  \n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.default = void 0;\n  \n  var _optionparser = _interopRequireDefault(require(\"./optionparser.js\"));\n  \n  var _detector = _interopRequireDefault(require(\"./detector.js\"));\n  \n  var _bakery = _interopRequireDefault(require(\"./bakery.js\"));\n  \n  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n  \n  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n  \n  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); } }\n  \n  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n  \n  var DEFAULT_PLATFORMS = 'android,ios';\n var datas = {\n    originalTop: 'data-smartbanner-original-top',\n    originalMarginTop: 'data-smartbanner-original-margin-top'\n  };\n  \n  function handleExitClick(event, self) {\n    self.exit();\n    event.preventDefault();\n  }\n  \n  function handleJQueryMobilePageLoad(event) {\n    if (!this.positioningDisabled) {\n      setContentPosition(event.data.height);\n    }\n  }\n  \n  function addEventListeners(self) {\n    var closeIcon = document.querySelector('.js_smartbanner__exit');\n    closeIcon.addEventListener('click', function (event) {\n      return handleExitClick(event, self);\n    });\n  \n    if (_detector.default.jQueryMobilePage()) {\n      $(document).on('pagebeforeshow', self, handleJQueryMobilePageLoad);\n    }\n  }\n  \n  function removeEventListeners() {\n    if (_detector.default.jQueryMobilePage()) {\n      $(document).off('pagebeforeshow', handleJQueryMobilePageLoad);\n    }\n  }\n  \n  function setContentPosition(value) {\n    var wrappers = _detector.default.wrapperElement();\n  \n    for (var i = 0, l = wrappers.length, wrapper; i < l; i++) {\n      wrapper = wrappers[i];\n  \n      if (_detector.default.jQueryMobilePage()) {\n        if (wrapper.getAttribute(datas.originalTop)) {\n          continue;\n        }\n  \n        var top = parseFloat(getComputedStyle(wrapper).top);\n        wrapper.setAttribute(datas.originalTop, isNaN(top) ? 0 : top);\n        wrapper.style.top = 0 + 'px';\n      } else {\n        if (wrapper.getAttribute(datas.originalMarginTop)) {\n          continue;\n        }\n  \n        var margin = parseFloat(getComputedStyle(wrapper).marginTop);\n        wrapper.setAttribute(datas.originalMarginTop, isNaN(margin) ? 0 : margin);\n        wrapper.style.marginTop = 0 + 'px';\n      }\n    }\n  }\n  \n  function restoreContentPosition() {\n    var wrappers = _detector.default.wrapperElement();\n  \n    for (var i = 0, l = wrappers.length, wrapper; i < l; i++) {\n      wrapper = wrappers[i];\n  \n      if (_detector.default.jQueryMobilePage() && wrapper.getAttribute(datas.originalTop)) {\n        wrapper.style.top = 0 + 'px';\n      } else if (wrapper.getAttribute(datas.originalMarginTop)) {\n        wrapper.style.marginTop = 0 + 'px';\n      }\n    }\n  }\n  \n  var SmartBanner =\n  /*#__PURE__*/\n  function () {\n    function SmartBanner() {\n      _classCallCheck(this, SmartBanner);\n  \n      var parser = new _optionparser.default();\n      this.options = parser.parse();\n      this.platform = _detector.default.platform();\n    } // DEPRECATED. Will be removed.\n  \n  \n    _createClass(SmartBanner, [{\n      key: \"publish\",\n      value: function publish() {\n        if (Object.keys(this.options).length === 0) {\n          throw new Error('No options detected. Please consult documentation.');\n        }\n  \n        if (_bakery.default.baked) {\n          return false;\n        } // User Agent was explicetely excluded by defined excludeUserAgentRegex\n  \n  \n        if (this.userAgentExcluded) {\n          return false;\n        } // User agent was neither included by platformEnabled,\n        // nor by defined includeUserAgentRegex\n  \n  \n        if (!(this.platformEnabled || this.userAgentIncluded)) {\n          return false;\n        }\n  \n        var bannerDiv = document.createElement('div');\n        document.querySelector('body').appendChild(bannerDiv);\n        bannerDiv.outerHTML = this.html;\n        var event = new Event('smartbanner.view');\n        document.dispatchEvent(event);\n  \n        if (!this.positioningDisabled) {\n          setContentPosition(this.height);\n        }\n  \n        addEventListeners(this);\n      }\n    }, {\n      key: \"exit\",\n      value: function exit() {\n        removeEventListeners();\n  \n        if (!this.positioningDisabled) {\n          restoreContentPosition();\n        }\n  \n        var banner = document.querySelector('.js_smartbanner');\n        document.querySelector('body').removeChild(banner);\n        var event = new Event('smartbanner.exit');\n        document.dispatchEvent(event);\n  \n        _bakery.default.bake(this.hideTtl, this.hidePath);\n      }\n    }, {\n      key: \"originalTop\",\n      get: function get() {\n        var wrapper = _detector.default.wrapperElement()[0];\n  \n        return parseFloat(wrapper.getAttribute(datas.originalTop));\n      } // DEPRECATED. Will be removed.\n  \n    }, {\n      key: \"originalTopMargin\",\n      get: function get() {\n        var wrapper = _detector.default.wrapperElement()[0];\n  \n        return parseFloat(wrapper.getAttribute(datas.originalMarginTop));\n      }\n    }, {\n      key: \"priceSuffix\",\n      get: function get() {\n        if (this.platform === 'ios') {\n          return this.options.priceSuffixApple;\n        } else if (this.platform === 'android') {\n          return this.options.priceSuffixGoogle;\n        }\n  \n        return '';\n      }\n    }, {\n      key: \"icon\",\n      get: function get() {\n        if (this.platform === 'android') {\n          return this.options.iconGoogle;\n        } else {\n          return this.options.iconApple;\n        }\n      }\n    }, {\n      key: \"buttonUrl\",\n      get: function get() {\n        if (this.platform === 'android') {\n          return this.options.buttonUrlGoogle;\n        } else if (this.platform === 'ios') {\n          return this.options.buttonUrlApple;\n        }\n  \n        return '#';\n      }\n    }, {\n      key: \"html\",\n      get: function get() {\n        var modifier = !this.options.customDesignModifier ? this.platform : this.options.customDesignModifier;\n        return \"<div class=\\\"smartbanner smartbanner--\".concat(modifier, \" js_smartbanner\\\">\\n      <a href=\\\"javascript:void();\\\" class=\\\"smartbanner__exit js_smartbanner__exit\\\"></a>\\n      <div class=\\\"smartbanner__icon\\\" style=\\\"background-image: url(\").concat(this.icon, \");\\\"></div>\\n      <div class=\\\"smartbanner__info\\\">\\n        <div>\\n          <div class=\\\"smartbanner__info__title\\\">\").concat(this.options.title, \"</div>\\n          <div class=\\\"smartbanner__info__author\\\">\").concat(this.options.author, \"</div>\\n          <div class=\\\"smartbanner__info__price\\\">\").concat(this.options.price).concat(this.priceSuffix, \"</div>\\n        </div>\\n      </div>\\n      <a href=\\\"\").concat(this.buttonUrl, \"\\\" target=\\\"_blank\\\" class=\\\"smartbanner__button\\\"><span class=\\\"smartbanner__button__label\\\">\").concat(this.options.button, \"</span></a>\\n    </div>\");\n      }\n    }, {\n      key: \"height\",\n      get: function get() {\n        var height = document.querySelector('.js_smartbanner').offsetHeight;\n        return height !== undefined ? height : 0;\n      }\n    }, {\n      key: \"platformEnabled\",\n      get: function get() {\n        var enabledPlatforms = this.options.enabledPlatforms || DEFAULT_PLATFORMS;\n        return enabledPlatforms && enabledPlatforms.replace(/\\s+/g, '').split(',').indexOf(this.platform) !== -1;\n      }\n    }, {\n      key: \"positioningDisabled\",\n      get: function get() {\n        return this.options.disablePositioning === 'true';\n      }\n    }, {\n      key: \"userAgentExcluded\",\n      get: function get() {\n        if (!this.options.excludeUserAgentRegex) {\n          return false;\n        }\n  \n        return _detector.default.userAgentMatchesRegex(this.options.excludeUserAgentRegex);\n      }\n    }, {\n      key: \"userAgentIncluded\",\n      get: function get() {\n        if (!this.options.includeUserAgentRegex) {\n          return false;\n        }\n  \n        return _detector.default.userAgentMatchesRegex(this.options.includeUserAgentRegex);\n      }\n    }, {\n      key: \"hideTtl\",\n      get: function get() {\n        return this.options.hideTtl ? parseInt(this.options.hideTtl) : false;\n      }\n    }, {\n      key: \"hidePath\",\n      get: function get() {\n        return this.options.hidePath ? this.options.hidePath : '/';\n      }\n    }]);\n  \n    return SmartBanner;\n  }();\n  \n  exports.default = SmartBanner;\n  \n  },{\"./bakery.js\":1,\"./detector.js\":2,\"./optionparser.js\":4}]},{},[3]);"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","value","default","Bakery","this","TypeError","Constructor","protoProps","staticProps","hideTtl","now","Date","expireTime","getTime","concat","toGMTString","hidePath","document","cookie","getCookieExpiresString","get","replace","prototype","2","global","Detector","test","window","navigator","userAgent","regexString","RegExp","$","mobile","querySelector","selector","jQueryMobilePage","querySelectorAll","self","3","_smartbanner","obj","__esModule","addEventListener","publish","./smartbanner.js","4","OptionParser","metas","getElementsByTagName","options","Array","apply","forEach","meta","parts","name","optionName","getAttribute","content","indexOf","split","map","part","index","charAt","toUpperCase","substring","join","5","_optionparser","_interopRequireDefault","_detector","_bakery","datas","originalTop","originalMarginTop","handleJQueryMobilePageLoad","event","positioningDisabled","setContentPosition","data","height","wrappers","wrapperElement","margin","wrapper","top","parseFloat","getComputedStyle","setAttribute","isNaN","style","marginTop","SmartBanner","parser","parse","platform","keys","baked","userAgentExcluded","platformEnabled","userAgentIncluded","bannerDiv","createElement","appendChild","outerHTML","html","Event","dispatchEvent","exit","preventDefault","on","off","banner","removeChild","bake","priceSuffixApple","priceSuffixGoogle","iconGoogle","iconApple","buttonUrlGoogle","buttonUrlApple","modifier","customDesignModifier","icon","title","author","price","priceSuffix","buttonUrl","button","offsetHeight","undefined","enabledPlatforms","disablePositioning","excludeUserAgentRegex","userAgentMatchesRegex","includeUserAgentRegex","parseInt","./bakery.js","./detector.js","./optionparser.js"],"mappings":"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"}