UNPKG

vue-smart-app-banner

Version:
1,482 lines (1,481 loc) 37.9 kB
import { defineComponent as q, openBlock as R, createElementBlock as E, Fragment as G, unref as g, normalizeClass as L, createElementVNode as v, normalizeStyle as Q, toDisplayString as k, createCommentVNode as $, pushScopeId as H, popScopeId as U } from "vue"; import { inject as Z, ref as V, computed as y } from "vue-demi"; /*! js-cookie v3.0.1 | MIT */ function _(r) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var i in t) r[i] = t[i]; } return r; } var K = { read: function(r) { return r[0] === '"' && (r = r.slice(1, -1)), r.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent); }, write: function(r) { return encodeURIComponent(r).replace( /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent ); } }; function x(r, e) { function t(n, c, o) { if (!(typeof document > "u")) { o = _({}, e, o), typeof o.expires == "number" && (o.expires = new Date(Date.now() + o.expires * 864e5)), o.expires && (o.expires = o.expires.toUTCString()), n = encodeURIComponent(n).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape); var d = ""; for (var a in o) !o[a] || (d += "; " + a, o[a] !== !0 && (d += "=" + o[a].split(";")[0])); return document.cookie = n + "=" + r.write(c, n) + d; } } function i(n) { if (!(typeof document > "u" || arguments.length && !n)) { for (var c = document.cookie ? document.cookie.split("; ") : [], o = {}, d = 0; d < c.length; d++) { var a = c[d].split("="), m = a.slice(1).join("="); try { var l = decodeURIComponent(a[0]); if (o[l] = r.read(m, l), n === l) break; } catch { } } return n ? o[n] : o; } } return Object.create( { set: t, get: i, remove: function(n, c) { t( n, "", _({}, c, { expires: -1 }) ); }, withAttributes: function(n) { return x(this.converter, _({}, this.attributes, n)); }, withConverter: function(n) { return x(_({}, this.converter, n), this.attributes); } }, { attributes: { value: Object.freeze(e) }, converter: { value: Object.freeze(r) } } ); } var A = x(K, { path: "/" }); const J = { "Amazon Silk": "amazon_silk", "Android Browser": "android", Bada: "bada", BlackBerry: "blackberry", Chrome: "chrome", Chromium: "chromium", Electron: "electron", Epiphany: "epiphany", Firefox: "firefox", Focus: "focus", Generic: "generic", "Google Search": "google_search", Googlebot: "googlebot", "Internet Explorer": "ie", "K-Meleon": "k_meleon", Maxthon: "maxthon", "Microsoft Edge": "edge", "MZ Browser": "mz", "NAVER Whale Browser": "naver", Opera: "opera", "Opera Coast": "opera_coast", PhantomJS: "phantomjs", Puffin: "puffin", QupZilla: "qupzilla", QQ: "qq", QQLite: "qqlite", Safari: "safari", Sailfish: "sailfish", "Samsung Internet for Android": "samsung_internet", SeaMonkey: "seamonkey", Sleipnir: "sleipnir", Swing: "swing", Tizen: "tizen", "UC Browser": "uc", Vivaldi: "vivaldi", "WebOS Browser": "webos", WeChat: "wechat", "Yandex Browser": "yandex", Roku: "roku" }, T = { amazon_silk: "Amazon Silk", android: "Android Browser", bada: "Bada", blackberry: "BlackBerry", chrome: "Chrome", chromium: "Chromium", electron: "Electron", epiphany: "Epiphany", firefox: "Firefox", focus: "Focus", generic: "Generic", googlebot: "Googlebot", google_search: "Google Search", ie: "Internet Explorer", k_meleon: "K-Meleon", maxthon: "Maxthon", edge: "Microsoft Edge", mz: "MZ Browser", naver: "NAVER Whale Browser", opera: "Opera", opera_coast: "Opera Coast", phantomjs: "PhantomJS", puffin: "Puffin", qupzilla: "QupZilla", qq: "QQ Browser", qqlite: "QQ Browser Lite", safari: "Safari", sailfish: "Sailfish", samsung_internet: "Samsung Internet for Android", seamonkey: "SeaMonkey", sleipnir: "Sleipnir", swing: "Swing", tizen: "Tizen", uc: "UC Browser", vivaldi: "Vivaldi", webos: "WebOS Browser", wechat: "WeChat", yandex: "Yandex Browser" }, p = { tablet: "tablet", mobile: "mobile", desktop: "desktop", tv: "tv" }, h = { WindowsPhone: "Windows Phone", Windows: "Windows", MacOS: "macOS", iOS: "iOS", Android: "Android", WebOS: "WebOS", BlackBerry: "BlackBerry", Bada: "Bada", Tizen: "Tizen", Linux: "Linux", ChromeOS: "Chrome OS", PlayStation4: "PlayStation 4", Roku: "Roku" }, S = { EdgeHTML: "EdgeHTML", Blink: "Blink", Trident: "Trident", Presto: "Presto", Gecko: "Gecko", WebKit: "WebKit" }; class s { static getFirstMatch(e, t) { const i = t.match(e); return i && i.length > 0 && i[1] || ""; } static getSecondMatch(e, t) { const i = t.match(e); return i && i.length > 1 && i[2] || ""; } static matchAndReturnConst(e, t, i) { if (e.test(t)) return i; } static getWindowsVersionName(e) { switch (e) { case "NT": return "NT"; case "XP": return "XP"; case "NT 5.0": return "2000"; case "NT 5.1": return "XP"; case "NT 5.2": return "2003"; case "NT 6.0": return "Vista"; case "NT 6.1": return "7"; case "NT 6.2": return "8"; case "NT 6.3": return "8.1"; case "NT 10.0": return "10"; default: return; } } static getMacOSVersionName(e) { const t = e.split(".").splice(0, 2).map((i) => parseInt(i, 10) || 0); if (t.push(0), t[0] === 10) switch (t[1]) { case 5: return "Leopard"; case 6: return "Snow Leopard"; case 7: return "Lion"; case 8: return "Mountain Lion"; case 9: return "Mavericks"; case 10: return "Yosemite"; case 11: return "El Capitan"; case 12: return "Sierra"; case 13: return "High Sierra"; case 14: return "Mojave"; case 15: return "Catalina"; default: return; } } static getAndroidVersionName(e) { const t = e.split(".").splice(0, 2).map((i) => parseInt(i, 10) || 0); if (t.push(0), !(t[0] === 1 && t[1] < 5)) { if (t[0] === 1 && t[1] < 6) return "Cupcake"; if (t[0] === 1 && t[1] >= 6) return "Donut"; if (t[0] === 2 && t[1] < 2) return "Eclair"; if (t[0] === 2 && t[1] === 2) return "Froyo"; if (t[0] === 2 && t[1] > 2) return "Gingerbread"; if (t[0] === 3) return "Honeycomb"; if (t[0] === 4 && t[1] < 1) return "Ice Cream Sandwich"; if (t[0] === 4 && t[1] < 4) return "Jelly Bean"; if (t[0] === 4 && t[1] >= 4) return "KitKat"; if (t[0] === 5) return "Lollipop"; if (t[0] === 6) return "Marshmallow"; if (t[0] === 7) return "Nougat"; if (t[0] === 8) return "Oreo"; if (t[0] === 9) return "Pie"; } } static getVersionPrecision(e) { return e.split(".").length; } static compareVersions(e, t, i = !1) { const n = s.getVersionPrecision(e), c = s.getVersionPrecision(t); let o = Math.max(n, c), d = 0; const a = s.map([e, t], (m) => { const l = o - s.getVersionPrecision(m), M = m + new Array(l + 1).join(".0"); return s.map(M.split("."), (b) => new Array(20 - b.length).join("0") + b).reverse(); }); for (i && (d = o - Math.min(n, c)), o -= 1; o >= d; ) { if (a[0][o] > a[1][o]) return 1; if (a[0][o] === a[1][o]) { if (o === d) return 0; o -= 1; } else if (a[0][o] < a[1][o]) return -1; } } static map(e, t) { const i = []; let n; if (Array.prototype.map) return Array.prototype.map.call(e, t); for (n = 0; n < e.length; n += 1) i.push(t(e[n])); return i; } static find(e, t) { let i, n; if (Array.prototype.find) return Array.prototype.find.call(e, t); for (i = 0, n = e.length; i < n; i += 1) { const c = e[i]; if (t(c, i)) return c; } } static assign(e, ...t) { const i = e; let n, c; if (Object.assign) return Object.assign(e, ...t); for (n = 0, c = t.length; n < c; n += 1) { const o = t[n]; typeof o == "object" && o !== null && Object.keys(o).forEach((a) => { i[a] = o[a]; }); } return e; } static getBrowserAlias(e) { return J[e]; } static getBrowserTypeByAlias(e) { return T[e] || ""; } } const u = /version\/(\d+(\.?_?\d+)+)/i, X = [ { test: [/googlebot/i], describe(r) { const e = { name: "Googlebot" }, t = s.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/opera/i], describe(r) { const e = { name: "Opera" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/opr\/|opios/i], describe(r) { const e = { name: "Opera" }, t = s.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/SamsungBrowser/i], describe(r) { const e = { name: "Samsung Internet for Android" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/Whale/i], describe(r) { const e = { name: "NAVER Whale Browser" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/MZBrowser/i], describe(r) { const e = { name: "MZ Browser" }, t = s.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/focus/i], describe(r) { const e = { name: "Focus" }, t = s.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/swing/i], describe(r) { const e = { name: "Swing" }, t = s.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/coast/i], describe(r) { const e = { name: "Opera Coast" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/opt\/\d+(?:.?_?\d+)+/i], describe(r) { const e = { name: "Opera Touch" }, t = s.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/yabrowser/i], describe(r) { const e = { name: "Yandex Browser" }, t = s.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/ucbrowser/i], describe(r) { const e = { name: "UC Browser" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/Maxthon|mxios/i], describe(r) { const e = { name: "Maxthon" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/epiphany/i], describe(r) { const e = { name: "Epiphany" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/puffin/i], describe(r) { const e = { name: "Puffin" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/sleipnir/i], describe(r) { const e = { name: "Sleipnir" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/k-meleon/i], describe(r) { const e = { name: "K-Meleon" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/micromessenger/i], describe(r) { const e = { name: "WeChat" }, t = s.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/qqbrowser/i], describe(r) { const e = { name: /qqbrowserlite/i.test(r) ? "QQ Browser Lite" : "QQ Browser" }, t = s.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/msie|trident/i], describe(r) { const e = { name: "Internet Explorer" }, t = s.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/\sedg\//i], describe(r) { const e = { name: "Microsoft Edge" }, t = s.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/edg([ea]|ios)/i], describe(r) { const e = { name: "Microsoft Edge" }, t = s.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/vivaldi/i], describe(r) { const e = { name: "Vivaldi" }, t = s.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/seamonkey/i], describe(r) { const e = { name: "SeaMonkey" }, t = s.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/sailfish/i], describe(r) { const e = { name: "Sailfish" }, t = s.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, r); return t && (e.version = t), e; } }, { test: [/silk/i], describe(r) { const e = { name: "Amazon Silk" }, t = s.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/phantom/i], describe(r) { const e = { name: "PhantomJS" }, t = s.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/slimerjs/i], describe(r) { const e = { name: "SlimerJS" }, t = s.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe(r) { const e = { name: "BlackBerry" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/(web|hpw)[o0]s/i], describe(r) { const e = { name: "WebOS Browser" }, t = s.getFirstMatch(u, r) || s.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/bada/i], describe(r) { const e = { name: "Bada" }, t = s.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/tizen/i], describe(r) { const e = { name: "Tizen" }, t = s.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/qupzilla/i], describe(r) { const e = { name: "QupZilla" }, t = s.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/firefox|iceweasel|fxios/i], describe(r) { const e = { name: "Firefox" }, t = s.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/electron/i], describe(r) { const e = { name: "Electron" }, t = s.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/MiuiBrowser/i], describe(r) { const e = { name: "Miui" }, t = s.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/chromium/i], describe(r) { const e = { name: "Chromium" }, t = s.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, r) || s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/chrome|crios|crmo/i], describe(r) { const e = { name: "Chrome" }, t = s.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/GSA/i], describe(r) { const e = { name: "Google Search" }, t = s.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test(r) { const e = !r.test(/like android/i), t = r.test(/android/i); return e && t; }, describe(r) { const e = { name: "Android Browser" }, t = s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/playstation 4/i], describe(r) { const e = { name: "PlayStation 4" }, t = s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/safari|applewebkit/i], describe(r) { const e = { name: "Safari" }, t = s.getFirstMatch(u, r); return t && (e.version = t), e; } }, { test: [/.*/i], describe(r) { const e = /^(.*)\/(.*) /, t = /^(.*)\/(.*)[ \t]\((.*)/, n = r.search("\\(") !== -1 ? t : e; return { name: s.getFirstMatch(n, r), version: s.getSecondMatch(n, r) }; } } ], Y = [ { test: [/Roku\/DVP/], describe(r) { const e = s.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, r); return { name: h.Roku, version: e }; } }, { test: [/windows phone/i], describe(r) { const e = s.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, r); return { name: h.WindowsPhone, version: e }; } }, { test: [/windows /i], describe(r) { const e = s.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, r), t = s.getWindowsVersionName(e); return { name: h.Windows, version: e, versionName: t }; } }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe(r) { const e = { name: h.iOS }, t = s.getSecondMatch(/(Version\/)(\d[\d.]+)/, r); return t && (e.version = t), e; } }, { test: [/macintosh/i], describe(r) { const e = s.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, r).replace(/[_\s]/g, "."), t = s.getMacOSVersionName(e), i = { name: h.MacOS, version: e }; return t && (i.versionName = t), i; } }, { test: [/(ipod|iphone|ipad)/i], describe(r) { const e = s.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, r).replace(/[_\s]/g, "."); return { name: h.iOS, version: e }; } }, { test(r) { const e = !r.test(/like android/i), t = r.test(/android/i); return e && t; }, describe(r) { const e = s.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, r), t = s.getAndroidVersionName(e), i = { name: h.Android, version: e }; return t && (i.versionName = t), i; } }, { test: [/(web|hpw)[o0]s/i], describe(r) { const e = s.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, r), t = { name: h.WebOS }; return e && e.length && (t.version = e), t; } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe(r) { const e = s.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, r) || s.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, r) || s.getFirstMatch(/\bbb(\d+)/i, r); return { name: h.BlackBerry, version: e }; } }, { test: [/bada/i], describe(r) { const e = s.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, r); return { name: h.Bada, version: e }; } }, { test: [/tizen/i], describe(r) { const e = s.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, r); return { name: h.Tizen, version: e }; } }, { test: [/linux/i], describe() { return { name: h.Linux }; } }, { test: [/CrOS/], describe() { return { name: h.ChromeOS }; } }, { test: [/PlayStation 4/], describe(r) { const e = s.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, r); return { name: h.PlayStation4, version: e }; } } ], ee = [ { test: [/googlebot/i], describe() { return { type: "bot", vendor: "Google" }; } }, { test: [/huawei/i], describe(r) { const e = s.getFirstMatch(/(can-l01)/i, r) && "Nova", t = { type: p.mobile, vendor: "Huawei" }; return e && (t.model = e), t; } }, { test: [/nexus\s*(?:7|8|9|10).*/i], describe() { return { type: p.tablet, vendor: "Nexus" }; } }, { test: [/ipad/i], describe() { return { type: p.tablet, vendor: "Apple", model: "iPad" }; } }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe() { return { type: p.tablet, vendor: "Apple", model: "iPad" }; } }, { test: [/kftt build/i], describe() { return { type: p.tablet, vendor: "Amazon", model: "Kindle Fire HD 7" }; } }, { test: [/silk/i], describe() { return { type: p.tablet, vendor: "Amazon" }; } }, { test: [/tablet(?! pc)/i], describe() { return { type: p.tablet }; } }, { test(r) { const e = r.test(/ipod|iphone/i), t = r.test(/like (ipod|iphone)/i); return e && !t; }, describe(r) { const e = s.getFirstMatch(/(ipod|iphone)/i, r); return { type: p.mobile, vendor: "Apple", model: e }; } }, { test: [/nexus\s*[0-6].*/i, /galaxy nexus/i], describe() { return { type: p.mobile, vendor: "Nexus" }; } }, { test: [/[^-]mobi/i], describe() { return { type: p.mobile }; } }, { test(r) { return r.getBrowserName(!0) === "blackberry"; }, describe() { return { type: p.mobile, vendor: "BlackBerry" }; } }, { test(r) { return r.getBrowserName(!0) === "bada"; }, describe() { return { type: p.mobile }; } }, { test(r) { return r.getBrowserName() === "windows phone"; }, describe() { return { type: p.mobile, vendor: "Microsoft" }; } }, { test(r) { const e = Number(String(r.getOSVersion()).split(".")[0]); return r.getOSName(!0) === "android" && e >= 3; }, describe() { return { type: p.tablet }; } }, { test(r) { return r.getOSName(!0) === "android"; }, describe() { return { type: p.mobile }; } }, { test(r) { return r.getOSName(!0) === "macos"; }, describe() { return { type: p.desktop, vendor: "Apple" }; } }, { test(r) { return r.getOSName(!0) === "windows"; }, describe() { return { type: p.desktop }; } }, { test(r) { return r.getOSName(!0) === "linux"; }, describe() { return { type: p.desktop }; } }, { test(r) { return r.getOSName(!0) === "playstation 4"; }, describe() { return { type: p.tv }; } }, { test(r) { return r.getOSName(!0) === "roku"; }, describe() { return { type: p.tv }; } } ], te = [ { test(r) { return r.getBrowserName(!0) === "microsoft edge"; }, describe(r) { if (/\sedg\//i.test(r)) return { name: S.Blink }; const t = s.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, r); return { name: S.EdgeHTML, version: t }; } }, { test: [/trident/i], describe(r) { const e = { name: S.Trident }, t = s.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test(r) { return r.test(/presto/i); }, describe(r) { const e = { name: S.Presto }, t = s.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test(r) { const e = r.test(/gecko/i), t = r.test(/like gecko/i); return e && !t; }, describe(r) { const e = { name: S.Gecko }, t = s.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } }, { test: [/(apple)?webkit\/537\.36/i], describe() { return { name: S.Blink }; } }, { test: [/(apple)?webkit/i], describe(r) { const e = { name: S.WebKit }, t = s.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, r); return t && (e.version = t), e; } } ]; class I { constructor(e, t = !1) { if (e == null || e === "") throw new Error("UserAgent parameter can't be empty"); this._ua = e, this.parsedResult = {}, t !== !0 && this.parse(); } getUA() { return this._ua; } test(e) { return e.test(this._ua); } parseBrowser() { this.parsedResult.browser = {}; const e = s.find(X, (t) => { if (typeof t.test == "function") return t.test(this); if (t.test instanceof Array) return t.test.some((i) => this.test(i)); throw new Error("Browser's test function is not valid"); }); return e && (this.parsedResult.browser = e.describe(this.getUA())), this.parsedResult.browser; } getBrowser() { return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser(); } getBrowserName(e) { return e ? String(this.getBrowser().name).toLowerCase() || "" : this.getBrowser().name || ""; } getBrowserVersion() { return this.getBrowser().version; } getOS() { return this.parsedResult.os ? this.parsedResult.os : this.parseOS(); } parseOS() { this.parsedResult.os = {}; const e = s.find(Y, (t) => { if (typeof t.test == "function") return t.test(this); if (t.test instanceof Array) return t.test.some((i) => this.test(i)); throw new Error("Browser's test function is not valid"); }); return e && (this.parsedResult.os = e.describe(this.getUA())), this.parsedResult.os; } getOSName(e) { const { name: t } = this.getOS(); return e ? String(t).toLowerCase() || "" : t || ""; } getOSVersion() { return this.getOS().version; } getPlatform() { return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform(); } getPlatformType(e = !1) { const { type: t } = this.getPlatform(); return e ? String(t).toLowerCase() || "" : t || ""; } parsePlatform() { this.parsedResult.platform = {}; const e = s.find(ee, (t) => { if (typeof t.test == "function") return t.test(this); if (t.test instanceof Array) return t.test.some((i) => this.test(i)); throw new Error("Browser's test function is not valid"); }); return e && (this.parsedResult.platform = e.describe(this.getUA())), this.parsedResult.platform; } getEngine() { return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine(); } getEngineName(e) { return e ? String(this.getEngine().name).toLowerCase() || "" : this.getEngine().name || ""; } parseEngine() { this.parsedResult.engine = {}; const e = s.find(te, (t) => { if (typeof t.test == "function") return t.test(this); if (t.test instanceof Array) return t.test.some((i) => this.test(i)); throw new Error("Browser's test function is not valid"); }); return e && (this.parsedResult.engine = e.describe(this.getUA())), this.parsedResult.engine; } parse() { return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this; } getResult() { return s.assign({}, this.parsedResult); } satisfies(e) { const t = {}; let i = 0; const n = {}; let c = 0; if (Object.keys(e).forEach((d) => { const a = e[d]; typeof a == "string" ? (n[d] = a, c += 1) : typeof a == "object" && (t[d] = a, i += 1); }), i > 0) { const d = Object.keys(t), a = s.find(d, (l) => this.isOS(l)); if (a) { const l = this.satisfies(t[a]); if (l !== void 0) return l; } const m = s.find( d, (l) => this.isPlatform(l) ); if (m) { const l = this.satisfies(t[m]); if (l !== void 0) return l; } } if (c > 0) { const d = Object.keys(n), a = s.find(d, (m) => this.isBrowser(m, !0)); if (a !== void 0) return this.compareVersion(n[a]); } } isBrowser(e, t = !1) { const i = this.getBrowserName().toLowerCase(); let n = e.toLowerCase(); const c = s.getBrowserTypeByAlias(n); return t && c && (n = c.toLowerCase()), n === i; } compareVersion(e) { let t = [0], i = e, n = !1; const c = this.getBrowserVersion(); if (typeof c == "string") return e[0] === ">" || e[0] === "<" ? (i = e.substr(1), e[1] === "=" ? (n = !0, i = e.substr(2)) : t = [], e[0] === ">" ? t.push(1) : t.push(-1)) : e[0] === "=" ? i = e.substr(1) : e[0] === "~" && (n = !0, i = e.substr(1)), t.indexOf( s.compareVersions(c, i, n) ) > -1; } isOS(e) { return this.getOSName(!0) === String(e).toLowerCase(); } isPlatform(e) { return this.getPlatformType(!0) === String(e).toLowerCase(); } isEngine(e) { return this.getEngineName(!0) === String(e).toLowerCase(); } is(e, t = !1) { return this.isBrowser(e, t) || this.isOS(e) || this.isPlatform(e); } some(e = []) { return e.some((t) => this.is(t)); } } /*! * Bowser - a browser detector * https://github.com/lancedikson/bowser * MIT License | (c) Dustin Diaz 2012-2015 * MIT License | (c) Denis Demchenko 2015-2019 */ class re { static getParser(e, t = !1) { if (typeof e != "string") throw new Error("UserAgent should be a string"); return new I(e, t); } static parse(e) { return new I(e).getResult(); } static get BROWSER_MAP() { return T; } static get ENGINE_MAP() { return S; } static get OS_MAP() { return h; } static get PLATFORMS_MAP() { return p; } } var P = /* @__PURE__ */ ((r) => (r[r.installed = 0] = "installed", r[r.dismissed = 1] = "dismissed", r))(P || {}), O = /* @__PURE__ */ ((r) => (r.ios = "ios", r.android = "android", r))(O || {}), C = /* @__PURE__ */ ((r) => (r.Android = "android", r.iOS = "ios", r))(C || {}); const F = { ios: { platform: O.ios, iconRels: ["apple-touch-icon-precomposed", "apple-touch-icon"], getStoreLink: (r) => `https://itunes.apple.com/${r.appStoreLanguage}/app/id${r.iosAppId}?mt=8`, getAppId: (r) => r.iosAppId, getIcon: (r) => { var e; return ((e = r.icons) == null ? void 0 : e.ios) || r.icon; } }, android: { platform: O.android, iconRels: ["android-touch-icon", "apple-touch-icon-precomposed", "apple-touch-icon"], getStoreLink: (r) => `http://play.google.com/store/apps/details?id=${r.androidAppId}`, getAppId: (r) => r.androidAppId, getIcon: (r) => { var e; return ((e = r.icons) == null ? void 0 : e.android) || r.icon; } } }, se = function(r, e) { return r.force ? r.force : Object.keys(C).every((t) => t !== e) ? null : F[C[e]].platform; }, ie = function(r, e) { return r === "ios" && (e.getBrowserName() === "Mobile Safari" || e.getBrowserName() === "Safari" && e.getPlatformType() === "mobile") && parseInt(e.getOSVersion(), 10) >= 6; }, ne = (r, e, t, i, n) => ({ dismissClick: () => { t(!1), n.daysHidden > 0 && A.set(`${r.value}-smartbanner-closed`, "true", { path: "/", expires: new Date(Number(new Date()) + n.daysHidden * 1e3 * 60 * 60 * 24) }), i("onDismiss", e.value, r.value), i("onClose", e.value, r.value); }, installClick: () => { t(!1), n.daysReminder > 0 && A.set(`${r.value}-smartbanner-installed`, "true", { path: "/", expires: new Date(Number(new Date()) + n.daysReminder * 1e3 * 60 * 60 * 24) }), i("onInstall", e.value, r.value), i("onClose", e.value, r.value); } }), oe = (r) => { const e = V(!1), t = (b) => { e.value = b; }, i = V(O.android), n = (b) => { i.value = b; }, c = y(() => F[i.value].getAppId(r)), o = y(() => F[i.value].getStoreLink(r)), d = y(() => r.theme || i.value), a = y(() => `${r.price[i.value]} - ${r.store[i.value]}`), m = y(() => { const b = F[i.value].getIcon(r); if (b) return b; { const f = F[i.value].iconRels; for (let w = 0; w < f.length; w++) { const B = window == null ? void 0 : window.document.querySelector(`link[rel="${f[w]}"]`); if (B) return B.getAttribute("href"); } return ""; } }), l = y(() => `smartbanner smartbanner-${d.value}`), M = y(() => `background-image: url(${m.value})`); return { showBanner: e, platform: i, appId: c, storeLink: o, theme: d, inStoreText: a, icon: m, setPlatform: n, setShowBanner: t, mainContainerClass: l, iconStyle: M }; }, ae = (r) => { var N; const e = Z("smartAppBannerConfig"), { appId: t, inStoreText: i, platform: n, setPlatform: c, setShowBanner: o, showBanner: d, storeLink: a, iconStyle: m, mainContainerClass: l } = oe(e), { dismissClick: M, installClick: b } = ne(t, n, o, r, e), f = { title: e.title, author: e.author, buttonText: e.button, showBanner: d, storeLink: a, inStoreText: i, dismissClick: M, installClick: b, iconStyle: m, mainContainerClass: l }, w = re.getParser((N = window == null ? void 0 : window.navigator) == null ? void 0 : N.userAgent), B = se(e, w.getOSName()); if (!B || (c(B), !e.store[n.value])) return f; const D = e.useNativeIosBannerForSafari && ie(n.value, w), W = (window == null ? void 0 : window.navigator).standalone; if (D || W) return f; const z = A.get(`${t.value}-smartbanner-closed`), j = A.get(`${t.value}-smartbanner-installed`); return z ? (r("onNotShown", n.value, t.value, P.dismissed), f) : j ? (r("onNotShown", n.value, t.value, P.installed), f) : (t.value && (o(!0), r("onShown", n.value, t.value)), f); }, ce = (r) => (H("data-v-9d9043c2"), r = r(), U(), r), de = { class: "smartbanner-container" }, ue = { class: "smartbanner-info" }, le = { class: "smartbanner-title" }, pe = { class: "smartbanner-author" }, me = { class: "smartbanner-instore" }, fe = ["href"], he = { class: "smartbanner-button-text" }, ge = /* @__PURE__ */ ce(() => /* @__PURE__ */ v("p", null, null, -1)), be = /* @__PURE__ */ q({ __name: "SmartAppBanner", emits: ["onNotShown", "onShown", "onClose", "onInstall", "onDismiss"], setup(r, { emit: e }) { const { author: t, buttonText: i, title: n, dismissClick: c, iconStyle: o, inStoreText: d, installClick: a, mainContainerClass: m, showBanner: l, storeLink: M } = ae(e); return (b, f) => (R(), E(G, null, [ g(l) ? (R(), E("div", { key: 0, class: L(g(l) ? "smartbanner-show" : "") }, [ v("div", { class: L(g(m)) }, [ v("div", de, [ v("span", { class: "smartbanner-close", onClick: f[0] || (f[0] = (...w) => g(c) && g(c)(...w)) }, "\xD7"), v("span", { class: "smartbanner-icon", style: Q(g(o)) }, null, 4), v("div", ue, [ v("div", le, k(g(n)), 1), v("div", pe, k(g(t)), 1), v("span", me, k(g(d)), 1) ]), v("a", { href: g(M), class: "smartbanner-button", onClick: f[1] || (f[1] = (...w) => g(a) && g(a)(...w)) }, [ v("span", he, k(g(i)), 1) ], 8, fe) ]) ], 2) ], 2)) : $("v-if", !0), ge ], 64)); } }); const ve = (r, e) => { const t = r.__vccOpts || r; for (const [i, n] of e) t[i] = n; return t; }, ye = /* @__PURE__ */ ve(be, [["__scopeId", "data-v-9d9043c2"], ["__file", "C:/Repositories/Vue Workspace/vue-smart-app-banner/src/SmartAppBanner.vue"]]); export { ye as default };