@mapsindoors/map-template 1.4.2 → 1.5.0

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 (75) hide show
  1. package/dist/{combo-box-item.entry-0dc74103.mjs → combo-box-item.entry-43f9c279.mjs} +1 -1
  2. package/dist/{combo-box-item.entry-e78f688f.mjs → combo-box-item.entry-e8433c10.mjs} +1 -1
  3. package/dist/mapsindoors-react.es.js +2 -2
  4. package/dist/mapsindoors-react.umd.js +113 -107
  5. package/dist/mapsindoors-webcomponent.es.js +2 -2
  6. package/dist/mapsindoors-webcomponent.umd.js +110 -104
  7. package/dist/{mi-card_2.entry-8734a070.mjs → mi-card_2.entry-34ea9c0f.mjs} +1 -1
  8. package/dist/{mi-card_2.entry-016f3f57.mjs → mi-card_2.entry-3e05c64a.mjs} +1 -1
  9. package/dist/{mi-chip.entry-f37794a7.mjs → mi-chip.entry-b29664ab.mjs} +1 -1
  10. package/dist/{mi-chip.entry-8c14862b.mjs → mi-chip.entry-bf880d43.mjs} +1 -1
  11. package/dist/{mi-column.entry-0e30a3cd.mjs → mi-column.entry-b05b9fd8.mjs} +1 -1
  12. package/dist/{mi-column.entry-956e7e8e.mjs → mi-column.entry-c9a43b07.mjs} +1 -1
  13. package/dist/{mi-combo-box.entry-dc5e7c3a.mjs → mi-combo-box.entry-52b45b1c.mjs} +1 -1
  14. package/dist/{mi-combo-box.entry-a69ed592.mjs → mi-combo-box.entry-c7e38ae9.mjs} +1 -1
  15. package/dist/{mi-data-table.entry-166d9c4e.mjs → mi-data-table.entry-345217f7.mjs} +1 -1
  16. package/dist/{mi-data-table.entry-051420e6.mjs → mi-data-table.entry-88f8fabf.mjs} +1 -1
  17. package/dist/{mi-distance_2.entry-cb57c7d6.mjs → mi-distance_2.entry-e874bfd9.mjs} +1 -1
  18. package/dist/{mi-distance_2.entry-70a9bee6.mjs → mi-distance_2.entry-f1f63523.mjs} +1 -1
  19. package/dist/{mi-dropdown-item.entry-471b5ff4.mjs → mi-dropdown-item.entry-5550e2ab.mjs} +1 -1
  20. package/dist/{mi-dropdown-item.entry-5126f2e8.mjs → mi-dropdown-item.entry-846d3691.mjs} +1 -1
  21. package/dist/{mi-dropdown.entry-9fd15060.mjs → mi-dropdown.entry-d30b7a6a.mjs} +1 -1
  22. package/dist/{mi-dropdown.entry-a23ee159.mjs → mi-dropdown.entry-f52d6276.mjs} +1 -1
  23. package/dist/mi-floor-selector.entry-56ad7df0.mjs +112 -0
  24. package/dist/mi-floor-selector.entry-c0ff1982.mjs +110 -0
  25. package/dist/{mi-keyboard.entry-2c6ccbe9.mjs → mi-keyboard.entry-509077c1.mjs} +1 -1
  26. package/dist/{mi-keyboard.entry-a70e8554.mjs → mi-keyboard.entry-8f4489a3.mjs} +1 -1
  27. package/dist/{mi-list-item-category.entry-af52ccab.mjs → mi-list-item-category.entry-e39d6cde.mjs} +1 -1
  28. package/dist/{mi-list-item-category.entry-5c8c2d1c.mjs → mi-list-item-category.entry-e817d618.mjs} +1 -1
  29. package/dist/{mi-list-item-location.entry-9e167854.mjs → mi-list-item-location.entry-2d7f1aba.mjs} +13 -4
  30. package/dist/{mi-list-item-location.entry-b89c645e.mjs → mi-list-item-location.entry-7e068a6c.mjs} +13 -4
  31. package/dist/{mi-list.entry-988aea1b.mjs → mi-list.entry-149a2b0e.mjs} +1 -1
  32. package/dist/{mi-list.entry-62dd7607.mjs → mi-list.entry-b589d513.mjs} +1 -1
  33. package/dist/{mi-location-booking.entry-af85eafe.mjs → mi-location-booking.entry-9d803fdd.mjs} +1 -1
  34. package/dist/{mi-location-booking.entry-0d95b6e2.mjs → mi-location-booking.entry-fdb30ddd.mjs} +1 -1
  35. package/dist/mi-location-info.entry-2dc24888.mjs +27 -0
  36. package/dist/mi-location-info.entry-db791bda.mjs +29 -0
  37. package/dist/{mi-map-googlemaps.entry-15d8ff0c.mjs → mi-map-googlemaps.entry-693c17b1.mjs} +1 -1
  38. package/dist/{mi-map-googlemaps.entry-1e6a0c3a.mjs → mi-map-googlemaps.entry-815c327c.mjs} +1 -1
  39. package/dist/{mi-map-mapbox.entry-006002d1.mjs → mi-map-mapbox.entry-38bfe2e4.mjs} +1 -1
  40. package/dist/{mi-map-mapbox.entry-a54911cc.mjs → mi-map-mapbox.entry-ce854ebd.mjs} +1 -1
  41. package/dist/{mi-metric-card.entry-34de3fef.mjs → mi-metric-card.entry-24ff6739.mjs} +1 -1
  42. package/dist/{mi-metric-card.entry-c5db0bd7.mjs → mi-metric-card.entry-fa5470f0.mjs} +1 -1
  43. package/dist/mi-my-position.entry-008c64f6.mjs +1395 -0
  44. package/dist/mi-my-position.entry-577a8255.mjs +1393 -0
  45. package/dist/{mi-notification.entry-18a870d6.mjs → mi-notification.entry-0f43047e.mjs} +1 -1
  46. package/dist/{mi-notification.entry-6c12bf39.mjs → mi-notification.entry-d10ac69d.mjs} +1 -1
  47. package/dist/{mi-route-instructions-heading.entry-7745d1f2.mjs → mi-route-instructions-heading.entry-35bf73b0.mjs} +1 -1
  48. package/dist/{mi-route-instructions-heading.entry-c147c4cf.mjs → mi-route-instructions-heading.entry-a2a1c988.mjs} +1 -1
  49. package/dist/{mi-route-instructions-maneuver_2.entry-48fec273.mjs → mi-route-instructions-maneuver_2.entry-0ede8a6a.mjs} +1 -1
  50. package/dist/{mi-route-instructions-maneuver_2.entry-0036d784.mjs → mi-route-instructions-maneuver_2.entry-475eb284.mjs} +1 -1
  51. package/dist/{mi-route-instructions-step-legacy.entry-79d3844d.mjs → mi-route-instructions-step-legacy.entry-04669a50.mjs} +1 -1
  52. package/dist/{mi-route-instructions-step-legacy.entry-1a8184f8.mjs → mi-route-instructions-step-legacy.entry-e0a8cb0b.mjs} +1 -1
  53. package/dist/{mi-route-instructions-step.entry-8c15c613.mjs → mi-route-instructions-step.entry-c202fe43.mjs} +1 -1
  54. package/dist/{mi-route-instructions-step.entry-6d8f1142.mjs → mi-route-instructions-step.entry-e570147c.mjs} +1 -1
  55. package/dist/{mi-route-instructions.entry-7ce5505a.mjs → mi-route-instructions.entry-8e6e5228.mjs} +1 -1
  56. package/dist/{mi-route-instructions.entry-3bf0cb26.mjs → mi-route-instructions.entry-df8d5925.mjs} +1 -1
  57. package/dist/{mi-scroll-buttons.entry-7cb55c56.mjs → mi-scroll-buttons.entry-22dd70ea.mjs} +1 -1
  58. package/dist/{mi-scroll-buttons.entry-2bc7f49e.mjs → mi-scroll-buttons.entry-771f293a.mjs} +1 -1
  59. package/dist/{mi-search.entry-791d2c50.mjs → mi-search.entry-1c387b2e.mjs} +1 -1
  60. package/dist/{mi-search.entry-c86bcb6f.mjs → mi-search.entry-fb05a198.mjs} +1 -1
  61. package/dist/{mi-share-sms.entry-ac0fa755.mjs → mi-share-sms.entry-001986ee.mjs} +1 -1
  62. package/dist/{mi-share-sms.entry-9584c0b5.mjs → mi-share-sms.entry-2397d0ec.mjs} +1 -1
  63. package/dist/{mi-step-switcher.entry-be3465e2.mjs → mi-step-switcher.entry-47d7f6bb.mjs} +1 -1
  64. package/dist/{mi-step-switcher.entry-8199d9ef.mjs → mi-step-switcher.entry-c8b82dcc.mjs} +1 -1
  65. package/dist/{mi-tab-panel.entry-38a7e43a.mjs → mi-tab-panel.entry-69a9a2a6.mjs} +1 -1
  66. package/dist/{mi-tab-panel.entry-9348cd1f.mjs → mi-tab-panel.entry-dbf1b501.mjs} +1 -1
  67. package/dist/{mi-tab.entry-96ab146e.mjs → mi-tab.entry-5850ff32.mjs} +1 -1
  68. package/dist/{mi-tab.entry-0b086b7e.mjs → mi-tab.entry-5dc2e1a4.mjs} +1 -1
  69. package/dist/{mi-tabs.entry-df575e9f.mjs → mi-tabs.entry-9a45d53c.mjs} +1 -1
  70. package/dist/{mi-tabs.entry-59021c1e.mjs → mi-tabs.entry-c1548c35.mjs} +1 -1
  71. package/dist/{reactcomponent-c0305d4c.mjs → reactcomponent-8d2c3766.mjs} +5001 -5001
  72. package/dist/{webcomponent-a4bdfc4d.mjs → webcomponent-41fdf0bf.mjs} +6573 -6573
  73. package/package.json +1 -1
  74. package/dist/mi-location-info.entry-6480da0b.mjs +0 -24
  75. package/dist/mi-location-info.entry-cdee0411.mjs +0 -22
