PageSourceSearch

https://fxboss.firstcitizens.com/app/assets/widgets/screenfull/screenfull.js

js firstcitizens.com collected 2026-09-24 21:52:38 UTC 4,250 bytes, 155 lines download raw bytes

1/*!
2 * screenfull
3 * v1.2.0 - 2014-04-29
4 * (c) Sindre Sorhus; MIT License
5 */
6(function () {
7    'use strict';
8
9    var isCommonjs = typeof module !== 'undefined' && module.exports;
10    var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;
11
12    var fn = (function () {
13        var val;
14        var valLength;
15
16        var fnMap = [
17            [
18                'requestFullscreen',
19                'exitFullscreen',
20                'fullscreenElement',
21                'fullscreenEnabled',
22                'fullscreenchange',
23                'fullscreenerror'
24            ],
25            // new WebKit
26            [
27                'webkitRequestFullscreen',
28                'webkitExitFullscreen',
29                'webkitFullscreenElement',
30                'webkitFullscreenEnabled',
31                'webkitfullscreenchange',
32                'webkitfullscreenerror'
33
34            ],
35            // old WebKit (Safari 5.1)
36            [
37                'webkitRequestFullScreen',
38                'webkitCancelFullScreen',
39                'webkitCurrentFullScreenElement',
40                'webkitCancelFullScreen',
41                'webkitfullscreenchange',
42                'webkitfullscreenerror'
43
44            ],
45            [
46                'mozRequestFullScreen',
47                'mozCancelFullScreen',
48                'mozFullScreenElement',
49                'mozFullScreenEnabled',
50                'mozfullscreenchange',
51                'mozfullscreenerror'
52            ],
53            [
54                'msRequestFullscreen',
55                'msExitFullscreen',
56                'msFullscreenElement',
57                'msFullscreenEnabled',
58                'MSFullscreenChange',
59                'MSFullscreenError'
60            ]
61        ];
62
63        var i = 0;
64        var l = fnMap.length;
65        var ret = {};
66
67        for (; i < l; i++) {
68            val = fnMap[i];
69            if (val && val[1] in document) {
70                for (i = 0, valLength = val.length; i < valLength; i++) {
71                    ret[fnMap[0][i]] = val[i];
72                }
73                return ret;
74            }
75        }
76
77        return false;
78    })();
79
80    var screenfull = {
81        request: function (elem) {
82            var request = fn.requestFullscreen;
83
84            elem = elem || document.documentElement;
85
86            // Work around Safari 5.1 bug: reports support for
87            // keyboard in fullscreen even though it doesn't.
88            // Browser sniffing, since the alternative with
89            // setTimeout is even worse.
90            if (/5\.1[\.\d]* Safari/.test(navigator.userAgent)) {
91                elem[request]();
92            } else {
93                elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
94            }
95        },
96        exit: function () {
97            document[fn.exitFullscreen]();
98        },
99        toggle: function (elem) {
100            if (this.isFullscreen) {
101                this.exit();
102            } else {
103                this.request(elem);
104            }
105        },
106        onchange: function () {},
107        onerror: function () {},
108        raw: fn
109    };
110
111    if (!fn) {
112        if (isCommonjs) {
113            module.exports = false;
114        } else {
115            window.screenfull = false;
116        }
117
118        return;
119    }
120
121    Object.defineProperties(screenfull, {
122        isFullscreen: {
123            get: function () {
124                return !!document[fn.fullscreenElement];
125            }
126        },
127        element: {
128            enumerable: true,
129            get: function () {
130                return document[fn.fullscreenElement];
131            }
132        },
133        enabled: {
134            enumerable: true,
135            get: function () {
136                // Coerce to boolean in case of old WebKit
137                return !!document[fn.fullscreenEnabled];
138            }
139        }
140    });
141
142    document.addEventListener(fn.fullscreenchange, function (e) {
143        screenfull.onchange.call(screenfull, e);
144    });
145
146    document.addEventListener(fn.fullscreenerror, function (e) {
147        screenfull.onerror.call(screenfull, e);
148    });
149
150    if (isCommonjs) {
151        module.exports = screenfull;
152    } else {
153        window.screenfull = screenfull;
154    }
155})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.