@feedmepos/mf-connect 0.1.38-beta.8 → 0.1.38-beta.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/{Analytic-CJap-Cat.js → Analytic-FMehGs58.js} +31 -32
  2. package/dist/{App-CLTtX1QT.js → App-7cwNu3e0.js} +617 -607
  3. package/dist/AuditLogs-CpmLBHAR.js +1991 -0
  4. package/dist/{Bin-C2xMLxoE.js → Bin-D21tScmC.js} +10 -10
  5. package/dist/Broadcast-DrX9zS2Z.js +266 -0
  6. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BCkD7Xfn.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BvN7Q36X.js} +6 -6
  7. package/dist/{Card-BPrCNLQy.js → Card-Nk0KHSjb.js} +145 -140
  8. package/dist/Collections-BAnIaZRj.js +540 -0
  9. package/dist/Credit-BhU_Vd3l.js +260 -0
  10. package/dist/CustomSelect.vue_vue_type_script_setup_true_lang-Du7fRSZC.js +128 -0
  11. package/dist/DateInput.vue_vue_type_script_setup_true_lang-BN4Q5Y3l.js +54 -0
  12. package/dist/{DateRangeChip.vue_vue_type_script_setup_true_lang-BUzUIIUW.js → DateRangeChip.vue_vue_type_script_setup_true_lang-eIoPtgO5.js} +1 -1
  13. package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-DUrvbUE4.js +3120 -0
  14. package/dist/EffectSheet.vue_vue_type_style_index_0_lang-CqBGsZmi.js +351 -0
  15. package/dist/Experience-B7Fl1uzk.js +259 -0
  16. package/dist/{FileSaver.min-NlMItPOc.js → FileSaver.min-DaCnYliS.js} +1 -1
  17. package/dist/FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js +129 -0
  18. package/dist/FmTableSelection.vue_vue_type_script_setup_true_lang-DzcUc0_w.js +52 -0
  19. package/dist/Game-BdkSBpyV.js +330 -0
  20. package/dist/Grab-y_ISAZvb.js +300 -0
  21. package/dist/{ImageInput.vue_vue_type_script_setup_true_lang-rWUkV9gn.js → ImageInput.vue_vue_type_script_setup_true_lang-WEsv0wME.js} +49 -48
  22. package/dist/{Index-DMdNgISh.js → Index-DZp0xkxW.js} +54 -54
  23. package/dist/LocationPicker.vue_vue_type_script_setup_true_lang-DXMshwQu.js +48 -0
  24. package/dist/{LottieAnimation.vue_vue_type_script_setup_true_lang-CyGJxUol.js → LottieAnimation.vue_vue_type_script_setup_true_lang-24MFkuKg.js} +1 -1
  25. package/dist/{MainLayout-B1aJoR95.js → MainLayout-B8VvzvAT.js} +1 -1
  26. package/dist/Marketing-BXfk7ZLc.js +166 -0
  27. package/dist/MarketingMaterialEdit-CoDx_QvV.js +1065 -0
  28. package/dist/{Member-CnSXGQi_.js → Member-DOP3Z4-m.js} +38 -37
  29. package/dist/{MemberList-DcpEKV1D.js → MemberList-BcMezuLM.js} +486 -491
  30. package/dist/{MemberTransactions-DeuuEcO5.js → MemberTransactions-BEG9Cfgw.js} +1 -1
  31. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-DLAEPNsq.js → MessageInput.vue_vue_type_script_setup_true_lang-R6ImfcMO.js} +13443 -10607
  32. package/dist/Mission-C4eWldYu.js +334 -0
  33. package/dist/{Overview-elpi-jpI.js → Overview-0V1dmEPw.js} +24 -25
  34. package/dist/Point-s9t7_Iee.js +262 -0
  35. package/dist/Promotion-VZCoFHHx.js +396 -0
  36. package/dist/{Queue-GvBhNEFe.js → Queue-DdoHcsXv.js} +23 -24
  37. package/dist/{Record-CbSxgo8i.js → Record-B73AsvsB.js} +10 -10
  38. package/dist/Review-eEJG7-gc.js +621 -0
  39. package/dist/ReviewFacebookCallback-Cq1fGEP3.js +243 -0
  40. package/dist/ReviewGoogleCallback-C7BBKqnK.js +213 -0
  41. package/dist/{Reward-QCGlrq89.js → Reward-DKFT9MmI.js} +16 -16
  42. package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-DSRvoo9z.js → RewardGroup.vue_vue_type_script_setup_true_lang-vbTI-3-L.js} +13 -14
  43. package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-Dc4daP4P.js +1912 -0
  44. package/dist/{Segment-5PndnEUa.js → Segment-RAMBNzZd.js} +273 -274
  45. package/dist/{SelectItems.vue_vue_type_script_setup_true_lang-DXR7bpzY.js → SelectItems.vue_vue_type_script_setup_true_lang-pQmd43cO.js} +23 -23
  46. package/dist/{SendCollectionSheet.vue_vue_type_script_setup_true_lang-DmITlNtt.js → SendCollectionSheet.vue_vue_type_script_setup_true_lang-PwedwyBw.js} +12 -12
  47. package/dist/SendVoucherSheet.vue_vue_type_script_setup_true_lang-rN37l0uX.js +226 -0
  48. package/dist/Setting--t7CPcWL.js +2039 -0
  49. package/dist/SettingAdvertisements-BzhckLOK.js +264 -0
  50. package/dist/Store-Dnax6l9z.js +1996 -0
  51. package/dist/StoreRewards-BIdtA-W4.js +535 -0
  52. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-B__Nqwzg.js +1129 -0
  53. package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-on00idd9.js +7007 -0
  54. package/dist/{Tier-BKKxG29r.js → Tier-Ch63LeNc.js} +561 -480
  55. package/dist/{Title-CReZgw8V.js → Title-wOMe2o3w.js} +151 -149
  56. package/dist/{Transaction-HWCmSVaJ.js → Transaction-CpkfV_sQ.js} +2 -2
  57. package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-D00AchXo.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-MPlAwheJ.js} +7 -7
  58. package/dist/Voucher-DlOZmlyt.js +421 -0
  59. package/dist/VoucherEditor.vue_vue_type_script_setup_true_lang-DBAk4tDY.js +421 -0
  60. package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-DXF39yC1.js → ZodTextField.vue_vue_type_script_setup_true_lang-BhCfP2wn.js} +2 -2
  61. package/dist/app-nACimuOe.js +59309 -0
  62. package/dist/app.js +1 -1
  63. package/dist/{business-Bc-EMd2p.js → business-BpM7Eni_.js} +11 -8
  64. package/dist/campaign-BaSTB-19.js +219 -0
  65. package/dist/campaign-CN7MibEN.js +253 -0
  66. package/dist/campaign.enum-CW4ESvMk.js +26 -0
  67. package/dist/campaign.fn-DPMaaXjP.js +776 -0
  68. package/dist/{collectible.enum-C4dM8khp.js → collectible.enum-_Bg6BIol.js} +1 -1
  69. package/dist/{collection.fn-AjDNdFe1.js → collection.fn-D86VQVrc.js} +2 -2
  70. package/dist/dto-By8psmkB.js +222 -0
  71. package/dist/duplicateCampaign-AVfDsabR.js +51 -0
  72. package/dist/effect-CCB9eCEr.js +89 -0
  73. package/dist/{email-addresses-B0SzUCQM.js → email-addresses-CyMOiGPR.js} +2 -2
  74. package/dist/{export-Bgz6WcNZ.js → export-DPUTGKPb.js} +4 -4
  75. package/dist/{helper-B1vFwohM.js → helper-CYKFnu8y.js} +22 -7
  76. package/dist/index-43V5T9JA.js +28899 -0
  77. package/dist/{index-DVQnrex_.js → index-9FXa-6Mk.js} +3 -3
  78. package/dist/{index-26SopNpv.js → index-B9vArh0F.js} +1 -1
  79. package/dist/index-BF2vcn02.js +3431 -0
  80. package/dist/{index-BIRmS75g.js → index-BPBdEGEz.js} +1 -1
  81. package/dist/index-BTaTuuEo.js +48 -0
  82. package/dist/{index-Cm2sBagk.js → index-Beq-ShJI.js} +1 -1
  83. package/dist/{index-CSQY21Zb.js → index-BxGFddJP.js} +3 -3
  84. package/dist/index-C0veCCui.js +85 -0
  85. package/dist/index-C0yZzlB3.js +8912 -0
  86. package/dist/index-CJy_KEtq.js +30289 -0
  87. package/dist/{index-DwT9RLst.js → index-CZRA2IY5.js} +23 -12
  88. package/dist/{index-DT2viYsL.js → index-Cpff1wjo.js} +617 -191
  89. package/dist/index-CuvNtC_M.js +61 -0
  90. package/dist/{index.esm2017-BAIN70_n.js → index.esm2017-DHrbC5Ry.js} +185 -185
  91. package/dist/{loading-C6Ouh0mG.js → loading-BSMi2eIc.js} +1 -1
  92. package/dist/{lodash-B5I3zXaY.js → lodash-DZxxJH2N.js} +1 -1
  93. package/dist/{membership-DU0BwIj8.js → membership-CWkspNDR.js} +3 -3
  94. package/dist/{moment-BWErdI6_.js → moment-D7p2TMB-.js} +6 -1
  95. package/dist/{money-Bg7GuE5s.js → money-CSBC-3Ol.js} +1 -1
  96. package/dist/{number-Ddmqo5D_.js → number-CeqAGZy9.js} +1 -1
  97. package/dist/objectid-C_sYOjBD.js +145 -0
  98. package/dist/{campaign-BeF8kTyg.js → plugins-B37e5K6S.js} +784 -777
  99. package/dist/remy-DM_pSPd3.js +46 -0
  100. package/dist/{reward-CN4gvn4c.js → reward-BHf9o7F7.js} +1 -1
  101. package/dist/{rule-CpiqqR0c.js → rule-CAOC63go.js} +505 -487
  102. package/dist/rule-builder-BTxbYw5Z.js +102 -0
  103. package/dist/style.css +11 -2
  104. package/dist/template-DHmXFTjv.js +188 -0
  105. package/dist/timezone-C9EUfUmm.js +1156 -0
  106. package/dist/trigger--TbXeeFT.js +213 -0
  107. package/dist/usePagination-Lr6F7nYH.js +220 -0
  108. package/dist/user-DOc3B6F_.js +55 -0
  109. package/dist/{vue-i18n-DVmD9I_o.js → vue-i18n-DQbt3scE.js} +409 -409
  110. package/dist/{xlsx-qJHsnW7k.js → xlsx-QxmpwFgC.js} +1 -1
  111. package/dist/{zod-Bg2FbC-D.js → zod-OfQMlh-A.js} +32 -31
  112. package/package.json +14 -6
  113. package/dist/AuditLogs-DW4rwNOn.js +0 -1887
  114. package/dist/Broadcast-Dhc0j16O.js +0 -227
  115. package/dist/Collections-CsUJEmqz.js +0 -465
  116. package/dist/Credit-Mqa-0XJd.js +0 -222
  117. package/dist/CustomSelect.vue_vue_type_script_setup_true_lang-DLnvDVgf.js +0 -108
  118. package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-DWWLxIq-.js +0 -2185
  119. package/dist/EffectSheet.vue_vue_type_style_index_0_lang-BiQGZeDc.js +0 -347
  120. package/dist/Experience-BD5C3old.js +0 -223
  121. package/dist/FilterChip.vue_vue_type_script_setup_true_lang-d8rh38tD.js +0 -114
  122. package/dist/Game-D4xsi8Ym.js +0 -278
  123. package/dist/Marketing-axcQYl8k.js +0 -20073
  124. package/dist/Mission-BHZiL-GH.js +0 -296
  125. package/dist/Point-gKvdggAl.js +0 -226
  126. package/dist/Promotion-7x2F_sFX.js +0 -289
  127. package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-AuN9NgcG.js +0 -1751
  128. package/dist/SendVoucherSheet.vue_vue_type_script_setup_true_lang-DTlv8ZAn.js +0 -147
  129. package/dist/Setting-Cab47wfH.js +0 -1936
  130. package/dist/Store-BFL3T9B5.js +0 -1842
  131. package/dist/StoreRewards-C43dCJtM.js +0 -423
  132. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-aAj5-nzZ.js +0 -1029
  133. package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-K3OPSYrF.js +0 -139
  134. package/dist/Voucher-BhUAcPZg.js +0 -384
  135. package/dist/VoucherEditor.vue_vue_type_script_setup_true_lang-C0YNez2L.js +0 -419
  136. package/dist/_commonjsHelpers-BkfeUUK-.js +0 -28
  137. package/dist/app-BGaUIdCr.js +0 -7086
  138. package/dist/app-DccKBdW_.js +0 -33357
  139. package/dist/campaign-DbJZEU7P.js +0 -96
  140. package/dist/campaign.enum-PBKYGUQY.js +0 -20
  141. package/dist/campaign.fn-Cq-4LfQj.js +0 -758
  142. package/dist/dto-8NvMMYAb.js +0 -214
  143. package/dist/effect-DZhcEQ5g.js +0 -78
  144. package/dist/index-CQQedv0M.js +0 -32260
  145. package/dist/index-CTgQRqQR.js +0 -30038
  146. package/dist/index-CsaQJMAR.js +0 -66
  147. package/dist/index-DGaywhpY.js +0 -76
  148. package/dist/index-DOfLDlI8.js +0 -8861
  149. package/dist/index-DVpAocyR.js +0 -3120
  150. package/dist/index-DlJGd8RC.js +0 -121
  151. package/dist/index-Dm65CTdy.js +0 -38
  152. package/dist/objectid-MCaJXAgq.js +0 -145
  153. package/dist/plugins-C-CRzeyC.js +0 -208
  154. package/dist/remy-vue-client-Cpppk9h-.js +0 -1693
  155. package/dist/rule-builder-DmkJng-x.js +0 -89
  156. package/dist/template-DTZgnkl5.js +0 -190
  157. package/dist/trigger-CPjJ73Rc.js +0 -144
  158. package/dist/usePagination-BeF5K3M7.js +0 -223
  159. package/dist/user-8VIt8A1x.js +0 -54
