vue-smart-app-banner
Version:
Smart banner for vue.js 2-3
1,482 lines (1,481 loc) • 37.9 kB
JavaScript
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
};