@@ -0,0 +1,1395 @@
1
+ import { r as ji, c as di, h as V, H as Ai } from "./reactcomponent-8d2c3766.mjs";
2
+ import { c as zi, a as xi } from "./_commonjsHelpers-ba3f0406-b96e6d6a.mjs";
3
+ import "react";
4
+ import "react-dom";
5
+ var Si = zi(function(o, s) {
6
+ (function(M, g) {
7
+ var T = "1.0.35", E = "", ai = "?", W = "function", C = "undefined", H = "object", P = "string", si = "major", e = "model", n = "name", i = "type", t = "vendor", a = "version", O = "architecture", S = "console", b = "mobile", N = "tablet", d = "smarttv", j = "wearable", q = "embedded", J = 350, _ = "Amazon", f = "Apple", ri = "ASUS", Mi = "BlackBerry", A = "Browser", U = "Chrome", pi = "Edge", Y = "Firefox", Q = "Google", ci = "Huawei", X = "LG", F = "Microsoft", ui = "Motorola", R = "Opera", $ = "Samsung", Ni = "Sharp", Z = "Sony", ii = "Xiaomi", ei = "Zebra", bi = "Facebook", li = "Chromium OS", gi = "Mac OS", hi = function(l, I) {
8
+ var u = {};
9
+ for (var D in l)
10
+ I[D] && I[D].length % 2 === 0 ? u[D] = I[D].concat(l[D]) : u[D] = l[D];
11
+ return u;
12
+ }, G = function(l) {
13
+ for (var I = {}, u = 0; u < l.length; u++)
14
+ I[l[u].toUpperCase()] = l[u];
15
+ return I;
16
+ }, wi = function(l, I) {
17
+ return typeof l === P ? v(I).indexOf(v(l)) !== -1 : !1;
18
+ }, v = function(l) {
19
+ return l.toLowerCase();
20
+ }, yi = function(l) {
21
+ return typeof l === P ? l.replace(/[^\d\.]/g, E).split(".")[0] : g;
22
+ }, ti = function(l, I) {
23
+ if (typeof l === P)
24
+ return l = l.replace(/^\s\s*/, E), typeof I === C ? l : l.substring(0, J);
25
+ }, k = function(l, I) {
26
+ for (var u = 0, D, y, p, w, r, h; u < I.length && !r; ) {
27
+ var ni = I[u], Ti = I[u + 1];
28
+ for (D = y = 0; D < ni.length && !r && ni[D]; )
29
+ if (r = ni[D++].exec(l), r)
30
+ for (p = 0; p < Ti.length; p++)
31
+ h = r[++y], w = Ti[p], typeof w === H && w.length > 0 ? w.length === 2 ? typeof w[1] == W ? this[w[0]] = w[1].call(this, h) : this[w[0]] = w[1] : w.length === 3 ? typeof w[1] === W && !(w[1].exec && w[1].test) ? this[w[0]] = h ? w[1].call(this, h, w[2]) : g : this[w[0]] = h ? h.replace(w[1], w[2]) : g : w.length === 4 && (this[w[0]] = h ? w[3].call(this, h.replace(w[1], w[2])) : g) : this[w] = h || g;
32
+ u += 2;
33
+ }
34
+ }, oi = function(l, I) {
35
+ for (var u in I)
36
+ if (typeof I[u] === H && I[u].length > 0) {
37
+ for (var D = 0; D < I[u].length; D++)
38
+ if (wi(I[u][D], l))
39
+ return u === ai ? g : u;
40
+ } else if (wi(I[u], l))
41
+ return u === ai ? g : u;
42
+ return l;
43
+ }, Ei = {
44
+ "1.0": "/8",
45
+ "1.2": "/1",
46
+ "1.3": "/3",
47
+ "2.0": "/412",
48
+ "2.0.2": "/416",
49
+ "2.0.3": "/417",
50
+ "2.0.4": "/419",
51
+ "?": "/"
52
+ }, Ii = {
53
+ ME: "4.90",
54
+ "NT 3.11": "NT3.51",
55
+ "NT 4.0": "NT4.0",
56
+ 2e3: "NT 5.0",
57
+ XP: ["NT 5.1", "NT 5.2"],
58
+ Vista: "NT 6.0",
59
+ 7: "NT 6.1",
60
+ 8: "NT 6.2",
61
+ "8.1": "NT 6.3",
62
+ 10: ["NT 6.4", "NT 10.0"],
63
+ RT: "ARM"
64
+ }, Di = {
65
+ browser: [
66
+ [
67
+ /\b(?:crmo|crios)\/([\w\.]+)/i
68
+ // Chrome for Android/iOS
69
+ ],
70
+ [a, [n, "Chrome"]],
71
+ [
72
+ /edg(?:e|ios|a)?\/([\w\.]+)/i
73
+ // Microsoft Edge
74
+ ],
75
+ [a, [n, "Edge"]],
76
+ [
77
+ // Presto based
78
+ /(opera mini)\/([-\w\.]+)/i,
79
+ // Opera Mini
80
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
81
+ // Opera Mobi/Tablet
82
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
83
+ // Opera
84
+ ],
85
+ [n, a],
86
+ [
87
+ /opios[\/ ]+([\w\.]+)/i
88
+ // Opera mini on iphone >= 8.0
89
+ ],
90
+ [a, [n, R + " Mini"]],
91
+ [
92
+ /\bopr\/([\w\.]+)/i
93
+ // Opera Webkit
94
+ ],
95
+ [a, [n, R]],
96
+ [
97
+ // Mixed
98
+ /(kindle)\/([\w\.]+)/i,
99
+ // Kindle
100
+ /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,
101
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer
102
+ // Trident based
103
+ /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,
104
+ // Avant/IEMobile/SlimBrowser
105
+ /(ba?idubrowser)[\/ ]?([\w\.]+)/i,
106
+ // Baidu Browser
107
+ /(?:ms|\()(ie) ([\w\.]+)/i,
108
+ // Internet Explorer
109
+ // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
110
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
111
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
112
+ /(heytap|ovi)browser\/([\d\.]+)/i,
113
+ // Heytap/Ovi
114
+ /(weibo)__([\d\.]+)/i
115
+ // Weibo
116
+ ],
117
+ [n, a],
118
+ [
119
+ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
120
+ // UCBrowser
121
+ ],
122
+ [a, [n, "UC" + A]],
123
+ [
124
+ /microm.+\bqbcore\/([\w\.]+)/i,
125
+ // WeChat Desktop for Windows Built-in Browser
126
+ /\bqbcore\/([\w\.]+).+microm/i
127
+ ],
128
+ [a, [n, "WeChat(Win) Desktop"]],
129
+ [
130
+ /micromessenger\/([\w\.]+)/i
131
+ // WeChat
132
+ ],
133
+ [a, [n, "WeChat"]],
134
+ [
135
+ /konqueror\/([\w\.]+)/i
136
+ // Konqueror
137
+ ],
138
+ [a, [n, "Konqueror"]],
139
+ [
140
+ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
141
+ // IE11
142
+ ],
143
+ [a, [n, "IE"]],
144
+ [
145
+ /ya(?:search)?browser\/([\w\.]+)/i
146
+ // Yandex
147
+ ],
148
+ [a, [n, "Yandex"]],
149
+ [
150
+ /(avast|avg)\/([\w\.]+)/i
151
+ // Avast/AVG Secure Browser
152
+ ],
153
+ [[n, /(.+)/, "$1 Secure " + A], a],
154
+ [
155
+ /\bfocus\/([\w\.]+)/i
156
+ // Firefox Focus
157
+ ],
158
+ [a, [n, Y + " Focus"]],
159
+ [
160
+ /\bopt\/([\w\.]+)/i
161
+ // Opera Touch
162
+ ],
163
+ [a, [n, R + " Touch"]],
164
+ [
165
+ /coc_coc\w+\/([\w\.]+)/i
166
+ // Coc Coc Browser
167
+ ],
168
+ [a, [n, "Coc Coc"]],
169
+ [
170
+ /dolfin\/([\w\.]+)/i
171
+ // Dolphin
172
+ ],
173
+ [a, [n, "Dolphin"]],
174
+ [
175
+ /coast\/([\w\.]+)/i
176
+ // Opera Coast
177
+ ],
178
+ [a, [n, R + " Coast"]],
179
+ [
180
+ /miuibrowser\/([\w\.]+)/i
181
+ // MIUI Browser
182
+ ],
183
+ [a, [n, "MIUI " + A]],
184
+ [
185
+ /fxios\/([-\w\.]+)/i
186
+ // Firefox for iOS
187
+ ],
188
+ [a, [n, Y]],
189
+ [
190
+ /\bqihu|(qi?ho?o?|360)browser/i
191
+ // 360
192
+ ],
193
+ [[n, "360 " + A]],
194
+ [
195
+ /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
196
+ ],
197
+ [[n, /(.+)/, "$1 " + A], a],
198
+ [
199
+ // Oculus/Samsung/Sailfish/Huawei Browser
200
+ /(comodo_dragon)\/([\w\.]+)/i
201
+ // Comodo Dragon
202
+ ],
203
+ [[n, /_/g, " "], a],
204
+ [
205
+ /(electron)\/([\w\.]+) safari/i,
206
+ // Electron-based App
207
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
208
+ // Tesla
209
+ /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i
210
+ // QQBrowser/Baidu App/2345 Browser
211
+ ],
212
+ [n, a],
213
+ [
214
+ /(metasr)[\/ ]?([\w\.]+)/i,
215
+ // SouGouBrowser
216
+ /(lbbrowser)/i,
217
+ // LieBao Browser
218
+ /\[(linkedin)app\]/i
219
+ // LinkedIn App for iOS & Android
220
+ ],
221
+ [n],
222
+ [
223
+ // WebView
224
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
225
+ // Facebook App for iOS & Android
226
+ ],
227
+ [[n, bi], a],
228
+ [
229
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
230
+ // Kakao App
231
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
232
+ // Naver InApp
233
+ /safari (line)\/([\w\.]+)/i,
234
+ // Line App for iOS
235
+ /\b(line)\/([\w\.]+)\/iab/i,
236
+ // Line App for Android
237
+ /(chromium|instagram)[\/ ]([-\w\.]+)/i
238
+ // Chromium/Instagram
239
+ ],
240
+ [n, a],
241
+ [
242
+ /\bgsa\/([\w\.]+) .*safari\//i
243
+ // Google Search Appliance on iOS
244
+ ],
245
+ [a, [n, "GSA"]],
246
+ [
247
+ /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
248
+ // TikTok
249
+ ],
250
+ [a, [n, "TikTok"]],
251
+ [
252
+ /headlesschrome(?:\/([\w\.]+)| )/i
253
+ // Chrome Headless
254
+ ],
255
+ [a, [n, U + " Headless"]],
256
+ [
257
+ / wv\).+(chrome)\/([\w\.]+)/i
258
+ // Chrome WebView
259
+ ],
260
+ [[n, U + " WebView"], a],
261
+ [
262
+ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
263
+ // Android Browser
264
+ ],
265
+ [a, [n, "Android " + A]],
266
+ [
267
+ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
268
+ // Chrome/OmniWeb/Arora/Tizen/Nokia
269
+ ],
270
+ [n, a],
271
+ [
272
+ /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i
273
+ // Mobile Safari
274
+ ],
275
+ [a, [n, "Mobile Safari"]],
276
+ [
277
+ /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i
278
+ // Safari & Safari Mobile
279
+ ],
280
+ [a, n],
281
+ [
282
+ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
283
+ // Safari < 3.0
284
+ ],
285
+ [n, [a, oi, Ei]],
286
+ [
287
+ /(webkit|khtml)\/([\w\.]+)/i
288
+ ],
289
+ [n, a],
290
+ [
291
+ // Gecko based
292
+ /(navigator|netscape\d?)\/([-\w\.]+)/i
293
+ // Netscape
294
+ ],
295
+ [[n, "Netscape"], a],
296
+ [
297
+ /mobile vr; rv:([\w\.]+)\).+firefox/i
298
+ // Firefox Reality
299
+ ],
300
+ [a, [n, Y + " Reality"]],
301
+ [
302
+ /ekiohf.+(flow)\/([\w\.]+)/i,
303
+ // Flow
304
+ /(swiftfox)/i,
305
+ // Swiftfox
306
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
307
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
308
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
309
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
310
+ /(firefox)\/([\w\.]+)/i,
311
+ // Other Firefox-based
312
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
313
+ // Mozilla
314
+ // Other
315
+ /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
316
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
317
+ /(links) \(([\w\.]+)/i,
318
+ // Links
319
+ /panasonic;(viera)/i
320
+ // Panasonic Viera
321
+ ],
322
+ [n, a],
323
+ [
324
+ /(cobalt)\/([\w\.]+)/i
325
+ // Cobalt
326
+ ],
327
+ [n, [a, /master.|lts./, ""]]
328
+ ],
329
+ cpu: [
330
+ [
331
+ /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i
332
+ // AMD64 (x64)
333
+ ],
334
+ [[O, "amd64"]],
335
+ [
336
+ /(ia32(?=;))/i
337
+ // IA32 (quicktime)
338
+ ],
339
+ [[O, v]],
340
+ [
341
+ /((?:i[346]|x)86)[;\)]/i
342
+ // IA32 (x86)
343
+ ],
344
+ [[O, "ia32"]],
345
+ [
346
+ /\b(aarch64|arm(v?8e?l?|_?64))\b/i
347
+ // ARM64
348
+ ],
349
+ [[O, "arm64"]],
350
+ [
351
+ /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i
352
+ // ARMHF
353
+ ],
354
+ [[O, "armhf"]],
355
+ [
356
+ // PocketPC mistakenly identified as PowerPC
357
+ /windows (ce|mobile); ppc;/i
358
+ ],
359
+ [[O, "arm"]],
360
+ [
361
+ /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i
362
+ // PowerPC
363
+ ],
364
+ [[O, /ower/, E, v]],
365
+ [
366
+ /(sun4\w)[;\)]/i
367
+ // SPARC
368
+ ],
369
+ [[O, "sparc"]],
370
+ [
371
+ /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
372
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
373
+ ],
374
+ [[O, v]]
375
+ ],
376
+ device: [
377
+ [
378
+ //////////////////////////
379
+ // MOBILES & TABLETS
380
+ /////////////////////////
381
+ // Samsung
382
+ /\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
383
+ ],
384
+ [e, [t, $], [i, N]],
385
+ [
386
+ /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
387
+ /samsung[- ]([-\w]+)/i,
388
+ /sec-(sgh\w+)/i
389
+ ],
390
+ [e, [t, $], [i, b]],
391
+ [
392
+ // Apple
393
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
394
+ // iPod/iPhone
395
+ ],
396
+ [e, [t, f], [i, b]],
397
+ [
398
+ /\((ipad);[-\w\),; ]+apple/i,
399
+ // iPad
400
+ /applecoremedia\/[\w\.]+ \((ipad)/i,
401
+ /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
402
+ ],
403
+ [e, [t, f], [i, N]],
404
+ [
405
+ /(macintosh);/i
406
+ ],
407
+ [e, [t, f]],
408
+ [
409
+ // Sharp
410
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
411
+ ],
412
+ [e, [t, Ni], [i, b]],
413
+ [
414
+ // Huawei
415
+ /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
416
+ ],
417
+ [e, [t, ci], [i, N]],
418
+ [
419
+ /(?:huawei|honor)([-\w ]+)[;\)]/i,
420
+ /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
421
+ ],
422
+ [e, [t, ci], [i, b]],
423
+ [
424
+ // Xiaomi
425
+ /\b(poco[\w ]+)(?: bui|\))/i,
426
+ // Xiaomi POCO
427
+ /\b; (\w+) build\/hm\1/i,
428
+ // Xiaomi Hongmi 'numeric' models
429
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
430
+ // Xiaomi Hongmi
431
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
432
+ // Xiaomi Redmi
433
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i
434
+ // Xiaomi Mi
435
+ ],
436
+ [[e, /_/g, " "], [t, ii], [i, b]],
437
+ [
438
+ /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i
439
+ // Mi Pad tablets
440
+ ],
441
+ [[e, /_/g, " "], [t, ii], [i, N]],
442
+ [
443
+ // OPPO
444
+ /; (\w+) bui.+ oppo/i,
445
+ /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
446
+ ],
447
+ [e, [t, "OPPO"], [i, b]],
448
+ [
449
+ // Vivo
450
+ /vivo (\w+)(?: bui|\))/i,
451
+ /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
452
+ ],
453
+ [e, [t, "Vivo"], [i, b]],
454
+ [
455
+ // Realme
456
+ /\b(rmx[12]\d{3})(?: bui|;|\))/i
457
+ ],
458
+ [e, [t, "Realme"], [i, b]],
459
+ [
460
+ // Motorola
461
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
462
+ /\bmot(?:orola)?[- ](\w*)/i,
463
+ /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
464
+ ],
465
+ [e, [t, ui], [i, b]],
466
+ [
467
+ /\b(mz60\d|xoom[2 ]{0,2}) build\//i
468
+ ],
469
+ [e, [t, ui], [i, N]],
470
+ [
471
+ // LG
472
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
473
+ ],
474
+ [e, [t, X], [i, N]],
475
+ [
476
+ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
477
+ /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
478
+ /\blg-?([\d\w]+) bui/i
479
+ ],
480
+ [e, [t, X], [i, b]],
481
+ [
482
+ // Lenovo
483
+ /(ideatab[-\w ]+)/i,
484
+ /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
485
+ ],
486
+ [e, [t, "Lenovo"], [i, N]],
487
+ [
488
+ // Nokia
489
+ /(?:maemo|nokia).*(n900|lumia \d+)/i,
490
+ /nokia[-_ ]?([-\w\.]*)/i
491
+ ],
492
+ [[e, /_/g, " "], [t, "Nokia"], [i, b]],
493
+ [
494
+ // Google
495
+ /(pixel c)\b/i
496
+ // Google Pixel C
497
+ ],
498
+ [e, [t, Q], [i, N]],
499
+ [
500
+ /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
501
+ // Google Pixel
502
+ ],
503
+ [e, [t, Q], [i, b]],
504
+ [
505
+ // Sony
506
+ /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
507
+ ],
508
+ [e, [t, Z], [i, b]],
509
+ [
510
+ /sony tablet [ps]/i,
511
+ /\b(?:sony)?sgp\w+(?: bui|\))/i
512
+ ],
513
+ [[e, "Xperia Tablet"], [t, Z], [i, N]],
514
+ [
515
+ // OnePlus
516
+ / (kb2005|in20[12]5|be20[12][59])\b/i,
517
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
518
+ ],
519
+ [e, [t, "OnePlus"], [i, b]],
520
+ [
521
+ // Amazon
522
+ /(alexa)webm/i,
523
+ /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,
524
+ // Kindle Fire without Silk / Echo Show
525
+ /(kf[a-z]+)( bui|\)).+silk\//i
526
+ // Kindle Fire HD
527
+ ],
528
+ [e, [t, _], [i, N]],
529
+ [
530
+ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
531
+ // Fire Phone
532
+ ],
533
+ [[e, /(.+)/g, "Fire Phone $1"], [t, _], [i, b]],
534
+ [
535
+ // BlackBerry
536
+ /(playbook);[-\w\),; ]+(rim)/i
537
+ // BlackBerry PlayBook
538
+ ],
539
+ [e, t, [i, N]],
540
+ [
541
+ /\b((?:bb[a-f]|st[hv])100-\d)/i,
542
+ /\(bb10; (\w+)/i
543
+ // BlackBerry 10
544
+ ],
545
+ [e, [t, Mi], [i, b]],
546
+ [
547
+ // Asus
548
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
549
+ ],
550
+ [e, [t, ri], [i, N]],
551
+ [
552
+ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
553
+ ],
554
+ [e, [t, ri], [i, b]],
555
+ [
556
+ // HTC
557
+ /(nexus 9)/i
558
+ // HTC Nexus 9
559
+ ],
560
+ [e, [t, "HTC"], [i, N]],
561
+ [
562
+ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
563
+ // HTC
564
+ // ZTE
565
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
566
+ /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
567
+ // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
568
+ ],
569
+ [t, [e, /_/g, " "], [i, b]],
570
+ [
571
+ // Acer
572
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
573
+ ],
574
+ [e, [t, "Acer"], [i, N]],
575
+ [
576
+ // Meizu
577
+ /droid.+; (m[1-5] note) bui/i,
578
+ /\bmz-([-\w]{2,})/i
579
+ ],
580
+ [e, [t, "Meizu"], [i, b]],
581
+ [
582
+ // MIXED
583
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
584
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
585
+ /(hp) ([\w ]+\w)/i,
586
+ // HP iPAQ
587
+ /(asus)-?(\w+)/i,
588
+ // Asus
589
+ /(microsoft); (lumia[\w ]+)/i,
590
+ // Microsoft Lumia
591
+ /(lenovo)[-_ ]?([-\w]+)/i,
592
+ // Lenovo
593
+ /(jolla)/i,
594
+ // Jolla
595
+ /(oppo) ?([\w ]+) bui/i
596
+ // OPPO
597
+ ],
598
+ [t, e, [i, b]],
599
+ [
600
+ /(kobo)\s(ereader|touch)/i,
601
+ // Kobo
602
+ /(archos) (gamepad2?)/i,
603
+ // Archos
604
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
605
+ // HP TouchPad
606
+ /(kindle)\/([\w\.]+)/i,
607
+ // Kindle
608
+ /(nook)[\w ]+build\/(\w+)/i,
609
+ // Nook
610
+ /(dell) (strea[kpr\d ]*[\dko])/i,
611
+ // Dell Streak
612
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
613
+ // Le Pan Tablets
614
+ /(trinity)[- ]*(t\d{3}) bui/i,
615
+ // Trinity Tablets
616
+ /(gigaset)[- ]+(q\w{1,9}) bui/i,
617
+ // Gigaset Tablets
618
+ /(vodafone) ([\w ]+)(?:\)| bui)/i
619
+ // Vodafone
620
+ ],
621
+ [t, e, [i, N]],
622
+ [
623
+ /(surface duo)/i
624
+ // Surface Duo
625
+ ],
626
+ [e, [t, F], [i, N]],
627
+ [
628
+ /droid [\d\.]+; (fp\du?)(?: b|\))/i
629
+ // Fairphone
630
+ ],
631
+ [e, [t, "Fairphone"], [i, b]],
632
+ [
633
+ /(u304aa)/i
634
+ // AT&T
635
+ ],
636
+ [e, [t, "AT&T"], [i, b]],
637
+ [
638
+ /\bsie-(\w*)/i
639
+ // Siemens
640
+ ],
641
+ [e, [t, "Siemens"], [i, b]],
642
+ [
643
+ /\b(rct\w+) b/i
644
+ // RCA Tablets
645
+ ],
646
+ [e, [t, "RCA"], [i, N]],
647
+ [
648
+ /\b(venue[\d ]{2,7}) b/i
649
+ // Dell Venue Tablets
650
+ ],
651
+ [e, [t, "Dell"], [i, N]],
652
+ [
653
+ /\b(q(?:mv|ta)\w+) b/i
654
+ // Verizon Tablet
655
+ ],
656
+ [e, [t, "Verizon"], [i, N]],
657
+ [
658
+ /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i
659
+ // Barnes & Noble Tablet
660
+ ],
661
+ [e, [t, "Barnes & Noble"], [i, N]],
662
+ [
663
+ /\b(tm\d{3}\w+) b/i
664
+ ],
665
+ [e, [t, "NuVision"], [i, N]],
666
+ [
667
+ /\b(k88) b/i
668
+ // ZTE K Series Tablet
669
+ ],
670
+ [e, [t, "ZTE"], [i, N]],
671
+ [
672
+ /\b(nx\d{3}j) b/i
673
+ // ZTE Nubia
674
+ ],
675
+ [e, [t, "ZTE"], [i, b]],
676
+ [
677
+ /\b(gen\d{3}) b.+49h/i
678
+ // Swiss GEN Mobile
679
+ ],
680
+ [e, [t, "Swiss"], [i, b]],
681
+ [
682
+ /\b(zur\d{3}) b/i
683
+ // Swiss ZUR Tablet
684
+ ],
685
+ [e, [t, "Swiss"], [i, N]],
686
+ [
687
+ /\b((zeki)?tb.*\b) b/i
688
+ // Zeki Tablets
689
+ ],
690
+ [e, [t, "Zeki"], [i, N]],
691
+ [
692
+ /\b([yr]\d{2}) b/i,
693
+ /\b(dragon[- ]+touch |dt)(\w{5}) b/i
694
+ // Dragon Touch Tablet
695
+ ],
696
+ [[t, "Dragon Touch"], e, [i, N]],
697
+ [
698
+ /\b(ns-?\w{0,9}) b/i
699
+ // Insignia Tablets
700
+ ],
701
+ [e, [t, "Insignia"], [i, N]],
702
+ [
703
+ /\b((nxa|next)-?\w{0,9}) b/i
704
+ // NextBook Tablets
705
+ ],
706
+ [e, [t, "NextBook"], [i, N]],
707
+ [
708
+ /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i
709
+ // Voice Xtreme Phones
710
+ ],
711
+ [[t, "Voice"], e, [i, b]],
712
+ [
713
+ /\b(lvtel\-)?(v1[12]) b/i
714
+ // LvTel Phones
715
+ ],
716
+ [[t, "LvTel"], e, [i, b]],
717
+ [
718
+ /\b(ph-1) /i
719
+ // Essential PH-1
720
+ ],
721
+ [e, [t, "Essential"], [i, b]],
722
+ [
723
+ /\b(v(100md|700na|7011|917g).*\b) b/i
724
+ // Envizen Tablets
725
+ ],
726
+ [e, [t, "Envizen"], [i, N]],
727
+ [
728
+ /\b(trio[-\w\. ]+) b/i
729
+ // MachSpeed Tablets
730
+ ],
731
+ [e, [t, "MachSpeed"], [i, N]],
732
+ [
733
+ /\btu_(1491) b/i
734
+ // Rotor Tablets
735
+ ],
736
+ [e, [t, "Rotor"], [i, N]],
737
+ [
738
+ /(shield[\w ]+) b/i
739
+ // Nvidia Shield Tablets
740
+ ],
741
+ [e, [t, "Nvidia"], [i, N]],
742
+ [
743
+ /(sprint) (\w+)/i
744
+ // Sprint Phones
745
+ ],
746
+ [t, e, [i, b]],
747
+ [
748
+ /(kin\.[onetw]{3})/i
749
+ // Microsoft Kin
750
+ ],
751
+ [[e, /\./g, " "], [t, F], [i, b]],
752
+ [
753
+ /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
754
+ // Zebra
755
+ ],
756
+ [e, [t, ei], [i, N]],
757
+ [
758
+ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
759
+ ],
760
+ [e, [t, ei], [i, b]],
761
+ [
762
+ ///////////////////
763
+ // SMARTTVS
764
+ ///////////////////
765
+ /smart-tv.+(samsung)/i
766
+ // Samsung
767
+ ],
768
+ [t, [i, d]],
769
+ [
770
+ /hbbtv.+maple;(\d+)/i
771
+ ],
772
+ [[e, /^/, "SmartTV"], [t, $], [i, d]],
773
+ [
774
+ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
775
+ // LG SmartTV
776
+ ],
777
+ [[t, X], [i, d]],
778
+ [
779
+ /(apple) ?tv/i
780
+ // Apple TV
781
+ ],
782
+ [t, [e, f + " TV"], [i, d]],
783
+ [
784
+ /crkey/i
785
+ // Google Chromecast
786
+ ],
787
+ [[e, U + "cast"], [t, Q], [i, d]],
788
+ [
789
+ /droid.+aft(\w)( bui|\))/i
790
+ // Fire TV
791
+ ],
792
+ [e, [t, _], [i, d]],
793
+ [
794
+ /\(dtv[\);].+(aquos)/i,
795
+ /(aquos-tv[\w ]+)\)/i
796
+ // Sharp
797
+ ],
798
+ [e, [t, Ni], [i, d]],
799
+ [
800
+ /(bravia[\w ]+)( bui|\))/i
801
+ // Sony
802
+ ],
803
+ [e, [t, Z], [i, d]],
804
+ [
805
+ /(mitv-\w{5}) bui/i
806
+ // Xiaomi
807
+ ],
808
+ [e, [t, ii], [i, d]],
809
+ [
810
+ /Hbbtv.*(technisat) (.*);/i
811
+ // TechniSAT
812
+ ],
813
+ [t, e, [i, d]],
814
+ [
815
+ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
816
+ // Roku
817
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
818
+ // HbbTV devices
819
+ ],
820
+ [[t, ti], [e, ti], [i, d]],
821
+ [
822
+ /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
823
+ // SmartTV from Unidentified Vendors
824
+ ],
825
+ [[i, d]],
826
+ [
827
+ ///////////////////
828
+ // CONSOLES
829
+ ///////////////////
830
+ /(ouya)/i,
831
+ // Ouya
832
+ /(nintendo) ([wids3utch]+)/i
833
+ // Nintendo
834
+ ],
835
+ [t, e, [i, S]],
836
+ [
837
+ /droid.+; (shield) bui/i
838
+ // Nvidia
839
+ ],
840
+ [e, [t, "Nvidia"], [i, S]],
841
+ [
842
+ /(playstation [345portablevi]+)/i
843
+ // Playstation
844
+ ],
845
+ [e, [t, Z], [i, S]],
846
+ [
847
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i
848
+ // Microsoft Xbox
849
+ ],
850
+ [e, [t, F], [i, S]],
851
+ [
852
+ ///////////////////
853
+ // WEARABLES
854
+ ///////////////////
855
+ /((pebble))app/i
856
+ // Pebble
857
+ ],
858
+ [t, e, [i, j]],
859
+ [
860
+ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
861
+ // Apple Watch
862
+ ],
863
+ [e, [t, f], [i, j]],
864
+ [
865
+ /droid.+; (glass) \d/i
866
+ // Google Glass
867
+ ],
868
+ [e, [t, Q], [i, j]],
869
+ [
870
+ /droid.+; (wt63?0{2,3})\)/i
871
+ ],
872
+ [e, [t, ei], [i, j]],
873
+ [
874
+ /(quest( 2| pro)?)/i
875
+ // Oculus Quest
876
+ ],
877
+ [e, [t, bi], [i, j]],
878
+ [
879
+ ///////////////////
880
+ // EMBEDDED
881
+ ///////////////////
882
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
883
+ // Tesla
884
+ ],
885
+ [t, [i, q]],
886
+ [
887
+ /(aeobc)\b/i
888
+ // Echo Dot
889
+ ],
890
+ [e, [t, _], [i, q]],
891
+ [
892
+ ////////////////////
893
+ // MIXED (GENERIC)
894
+ ///////////////////
895
+ /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i
896
+ // Android Phones from Unidentified Vendors
897
+ ],
898
+ [e, [i, b]],
899
+ [
900
+ /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i
901
+ // Android Tablets from Unidentified Vendors
902
+ ],
903
+ [e, [i, N]],
904
+ [
905
+ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
906
+ // Unidentifiable Tablet
907
+ ],
908
+ [[i, N]],
909
+ [
910
+ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
911
+ // Unidentifiable Mobile
912
+ ],
913
+ [[i, b]],
914
+ [
915
+ /(android[-\w\. ]{0,9});.+buil/i
916
+ // Generic Android Device
917
+ ],
918
+ [e, [t, "Generic"]]
919
+ ],
920
+ engine: [
921
+ [
922
+ /windows.+ edge\/([\w\.]+)/i
923
+ // EdgeHTML
924
+ ],
925
+ [a, [n, pi + "HTML"]],
926
+ [
927
+ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
928
+ // Blink
929
+ ],
930
+ [a, [n, "Blink"]],
931
+ [
932
+ /(presto)\/([\w\.]+)/i,
933
+ // Presto
934
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
935
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
936
+ /ekioh(flow)\/([\w\.]+)/i,
937
+ // Flow
938
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
939
+ // KHTML/Tasman/Links
940
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
941
+ // iCab
942
+ /\b(libweb)/i
943
+ ],
944
+ [n, a],
945
+ [
946
+ /rv\:([\w\.]{1,9})\b.+(gecko)/i
947
+ // Gecko
948
+ ],
949
+ [a, n]
950
+ ],
951
+ os: [
952
+ [
953
+ // Windows
954
+ /microsoft (windows) (vista|xp)/i
955
+ // Windows (iTunes)
956
+ ],
957
+ [n, a],
958
+ [
959
+ /(windows) nt 6\.2; (arm)/i,
960
+ // Windows RT
961
+ /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,
962
+ // Windows Phone
963
+ /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
964
+ ],
965
+ [n, [a, oi, Ii]],
966
+ [
967
+ /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
968
+ ],
969
+ [[n, "Windows"], [a, oi, Ii]],
970
+ [
971
+ // iOS/macOS
972
+ /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
973
+ // iOS
974
+ /ios;fbsv\/([\d\.]+)/i,
975
+ /cfnetwork\/.+darwin/i
976
+ ],
977
+ [[a, /_/g, "."], [n, "iOS"]],
978
+ [
979
+ /(mac os x) ?([\w\. ]*)/i,
980
+ /(macintosh|mac_powerpc\b)(?!.+haiku)/i
981
+ // Mac OS
982
+ ],
983
+ [[n, gi], [a, /_/g, "."]],
984
+ [
985
+ // Mobile OSes
986
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
987
+ // Android-x86/HarmonyOS
988
+ ],
989
+ [a, n],
990
+ [
991
+ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
992
+ /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
993
+ /(blackberry)\w*\/([\w\.]*)/i,
994
+ // Blackberry
995
+ /(tizen|kaios)[\/ ]([\w\.]+)/i,
996
+ // Tizen/KaiOS
997
+ /\((series40);/i
998
+ // Series 40
999
+ ],
1000
+ [n, a],
1001
+ [
1002
+ /\(bb(10);/i
1003
+ // BlackBerry 10
1004
+ ],
1005
+ [a, [n, Mi]],
1006
+ [
1007
+ /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i
1008
+ // Symbian
1009
+ ],
1010
+ [a, [n, "Symbian"]],
1011
+ [
1012
+ /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
1013
+ // Firefox OS
1014
+ ],
1015
+ [a, [n, Y + " OS"]],
1016
+ [
1017
+ /web0s;.+rt(tv)/i,
1018
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
1019
+ // WebOS
1020
+ ],
1021
+ [a, [n, "webOS"]],
1022
+ [
1023
+ /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
1024
+ // watchOS
1025
+ ],
1026
+ [a, [n, "watchOS"]],
1027
+ [
1028
+ // Google Chromecast
1029
+ /crkey\/([\d\.]+)/i
1030
+ // Google Chromecast
1031
+ ],
1032
+ [a, [n, U + "cast"]],
1033
+ [
1034
+ /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i
1035
+ // Chromium OS
1036
+ ],
1037
+ [[n, li], a],
1038
+ [
1039
+ // Smart TVs
1040
+ /panasonic;(viera)/i,
1041
+ // Panasonic Viera
1042
+ /(netrange)mmh/i,
1043
+ // Netrange
1044
+ /(nettv)\/(\d+\.[\w\.]+)/i,
1045
+ // NetTV
1046
+ // Console
1047
+ /(nintendo|playstation) ([wids345portablevuch]+)/i,
1048
+ // Nintendo/Playstation
1049
+ /(xbox); +xbox ([^\);]+)/i,
1050
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
1051
+ // Other
1052
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
1053
+ // Joli/Palm
1054
+ /(mint)[\/\(\) ]?(\w*)/i,
1055
+ // Mint
1056
+ /(mageia|vectorlinux)[; ]/i,
1057
+ // Mageia/VectorLinux
1058
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
1059
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
1060
+ /(hurd|linux) ?([\w\.]*)/i,
1061
+ // Hurd/Linux
1062
+ /(gnu) ?([\w\.]*)/i,
1063
+ // GNU
1064
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
1065
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
1066
+ /(haiku) (\w+)/i
1067
+ // Haiku
1068
+ ],
1069
+ [n, a],
1070
+ [
1071
+ /(sunos) ?([\w\.\d]*)/i
1072
+ // Solaris
1073
+ ],
1074
+ [[n, "Solaris"], a],
1075
+ [
1076
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
1077
+ // Solaris
1078
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
1079
+ // AIX
1080
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
1081
+ // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
1082
+ /(unix) ?([\w\.]*)/i
1083
+ // UNIX
1084
+ ],
1085
+ [n, a]
1086
+ ]
1087
+ }, m = function(l, I) {
1088
+ if (typeof l === H && (I = l, l = g), !(this instanceof m))
1089
+ return new m(l, I).getResult();
1090
+ var u = typeof M !== C && M.navigator ? M.navigator : g, D = l || (u && u.userAgent ? u.userAgent : E), y = u && u.userAgentData ? u.userAgentData : g, p = I ? hi(Di, I) : Di, w = u && u.userAgent == D;
1091
+ return this.getBrowser = function() {
1092
+ var r = {};
1093
+ return r[n] = g, r[a] = g, k.call(r, D, p.browser), r[si] = yi(r[a]), w && u && u.brave && typeof u.brave.isBrave == W && (r[n] = "Brave"), r;
1094
+ }, this.getCPU = function() {
1095
+ var r = {};
1096
+ return r[O] = g, k.call(r, D, p.cpu), r;
1097
+ }, this.getDevice = function() {
1098
+ var r = {};
1099
+ return r[t] = g, r[e] = g, r[i] = g, k.call(r, D, p.device), w && !r[i] && y && y.mobile && (r[i] = b), w && r[e] == "Macintosh" && u && typeof u.standalone !== C && u.maxTouchPoints && u.maxTouchPoints > 2 && (r[e] = "iPad", r[i] = N), r;
1100
+ }, this.getEngine = function() {
1101
+ var r = {};
1102
+ return r[n] = g, r[a] = g, k.call(r, D, p.engine), r;
1103
+ }, this.getOS = function() {
1104
+ var r = {};
1105
+ return r[n] = g, r[a] = g, k.call(r, D, p.os), w && !r[n] && y && y.platform != "Unknown" && (r[n] = y.platform.replace(/chrome os/i, li).replace(/macos/i, gi)), r;
1106
+ }, this.getResult = function() {
1107
+ return {
1108
+ ua: this.getUA(),
1109
+ browser: this.getBrowser(),
1110
+ engine: this.getEngine(),
1111
+ os: this.getOS(),
1112
+ device: this.getDevice(),
1113
+ cpu: this.getCPU()
1114
+ };
1115
+ }, this.getUA = function() {
1116
+ return D;
1117
+ }, this.setUA = function(r) {
1118
+ return D = typeof r === P && r.length > J ? ti(r, J) : r, this;
1119
+ }, this.setUA(D), this;
1120
+ };
1121
+ m.VERSION = T, m.BROWSER = G([n, a, si]), m.CPU = G([O]), m.DEVICE = G([e, t, i, S, b, d, N, j, q]), m.ENGINE = m.OS = G([n, a]), o.exports && (s = o.exports = m), s.UAParser = m;
1122
+ var z = typeof M !== C && (M.jQuery || M.Zepto);
1123
+ if (z && !z.ua) {
1124
+ var K = new m();
1125
+ z.ua = K.getResult(), z.ua.get = function() {
1126
+ return K.getUA();
1127
+ }, z.ua.set = function(l) {
1128
+ K.setUA(l);
1129
+ var I = K.getResult();
1130
+ for (var u in I)
1131
+ z.ua[u] = I[u];
1132
+ };
1133
+ }
1134
+ })(typeof window == "object" ? window : xi);
1135
+ }), fi = function(s) {
1136
+ return vi(s) && !ki(s);
1137
+ };
1138
+ function vi(o) {
1139
+ return !!o && typeof o == "object";
1140
+ }
1141
+ function ki(o) {
1142
+ var s = Object.prototype.toString.call(o);
1143
+ return s === "[object RegExp]" || s === "[object Date]" || Pi(o);
1144
+ }
1145
+ var Li = typeof Symbol == "function" && Symbol.for, Ci = Li ? Symbol.for("react.element") : 60103;
1146
+ function Pi(o) {
1147
+ return o.$$typeof === Ci;
1148
+ }
1149
+ function _i(o) {
1150
+ return Array.isArray(o) ? [] : {};
1151
+ }
1152
+ function L(o, s) {
1153
+ return s.clone !== !1 && s.isMergeableObject(o) ? x(_i(o), o, s) : o;
1154
+ }
1155
+ function Ui(o, s, M) {
1156
+ return o.concat(s).map(function(g) {
1157
+ return L(g, M);
1158
+ });
1159
+ }
1160
+ function Yi(o, s) {
1161
+ if (!s.customMerge)
1162
+ return x;
1163
+ var M = s.customMerge(o);
1164
+ return typeof M == "function" ? M : x;
1165
+ }
1166
+ function Qi(o) {
1167
+ return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(o).filter(function(s) {
1168
+ return Object.propertyIsEnumerable.call(o, s);
1169
+ }) : [];
1170
+ }
1171
+ function Oi(o) {
1172
+ return Object.keys(o).concat(Qi(o));
1173
+ }
1174
+ function mi(o, s) {
1175
+ try {
1176
+ return s in o;
1177
+ } catch {
1178
+ return !1;
1179
+ }
1180
+ }
1181
+ function Ri(o, s) {
1182
+ return mi(o, s) && !(Object.hasOwnProperty.call(o, s) && Object.propertyIsEnumerable.call(o, s));
1183
+ }
1184
+ function Zi(o, s, M) {
1185
+ var g = {};
1186
+ return M.isMergeableObject(o) && Oi(o).forEach(function(T) {
1187
+ g[T] = L(o[T], M);
1188
+ }), Oi(s).forEach(function(T) {
1189
+ Ri(o, T) || (mi(o, T) && M.isMergeableObject(s[T]) ? g[T] = Yi(T, M)(o[T], s[T], M) : g[T] = L(s[T], M));
1190
+ }), g;
1191
+ }
1192
+ function x(o, s, M) {
1193
+ M = M || {}, M.arrayMerge = M.arrayMerge || Ui, M.isMergeableObject = M.isMergeableObject || fi, M.cloneUnlessOtherwiseSpecified = L;
1194
+ var g = Array.isArray(s), T = Array.isArray(o), E = g === T;
1195
+ return E ? g ? M.arrayMerge(o, s, M) : Zi(o, s, M) : L(s, M);
1196
+ }
1197
+ x.all = function(s, M) {
1198
+ if (!Array.isArray(s))
1199
+ throw new Error("first argument should be an array");
1200
+ return s.reduce(function(g, T) {
1201
+ return x(g, T, M);
1202
+ }, {});
1203
+ };
1204
+ var Gi = x, Ki = Gi;
1205
+ const Vi = ".mi-my-position{margin:10px;display:flex;flex-direction:column;position:absolute;pointer-events:auto;gap:16px;right:0}.mi-my-position__position-button,.mi-my-position__compass-button{margin:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:48px;height:48px;background-repeat:no-repeat;background-position:center;outline:none;border-color:#e5e7eb;border-style:solid;background-color:#fcfcfc}.mi-my-position__position-button{background-size:23px;border-radius:8px}.mi-my-position__position-button--unknown{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjY1NTIzIDEuMjIzNTZDMy4yNjQ3IDAuODMzMDMzIDIuNjMxNTQgMC44MzMwMzMgMi4yNDEwMSAxLjIyMzU2QzEuODUwNDkgMS42MTQwOCAxLjg1MDQ5IDIuMjQ3MjUgMi4yNDEwMSAyLjYzNzc3TDIyLjI2NiAyMi42NjI4QzIyLjY1NjUgMjMuMDUzMyAyMy4yODk3IDIzLjA1MzMgMjMuNjgwMiAyMi42NjI4QzI0LjA3MDcgMjIuMjcyMiAyNC4wNzA3IDIxLjYzOTEgMjMuNjgwMiAyMS4yNDg1TDE3LjcxNTcgMTUuMjg0MUwyMC43NzQ4IDcuMzYzMjVDMjEuNTYyOSA1LjMyMzE1IDE5LjU1NjIgMy4zMTY2NiAxNy41MTYyIDQuMTA0NTVMOS41OTUzNSA3LjE2MzY4TDMuNjU1MjMgMS4yMjM1NlpNMTEuMTQyIDguNzEwMzJMMTYuMTY5MSAxMy43Mzc0TDE4LjkwOTIgNi42NDI2MUMxOS4wNzE4IDYuMjIxNzIgMTguNjU3OCA1LjgwNzY0IDE4LjIzNjggNS45NzAyNEwxMS4xNDIgOC43MTAzMloiIGZpbGw9IiM3MzczNzMiLz4KPHBhdGggZD0iTTEzLjI1MTggMjEuMjkxMkwxNC45OTIxIDE2Ljc4NDlMMTYuNTM4OCAxOC4zMzE1TDE1LjExNzQgMjIuMDExOEMxNC4wNjc3IDI0LjcyOTYgMTAuMTUwOCAyNC41MDY5IDkuNDE1OTMgMjEuNjg3Nkw4LjEyOTA1IDE2Ljc1MDVMMy4xOTE4IDE1LjQ2MzZDMC4zNzI1MSAxNC43Mjg3IDAuMTQ5ODEyIDEwLjgxMTcgMi44Njc2NCA5Ljc2Mkw2LjY0NTEyIDguMzAzMDlMOC4xOTE3NyA5Ljg0OTc0TDMuNTg4MTkgMTEuNjI3N0MyLjY4MjI0IDExLjk3NzYgMi43NTY0OCAxMy4yODMzIDMuNjk2MjUgMTMuNTI4Mkw4LjYzMzUgMTQuODE1MUM5LjMzNDQzIDE0Ljk5NzggOS44ODE3OCAxNS41NDUyIDEwLjA2NDQgMTYuMjQ2TDExLjM1MTMgMjEuMTgzMkMxMS41OTYyIDIyLjEyMjkgMTIuOTAxOSAyMi4xOTcyIDEzLjI1MTggMjEuMjkxMloiIGZpbGw9IiM3MzczNzMiLz4KPC9zdmc+Cg==)}.mi-my-position__position-button--requesting{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOSAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuODkzNDEgMTEuMjgzTDEuOTU2MTYgOS45OTYxMUMwLjA3NjYyOTIgOS41MDYyIC0wLjA3MTg0MTEgNi44OTQ4NSAxLjc0MDA1IDYuMTk1MDdMMTYuMzg4NiAwLjUzNzYxN0MxNy42MTkxIDAuMDYyMzc2NiAxOC44Mjk0IDEuMjcyNjYgMTguMzU0MSAyLjUwMzE2TDEyLjY5NjcgMTcuMTUxN0MxMS45OTY5IDE4Ljk2MzYgOS4zODU2NCAxOC44MTUxIDguODk1NzQgMTYuOTM1Nkw3LjYwODg0IDExLjk5ODRDNy41MTc1NCAxMS42NDggNy4yNDM4NiAxMS4zNzQzIDYuODkzNDEgMTEuMjgzWiIgZmlsbD0iIzczNzM3MyIvPgo8L3N2Zz4K)}.mi-my-position__position-button--known{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOSAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuODkzNDEgMTEuMjgzTDEuOTU2MTYgOS45OTYxMUMwLjA3NjYyOTIgOS41MDYyIC0wLjA3MTg0MTEgNi44OTQ4NSAxLjc0MDA1IDYuMTk1MDdMMTYuMzg4NiAwLjUzNzYxN0MxNy42MTkxIDAuMDYyMzc2NiAxOC44Mjk0IDEuMjcyNjYgMTguMzU0MSAyLjUwMzE2TDEyLjY5NjcgMTcuMTUxN0MxMS45OTY5IDE4Ljk2MzYgOS4zODU2NCAxOC44MTUxIDguODk1NzQgMTYuOTM1Nkw3LjYwODg0IDExLjk5ODRDNy41MTc1NCAxMS42NDggNy4yNDM4NiAxMS4zNzQzIDYuODkzNDEgMTEuMjgzWiIgZmlsbD0iIzczNzM3MyIvPgo8L3N2Zz4K)}.mi-my-position__position-button--centered{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOSAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuODkzNDEgMTEuMjgzTDEuOTU2MTYgOS45OTYxMUMwLjA3NjYyOTIgOS41MDYyIC0wLjA3MTg0MTEgNi44OTQ4NSAxLjc0MDA1IDYuMTk1MDdMMTYuMzg4NiAwLjUzNzYxN0MxNy42MTkxIDAuMDYyMzc2NiAxOC44Mjk0IDEuMjcyNjYgMTguMzU0MSAyLjUwMzE2TDEyLjY5NjcgMTcuMTUxN0MxMS45OTY5IDE4Ljk2MzYgOS4zODU2NCAxOC44MTUxIDguODk1NzQgMTYuOTM1Nkw3LjYwODg0IDExLjk5ODRDNy41MTc1NCAxMS42NDggNy4yNDM4NiAxMS4zNzQzIDYuODkzNDEgMTEuMjgzWiIgZmlsbD0iIzI1NjNFQiIvPgo8L3N2Zz4K)}.mi-my-position__position-button--tracked{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNSAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjQ2MDQgMTMuNDMwOUMxMy4wMTI3IDEzLjQzMDkgMTMuNDYwNCAxMi45ODMyIDEzLjQ2MDQgMTIuNDMwOUMxMy40NjA0IDExLjg3ODYgMTMuMDEyNyAxMS40MzA5IDEyLjQ2MDQgMTEuNDMwOUMxMS45MDgxIDExLjQzMDkgMTEuNDYwNCAxMS44Nzg2IDExLjQ2MDQgMTIuNDMwOUMxMS40NjA0IDEyLjk4MzIgMTEuOTA4MSAxMy40MzA5IDEyLjQ2MDQgMTMuNDMwOVoiIGZpbGw9IiMyNTYzRUIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMi40NjA0IDEyLjQzMDlDMjIuNDYwNCAxNy45NTM3IDE3Ljk4MzIgMjIuNDMwOSAxMi40NjA0IDIyLjQzMDlDNi45Mzc2IDIyLjQzMDkgMi40NjA0NSAxNy45NTM3IDIuNDYwNDUgMTIuNDMwOUMyLjQ2MDQ1IDYuOTA4MDYgNi45Mzc2IDIuNDMwOTEgMTIuNDYwNCAyLjQzMDkxQzE3Ljk4MzIgMi40MzA5MSAyMi40NjA0IDYuOTA4MDYgMjIuNDYwNCAxMi40MzA5Wk0xNS44Mzc5IDguNDQ2MTJMMTAuNTM4OSA5Ljc4NDc4QzEwLjE4MjYgOS44NzQ4IDkuOTA0MzYgMTAuMTUzIDkuODE0MzQgMTAuNTA5NEw4LjQ3NTcyIDE1LjgwODRDOC4zODMgMTYuMTc1NSA4LjcxNTk0IDE2LjUwODQgOS4wODI5NSAxNi40MTU3TDE0LjM4MTkgMTUuMDc3QzE0LjczODMgMTQuOTg3IDE1LjAxNjUgMTQuNzA4OCAxNS4xMDY2IDE0LjM1MjRMMTYuNDQ1MiA5LjA1MzM1QzE2LjUzNzkgOC42ODYzMyAxNi4yMDUgOC4zNTM0IDE1LjgzNzkgOC40NDYxMloiIGZpbGw9IiMyNTYzRUIiLz4KPC9zdmc+Cg==)}.mi-my-position__position-button--untracked{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNSAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjQ2MDQgMTMuNDMwOUMxMy4wMTI3IDEzLjQzMDkgMTMuNDYwNCAxMi45ODMyIDEzLjQ2MDQgMTIuNDMwOUMxMy40NjA0IDExLjg3ODYgMTMuMDEyNyAxMS40MzA5IDEyLjQ2MDQgMTEuNDMwOUMxMS45MDgxIDExLjQzMDkgMTEuNDYwNCAxMS44Nzg2IDExLjQ2MDQgMTIuNDMwOUMxMS40NjA0IDEyLjk4MzIgMTEuOTA4MSAxMy40MzA5IDEyLjQ2MDQgMTMuNDMwOVoiIGZpbGw9IiMwMDAwMDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMi40NjA0IDEyLjQzMDlDMjIuNDYwNCAxNy45NTM3IDE3Ljk4MzIgMjIuNDMwOSAxMi40NjA0IDIyLjQzMDlDNi45Mzc2IDIyLjQzMDkgMi40NjA0NSAxNy45NTM3IDIuNDYwNDUgMTIuNDMwOUMyLjQ2MDQ1IDYuOTA4MDYgNi45Mzc2IDIuNDMwOTEgMTIuNDYwNCAyLjQzMDkxQzE3Ljk4MzIgMi40MzA5MSAyMi40NjA0IDYuOTA4MDYgMjIuNDYwNCAxMi40MzA5Wk0xNS44Mzc5IDguNDQ2MTJMMTAuNTM4OSA5Ljc4NDc4QzEwLjE4MjYgOS44NzQ4IDkuOTA0MzYgMTAuMTUzIDkuODE0MzQgMTAuNTA5NEw4LjQ3NTcyIDE1LjgwODRDOC4zODMgMTYuMTc1NSA4LjcxNTk0IDE2LjUwODQgOS4wODI5NSAxNi40MTU3TDE0LjM4MTkgMTUuMDc3QzE0LjczODMgMTQuOTg3IDE1LjAxNjUgMTQuNzA4OCAxNS4xMDY2IDE0LjM1MjRMMTYuNDQ1MiA5LjA1MzM1QzE2LjUzNzkgOC42ODYzMyAxNi4yMDUgOC4zNTM0IDE1LjgzNzkgOC40NDYxMloiIGZpbGw9IiMwMDAwMDAiLz4KPC9zdmc+Cg==)}.mi-my-position__compass-button{background-size:12px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAxMyAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUuNTQ4MTMgMi45NjI0MUM1LjkwMTU5IDIuMTc1MjcgNy4wMTkxNSAyLjE3NTI3IDcuMzcyNjIgMi45NjI0MUwxMS41OTI5IDEyLjM2MDZDMTEuOTQ5MSAxMy4xNTM4IDExLjE5MzEgMTMuOTkyMyAxMC4zNjczIDEzLjcxOTlMNi43NzM2NyAxMi41MzQzQzYuNTcwMiAxMi40NjcxIDYuMzUwNTQgMTIuNDY3MSA2LjE0NzA3IDEyLjUzNDNMMi41NTM0MyAxMy43MTk5QzEuNzI3NjggMTMuOTkyMyAwLjk3MTY4MyAxMy4xNTM4IDEuMzI3ODggMTIuMzYwNkw1LjU0ODEzIDIuOTYyNDFaIiBmaWxsPSIjREMyNjI2Ii8+CjxwYXRoIGQ9Ik03LjM3MjUzIDI3Ljg5OTRDNy4wMTkwNiAyOC42ODY1IDUuOTAxNSAyOC42ODY1IDUuNTQ4MDQgMjcuODk5NEwxLjMyNzc5IDE4LjUwMTJDMC45NzE1OTcgMTcuNzA4IDEuNzI3NTkgMTYuODY5NSAyLjU1MzM0IDE3LjE0Mkw2LjE0Njk4IDE4LjMyNzVDNi4zNTA0NiAxOC4zOTQ3IDYuNTcwMTEgMTguMzk0NyA2Ljc3MzU5IDE4LjMyNzVMMTAuMzY3MiAxNy4xNDJDMTEuMTkzIDE2Ljg2OTUgMTEuOTQ5IDE3LjcwOCAxMS41OTI4IDE4LjUwMTJMNy4zNzI1MyAyNy44OTk0WiIgZmlsbD0iIzlDQTNBRiIvPgo8L3N2Zz4K);border-radius:50%}";
1206
+ var c;
1207
+ (function(o) {
1208
+ o.POSITION_UNKNOWN = "POSITION_UNKNOWN", o.POSITION_REQUESTING = "POSITION_REQUESTING", o.POSITION_INACCURATE = "POSITION_INACCURATE", o.POSITION_KNOWN = "POSITION_KNOWN", o.POSITION_CENTERED = "POSITION_CENTERED", o.POSITION_TRACKED = "POSITION_TRACKED", o.POSITION_UNTRACKED = "POSITION_UNTRACKED";
1209
+ })(c || (c = {}));
1210
+ var B;
1211
+ (function(o) {
1212
+ o.Phone = "mobile", o.Tablet = "tablet";
1213
+ })(B || (B = {}));
1214
+ const Bi = class {
1215
+ constructor(o) {
1216
+ ji(this, o), this.position_error = di(this, "position_error", 7), this.position_received = di(this, "position_received", 7), this.parser = new Si.UAParser(), this.handleDeviceOrientationReference = this.handleDeviceOrientation.bind(this), this.defaultOptions = {
1217
+ maxAccuracy: 200,
1218
+ positionOptions: {
1219
+ timeout: 3e4,
1220
+ enableHighAccuracy: !0,
1221
+ maximumAge: 0
1222
+ },
1223
+ positionMarkerStyles: {
1224
+ radius: "12px",
1225
+ strokeWeight: "2px",
1226
+ strokeColor: "white",
1227
+ fillColor: "#4169E1",
1228
+ fillOpacity: 1
1229
+ },
1230
+ accuracyCircleStyles: {
1231
+ fillColor: "#4169E1",
1232
+ fillOpacity: 0.16
1233
+ }
1234
+ }, this.mapsindoors = void 0, this.myPositionOptions = void 0, this.positionState = void 0;
1235
+ }
1236
+ /**
1237
+ * Removes the event listener for the device's orientation and resets the position button.
1238
+ */
1239
+ resetPositionState() {
1240
+ window.removeEventListener("deviceorientation", this.handleDeviceOrientationReference), this.positionState === c.POSITION_TRACKED ? this.setPositionState(c.POSITION_UNTRACKED) : this.positionState === c.POSITION_CENTERED && (this.setPositionState(c.POSITION_KNOWN), this.mapView.tilt(0));
1241
+ }
1242
+ /**
1243
+ * Returns if position is known and accurate.
1244
+ *
1245
+ * @returns {boolean}
1246
+ */
1247
+ hasValidPosition() {
1248
+ return [c.POSITION_KNOWN, c.POSITION_CENTERED, c.POSITION_INACCURATE, c.POSITION_TRACKED, c.POSITION_UNTRACKED].includes(this.positionState);
1249
+ }
1250
+ /**
1251
+ * Sets position to unknown and emits error about it.
1252
+ *
1253
+ * @param {object} error
1254
+ */
1255
+ setPositionUnknown(o) {
1256
+ this.setPositionState(c.POSITION_UNKNOWN), this.position_error.emit(o);
1257
+ }
1258
+ /**
1259
+ * Sets the PositionControl as PositionProvider on the MapView.
1260
+ */
1261
+ setPositionProviderOnMapView() {
1262
+ this.mapView.isReady ? this.mapView.setPositionProvider(this) : this.mapView.once("ready", () => {
1263
+ this.mapView.setPositionProvider(this);
1264
+ });
1265
+ }
1266
+ /**
1267
+ * Pan map to center on the current position.
1268
+ */
1269
+ panToCurrentPosition() {
1270
+ this.hasValidPosition() && (this.mapView.once("idle", () => {
1271
+ this.mapView.on("user_interaction", () => this.resetPositionState());
1272
+ }), this.mapView.panTo({ lat: this.currentPosition.coords.latitude, lng: this.currentPosition.coords.longitude }), this.positionState !== c.POSITION_TRACKED && this.setPositionState(c.POSITION_CENTERED), this.canBeTracked && (DeviceOrientationEvent.requestPermission ? DeviceOrientationEvent.requestPermission().then((o) => {
1273
+ o === "granted" && this.positionState === c.POSITION_TRACKED ? window.addEventListener("deviceorientation", this.handleDeviceOrientationReference) : window.removeEventListener("deviceorientation", this.handleDeviceOrientationReference);
1274
+ }) : this.positionState === c.POSITION_TRACKED ? window.addEventListener("deviceorientation", this.handleDeviceOrientationReference) : window.removeEventListener("deviceorientation", this.handleDeviceOrientationReference)));
1275
+ }
1276
+ /**
1277
+ * Rotates and tilts the map.
1278
+ *
1279
+ * @param {DeviceOrientationEvent} e
1280
+ */
1281
+ handleDeviceOrientation(o) {
1282
+ (!this.orientation || this.orientation - (360 - o.alpha) > 1 || this.orientation - (360 - o.alpha) < -1) && (this.orientation = 360 - o.alpha, this.mapView.easeTo({
1283
+ center: [this.currentPosition.coords.longitude, this.currentPosition.coords.latitude],
1284
+ rotation: this.orientation,
1285
+ tilt: 60,
1286
+ easing: (s) => s * (2 - s)
1287
+ }));
1288
+ }
1289
+ /**
1290
+ * Rotates the compass button using the transform CSS property.
1291
+ *
1292
+ * @param {number} bearing
1293
+ */
1294
+ setCompassStyle(o) {
1295
+ this.compassButton.style.transform = `rotate(${o}deg)`;
1296
+ }
1297
+ /**
1298
+ * Request for current position, emit events and show position on map based on result.
1299
+ *
1300
+ * @param {boolean} [selfInvoked=false] - Used to track if call was invoked by clicking on position control or not.
1301
+ */
1302
+ watchPosition(o = !1) {
1303
+ if (!navigator.geolocation)
1304
+ return;
1305
+ this.setPositionState(c.POSITION_REQUESTING), this.setPositionProviderOnMapView();
1306
+ const s = Date.now();
1307
+ navigator.geolocation.watchPosition((M) => {
1308
+ this.currentPosition && M.coords.accuracy === this.currentPosition.coords.accuracy && M.coords.latitude === this.currentPosition.coords.latitude && M.coords.longitude === this.currentPosition.coords.longitude || (this.currentPosition = M, this.positionIsAccurate = this.currentPosition.coords.accuracy <= this.options.maxAccuracy, this.positionIsAccurate ? (this.positionState === c.POSITION_TRACKED ? this.setPositionState(c.POSITION_UNTRACKED) : this.positionState !== c.POSITION_UNTRACKED && (this.setPositionState(c.POSITION_KNOWN), this.mapView.tilt(0)), window.removeEventListener("deviceorientation", this.handleDeviceOrientationReference)) : (this.setPositionState(c.POSITION_INACCURATE), this.position_error.emit({ code: 11, message: "Inaccurate position: " + M.coords.accuracy })), this.position_received.emit({
1309
+ position: this.currentPosition,
1310
+ selfInvoked: o,
1311
+ accurate: this.positionIsAccurate
1312
+ }));
1313
+ }, (M) => {
1314
+ (M.code !== 3 || !this.currentPosition || this.currentPosition.timestamp <= s) && this.setPositionUnknown(M);
1315
+ }, this.options.positionOptions);
1316
+ }
1317
+ /**
1318
+ * Sets position button state.
1319
+ *
1320
+ * @param {PositionStateTypes} state
1321
+ */
1322
+ setPositionState(o) {
1323
+ this.positionState = o;
1324
+ }
1325
+ /**
1326
+ * Handle click on the compass button.
1327
+ */
1328
+ onCompassButtonClicked() {
1329
+ this.setCompassStyle(0), this.mapView.rotate(0), this.mapView.tilt(0), window.removeEventListener("deviceorientation", this.handleDeviceOrientationReference), this.positionState === c.POSITION_TRACKED ? this.setPositionState(c.POSITION_CENTERED) : this.positionState === c.POSITION_UNTRACKED && this.setPositionState(c.POSITION_KNOWN);
1330
+ }
1331
+ /**
1332
+ * Handle click on position button.
1333
+ * Stops propagation to avoid any map click listeners to fire.
1334
+ *
1335
+ * @param {Event} event
1336
+ */
1337
+ onPositionButtonClicked(o) {
1338
+ switch (o.stopPropagation(), this.positionState) {
1339
+ case c.POSITION_UNKNOWN:
1340
+ this.mapView.tilt(0), this.watchPosition(!0);
1341
+ break;
1342
+ case c.POSITION_KNOWN:
1343
+ this.mapView.tilt(0), this.panToCurrentPosition();
1344
+ break;
1345
+ case c.POSITION_CENTERED:
1346
+ this.canBeTracked && this.setPositionState(c.POSITION_TRACKED), this.panToCurrentPosition();
1347
+ break;
1348
+ case c.POSITION_TRACKED:
1349
+ this.mapView.tilt(0), this.mapView.rotate(0), this.setCompassStyle(0), this.setPositionState(c.POSITION_CENTERED), this.panToCurrentPosition();
1350
+ break;
1351
+ case c.POSITION_UNTRACKED:
1352
+ this.setPositionState(c.POSITION_TRACKED), this.panToCurrentPosition();
1353
+ break;
1354
+ }
1355
+ }
1356
+ /**
1357
+ * Called every time the component has connected to the DOM.
1358
+ * 1. Assigning the mapView and options attributes.
1359
+ * 2. Checking for the navigator's state.
1360
+ * 3. Determining whether the device can be tracked.
1361
+ * 4. Asking for permission to track the device.
1362
+ * 5. Styling the compass button.
1363
+ */
1364
+ connectedCallback() {
1365
+ var o;
1366
+ if (this.mapView = this.mapsindoors.getMapView(), this.options = Ki(this.defaultOptions, (o = this.myPositionOptions) !== null && o !== void 0 ? o : {}), !navigator.geolocation) {
1367
+ this.position_error.emit({ code: 10, message: "Geolocation not available" });
1368
+ return;
1369
+ }
1370
+ const s = this.parser.getDevice().type;
1371
+ this.canBeTracked = !!(typeof window.DeviceOrientationEvent == "function" && (s === B.Phone || s === B.Tablet) && this.mapView.rotatable && this.mapView.tiltable), !("permissions" in navigator) || !("query" in navigator.permissions) ? this.setPositionState(c.POSITION_UNKNOWN) : navigator.permissions.query({ name: "geolocation" }).then((M) => {
1372
+ M.state === "granted" ? this.watchPosition() : this.setPositionState(c.POSITION_UNKNOWN);
1373
+ }), this.mapView.on("rotateend", () => {
1374
+ this.setCompassStyle(this.mapView.getBearing());
1375
+ });
1376
+ }
1377
+ /**
1378
+ * Renders the floor selector.
1379
+ *
1380
+ * @returns {JSX.Element}
1381
+ */
1382
+ render() {
1383
+ return V(Ai, null, V("div", { class: "mi-my-position" }, V("button", { class: `mi-my-position__position-button
1384
+ ${this.positionState === c.POSITION_UNKNOWN || this.positionState === c.POSITION_INACCURATE ? "mi-my-position__position-button--unknown" : ""}
1385
+ ${this.positionState === c.POSITION_REQUESTING ? "mi-my-position__position-button--requesting" : ""}
1386
+ ${this.positionState === c.POSITION_KNOWN ? "mi-my-position__position-button--known" : ""}
1387
+ ${this.positionState === c.POSITION_CENTERED ? "mi-my-position__position-button--centered" : ""}
1388
+ ${this.positionState === c.POSITION_TRACKED ? "mi-my-position__position-button--tracked" : ""}
1389
+ ${this.positionState === c.POSITION_UNTRACKED ? "mi-my-position__position-button--untracked" : ""}`, onClick: (o) => this.onPositionButtonClicked(o) }), V("button", { ref: (o) => this.compassButton = o, class: "mi-my-position__compass-button", onClick: () => this.onCompassButtonClicked() })));
1390
+ }
1391
+ };
1392
+ Bi.style = Vi;
1393
+ export {
1394
+ Bi as mi_my_position
1395
+ };