@@ -0,0 +1,1991 @@
1
+ import { defineComponent as He, ref as ve, resolveComponent as Ve, openBlock as P, createBlock as ci, unref as g, isRef as mi, withCtx as Ge, createElementVNode as k, createElementBlock as ee, Fragment as Le, renderList as We, toDisplayString as z, watch as fi, onBeforeMount as hi, createVNode as q, createCommentVNode as gi, h as $ } from "vue";
2
+ import { components as je } from "@feedmepos/ui-library";
3
+ import "./index-CJy_KEtq.js";
4
+ import { h as Q } from "./moment-D7p2TMB-.js";
5
+ import { _ as Ye } from "./FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js";
6
+ import { _ as vi } from "./DateRangeChip.vue_vue_type_script_setup_true_lang-eIoPtgO5.js";
7
+ import { u as yi, _ as ki } from "./usePagination-Lr6F7nYH.js";
8
+ import { c as Ue, a as Je } from "./plugins-B37e5K6S.js";
9
+ import { d as pe, e as xi } from "./index-Cpff1wjo.js";
10
+ import "./index-BF2vcn02.js";
11
+ import "./index-C0yZzlB3.js";
12
+ import "./index-BxGFddJP.js";
13
+ import { g as Si, S as Ei, b as Ci } from "./index-43V5T9JA.js";
14
+ import { o as _i } from "./objectId-dwaoBfJX.js";
15
+ import { u as Oi } from "./vue-i18n-DQbt3scE.js";
16
+ var Ii = "2.0.9", Ri = 500, Xe = "user-agent", ie = "", Ke = "?", x = {
17
+ FUNCTION: "function",
18
+ OBJECT: "object",
19
+ STRING: "string",
20
+ UNDEFINED: "undefined"
21
+ }, O = "browser", U = "cpu", M = "device", A = "engine", R = "os", te = "result", o = "name", i = "type", a = "vendor", r = "version", C = "architecture", we = "major", t = "model", ye = "console", w = "mobile", v = "tablet", S = "smarttv", D = "wearable", me = "xr", ce = "embedded", Ti = "fetcher", Y = "inapp", Be = "brands", W = "formFactors", ze = "fullVersionList", oe = "platform", $e = "platformVersion", Ee = "bitness", B = "sec-ch-ua", Ai = B + "-full-version-list", Di = B + "-arch", Mi = B + "-" + Ee, Li = B + "-form-factors", Ui = B + "-" + w, Fi = B + "-" + t, wi = B + "-" + oe, Ni = wi + "-version", bi = [Be, ze, w, t, oe, $e, C, W, Ee], fe = "Amazon", J = "Apple", Ze = "ASUS", Qe = "BlackBerry", G = "Google", ei = "Huawei", _e = "Lenovo", ii = "Honor", he = "LG", Oe = "Microsoft", Ie = "Motorola", ti = "Nvidia", oi = "OnePlus", Re = "OPPO", ne = "Samsung", ri = "Sharp", le = "Sony", Te = "Xiaomi", Ae = "Zebra", ai = "Chrome", si = "Chromium", N = "Chromecast", ke = "Edge", de = "Firefox", X = "Opera", De = "Facebook", ni = "Sogou", K = "Mobile ", Z = " Browser", Fe = "Windows", qi = typeof window !== x.UNDEFINED, _ = qi && window.navigator ? window.navigator : void 0, j = _ && _.userAgentData ? _.userAgentData : void 0, Pi = function(e, n) {
22
+ var s = {}, c = n;
23
+ if (!xe(n)) {
24
+ c = {};
25
+ for (var b in n)
26
+ for (var m in n[b])
27
+ c[m] = n[b][m].concat(c[m] ? c[m] : []);
28
+ }
29
+ for (var l in e)
30
+ s[l] = c[l] && c[l].length % 2 === 0 ? c[l].concat(e[l]) : e[l];
31
+ return s;
32
+ }, Ce = function(e) {
33
+ for (var n = {}, s = 0; s < e.length; s++)
34
+ n[e[s].toUpperCase()] = e[s];
35
+ return n;
36
+ }, Ne = function(e, n) {
37
+ if (typeof e === x.OBJECT && e.length > 0) {
38
+ for (var s in e)
39
+ if (H(n) == H(e[s])) return !0;
40
+ return !1;
41
+ }
42
+ return be(e) ? H(n) == H(e) : !1;
43
+ }, xe = function(e, n) {
44
+ for (var s in e)
45
+ return /^(browser|cpu|device|engine|os)$/.test(s) || (n ? xe(e[s]) : !1);
46
+ }, be = function(e) {
47
+ return typeof e === x.STRING;
48
+ }, Me = function(e) {
49
+ if (e) {
50
+ for (var n = [], s = re(/\\?\"/g, e).split(","), c = 0; c < s.length; c++)
51
+ if (s[c].indexOf(";") > -1) {
52
+ var b = Se(s[c]).split(";v=");
53
+ n[c] = { brand: b[0], version: b[1] };
54
+ } else
55
+ n[c] = Se(s[c]);
56
+ return n;
57
+ }
58
+ }, H = function(e) {
59
+ return be(e) ? e.toLowerCase() : e;
60
+ }, qe = function(e) {
61
+ return be(e) ? re(/[^\d\.]/g, e).split(".")[0] : void 0;
62
+ }, L = function(e) {
63
+ for (var n in e)
64
+ if (e.hasOwnProperty(n)) {
65
+ var s = e[n];
66
+ typeof s == x.OBJECT && s.length == 2 ? this[s[0]] = s[1] : this[s] = void 0;
67
+ }
68
+ return this;
69
+ }, re = function(e, n) {
70
+ return be(n) ? n.replace(e, ie) : n;
71
+ }, ue = function(e) {
72
+ return re(/\\?\"/g, e);
73
+ }, Se = function(e, n) {
74
+ return e = re(/^\s\s*/, String(e)), typeof n === x.UNDEFINED ? e : e.substring(0, n);
75
+ }, Pe = function(e, n) {
76
+ if (!(!e || !n))
77
+ for (var s = 0, c, b, m, l, u, d; s < n.length && !u; ) {
78
+ var y = n[s], p = n[s + 1];
79
+ for (c = b = 0; c < y.length && !u && y[c]; )
80
+ if (u = y[c++].exec(e), u)
81
+ for (m = 0; m < p.length; m++)
82
+ d = u[++b], l = p[m], typeof l === x.OBJECT && l.length > 0 ? l.length === 2 ? typeof l[1] == x.FUNCTION ? this[l[0]] = l[1].call(this, d) : this[l[0]] = l[1] : l.length >= 3 && (typeof l[1] === x.FUNCTION && !(l[1].exec && l[1].test) ? l.length > 3 ? this[l[0]] = d ? l[1].apply(this, l.slice(2)) : void 0 : this[l[0]] = d ? l[1].call(this, d, l[2]) : void 0 : l.length == 3 ? this[l[0]] = d ? d.replace(l[1], l[2]) : void 0 : l.length == 4 ? this[l[0]] = d ? l[3].call(this, d.replace(l[1], l[2])) : void 0 : l.length > 4 && (this[l[0]] = d ? l[3].apply(this, [d.replace(l[1], l[2])].concat(l.slice(4))) : void 0)) : this[l] = d || void 0;
83
+ s += 2;
84
+ }
85
+ }, T = function(e, n) {
86
+ for (var s in n)
87
+ if (typeof n[s] === x.OBJECT && n[s].length > 0) {
88
+ for (var c = 0; c < n[s].length; c++)
89
+ if (Ne(n[s][c], e))
90
+ return s === Ke ? void 0 : s;
91
+ } else if (Ne(n[s], e))
92
+ return s === Ke ? void 0 : s;
93
+ return n.hasOwnProperty("*") ? n["*"] : e;
94
+ }, li = {
95
+ ME: "4.90",
96
+ "NT 3.51": "3.51",
97
+ "NT 4.0": "4.0",
98
+ 2e3: ["5.0", "5.01"],
99
+ XP: ["5.1", "5.2"],
100
+ Vista: "6.0",
101
+ 7: "6.1",
102
+ 8: "6.2",
103
+ "8.1": "6.3",
104
+ 10: ["6.4", "10.0"],
105
+ NT: ""
106
+ }, di = {
107
+ embedded: "Automotive",
108
+ mobile: "Mobile",
109
+ tablet: ["Tablet", "EInk"],
110
+ smarttv: "TV",
111
+ wearable: "Watch",
112
+ xr: ["VR", "XR"],
113
+ "?": ["Desktop", "Unknown"],
114
+ "*": void 0
115
+ }, Hi = {
116
+ Chrome: "Google Chrome",
117
+ Edge: "Microsoft Edge",
118
+ "Edge WebView2": "Microsoft Edge WebView2",
119
+ "Chrome WebView": "Android WebView",
120
+ "Chrome Headless": "HeadlessChrome",
121
+ "Huawei Browser": "HuaweiBrowser",
122
+ "MIUI Browser": "Miui Browser",
123
+ "Opera Mobi": "OperaMobile",
124
+ Yandex: "YaBrowser"
125
+ }, ui = {
126
+ browser: [
127
+ [
128
+ // Most common regardless engine
129
+ /\b(?:crmo|crios)\/([\w\.]+)/i
130
+ // Chrome for Android/iOS
131
+ ],
132
+ [r, [o, K + "Chrome"]],
133
+ [
134
+ /webview.+edge\/([\w\.]+)/i
135
+ // Microsoft Edge
136
+ ],
137
+ [r, [o, ke + " WebView"]],
138
+ [
139
+ /edg(?:e|ios|a)?\/([\w\.]+)/i
140
+ ],
141
+ [r, [o, "Edge"]],
142
+ [
143
+ // Presto based
144
+ /(opera mini)\/([-\w\.]+)/i,
145
+ // Opera Mini
146
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
147
+ // Opera Mobi/Tablet
148
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
149
+ // Opera
150
+ ],
151
+ [o, r],
152
+ [
153
+ /opios[\/ ]+([\w\.]+)/i
154
+ // Opera mini on iphone >= 8.0
155
+ ],
156
+ [r, [o, X + " Mini"]],
157
+ [
158
+ /\bop(?:rg)?x\/([\w\.]+)/i
159
+ // Opera GX
160
+ ],
161
+ [r, [o, X + " GX"]],
162
+ [
163
+ /\bopr\/([\w\.]+)/i
164
+ // Opera Webkit
165
+ ],
166
+ [r, [o, X]],
167
+ [
168
+ // Mixed
169
+ /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
170
+ // Baidu
171
+ ],
172
+ [r, [o, "Baidu"]],
173
+ [
174
+ /\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i
175
+ // Maxthon
176
+ ],
177
+ [r, [o, "Maxthon"]],
178
+ [
179
+ /(kindle)\/([\w\.]+)/i,
180
+ // Kindle
181
+ /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
182
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
183
+ // Trident based
184
+ /(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,
185
+ // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
186
+ /(?:ms|\()(ie) ([\w\.]+)/i,
187
+ // Internet Explorer
188
+ // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble/Palemoon/HiBrowser
189
+ /(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i,
190
+ // Atlas/Rekonq/Puffin/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
191
+ /(brave)(?: chrome)?\/([\d\.]+)/i,
192
+ // Brave
193
+ /(aloha|heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i,
194
+ // Aloha/HeyTap/Ovi/115/Surf
195
+ /(qwant)(?:ios|mobile)\/([\d\.]+)/i,
196
+ // Qwant
197
+ /(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i
198
+ // Ecosia/Weibo
199
+ ],
200
+ [o, r],
201
+ [
202
+ /quark(?:pc)?\/([-\w\.]+)/i
203
+ // Quark
204
+ ],
205
+ [r, [o, "Quark"]],
206
+ [
207
+ /\bddg\/([\w\.]+)/i
208
+ // DuckDuckGo
209
+ ],
210
+ [r, [o, "DuckDuckGo"]],
211
+ [
212
+ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
213
+ // UCBrowser
214
+ ],
215
+ [r, [o, "UCBrowser"]],
216
+ [
217
+ /microm.+\bqbcore\/([\w\.]+)/i,
218
+ // WeChat Desktop for Windows Built-in Browser
219
+ /\bqbcore\/([\w\.]+).+microm/i,
220
+ /micromessenger\/([\w\.]+)/i
221
+ // WeChat
222
+ ],
223
+ [r, [o, "WeChat"]],
224
+ [
225
+ /konqueror\/([\w\.]+)/i
226
+ // Konqueror
227
+ ],
228
+ [r, [o, "Konqueror"]],
229
+ [
230
+ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
231
+ // IE11
232
+ ],
233
+ [r, [o, "IE"]],
234
+ [
235
+ /ya(?:search)?browser\/([\w\.]+)/i
236
+ // Yandex
237
+ ],
238
+ [r, [o, "Yandex"]],
239
+ [
240
+ /slbrowser\/([\w\.]+)/i
241
+ // Smart Lenovo Browser
242
+ ],
243
+ [r, [o, "Smart " + _e + Z]],
244
+ [
245
+ /(av(?:ast|g|ira))\/([\w\.]+)/i
246
+ // Avast/AVG/Avira Secure Browser
247
+ ],
248
+ [[o, /(.+)/, "$1 Secure" + Z], r],
249
+ [
250
+ /norton\/([\w\.]+)/i
251
+ // Norton Private Browser
252
+ ],
253
+ [r, [o, "Norton Private" + Z]],
254
+ [
255
+ /\bfocus\/([\w\.]+)/i
256
+ // Firefox Focus
257
+ ],
258
+ [r, [o, de + " Focus"]],
259
+ [
260
+ / mms\/([\w\.]+)$/i
261
+ // Opera Neon
262
+ ],
263
+ [r, [o, X + " Neon"]],
264
+ [
265
+ / opt\/([\w\.]+)$/i
266
+ // Opera Touch
267
+ ],
268
+ [r, [o, X + " Touch"]],
269
+ [
270
+ /coc_coc\w+\/([\w\.]+)/i
271
+ // Coc Coc Browser
272
+ ],
273
+ [r, [o, "Coc Coc"]],
274
+ [
275
+ /dolfin\/([\w\.]+)/i
276
+ // Dolphin
277
+ ],
278
+ [r, [o, "Dolphin"]],
279
+ [
280
+ /coast\/([\w\.]+)/i
281
+ // Opera Coast
282
+ ],
283
+ [r, [o, X + " Coast"]],
284
+ [
285
+ /miuibrowser\/([\w\.]+)/i
286
+ // MIUI Browser
287
+ ],
288
+ [r, [o, "MIUI" + Z]],
289
+ [
290
+ /fxios\/([\w\.-]+)/i
291
+ // Firefox for iOS
292
+ ],
293
+ [r, [o, K + de]],
294
+ [
295
+ /\bqihoobrowser\/?([\w\.]*)/i
296
+ // 360
297
+ ],
298
+ [r, [o, "360"]],
299
+ [
300
+ /\b(qq)\/([\w\.]+)/i
301
+ // QQ
302
+ ],
303
+ [[o, /(.+)/, "$1Browser"], r],
304
+ [
305
+ /(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
306
+ ],
307
+ [[o, /(.+)/, "$1" + Z], r],
308
+ [
309
+ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
310
+ /samsungbrowser\/([\w\.]+)/i
311
+ // Samsung Internet
312
+ ],
313
+ [r, [o, ne + " Internet"]],
314
+ [
315
+ /metasr[\/ ]?([\d\.]+)/i
316
+ // Sogou Explorer
317
+ ],
318
+ [r, [o, ni + " Explorer"]],
319
+ [
320
+ /(sogou)mo\w+\/([\d\.]+)/i
321
+ // Sogou Mobile
322
+ ],
323
+ [[o, ni + " Mobile"], r],
324
+ [
325
+ /(electron)\/([\w\.]+) safari/i,
326
+ // Electron-based App
327
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
328
+ // Tesla
329
+ /m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i
330
+ // QQ/2345
331
+ ],
332
+ [o, r],
333
+ [
334
+ /(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i
335
+ // LieBao Browser/Luakit/Rekonq/Steam
336
+ ],
337
+ [o],
338
+ [
339
+ /ome\/([\w\.]+).+(iron(?= saf)|360(?=[es]e$))/i
340
+ // Iron / 360
341
+ ],
342
+ [r, o],
343
+ [
344
+ // WebView
345
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
346
+ // Facebook App for iOS & Android
347
+ ],
348
+ [[o, De], r, [i, Y]],
349
+ [
350
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
351
+ // Kakao App
352
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
353
+ // Naver InApp
354
+ /(daum)apps[\/ ]([\w\.]+)/i,
355
+ // Daum App
356
+ /safari (line)\/([\w\.]+)/i,
357
+ // Line App for iOS
358
+ /\b(line)\/([\w\.]+)\/iab/i,
359
+ // Line App for Android
360
+ /(alipay)client\/([\w\.]+)/i,
361
+ // Alipay
362
+ /(twitter)(?:and| f.+e\/([\w\.]+))/i,
363
+ // Twitter
364
+ /(bing)(?:web|sapphire)\/([\w\.]+)/i,
365
+ // Bing
366
+ /(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i
367
+ // Instagram/Snapchat/Klarna
368
+ ],
369
+ [o, r, [i, Y]],
370
+ [
371
+ /\bgsa\/([\w\.]+) .*safari\//i
372
+ // Google Search Appliance on iOS
373
+ ],
374
+ [r, [o, "GSA"], [i, Y]],
375
+ [
376
+ /(?:musical_ly|trill)(?:.+app_?version\/|_)([\w\.]+)/i
377
+ // TikTok
378
+ ],
379
+ [r, [o, "TikTok"], [i, Y]],
380
+ [
381
+ /\[(linkedin)app\]/i
382
+ // LinkedIn App for iOS & Android
383
+ ],
384
+ [o, [i, Y]],
385
+ [
386
+ /(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i
387
+ // Zalo
388
+ ],
389
+ [[o, /(.+)/, "Zalo"], r, [i, Y]],
390
+ [
391
+ /(chromium)[\/ ]([-\w\.]+)/i
392
+ // Chromium
393
+ ],
394
+ [o, r],
395
+ [
396
+ /ome-(lighthouse)$/i
397
+ // Chrome Lighthouse
398
+ ],
399
+ [o, [i, Ti]],
400
+ [
401
+ /headlesschrome(?:\/([\w\.]+)| )/i
402
+ // Chrome Headless
403
+ ],
404
+ [r, [o, ai + " Headless"]],
405
+ [
406
+ /wv\).+chrome\/([\w\.]+).+edgw\//i
407
+ // Edge WebView2
408
+ ],
409
+ [r, [o, ke + " WebView2"]],
410
+ [
411
+ / wv\).+(chrome)\/([\w\.]+)/i
412
+ // Chrome WebView
413
+ ],
414
+ [[o, ai + " WebView"], r],
415
+ [
416
+ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
417
+ // Android Browser
418
+ ],
419
+ [r, [o, "Android" + Z]],
420
+ [
421
+ /chrome\/([\w\.]+) mobile/i
422
+ // Chrome Mobile
423
+ ],
424
+ [r, [o, K + "Chrome"]],
425
+ [
426
+ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
427
+ // Chrome/OmniWeb/Arora/Tizen/Nokia
428
+ ],
429
+ [o, r],
430
+ [
431
+ /version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i
432
+ // Safari Mobile
433
+ ],
434
+ [r, [o, K + "Safari"]],
435
+ [
436
+ /iphone .*mobile(?:\/\w+ | ?)safari/i
437
+ ],
438
+ [[o, K + "Safari"]],
439
+ [
440
+ /version\/([\w\.\,]+) .*(safari)/i
441
+ // Safari
442
+ ],
443
+ [r, o],
444
+ [
445
+ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
446
+ // Safari < 3.0
447
+ ],
448
+ [o, [r, "1"]],
449
+ [
450
+ /(webkit|khtml)\/([\w\.]+)/i
451
+ ],
452
+ [o, r],
453
+ [
454
+ // Gecko based
455
+ /(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i
456
+ // Firefox Mobile
457
+ ],
458
+ [[o, K + de], r],
459
+ [
460
+ /(navigator|netscape\d?)\/([-\w\.]+)/i
461
+ // Netscape
462
+ ],
463
+ [[o, "Netscape"], r],
464
+ [
465
+ /(wolvic|librewolf)\/([\w\.]+)/i
466
+ // Wolvic/LibreWolf
467
+ ],
468
+ [o, r],
469
+ [
470
+ /mobile vr; rv:([\w\.]+)\).+firefox/i
471
+ // Firefox Reality
472
+ ],
473
+ [r, [o, de + " Reality"]],
474
+ [
475
+ /ekiohf.+(flow)\/([\w\.]+)/i,
476
+ // Flow
477
+ /(swiftfox)/i,
478
+ // Swiftfox
479
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,
480
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
481
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\/([-\w\.]+)$/i,
482
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
483
+ /(firefox)\/([\w\.]+)/i,
484
+ // Other Firefox-based
485
+ /(mozilla)\/([\w\.]+(?= .+rv\:.+gecko\/\d+)|[0-4][\w\.]+(?!.+compatible))/i,
486
+ // Mozilla
487
+ // Other
488
+ /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
489
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird
490
+ /\b(links) \(([\w\.]+)/i
491
+ // Links
492
+ ],
493
+ [o, [r, /_/g, "."]],
494
+ [
495
+ /(cobalt)\/([\w\.]+)/i
496
+ // Cobalt
497
+ ],
498
+ [o, [r, /[^\d\.]+./, ie]]
499
+ ],
500
+ cpu: [
501
+ [
502
+ /\b((amd|x|x86[-_]?|wow|win)64)\b/i
503
+ // AMD64 (x64)
504
+ ],
505
+ [[C, "amd64"]],
506
+ [
507
+ /(ia32(?=;))/i,
508
+ // IA32 (quicktime)
509
+ /\b((i[346]|x)86)(pc)?\b/i
510
+ // IA32 (x86)
511
+ ],
512
+ [[C, "ia32"]],
513
+ [
514
+ /\b(aarch64|arm(v?[89]e?l?|_?64))\b/i
515
+ // ARM64
516
+ ],
517
+ [[C, "arm64"]],
518
+ [
519
+ /\b(arm(v[67])?ht?n?[fl]p?)\b/i
520
+ // ARMHF
521
+ ],
522
+ [[C, "armhf"]],
523
+ [
524
+ // PocketPC mistakenly identified as PowerPC
525
+ /( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i
526
+ ],
527
+ [[C, "arm"]],
528
+ [
529
+ / sun4\w[;\)]/i
530
+ // SPARC
531
+ ],
532
+ [[C, "sparc"]],
533
+ [
534
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
535
+ /\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,
536
+ /((ppc|powerpc)(64)?)( mac|;|\))/i,
537
+ // PowerPC
538
+ /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i
539
+ // Alpha
540
+ ],
541
+ [[C, /ower/, ie, H]],
542
+ [
543
+ /mc680.0/i
544
+ ],
545
+ [[C, "68k"]],
546
+ [
547
+ /winnt.+\[axp/i
548
+ ],
549
+ [[C, "alpha"]]
550
+ ],
551
+ device: [
552
+ [
553
+ //////////////////////////
554
+ // MOBILES & TABLETS
555
+ /////////////////////////
556
+ // Samsung
557
+ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
558
+ ],
559
+ [t, [a, ne], [i, v]],
560
+ [
561
+ /\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
562
+ /samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,
563
+ /sec-(sgh\w+)/i
564
+ ],
565
+ [t, [a, ne], [i, w]],
566
+ [
567
+ // Apple
568
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i
569
+ // iPod/iPhone
570
+ ],
571
+ [t, [a, J], [i, w]],
572
+ [
573
+ /\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i,
574
+ // iPad
575
+ /\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i
576
+ ],
577
+ [t, [a, J], [i, v]],
578
+ [
579
+ /(macintosh);/i
580
+ ],
581
+ [t, [a, J]],
582
+ [
583
+ // Sharp
584
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
585
+ ],
586
+ [t, [a, ri], [i, w]],
587
+ [
588
+ // Honor
589
+ /\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i
590
+ ],
591
+ [t, [a, ii], [i, v]],
592
+ [
593
+ /honor([-\w ]+)[;\)]/i
594
+ ],
595
+ [t, [a, ii], [i, w]],
596
+ [
597
+ // Huawei
598
+ /\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i
599
+ ],
600
+ [t, [a, ei], [i, v]],
601
+ [
602
+ /(?:huawei) ?([-\w ]+)[;\)]/i,
603
+ /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i
604
+ ],
605
+ [t, [a, ei], [i, w]],
606
+ [
607
+ // Xiaomi
608
+ /oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,
609
+ /\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i
610
+ // Mi Pad tablets
611
+ ],
612
+ [[t, /_/g, " "], [a, Te], [i, v]],
613
+ [
614
+ /\b; (\w+) build\/hm\1/i,
615
+ // Xiaomi Hongmi 'numeric' models
616
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
617
+ // Xiaomi Hongmi
618
+ // Xiaomi Redmi / POCO / Black Shark / Qin
619
+ /oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i,
620
+ // Xiaomi Mi
621
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i,
622
+ / ([\w ]+) miui\/v?\d/i
623
+ ],
624
+ [[t, /_/g, " "], [a, Te], [i, w]],
625
+ [
626
+ // OnePlus
627
+ /droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-l]\w[1m]10)\b/i,
628
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
629
+ ],
630
+ [t, [a, oi], [i, w]],
631
+ [
632
+ // OPPO
633
+ /; (\w+) bui.+ oppo/i,
634
+ /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
635
+ ],
636
+ [t, [a, Re], [i, w]],
637
+ [
638
+ /\b(opd2(\d{3}a?))(?: bui|\))/i
639
+ ],
640
+ [t, [a, T, { OnePlus: ["203", "304", "403", "404", "413", "415"], "*": Re }], [i, v]],
641
+ [
642
+ // BLU
643
+ /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
644
+ // Vivo series
645
+ ],
646
+ [t, [a, "BLU"], [i, w]],
647
+ [
648
+ // Vivo
649
+ /; vivo (\w+)(?: bui|\))/i,
650
+ /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
651
+ ],
652
+ [t, [a, "Vivo"], [i, w]],
653
+ [
654
+ // Realme
655
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i
656
+ ],
657
+ [t, [a, "Realme"], [i, w]],
658
+ [
659
+ // Lenovo
660
+ /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,
661
+ /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i
662
+ ],
663
+ [t, [a, _e], [i, v]],
664
+ [
665
+ /lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i
666
+ ],
667
+ [t, [a, _e], [i, w]],
668
+ [
669
+ // Motorola
670
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
671
+ /\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,
672
+ /((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i
673
+ ],
674
+ [t, [a, Ie], [i, w]],
675
+ [
676
+ /\b(mz60\d|xoom[2 ]{0,2}) build\//i
677
+ ],
678
+ [t, [a, Ie], [i, v]],
679
+ [
680
+ // LG
681
+ /\b(?:lg)?([vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
682
+ ],
683
+ [t, [a, he], [i, v]],
684
+ [
685
+ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
686
+ /\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,
687
+ /\blg-?([\d\w]+) bui/i
688
+ ],
689
+ [t, [a, he], [i, w]],
690
+ [
691
+ // Nokia
692
+ /(nokia) (t[12][01])/i
693
+ ],
694
+ [a, t, [i, v]],
695
+ [
696
+ /(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,
697
+ /nokia[-_ ]?(([-\w\. ]*?))( bui|\)|;|\/)/i
698
+ ],
699
+ [[t, /_/g, " "], [i, w], [a, "Nokia"]],
700
+ [
701
+ // Google
702
+ /(pixel (c|tablet))\b/i
703
+ // Google Pixel C/Tablet
704
+ ],
705
+ [t, [a, G], [i, v]],
706
+ [
707
+ // Google Pixel
708
+ /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i
709
+ ],
710
+ [t, [a, G], [i, w]],
711
+ [
712
+ /(google) (pixelbook( go)?)/i
713
+ ],
714
+ [a, t],
715
+ [
716
+ // Sony
717
+ /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
718
+ ],
719
+ [t, [a, le], [i, w]],
720
+ [
721
+ /sony tablet [ps]/i,
722
+ /\b(?:sony)?sgp\w+(?: bui|\))/i
723
+ ],
724
+ [[t, "Xperia Tablet"], [a, le], [i, v]],
725
+ [
726
+ // Amazon
727
+ /(alexa)webm/i,
728
+ /(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,
729
+ // Kindle Fire without Silk / Echo Show
730
+ /(kf[a-z]+)( bui|\)).+silk\//i
731
+ // Kindle Fire HD
732
+ ],
733
+ [t, [a, fe], [i, v]],
734
+ [
735
+ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
736
+ // Fire Phone
737
+ ],
738
+ [[t, /(.+)/g, "Fire Phone $1"], [a, fe], [i, w]],
739
+ [
740
+ // BlackBerry
741
+ /(playbook);[-\w\),; ]+(rim)/i
742
+ // BlackBerry PlayBook
743
+ ],
744
+ [t, a, [i, v]],
745
+ [
746
+ /\b((?:bb[a-f]|st[hv])100-\d)/i,
747
+ /(?:blackberry|\(bb10;) (\w+)/i
748
+ ],
749
+ [t, [a, Qe], [i, w]],
750
+ [
751
+ // Asus
752
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
753
+ ],
754
+ [t, [a, Ze], [i, v]],
755
+ [
756
+ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
757
+ ],
758
+ [t, [a, Ze], [i, w]],
759
+ [
760
+ // HTC
761
+ /(nexus 9)/i
762
+ // HTC Nexus 9
763
+ ],
764
+ [t, [a, "HTC"], [i, v]],
765
+ [
766
+ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
767
+ // HTC
768
+ // ZTE
769
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
770
+ /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
771
+ // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
772
+ ],
773
+ [a, [t, /_/g, " "], [i, w]],
774
+ [
775
+ // TCL
776
+ /tcl (xess p17aa)/i,
777
+ /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i
778
+ ],
779
+ [t, [a, "TCL"], [i, v]],
780
+ [
781
+ /droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i
782
+ ],
783
+ [t, [a, "TCL"], [i, w]],
784
+ [
785
+ // itel
786
+ /(itel) ((\w+))/i
787
+ ],
788
+ [[a, H], t, [i, T, { tablet: ["p10001l", "w7001"], "*": "mobile" }]],
789
+ [
790
+ // Acer
791
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
792
+ ],
793
+ [t, [a, "Acer"], [i, v]],
794
+ [
795
+ // Meizu
796
+ /droid.+; (m[1-5] note) bui/i,
797
+ /\bmz-([-\w]{2,})/i
798
+ ],
799
+ [t, [a, "Meizu"], [i, w]],
800
+ [
801
+ // Ulefone
802
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
803
+ ],
804
+ [t, [a, "Ulefone"], [i, w]],
805
+ [
806
+ // Energizer
807
+ /; (energy ?\w+)(?: bui|\))/i,
808
+ /; energizer ([\w ]+)(?: bui|\))/i
809
+ ],
810
+ [t, [a, "Energizer"], [i, w]],
811
+ [
812
+ // Cat
813
+ /; cat (b35);/i,
814
+ /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
815
+ ],
816
+ [t, [a, "Cat"], [i, w]],
817
+ [
818
+ // Smartfren
819
+ /((?:new )?andromax[\w- ]+)(?: bui|\))/i
820
+ ],
821
+ [t, [a, "Smartfren"], [i, w]],
822
+ [
823
+ // Nothing
824
+ /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i
825
+ ],
826
+ [t, [a, "Nothing"], [i, w]],
827
+ [
828
+ // Archos
829
+ /; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
830
+ /archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
831
+ ],
832
+ [t, [a, "Archos"], [i, v]],
833
+ [
834
+ /archos ([\w ]+)( b|\))/i,
835
+ /; (ac[3-6]\d\w{2,8})( b|\))/i
836
+ ],
837
+ [t, [a, "Archos"], [i, w]],
838
+ [
839
+ // HMD
840
+ /; (n159v)/i
841
+ ],
842
+ [t, [a, "HMD"], [i, w]],
843
+ [
844
+ // MIXED
845
+ /(imo) (tab \w+)/i,
846
+ // IMO
847
+ /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i
848
+ // Infinix XPad / Tecno
849
+ ],
850
+ [a, t, [i, v]],
851
+ [
852
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
853
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan
854
+ // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL/Wiko
855
+ /; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,
856
+ /(hp) ([\w ]+\w)/i,
857
+ // HP iPAQ
858
+ /(microsoft); (lumia[\w ]+)/i,
859
+ // Microsoft Lumia
860
+ /(oppo) ?([\w ]+) bui/i,
861
+ // OPPO
862
+ /(hisense) ([ehv][\w ]+)\)/i,
863
+ // Hisense
864
+ /droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i
865
+ // Philips
866
+ ],
867
+ [a, t, [i, w]],
868
+ [
869
+ /(kobo)\s(ereader|touch)/i,
870
+ // Kobo
871
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
872
+ // HP TouchPad
873
+ /(kindle)\/([\w\.]+)/i
874
+ // Kindle
875
+ ],
876
+ [a, t, [i, v]],
877
+ [
878
+ /(surface duo)/i
879
+ // Surface Duo
880
+ ],
881
+ [t, [a, Oe], [i, v]],
882
+ [
883
+ /droid [\d\.]+; (fp\du?)(?: b|\))/i
884
+ // Fairphone
885
+ ],
886
+ [t, [a, "Fairphone"], [i, w]],
887
+ [
888
+ /((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i
889
+ // Nvidia Tablets
890
+ ],
891
+ [t, [a, ti], [i, v]],
892
+ [
893
+ /(sprint) (\w+)/i
894
+ // Sprint Phones
895
+ ],
896
+ [a, t, [i, w]],
897
+ [
898
+ /(kin\.[onetw]{3})/i
899
+ // Microsoft Kin
900
+ ],
901
+ [[t, /\./g, " "], [a, Oe], [i, w]],
902
+ [
903
+ /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
904
+ // Zebra
905
+ ],
906
+ [t, [a, Ae], [i, v]],
907
+ [
908
+ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
909
+ ],
910
+ [t, [a, Ae], [i, w]],
911
+ [
912
+ ///////////////////
913
+ // SMARTTVS
914
+ ///////////////////
915
+ /(philips)[\w ]+tv/i,
916
+ // Philips
917
+ /smart-tv.+(samsung)/i
918
+ // Samsung
919
+ ],
920
+ [a, [i, S]],
921
+ [
922
+ /hbbtv.+maple;(\d+)/i
923
+ ],
924
+ [[t, /^/, "SmartTV"], [a, ne], [i, S]],
925
+ [
926
+ /(vizio)(?: |.+model\/)(\w+-\w+)/i,
927
+ // Vizio
928
+ /tcast.+(lg)e?. ([-\w]+)/i
929
+ // LG SmartTV
930
+ ],
931
+ [a, t, [i, S]],
932
+ [
933
+ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
934
+ ],
935
+ [[a, he], [i, S]],
936
+ [
937
+ /(apple) ?tv/i
938
+ // Apple TV
939
+ ],
940
+ [a, [t, J + " TV"], [i, S]],
941
+ [
942
+ /crkey.*devicetype\/chromecast/i
943
+ // Google Chromecast Third Generation
944
+ ],
945
+ [[t, N + " Third Generation"], [a, G], [i, S]],
946
+ [
947
+ /crkey.*devicetype\/([^/]*)/i
948
+ // Google Chromecast with specific device type
949
+ ],
950
+ [[t, /^/, "Chromecast "], [a, G], [i, S]],
951
+ [
952
+ /fuchsia.*crkey/i
953
+ // Google Chromecast Nest Hub
954
+ ],
955
+ [[t, N + " Nest Hub"], [a, G], [i, S]],
956
+ [
957
+ /crkey/i
958
+ // Google Chromecast, Linux-based or unknown
959
+ ],
960
+ [[t, N], [a, G], [i, S]],
961
+ [
962
+ /(portaltv)/i
963
+ // Facebook Portal TV
964
+ ],
965
+ [t, [a, De], [i, S]],
966
+ [
967
+ /droid.+aft(\w+)( bui|\))/i
968
+ // Fire TV
969
+ ],
970
+ [t, [a, fe], [i, S]],
971
+ [
972
+ /(shield \w+ tv)/i
973
+ // Nvidia Shield TV
974
+ ],
975
+ [t, [a, ti], [i, S]],
976
+ [
977
+ /\(dtv[\);].+(aquos)/i,
978
+ /(aquos-tv[\w ]+)\)/i
979
+ // Sharp
980
+ ],
981
+ [t, [a, ri], [i, S]],
982
+ [
983
+ /(bravia[\w ]+)( bui|\))/i
984
+ // Sony
985
+ ],
986
+ [t, [a, le], [i, S]],
987
+ [
988
+ /(mi(tv|box)-?\w+) bui/i
989
+ // Xiaomi
990
+ ],
991
+ [t, [a, Te], [i, S]],
992
+ [
993
+ /Hbbtv.*(technisat) (.*);/i
994
+ // TechniSAT
995
+ ],
996
+ [a, t, [i, S]],
997
+ [
998
+ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
999
+ // Roku
1000
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
1001
+ // HbbTV devices
1002
+ ],
1003
+ [[a, /.+\/(\w+)/, "$1", T, { LG: "lge" }], [t, Se], [i, S]],
1004
+ [
1005
+ ///////////////////
1006
+ // CONSOLES
1007
+ ///////////////////
1008
+ /(playstation \w+)/i
1009
+ // Playstation
1010
+ ],
1011
+ [t, [a, le], [i, ye]],
1012
+ [
1013
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i
1014
+ // Microsoft Xbox
1015
+ ],
1016
+ [t, [a, Oe], [i, ye]],
1017
+ [
1018
+ /(ouya)/i,
1019
+ // Ouya
1020
+ /(nintendo) (\w+)/i,
1021
+ // Nintendo
1022
+ /(retroid) (pocket ([^\)]+))/i,
1023
+ // Retroid Pocket
1024
+ /(valve).+(steam deck)/i,
1025
+ /droid.+; ((shield|rgcube|gr0006))( bui|\))/i
1026
+ // Nvidia Portable/Anbernic/Logitech
1027
+ ],
1028
+ [[a, T, { Nvidia: "Shield", Anbernic: "RGCUBE", Logitech: "GR0006" }], t, [i, ye]],
1029
+ [
1030
+ ///////////////////
1031
+ // WEARABLES
1032
+ ///////////////////
1033
+ /\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i
1034
+ // Samsung Galaxy Watch
1035
+ ],
1036
+ [t, [a, ne], [i, D]],
1037
+ [
1038
+ /((pebble))app/i,
1039
+ // Pebble
1040
+ /(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i
1041
+ // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch
1042
+ ],
1043
+ [a, t, [i, D]],
1044
+ [
1045
+ /(ow(?:19|20)?we?[1-3]{1,3})/i
1046
+ // Oppo Watch
1047
+ ],
1048
+ [t, [a, Re], [i, D]],
1049
+ [
1050
+ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
1051
+ // Apple Watch
1052
+ ],
1053
+ [t, [a, J], [i, D]],
1054
+ [
1055
+ /(opwwe\d{3})/i
1056
+ // OnePlus Watch
1057
+ ],
1058
+ [t, [a, oi], [i, D]],
1059
+ [
1060
+ /(moto 360)/i
1061
+ // Motorola 360
1062
+ ],
1063
+ [t, [a, Ie], [i, D]],
1064
+ [
1065
+ /(smartwatch 3)/i
1066
+ // Sony SmartWatch
1067
+ ],
1068
+ [t, [a, le], [i, D]],
1069
+ [
1070
+ /(g watch r)/i
1071
+ // LG G Watch R
1072
+ ],
1073
+ [t, [a, he], [i, D]],
1074
+ [
1075
+ /droid.+; (wt63?0{2,3})\)/i
1076
+ ],
1077
+ [t, [a, Ae], [i, D]],
1078
+ [
1079
+ ///////////////////
1080
+ // XR
1081
+ ///////////////////
1082
+ /droid.+; (glass) \d/i
1083
+ // Google Glass
1084
+ ],
1085
+ [t, [a, G], [i, me]],
1086
+ [
1087
+ /(pico) ([\w ]+) os\d/i
1088
+ // Pico
1089
+ ],
1090
+ [a, t, [i, me]],
1091
+ [
1092
+ /(quest( \d| pro)?s?).+vr/i
1093
+ // Meta Quest
1094
+ ],
1095
+ [t, [a, De], [i, me]],
1096
+ [
1097
+ /mobile vr; rv.+firefox/i
1098
+ // Unidentifiable VR device using Firefox Reality / Wolvic
1099
+ ],
1100
+ [[i, me]],
1101
+ [
1102
+ ///////////////////
1103
+ // EMBEDDED
1104
+ ///////////////////
1105
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
1106
+ // Tesla
1107
+ ],
1108
+ [a, [i, ce]],
1109
+ [
1110
+ /(aeobc)\b/i
1111
+ // Echo Dot
1112
+ ],
1113
+ [t, [a, fe], [i, ce]],
1114
+ [
1115
+ /(homepod).+mac os/i
1116
+ // Apple HomePod
1117
+ ],
1118
+ [t, [a, J], [i, ce]],
1119
+ [
1120
+ /windows iot/i
1121
+ // Unidentifiable embedded device using Windows IoT
1122
+ ],
1123
+ [[i, ce]],
1124
+ [
1125
+ ////////////////////
1126
+ // MIXED (GENERIC)
1127
+ ///////////////////
1128
+ /droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i
1129
+ // Unidentifiable SmartTV
1130
+ ],
1131
+ [t, [i, S]],
1132
+ [
1133
+ /\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i
1134
+ ],
1135
+ [[i, S]],
1136
+ [
1137
+ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew|; hmsc).+?(mobile|vr|\d) safari/i
1138
+ ],
1139
+ [t, [i, T, { mobile: "Mobile", xr: "VR", "*": v }]],
1140
+ [
1141
+ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
1142
+ // Unidentifiable Tablet
1143
+ ],
1144
+ [[i, v]],
1145
+ [
1146
+ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
1147
+ // Unidentifiable Mobile
1148
+ ],
1149
+ [[i, w]],
1150
+ [
1151
+ /droid .+?; ([\w\. -]+)( bui|\))/i
1152
+ // Generic Android Device
1153
+ ],
1154
+ [t, [a, "Generic"]]
1155
+ ],
1156
+ engine: [
1157
+ [
1158
+ /windows.+ edge\/([\w\.]+)/i
1159
+ // EdgeHTML
1160
+ ],
1161
+ [r, [o, ke + "HTML"]],
1162
+ [
1163
+ /(arkweb)\/([\w\.]+)/i
1164
+ // ArkWeb
1165
+ ],
1166
+ [o, r],
1167
+ [
1168
+ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
1169
+ // Blink
1170
+ ],
1171
+ [r, [o, "Blink"]],
1172
+ [
1173
+ /(presto)\/([\w\.]+)/i,
1174
+ // Presto
1175
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,
1176
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
1177
+ /ekioh(flow)\/([\w\.]+)/i,
1178
+ // Flow
1179
+ /(khtml|tasman|links|dillo)[\/ ]\(?([\w\.]+)/i,
1180
+ // KHTML/Tasman/Links/Dillo
1181
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
1182
+ // iCab
1183
+ /\b(libweb)/i
1184
+ // LibWeb
1185
+ ],
1186
+ [o, r],
1187
+ [
1188
+ /ladybird\//i
1189
+ ],
1190
+ [[o, "LibWeb"]],
1191
+ [
1192
+ /rv\:([\w\.]{1,9})\b.+(gecko)/i
1193
+ // Gecko
1194
+ ],
1195
+ [r, o]
1196
+ ],
1197
+ os: [
1198
+ [
1199
+ // Windows
1200
+ /(windows nt) (6\.[23]); arm/i
1201
+ // Windows RT
1202
+ ],
1203
+ [[o, /N/, "R"], [r, T, li]],
1204
+ [
1205
+ /(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,
1206
+ // Windows IoT/Mobile/Phone
1207
+ // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11
1208
+ /(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i
1209
+ ],
1210
+ [o, r],
1211
+ [
1212
+ /windows nt ?([\d\.\)]*)(?!.+xbox)/i,
1213
+ /\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i
1214
+ ],
1215
+ [[r, /(;|\))/g, "", T, li], [o, Fe]],
1216
+ [
1217
+ /(windows ce)\/?([\d\.]*)/i
1218
+ // Windows CE
1219
+ ],
1220
+ [o, r],
1221
+ [
1222
+ // iOS/macOS
1223
+ /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,
1224
+ // iOS
1225
+ /(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\/ ]([\w\.]+)/i,
1226
+ /\btvos ?([\w\.]+)/i,
1227
+ /cfnetwork\/.+darwin/i
1228
+ ],
1229
+ [[r, /_/g, "."], [o, "iOS"]],
1230
+ [
1231
+ /(mac os x) ?([\w\. ]*)/i,
1232
+ /(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i
1233
+ // Mac OS
1234
+ ],
1235
+ [[o, "macOS"], [r, /_/g, "."]],
1236
+ [
1237
+ // Google Chromecast
1238
+ /android ([\d\.]+).*crkey/i
1239
+ // Google Chromecast, Android-based
1240
+ ],
1241
+ [r, [o, N + " Android"]],
1242
+ [
1243
+ /fuchsia.*crkey\/([\d\.]+)/i
1244
+ // Google Chromecast, Fuchsia-based
1245
+ ],
1246
+ [r, [o, N + " Fuchsia"]],
1247
+ [
1248
+ /crkey\/([\d\.]+).*devicetype\/smartspeaker/i
1249
+ // Google Chromecast, Linux-based Smart Speaker
1250
+ ],
1251
+ [r, [o, N + " SmartSpeaker"]],
1252
+ [
1253
+ /linux.*crkey\/([\d\.]+)/i
1254
+ // Google Chromecast, Legacy Linux-based
1255
+ ],
1256
+ [r, [o, N + " Linux"]],
1257
+ [
1258
+ /crkey\/([\d\.]+)/i
1259
+ // Google Chromecast, unknown
1260
+ ],
1261
+ [r, [o, N]],
1262
+ [
1263
+ // Mobile OSes
1264
+ /droid ([\w\.]+)\b.+(android[- ]x86)/i
1265
+ // Android-x86
1266
+ ],
1267
+ [r, o],
1268
+ [
1269
+ /(ubuntu) ([\w\.]+) like android/i
1270
+ // Ubuntu Touch
1271
+ ],
1272
+ [[o, /(.+)/, "$1 Touch"], r],
1273
+ [
1274
+ /(harmonyos)[\/ ]?([\d\.]*)/i,
1275
+ // HarmonyOS
1276
+ // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
1277
+ /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i
1278
+ ],
1279
+ [o, r],
1280
+ [
1281
+ /\(bb(10);/i
1282
+ // BlackBerry 10
1283
+ ],
1284
+ [r, [o, Qe]],
1285
+ [
1286
+ /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i
1287
+ // Symbian
1288
+ ],
1289
+ [r, [o, "Symbian"]],
1290
+ [
1291
+ /mozilla\/[\d\.]+ \((?:mobile[;\w ]*|tablet|tv|[^\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\w\.]+)\).+gecko\//i
1292
+ // Firefox OS
1293
+ ],
1294
+ [r, [o, de + " OS"]],
1295
+ [
1296
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,
1297
+ // WebOS
1298
+ /webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i
1299
+ ],
1300
+ [r, [o, "webOS"]],
1301
+ [
1302
+ /web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i
1303
+ // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine
1304
+ ],
1305
+ [[r, T, { 25: "120", 24: "108", 23: "94", 22: "87", 6: "79", 5: "68", 4: "53", 3: "38", 2: "538", 1: "537", "*": "TV" }], [o, "webOS"]],
1306
+ [
1307
+ /watch(?: ?os[,\/ ]|\d,\d\/)([\d\.]+)/i
1308
+ // watchOS
1309
+ ],
1310
+ [r, [o, "watchOS"]],
1311
+ [
1312
+ // Google ChromeOS
1313
+ /cros [\w]+(?:\)| ([\w\.]+)\b)/i
1314
+ // Chromium OS
1315
+ ],
1316
+ [r, [o, "Chrome OS"]],
1317
+ [
1318
+ // Smart TVs
1319
+ /kepler ([\w\.]+); (aft|aeo)/i
1320
+ // Vega OS
1321
+ ],
1322
+ [r, [o, "Vega OS"]],
1323
+ [
1324
+ /(netrange)mmh/i,
1325
+ // Netrange
1326
+ /(nettv)\/(\d+\.[\w\.]+)/i,
1327
+ // NetTV
1328
+ // Console
1329
+ /(nintendo|playstation) (\w+)/i,
1330
+ // Nintendo/Playstation
1331
+ /(xbox); +xbox ([^\);]+)/i,
1332
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
1333
+ /(pico) .+os([\w\.]+)/i,
1334
+ // Pico
1335
+ // Other
1336
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
1337
+ // Joli/Palm
1338
+ /linux.+(mint)[\/\(\) ]?([\w\.]*)/i,
1339
+ // Mint
1340
+ /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,
1341
+ // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch
1342
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
1343
+ // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix
1344
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
1345
+ // Solaris
1346
+ /\b(aix)[; ]([1-9\.]{0,4})/i,
1347
+ // AIX
1348
+ /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,
1349
+ // Hurd/Linux/MorphOS
1350
+ /(gnu) ?([\w\.]*)/i,
1351
+ // GNU
1352
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
1353
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
1354
+ /(haiku) ?(r\d)?/i
1355
+ // Haiku
1356
+ ],
1357
+ [o, r],
1358
+ [
1359
+ /(sunos) ?([\d\.]*)/i
1360
+ // Solaris
1361
+ ],
1362
+ [[o, "Solaris"], r],
1363
+ [
1364
+ /\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,
1365
+ // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS
1366
+ /(unix) ?([\w\.]*)/i
1367
+ // UNIX
1368
+ ],
1369
+ [o, r]
1370
+ ]
1371
+ }, ge = function() {
1372
+ var e = { init: {}, isIgnore: {}, isIgnoreRgx: {}, toString: {} };
1373
+ return L.call(e.init, [
1374
+ [O, [o, r, we, i]],
1375
+ [U, [C]],
1376
+ [M, [i, t, a]],
1377
+ [A, [o, r]],
1378
+ [R, [o, r]]
1379
+ ]), L.call(e.isIgnore, [
1380
+ [O, [r, we]],
1381
+ [A, [r]],
1382
+ [R, [r]]
1383
+ ]), L.call(e.isIgnoreRgx, [
1384
+ [O, / ?browser$/i],
1385
+ [R, / ?os$/i]
1386
+ ]), L.call(e.toString, [
1387
+ [O, [o, r]],
1388
+ [U, [C]],
1389
+ [M, [a, t]],
1390
+ [A, [o, r]],
1391
+ [R, [o, r]]
1392
+ ]), e;
1393
+ }(), Vi = function(e, n) {
1394
+ var s = ge.init[n], c = ge.isIgnore[n] || 0, b = ge.isIgnoreRgx[n] || 0, m = ge.toString[n] || 0;
1395
+ function l() {
1396
+ L.call(this, s);
1397
+ }
1398
+ return l.prototype.getItem = function() {
1399
+ return e;
1400
+ }, l.prototype.withClientHints = function() {
1401
+ return j ? j.getHighEntropyValues(bi).then(function(u) {
1402
+ return e.setCH(new pi(u, !1)).parseCH().get();
1403
+ }) : e.parseCH().get();
1404
+ }, l.prototype.withFeatureCheck = function() {
1405
+ return e.detectFeature().get();
1406
+ }, n != te && (l.prototype.is = function(u) {
1407
+ var d = !1;
1408
+ for (var y in this)
1409
+ if (this.hasOwnProperty(y) && !Ne(c, y) && H(b ? re(b, this[y]) : this[y]) == H(b ? re(b, u) : u)) {
1410
+ if (d = !0, u != x.UNDEFINED) break;
1411
+ } else if (u == x.UNDEFINED && d) {
1412
+ d = !d;
1413
+ break;
1414
+ }
1415
+ return d;
1416
+ }, l.prototype.toString = function() {
1417
+ var u = ie;
1418
+ for (var d in m)
1419
+ typeof this[m[d]] !== x.UNDEFINED && (u += (u ? " " : ie) + this[m[d]]);
1420
+ return u || x.UNDEFINED;
1421
+ }), l.prototype.then = function(u) {
1422
+ var d = this, y = function() {
1423
+ for (var E in d)
1424
+ d.hasOwnProperty(E) && (this[E] = d[E]);
1425
+ };
1426
+ y.prototype = {
1427
+ is: l.prototype.is,
1428
+ toString: l.prototype.toString,
1429
+ withClientHints: l.prototype.withClientHints,
1430
+ withFeatureCheck: l.prototype.withFeatureCheck
1431
+ };
1432
+ var p = new y();
1433
+ return u(p), p;
1434
+ }, new l();
1435
+ };
1436
+ function pi(e, n) {
1437
+ if (e = e || {}, L.call(this, bi), n)
1438
+ L.call(this, [
1439
+ [Be, Me(e[B])],
1440
+ [ze, Me(e[Ai])],
1441
+ [w, /\?1/.test(e[Ui])],
1442
+ [t, ue(e[Fi])],
1443
+ [oe, ue(e[wi])],
1444
+ [$e, ue(e[Ni])],
1445
+ [C, ue(e[Di])],
1446
+ [W, Me(e[Li])],
1447
+ [Ee, ue(e[Mi])]
1448
+ ]);
1449
+ else
1450
+ for (var s in e)
1451
+ this.hasOwnProperty(s) && typeof e[s] !== x.UNDEFINED && (this[s] = e[s]);
1452
+ }
1453
+ function V(e, n, s, c) {
1454
+ return L.call(this, [
1455
+ ["itemType", e],
1456
+ ["ua", n],
1457
+ ["uaCH", c],
1458
+ ["rgxMap", s],
1459
+ ["data", Vi(this, e)]
1460
+ ]), this;
1461
+ }
1462
+ V.prototype.get = function(e) {
1463
+ return e ? this.data.hasOwnProperty(e) ? this.data[e] : void 0 : this.data;
1464
+ };
1465
+ V.prototype.set = function(e, n) {
1466
+ return this.data[e] = n, this;
1467
+ };
1468
+ V.prototype.setCH = function(e) {
1469
+ return this.uaCH = e, this;
1470
+ };
1471
+ V.prototype.detectFeature = function() {
1472
+ if (_ && _.userAgent == this.ua)
1473
+ switch (this.itemType) {
1474
+ case O:
1475
+ _.brave && typeof _.brave.isBrave == x.FUNCTION && this.set(o, "Brave");
1476
+ break;
1477
+ case M:
1478
+ !this.get(i) && j && j[w] && this.set(i, w), this.get(t) == "Macintosh" && _ && typeof _.standalone !== x.UNDEFINED && _.maxTouchPoints && _.maxTouchPoints > 2 && this.set(t, "iPad").set(i, v);
1479
+ break;
1480
+ case R:
1481
+ !this.get(o) && j && j[oe] && this.set(o, j[oe]);
1482
+ break;
1483
+ case te:
1484
+ var e = this.data, n = function(s) {
1485
+ return e[s].getItem().detectFeature().get();
1486
+ };
1487
+ this.set(O, n(O)).set(U, n(U)).set(M, n(M)).set(A, n(A)).set(R, n(R));
1488
+ }
1489
+ return this;
1490
+ };
1491
+ V.prototype.parseUA = function() {
1492
+ switch (this.itemType != te && Pe.call(this.data, this.ua, this.rgxMap), this.itemType) {
1493
+ case O:
1494
+ this.set(we, qe(this.get(r)));
1495
+ break;
1496
+ case R:
1497
+ if (this.get(o) == "iOS" && this.get(r) == "18.6") {
1498
+ var e = /\) Version\/([\d\.]+)/.exec(this.ua);
1499
+ e && parseInt(e[1].substring(0, 2), 10) >= 26 && this.set(r, e[1]);
1500
+ }
1501
+ break;
1502
+ }
1503
+ return this;
1504
+ };
1505
+ V.prototype.parseCH = function() {
1506
+ var e = this.uaCH, n = this.rgxMap;
1507
+ switch (this.itemType) {
1508
+ case O:
1509
+ case A:
1510
+ var s = e[ze] || e[Be], c;
1511
+ if (s)
1512
+ for (var b = 0; b < s.length; b++) {
1513
+ var m = s[b].brand || s[b], l = s[b].version;
1514
+ this.itemType == O && !/not.a.brand/i.test(m) && (!c || /Chrom/.test(c) && m != si || c == ke && /WebView2/.test(m)) && (m = T(m, Hi), c = this.get(o), c && !/Chrom/.test(c) && /Chrom/.test(m) || this.set(o, m).set(r, l).set(we, qe(l)), c = m), this.itemType == A && m == si && this.set(r, l);
1515
+ }
1516
+ break;
1517
+ case U:
1518
+ var u = e[C];
1519
+ u && (u && e[Ee] == "64" && (u += "64"), Pe.call(this.data, u + ";", n));
1520
+ break;
1521
+ case M:
1522
+ if (e[w] && this.set(i, w), e[t] && (this.set(t, e[t]), !this.get(i) || !this.get(a))) {
1523
+ var d = {};
1524
+ Pe.call(d, "droid 9; " + e[t] + ")", n), !this.get(i) && d.type && this.set(i, d.type), !this.get(a) && d.vendor && this.set(a, d.vendor);
1525
+ }
1526
+ if (e[W]) {
1527
+ var y;
1528
+ if (typeof e[W] != "string")
1529
+ for (var p = 0; !y && p < e[W].length; )
1530
+ y = T(e[W][p++], di);
1531
+ else
1532
+ y = T(e[W], di);
1533
+ this.set(i, y);
1534
+ }
1535
+ break;
1536
+ case R:
1537
+ var E = e[oe];
1538
+ if (E) {
1539
+ var ae = e[$e];
1540
+ E == Fe && (ae = parseInt(qe(ae), 10) >= 13 ? "11" : "10"), this.set(o, E).set(r, ae);
1541
+ }
1542
+ this.get(o) == Fe && e[t] == "Xbox" && this.set(o, "Xbox").set(r, void 0);
1543
+ break;
1544
+ case te:
1545
+ var f = this.data, h = function(se) {
1546
+ return f[se].getItem().setCH(e).parseCH().get();
1547
+ };
1548
+ this.set(O, h(O)).set(U, h(U)).set(M, h(M)).set(A, h(A)).set(R, h(R));
1549
+ }
1550
+ return this;
1551
+ };
1552
+ function F(e, n, s) {
1553
+ if (typeof e === x.OBJECT ? (xe(e, !0) ? (typeof n === x.OBJECT && (s = n), n = e) : (s = e, n = void 0), e = void 0) : typeof e === x.STRING && !xe(n, !0) && (s = n, n = void 0), s)
1554
+ if (typeof s.append === x.FUNCTION) {
1555
+ var c = {};
1556
+ s.forEach(function(p, E) {
1557
+ c[String(E).toLowerCase()] = p;
1558
+ }), s = c;
1559
+ } else {
1560
+ var b = {};
1561
+ for (var m in s)
1562
+ s.hasOwnProperty(m) && (b[String(m).toLowerCase()] = s[m]);
1563
+ s = b;
1564
+ }
1565
+ if (!(this instanceof F))
1566
+ return new F(e, n, s).getResult();
1567
+ var l = typeof e === x.STRING ? e : (
1568
+ // Passed user-agent string
1569
+ s && s[Xe] ? s[Xe] : (
1570
+ // User-Agent from passed headers
1571
+ _ && _.userAgent ? _.userAgent : (
1572
+ // navigator.userAgent
1573
+ ie
1574
+ )
1575
+ )
1576
+ ), u = new pi(s, !0), d = n ? Pi(ui, n) : ui, y = function(p) {
1577
+ return p == te ? function() {
1578
+ return new V(p, l, d, u).set("ua", l).set(O, this.getBrowser()).set(U, this.getCPU()).set(M, this.getDevice()).set(A, this.getEngine()).set(R, this.getOS()).get();
1579
+ } : function() {
1580
+ return new V(p, l, d[p], u).parseUA().get();
1581
+ };
1582
+ };
1583
+ return L.call(this, [
1584
+ ["getBrowser", y(O)],
1585
+ ["getCPU", y(U)],
1586
+ ["getDevice", y(M)],
1587
+ ["getEngine", y(A)],
1588
+ ["getOS", y(R)],
1589
+ ["getResult", y(te)],
1590
+ ["getUA", function() {
1591
+ return l;
1592
+ }],
1593
+ ["setUA", function(p) {
1594
+ return be(p) && (l = Se(p, Ri)), this;
1595
+ }]
1596
+ ]).setUA(l), this;
1597
+ }
1598
+ F.VERSION = Ii;
1599
+ F.BROWSER = Ce([o, r, we, i]);
1600
+ F.CPU = Ce([C]);
1601
+ F.DEVICE = Ce([t, a, i, ye, w, S, v, D, ce]);
1602
+ F.ENGINE = F.OS = Ce([o, r]);
1603
+ const Bi = { class: "space-y-16" }, zi = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, $i = { class: "fm-typo-en-body-md-600" }, Gi = { class: "mt-48" }, Wi = { class: "space-y-16" }, ji = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Yi = {
1604
+ key: 0,
1605
+ class: "fm-typo-en-body-md-600"
1606
+ }, Ji = {
1607
+ key: 1,
1608
+ class: "fm-typo-en-body-md-600"
1609
+ }, Xi = { class: "mt-48" }, Ki = { class: "space-y-16" }, Zi = { class: "fm-typo-en-body-md-600" }, Qi = { class: "fm-typo-en-body-md-600" }, et = /* @__PURE__ */ He({
1610
+ __name: "AuditLogDetailSheet",
1611
+ props: {
1612
+ auditLog: {
1613
+ type: Object,
1614
+ required: !0
1615
+ }
1616
+ },
1617
+ setup(e, { expose: n }) {
1618
+ const s = ve(!0), c = [
1619
+ {
1620
+ label: "ID",
1621
+ key: "_id"
1622
+ },
1623
+ {
1624
+ label: "Module Type",
1625
+ getter: (u) => u.moduleType ? Ue.title(u.moduleType) : "-"
1626
+ },
1627
+ {
1628
+ label: "User ID",
1629
+ key: "user"
1630
+ },
1631
+ {
1632
+ label: "User Name",
1633
+ key: "userName"
1634
+ },
1635
+ {
1636
+ label: "User Phone No.",
1637
+ key: "userPhoneNumber"
1638
+ },
1639
+ {
1640
+ label: "Client IP",
1641
+ key: "clientIp"
1642
+ },
1643
+ {
1644
+ label: "Timestamp",
1645
+ getter: (u) => u.timestamp ? Q(u.timestamp).format("D MMM YYYY, hh:mmA") : "-"
1646
+ }
1647
+ ], b = [
1648
+ {
1649
+ label: "Request Method",
1650
+ key: "httpMethod"
1651
+ },
1652
+ {
1653
+ label: "Request URL",
1654
+ getter: (u) => `${u.request.host}${u.request.url}`
1655
+ },
1656
+ {
1657
+ label: "User Agent",
1658
+ getter: (u) => F(u.request.userAgent),
1659
+ isJson: !0
1660
+ },
1661
+ {
1662
+ label: "Request Params",
1663
+ getter: (u) => u.request.params || "-",
1664
+ isJson: !0
1665
+ },
1666
+ {
1667
+ label: "Request Query",
1668
+ getter: (u) => u.request.query || "-",
1669
+ isJson: !0
1670
+ },
1671
+ {
1672
+ label: "Request Body",
1673
+ getter: (u) => u.request.body || "-",
1674
+ isJson: !0
1675
+ }
1676
+ ];
1677
+ function m() {
1678
+ s.value = !0;
1679
+ }
1680
+ function l() {
1681
+ s.value = !1;
1682
+ }
1683
+ return n({
1684
+ showSheet: m,
1685
+ hideSheet: l
1686
+ }), (u, d) => {
1687
+ const y = Ve("FmSideSheet");
1688
+ return P(), ci(y, {
1689
+ modelValue: g(s),
1690
+ "onUpdate:modelValue": d[0] || (d[0] = (p) => mi(s) ? s.value = p : null),
1691
+ header: "Audit Log Detail",
1692
+ "dismiss-away": "",
1693
+ "close-button": !0,
1694
+ "max-width": 650
1695
+ }, {
1696
+ "side-sheet-footer": Ge(() => [...d[6] || (d[6] = [])]),
1697
+ default: Ge(() => [
1698
+ k("div", null, [
1699
+ d[1] || (d[1] = k("div", { class: "fm-typo-en-title-sm-800 my-24" }, "Log Information", -1)),
1700
+ k("div", Bi, [
1701
+ (P(), ee(Le, null, We(c, (p, E) => k("div", { key: E }, [
1702
+ k("div", zi, z(p.label), 1),
1703
+ k("div", $i, z((p.key ? e.auditLog[p.key] : p.getter(e.auditLog)) || "-"), 1)
1704
+ ])), 64))
1705
+ ])
1706
+ ]),
1707
+ k("div", Gi, [
1708
+ d[2] || (d[2] = k("div", { class: "fm-typo-en-title-sm-800 mb-24" }, "Request Detail", -1)),
1709
+ k("div", Wi, [
1710
+ (P(), ee(Le, null, We(b, (p, E) => k("div", { key: E }, [
1711
+ k("div", ji, z(p.label), 1),
1712
+ p.isJson ? (P(), ee("pre", Ji, z(p.key ? e.auditLog.request[p.key] : p.getter(e.auditLog) || "-"), 1)) : (P(), ee("div", Yi, z(p.key ? e.auditLog.request[p.key] : p.getter(e.auditLog) || "-"), 1))
1713
+ ])), 64))
1714
+ ])
1715
+ ]),
1716
+ k("div", Xi, [
1717
+ d[5] || (d[5] = k("div", { class: "fm-typo-en-title-sm-800 mb-24" }, "Response Detail", -1)),
1718
+ k("div", Ki, [
1719
+ k("div", null, [
1720
+ d[3] || (d[3] = k("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, " Status Code ", -1)),
1721
+ k("div", Zi, z(e.auditLog.response.statusCode || "-"), 1)
1722
+ ]),
1723
+ k("div", null, [
1724
+ d[4] || (d[4] = k("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, " Response Body ", -1)),
1725
+ k("pre", Qi, z(e.auditLog.response.body || "-"), 1)
1726
+ ])
1727
+ ])
1728
+ ])
1729
+ ]),
1730
+ _: 1
1731
+ }, 8, ["modelValue"]);
1732
+ };
1733
+ }
1734
+ }), it = () => {
1735
+ const e = Ei.getBusinessId();
1736
+ if (!e) throw new Error("Invalid business ID");
1737
+ return Ci(`businesses/${e}/audit-logs`, {
1738
+ noIdRequired: !0
1739
+ });
1740
+ }, tt = {
1741
+ async readAll(e, n) {
1742
+ const s = Si(
1743
+ await it().get("", {
1744
+ params: { ...e, ...n }
1745
+ })
1746
+ );
1747
+ return {
1748
+ meta: s.meta,
1749
+ resources: s.resources
1750
+ };
1751
+ }
1752
+ }, ot = { class: "hidden xs:flex items-center justify-end" }, rt = { class: "flex items-center justify-between" }, at = { class: "flex gap-8 items-center w-full overflow-x-scroll" }, st = /* @__PURE__ */ He({
1753
+ __name: "AuditLogsTable",
1754
+ setup(e) {
1755
+ const n = ve(), s = ve(), c = [
1756
+ {
1757
+ header: "Audit Log ID",
1758
+ accessorKey: "_id",
1759
+ meta: {
1760
+ maxWidth: "100px"
1761
+ },
1762
+ cell(f) {
1763
+ return $("div", { class: "flex items-center" }, [
1764
+ $(je.FmIcon, {
1765
+ name: "content_copy",
1766
+ outline: !0,
1767
+ size: "sm",
1768
+ class: "cursor-pointer mr-4",
1769
+ onClick: (h) => {
1770
+ h.preventDefault(), h.stopPropagation(), Je(f.row.original._id.toString());
1771
+ }
1772
+ }),
1773
+ $(
1774
+ "div",
1775
+ { class: "pr-2 text-ellipsis overflow-hidden" },
1776
+ f.row.original._id.toString()
1777
+ )
1778
+ ]);
1779
+ },
1780
+ enableSorting: !1
1781
+ },
1782
+ {
1783
+ header: "Timestamp",
1784
+ accessorKey: "timestamp",
1785
+ accessorFn: (f) => Q(_i(f._id.toString())).format("D MMM YYYY, hh:mmA"),
1786
+ enableSorting: !0
1787
+ },
1788
+ {
1789
+ header: "Status",
1790
+ accessorKey: "response.statusCode",
1791
+ enableSorting: !1
1792
+ },
1793
+ {
1794
+ header: "Module Type",
1795
+ accessorKey: "moduleType",
1796
+ accessorFn: (f) => f.moduleType ? Ue.title(f.moduleType) : "-",
1797
+ enableSorting: !1
1798
+ },
1799
+ {
1800
+ header: "User ID",
1801
+ accessorKey: "user",
1802
+ cell(f) {
1803
+ return $("div", { class: "flex items-center" }, [
1804
+ $(je.FmIcon, {
1805
+ name: "content_copy",
1806
+ outline: !0,
1807
+ size: "sm",
1808
+ class: "cursor-pointer mr-4",
1809
+ onClick: (h) => {
1810
+ h.preventDefault(), h.stopPropagation(), Je(f.row.original.user);
1811
+ }
1812
+ }),
1813
+ $(
1814
+ "div",
1815
+ { class: "pr-2 text-ellipsis overflow-hidden" },
1816
+ f.row.original.user
1817
+ )
1818
+ ]);
1819
+ },
1820
+ enableSorting: !1
1821
+ },
1822
+ {
1823
+ header: "User Name",
1824
+ accessorKey: "userName",
1825
+ enableSorting: !1
1826
+ },
1827
+ {
1828
+ header: "User Phone No.",
1829
+ accessorFn: (f) => f.userPhoneNumber || "-",
1830
+ enableSorting: !1
1831
+ },
1832
+ {
1833
+ header: "Request URL",
1834
+ meta: {
1835
+ maxWidth: "400px"
1836
+ },
1837
+ cell(f) {
1838
+ return $(
1839
+ "div",
1840
+ { class: "break-words whitespace-normal" },
1841
+ `${f.row.original.request.host}${f.row.original.request.url}`
1842
+ );
1843
+ },
1844
+ accessorFn: (f) => `${f.request.host}${f.request.url}`,
1845
+ enableSorting: !1
1846
+ },
1847
+ {
1848
+ header: "Request Method",
1849
+ accessorKey: "request.httpMethod",
1850
+ enableSorting: !1
1851
+ },
1852
+ {
1853
+ header: "Client IP",
1854
+ accessorFn: (f) => f.clientIp || "-",
1855
+ enableSorting: !1
1856
+ }
1857
+ ], b = ve({
1858
+ search: "",
1859
+ dateRange: {
1860
+ startDate: Q().subtract(7, "day").toISOString(),
1861
+ endDate: Q().endOf("day").toISOString()
1862
+ },
1863
+ httpMethod: [],
1864
+ moduleType: []
1865
+ }), { tableMeta: m, rowData: l, onSort: u, debouncedFetchData: d, onSearch: y } = yi(async (f) => {
1866
+ const h = {
1867
+ ...b.value,
1868
+ dateRange: {
1869
+ start: new Date(b.value.dateRange.startDate).toISOString(),
1870
+ end: new Date(b.value.dateRange.endDate).toISOString()
1871
+ }
1872
+ };
1873
+ return await tt.readAll(f, h);
1874
+ }), p = [
1875
+ pe.enum.POST,
1876
+ pe.enum.PUT,
1877
+ pe.enum.PATCH,
1878
+ pe.enum.DELETE
1879
+ ].map((f) => ({ label: f, value: f })), E = xi.options.map((f) => ({ label: Ue.title(f), value: f })).sort((f, h) => f.label.localeCompare(h.label));
1880
+ fi(
1881
+ b,
1882
+ () => {
1883
+ d();
1884
+ },
1885
+ { deep: !0 }
1886
+ );
1887
+ function ae(f) {
1888
+ var h;
1889
+ s.value = f.original, (h = n == null ? void 0 : n.value) == null || h.showSheet();
1890
+ }
1891
+ return hi(async () => {
1892
+ await d();
1893
+ }), (f, h) => {
1894
+ const se = Ve("FmSearch");
1895
+ return P(), ee("div", null, [
1896
+ k("div", ot, [
1897
+ q(se, {
1898
+ class: "hidden xs:flex",
1899
+ modelValue: g(b).search,
1900
+ "onUpdate:modelValue": h[0] || (h[0] = (I) => g(b).search = I),
1901
+ placeholder: "Search",
1902
+ collapsible: ""
1903
+ }, null, 8, ["modelValue"])
1904
+ ]),
1905
+ k("div", rt, [
1906
+ k("div", at, [
1907
+ q(Ye, {
1908
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
1909
+ "right-icon": "keyboard_arrow_down",
1910
+ modelValue: g(b).moduleType,
1911
+ "onUpdate:modelValue": h[1] || (h[1] = (I) => g(b).moduleType = I),
1912
+ label: "Module Type: ",
1913
+ "show-item-label": !0,
1914
+ items: g(E)
1915
+ }, null, 8, ["modelValue", "items"]),
1916
+ q(Ye, {
1917
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
1918
+ "right-icon": "keyboard_arrow_down",
1919
+ modelValue: g(b).httpMethod,
1920
+ "onUpdate:modelValue": h[2] || (h[2] = (I) => g(b).httpMethod = I),
1921
+ label: "Request Method: ",
1922
+ "show-item-label": !0,
1923
+ items: g(p)
1924
+ }, null, 8, ["modelValue", "items"]),
1925
+ q(vi, {
1926
+ "model-value": {
1927
+ startDate: g(b).dateRange.startDate,
1928
+ endDate: g(b).dateRange.endDate
1929
+ },
1930
+ "onUpdate:modelValue": h[3] || (h[3] = (I) => g(b).dateRange = {
1931
+ startDate: g(Q)(I.startDate).startOf("d").toISOString(),
1932
+ endDate: g(Q)(I.endDate).endOf("d").toISOString()
1933
+ })
1934
+ }, null, 8, ["model-value"])
1935
+ ]),
1936
+ q(se, {
1937
+ class: "xs:hidden",
1938
+ modelValue: g(b).search,
1939
+ "onUpdate:modelValue": [
1940
+ h[4] || (h[4] = (I) => g(b).search = I),
1941
+ g(y)
1942
+ ],
1943
+ placeholder: "Search",
1944
+ collapsible: ""
1945
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
1946
+ ]),
1947
+ q(ki, {
1948
+ loading: g(m).isLoading,
1949
+ "row-data": g(l),
1950
+ "row-count": g(m).totalRows,
1951
+ "column-defs": c,
1952
+ "page-count": g(m).pageCount,
1953
+ "page-index": g(m).pageIndex,
1954
+ "page-size": g(m).pageSize,
1955
+ "shrink-at": !1,
1956
+ onSortChange: g(u),
1957
+ onPageChange: h[5] || (h[5] = (I) => g(d)({
1958
+ pageSize: I.pageSize,
1959
+ pageIndex: I.pageIndex
1960
+ })),
1961
+ onRowClick: ae
1962
+ }, null, 8, ["loading", "row-data", "row-count", "page-count", "page-index", "page-size", "onSortChange"]),
1963
+ g(s) ? (P(), ci(et, {
1964
+ key: 0,
1965
+ ref_key: "sheetRef",
1966
+ ref: n,
1967
+ auditLog: g(s)
1968
+ }, null, 8, ["auditLog"])) : gi("", !0)
1969
+ ]);
1970
+ };
1971
+ }
1972
+ }), nt = { class: "px-24 flex flex-col gap-y-32 pb-24" }, St = /* @__PURE__ */ He({
1973
+ __name: "AuditLogs",
1974
+ setup(e) {
1975
+ const { t: n } = Oi();
1976
+ return (s, c) => {
1977
+ const b = Ve("FmPageHead");
1978
+ return P(), ee(Le, null, [
1979
+ q(b, {
1980
+ title: g(n)("connect.auditLogs.title")
1981
+ }, null, 8, ["title"]),
1982
+ k("div", nt, [
1983
+ q(st)
1984
+ ])
1985
+ ], 64);
1986
+ };
1987
+ }
1988
+ });
1989
+ export {
1990
+ St as default
1991
+ };