@mapsindoors/map-template 1.66.2 → 1.66.3

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