1 | const getConfirmation = (win, message, callback) => (callback(win.confirm(message)));
|
2 | const isModifiedEvent = (ev) => (ev.metaKey || ev.altKey || ev.ctrlKey || ev.shiftKey);
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | const supportsHistory = (win) => {
|
11 | const ua = win.navigator.userAgent;
|
12 | if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
|
13 | ua.indexOf('Mobile Safari') !== -1 &&
|
14 | ua.indexOf('Chrome') === -1 &&
|
15 | ua.indexOf('Windows Phone') === -1) {
|
16 | return false;
|
17 | }
|
18 | return win.history && 'pushState' in win.history;
|
19 | };
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | const supportsPopStateOnHashChange = (nav) => (nav.userAgent.indexOf('Trident') === -1);
|
25 |
|
26 |
|
27 |
|
28 | const supportsGoWithoutReloadUsingHash = (nav) => (nav.userAgent.indexOf('Firefox') === -1);
|
29 | const isExtraneousPopstateEvent = (nav, event) => (event.state === undefined &&
|
30 | nav.userAgent.indexOf('CriOS') === -1);
|
31 | const storageAvailable = (win, type) => {
|
32 | const storage = win[type];
|
33 | const x = '__storage_test__';
|
34 | try {
|
35 | storage.setItem(x, x);
|
36 | storage.removeItem(x);
|
37 | return true;
|
38 | }
|
39 | catch (e) {
|
40 | return e instanceof DOMException && (
|
41 |
|
42 | e.code === 22 ||
|
43 |
|
44 | e.code === 1014 ||
|
45 |
|
46 |
|
47 | e.name === 'QuotaExceededError' ||
|
48 |
|
49 | e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
|
50 |
|
51 | storage.length !== 0;
|
52 | }
|
53 | };
|
54 |
|
55 | export { supportsHistory as a, supportsPopStateOnHashChange as b, isExtraneousPopstateEvent as c, supportsGoWithoutReloadUsingHash as d, getConfirmation as g, isModifiedEvent as i, storageAvailable as s };
|