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