{"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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"}