vue-screenfull 0.0.1 → 1.0.2
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.
- package/LICENSE +21 -0
- package/MANUAL_TESTING.md +32 -0
- package/README.md +371 -0
- package/lib/global.d.ts +26 -0
- package/lib/index.cjs.js +7 -0
- package/lib/index.cjs.js.map +1 -0
- package/lib/index.d.ts +239 -0
- package/lib/index.esm.js +7 -0
- package/lib/index.esm.js.map +1 -0
- package/lib/typing.d.ts +123 -0
- package/lib/vue-screenfull.min.js +7 -0
- package/lib/vue-screenfull.min.js.map +1 -0
- package/package.json +93 -43
- package/dist/vue-screenfull.min.js +0 -414
- package/dist/vue-screenfull.min.js.map +0 -1
- package/webpack.config.js +0 -53
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017-2026 Cheng
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Browser testing strategy and manual matrix
|
|
2
|
+
|
|
3
|
+
Automated unit tests cover property mapping, state, errors, cleanup, targets, Vue integration, and
|
|
4
|
+
fallback. Real-browser smoke tests should load `/playground/`, verify capability diagnostics, and
|
|
5
|
+
exercise a request from a genuine click. Native fullscreen is not made a hard headless-CI assertion:
|
|
6
|
+
Chromium, Firefox, and WebKit automation can reject it when user activation or the host display is
|
|
7
|
+
unavailable.
|
|
8
|
+
|
|
9
|
+
Record the date, browser/OS version, native availability, page/element/video targets, change event,
|
|
10
|
+
Escape/visible-button exit, browser UI, iframe result, fallback result, and limitation for each row.
|
|
11
|
+
An unchecked row is a documented target, not a tested claim.
|
|
12
|
+
|
|
13
|
+
| Environment | Native | Element | Events/exit | Fallback | Last verified / notes |
|
|
14
|
+
| ----------------- | ------ | ------- | ----------- | -------- | ------------------------------------------------------------- |
|
|
15
|
+
| Windows + Chrome | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
16
|
+
| Windows + Edge | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
17
|
+
| Windows + Firefox | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
18
|
+
| macOS + Safari | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
19
|
+
| macOS + Chrome | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
20
|
+
| macOS + Firefox | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
21
|
+
| Android + Chrome | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
22
|
+
| Android + Firefox | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
23
|
+
| Samsung Internet | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
24
|
+
| iPadOS + Safari | ☐ | ☐ | ☐ | ☐ | Not manually verified |
|
|
25
|
+
| iPhone + Safari | ☐ | ☐ | ☐ | ☐ | Expect arbitrary-element restrictions; verify current release |
|
|
26
|
+
| Android WebView | ☐ | ☐ | ☐ | ☐ | Host settings affect support |
|
|
27
|
+
| iOS WKWebView | ☐ | ☐ | ☐ | ☐ | Host settings and iOS release affect support |
|
|
28
|
+
|
|
29
|
+
For iframe checks, test both an allowed iframe (`allow="fullscreen" allowfullscreen`) and one without
|
|
30
|
+
permission. Confirm errors are visible, focus returns after library-driven exit, fallback restores
|
|
31
|
+
inline styles/body scroll, navigation and app switching do not leave stale state, and an accessible
|
|
32
|
+
exit remains keyboard/touch reachable.
|
package/README.md
ADDED
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
# vue-screenfull
|
|
2
|
+
|
|
3
|
+
[![npm version][npm-version-image]][npm-url]
|
|
4
|
+
[![license][license-image]][license-url]
|
|
5
|
+
|
|
6
|
+
[npm-version-image]: https://img.shields.io/npm/v/vue-screenfull.svg
|
|
7
|
+
[npm-url]: https://www.npmjs.com/package/vue-screenfull
|
|
8
|
+
[license-image]: https://img.shields.io/npm/l/vue-screenfull.svg
|
|
9
|
+
[license-url]: https://github.com/chengchuu/vue-screenfull/blob/main/LICENSE
|
|
10
|
+
|
|
11
|
+
Reactive, strongly typed, SSR-safe fullscreen utilities designed for Vue 3.
|
|
12
|
+
The library uses the browser Fullscreen API when available and can optionally provide an explicitly labelled CSS pseudo-fullscreen fallback.
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- Reactive Composition API state with automatic scope cleanup.
|
|
17
|
+
- Standard, WebKit, Mozilla, and Microsoft-prefixed API detection.
|
|
18
|
+
- Vue template refs, component refs, elements, and safe CSS selectors.
|
|
19
|
+
- Structured results and actionable errors instead of swallowed rejections.
|
|
20
|
+
- Renderless component, directive, optional plugin, and framework-light controller.
|
|
21
|
+
- No fullscreen wrapper or other runtime dependency; Vue remains a peer dependency.
|
|
22
|
+
- CJS, ESM, browser IIFE, source maps, and declarations.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install vue-screenfull
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The browser bundle is `lib/vue-screenfull.min.js`, exposes `VUE_SCREENFULL`, and expects Vue to be available as the global `Vue`.
|
|
31
|
+
|
|
32
|
+
## Browser Support
|
|
33
|
+
|
|
34
|
+
Support is feature-detected at runtime. Current Chrome, Edge, Firefox, and Safari desktop releases,
|
|
35
|
+
Chrome/Firefox/Samsung Internet on Android, and Safari on iPadOS commonly expose the API. iPhone
|
|
36
|
+
Safari, Android/iOS WebViews, managed devices, and embedded documents may restrict arbitrary-element
|
|
37
|
+
fullscreen. This policy describes targets, not a guarantee for every OS/browser release.
|
|
38
|
+
|
|
39
|
+
Native fullscreen can hide more browser UI, but the browser and operating system retain control.
|
|
40
|
+
The CSS fallback only fills the visual viewport and never claims to hide system or browser chrome.
|
|
41
|
+
|
|
42
|
+
## Basic Usage
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<script setup lang="ts">
|
|
46
|
+
import { useTemplateRef } from "vue";
|
|
47
|
+
import { useScreenfull } from "vue-screenfull";
|
|
48
|
+
|
|
49
|
+
const target = useTemplateRef<HTMLElement>("target");
|
|
50
|
+
const { isEnabled, isFullscreen, error, toggle } = useScreenfull();
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<section ref="target">
|
|
55
|
+
<p>Fullscreen content</p>
|
|
56
|
+
<button type="button" :disabled="!isEnabled" @click="toggle(target)">
|
|
57
|
+
{{ isFullscreen ? "Exit fullscreen" : "Enter fullscreen" }}
|
|
58
|
+
</button>
|
|
59
|
+
<p v-if="error" role="alert">{{ error.message }}</p>
|
|
60
|
+
</section>
|
|
61
|
+
</template>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Call `request` or `toggle` directly inside a click, keyboard, or touch handler.
|
|
65
|
+
Browsers normally require transient user activation and can reject even when `isEnabled.value` is true.
|
|
66
|
+
|
|
67
|
+
## Fullscreen a Specific Element
|
|
68
|
+
|
|
69
|
+
```vue
|
|
70
|
+
<script setup lang="ts">
|
|
71
|
+
import { useTemplateRef } from "vue";
|
|
72
|
+
import { useScreenfullTarget } from "vue-screenfull";
|
|
73
|
+
const panel = useTemplateRef<HTMLElement>("panel");
|
|
74
|
+
const { request, isFullscreen } = useScreenfullTarget(panel);
|
|
75
|
+
</script>
|
|
76
|
+
<template>
|
|
77
|
+
<section ref="panel">
|
|
78
|
+
<button type="button" @click="request()">Open panel</button>
|
|
79
|
+
<span>Active: {{ isFullscreen }}</span>
|
|
80
|
+
</section>
|
|
81
|
+
</template>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`useScreenfull().request()` with no target opens `document.documentElement`.
|
|
85
|
+
A selector such as `request("#player")` is resolved with `document.querySelector`; invalid or unmatched selectors return `INVALID_TARGET`.
|
|
86
|
+
|
|
87
|
+
## Toggle Fullscreen
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
const result = await toggle(target, { navigationUI: "hide" });
|
|
91
|
+
if (!result.ok) console.warn(result.error.code, result.error.suggestion);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
For image content, pass the image template ref. For a video, pass an `HTMLVideoElement` ref.
|
|
95
|
+
Some mobile browsers offer video-only fullscreen independently of arbitrary-element fullscreen.
|
|
96
|
+
|
|
97
|
+
## Exit Fullscreen
|
|
98
|
+
|
|
99
|
+
```vue
|
|
100
|
+
<button type="button" @click="exit">Exit fullscreen</button>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Always include a visible exit button, particularly when fallback is enabled. Escape often exits,
|
|
104
|
+
but browser Escape behavior cannot be overridden reliably. Exits initiated by browser UI are reflected through native change events.
|
|
105
|
+
|
|
106
|
+
## Check Support
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
const { isEnabled, status } = useScreenfull();
|
|
110
|
+
// isEnabled.value: native API currently enabled
|
|
111
|
+
// status.value: idle | requesting | fullscreen | exiting | fallback | unsupported | error
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Feature detection is more reliable than user-agent checks across Safari, iOS/iPadOS, and WebViews.
|
|
115
|
+
|
|
116
|
+
## Handle Errors
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
const result = await request(target);
|
|
120
|
+
if (!result.ok) {
|
|
121
|
+
console.error(
|
|
122
|
+
result.error.code,
|
|
123
|
+
result.error.message,
|
|
124
|
+
result.error.suggestion,
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Errors distinguish unsupported/SSR environments, invalid or detached targets, user activation,
|
|
130
|
+
permissions and iframe policy, pending transitions, native request/exit failures, and fallback
|
|
131
|
+
failures. `error` keeps the last error until `clearError()` is called.
|
|
132
|
+
|
|
133
|
+
## CSS Fallback
|
|
134
|
+
|
|
135
|
+
```ts
|
|
136
|
+
const { request, exit, isFallback } = useScreenfull({
|
|
137
|
+
fallback: "css",
|
|
138
|
+
fallbackClass: "my-pseudo-fullscreen",
|
|
139
|
+
lockScroll: true,
|
|
140
|
+
restoreFocus: true,
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
CSS fallback fixes an `HTMLElement` to the visual viewport, preserves every inline style it changes,
|
|
145
|
+
locks and restores body scrolling, preserves the scroll position, adds the configured class,
|
|
146
|
+
exits on Escape when possible, and restores focus. Cleanup also runs when its Vue scope is disposed.
|
|
147
|
+
It is pseudo-fullscreen: it cannot hide address bars, browser controls, notifications,
|
|
148
|
+
or operating-system UI. Keep an accessible exit button inside the target:
|
|
149
|
+
|
|
150
|
+
```vue
|
|
151
|
+
<button type="button" @click="exit">Close full-page view</button>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
A custom fallback implements `enter(context)` and `exit(context)` and is responsible for complete cleanup.
|
|
155
|
+
|
|
156
|
+
## Component Usage
|
|
157
|
+
|
|
158
|
+
```vue
|
|
159
|
+
<Screenfull
|
|
160
|
+
target="#article"
|
|
161
|
+
fallback="css"
|
|
162
|
+
v-slot="screenfull"
|
|
163
|
+
@error="report"
|
|
164
|
+
>
|
|
165
|
+
<button type="button" @click="screenfull.toggle()">
|
|
166
|
+
{{ screenfull.isFullscreen ? "Exit" : "Open article" }}
|
|
167
|
+
</button>
|
|
168
|
+
<button v-if="screenfull.isFullscreen" type="button" @click="screenfull.exit">Exit</button>
|
|
169
|
+
</Screenfull>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
The renderless component emits `change`, `enter`, `exit`, `error`, and `fallback`.
|
|
173
|
+
Its default slot receives all composable refs and actions; it imposes no visual system.
|
|
174
|
+
|
|
175
|
+
## Directive Usage
|
|
176
|
+
|
|
177
|
+
```vue
|
|
178
|
+
<button v-screenfull>Fullscreen page</button>
|
|
179
|
+
<button v-screenfull="target">Toggle target</button>
|
|
180
|
+
<button v-screenfull:request="target">Enter target</button>
|
|
181
|
+
<button v-screenfull:exit>Exit</button>
|
|
182
|
+
<button
|
|
183
|
+
v-screenfull="{ target, action: 'toggle', options: { navigationUI: 'hide' } }"
|
|
184
|
+
>Toggle</button>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Only `request`, `exit`, and `toggle` arguments are supported. The default is `toggle`.
|
|
188
|
+
Directives need local registration unless the plugin is installed:
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
const vScreenfull = importedDirective;
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Plugin Installation
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
import { createApp } from "vue";
|
|
198
|
+
import VueScreenfull from "vue-screenfull";
|
|
199
|
+
import App from "./App.vue";
|
|
200
|
+
|
|
201
|
+
createApp(App).use(VueScreenfull).mount("#app");
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
This registers `Screenfull` and `v-screenfull`. Names can be changed with `componentName` and `directiveName`.
|
|
205
|
+
Named composable imports never require plugin installation and remain tree-shakable.
|
|
206
|
+
|
|
207
|
+
## Advanced Usage
|
|
208
|
+
|
|
209
|
+
The framework-light controller is useful for migration and non-component integrations:
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
import { createScreenfullController } from "vue-screenfull";
|
|
213
|
+
|
|
214
|
+
const controller = createScreenfullController({ restoreFocus: true });
|
|
215
|
+
const onChange = (state) => console.log(state.isFullscreen, state.element);
|
|
216
|
+
controller.on("change", onChange);
|
|
217
|
+
await controller.request(document.querySelector("#map"));
|
|
218
|
+
controller.off("change", onChange);
|
|
219
|
+
await controller.destroy();
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
`raw` is a read-only diagnostic mapping of detected browser property/event names, or `null`.
|
|
223
|
+
It is not the recommended API. Each composable creates one controller and disposes it with its Vue scope;
|
|
224
|
+
multiple controllers synchronize through the same document's native events.
|
|
225
|
+
Importing the package does not register listeners or touch the DOM.
|
|
226
|
+
|
|
227
|
+
Reactive callbacks can observe changes without duplicate component wiring:
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
useScreenfull({ onEnter: announce, onExit: announce, onError: report });
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
`restoreFocus: true` (the default) focuses the initiating element after exit where practical.
|
|
234
|
+
`exitOnRouteChange` listens for browser `popstate`; router-specific navigation can instead call `exit()` in the application's own route hook.
|
|
235
|
+
|
|
236
|
+
## iframe Usage
|
|
237
|
+
|
|
238
|
+
The embedding page controls permission. A typical iframe is:
|
|
239
|
+
|
|
240
|
+
```html
|
|
241
|
+
<iframe
|
|
242
|
+
src="https://example.com/player"
|
|
243
|
+
allow="fullscreen"
|
|
244
|
+
allowfullscreen
|
|
245
|
+
></iframe>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Permissions Policy or a missing iframe permission can still reject.
|
|
249
|
+
The library returns `IFRAME_PERMISSION_REQUIRED` when a denial can be associated with an embedded document;
|
|
250
|
+
it cannot override the parent page's policy.
|
|
251
|
+
|
|
252
|
+
## Mobile Considerations
|
|
253
|
+
|
|
254
|
+
- Use direct user gestures and keep a visible touch-sized exit control.
|
|
255
|
+
- Feature-detect rather than assuming support by device name.
|
|
256
|
+
- iPhone Safari and WKWebView behavior may be limited or video-specific.
|
|
257
|
+
- Dynamic browser chrome changes viewport height; CSS fallback uses `100dvh` where supported.
|
|
258
|
+
- Native navigation, tab switching, app switching, and OS gestures may exit fullscreen.
|
|
259
|
+
- Neither native capability nor this library guarantees browser/OS controls disappear.
|
|
260
|
+
|
|
261
|
+
## SSR and Nuxt
|
|
262
|
+
|
|
263
|
+
Imports are safe in Vite SSR, Nuxt 3, Node tests, and static generation. Outside a browser,
|
|
264
|
+
`isEnabled` is false, status is `unsupported`, and actions return `NOT_IN_BROWSER`.
|
|
265
|
+
|
|
266
|
+
```vue
|
|
267
|
+
<script setup lang="ts">
|
|
268
|
+
import { useScreenfull } from "vue-screenfull";
|
|
269
|
+
const screenfull = useScreenfull(); // safe during Nuxt setup/SSR
|
|
270
|
+
</script>
|
|
271
|
+
<template>
|
|
272
|
+
<ClientOnly>
|
|
273
|
+
<button
|
|
274
|
+
type="button"
|
|
275
|
+
:disabled="!screenfull.isEnabled.value"
|
|
276
|
+
@click="screenfull.toggle()"
|
|
277
|
+
>
|
|
278
|
+
Toggle page fullscreen
|
|
279
|
+
</button>
|
|
280
|
+
</ClientOnly>
|
|
281
|
+
</template>
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
When destructuring refs in `<script setup>`, templates unwrap them automatically;
|
|
285
|
+
when accessing through an object as above, use `.value` in script expressions.
|
|
286
|
+
|
|
287
|
+
## Migrating from screenfull
|
|
288
|
+
|
|
289
|
+
`vue-screenfull` is an independent Vue 3 library inspired by screenfull's public API and compatibility goals.
|
|
290
|
+
It is not drop-in compatible and is not endorsed by screenfull's maintainers.
|
|
291
|
+
|
|
292
|
+
| screenfull concept | vue-screenfull equivalent |
|
|
293
|
+
| -------------------------------------- | ------------------------------------------------------- |
|
|
294
|
+
| `screenfull.request(element, options)` | `request(element, options)` |
|
|
295
|
+
| `screenfull.exit()` | `exit()` |
|
|
296
|
+
| `screenfull.toggle(element, options)` | `toggle(element, options)` |
|
|
297
|
+
| `screenfull.isEnabled` | reactive `isEnabled.value` |
|
|
298
|
+
| `screenfull.isFullscreen` | reactive `isFullscreen.value` |
|
|
299
|
+
| `screenfull.element` | reactive `fullscreenElement.value` |
|
|
300
|
+
| `screenfull.on("change", fn)` | refs, callbacks, component events, or controller events |
|
|
301
|
+
| `screenfull.on("error", fn)` | reactive `error`, callbacks, or controller events |
|
|
302
|
+
|
|
303
|
+
Before:
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
import screenfull from "screenfull";
|
|
307
|
+
if (screenfull.isEnabled) await screenfull.toggle(element);
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
After:
|
|
311
|
+
|
|
312
|
+
```ts
|
|
313
|
+
import { useScreenfull } from "vue-screenfull";
|
|
314
|
+
const { isEnabled, toggle } = useScreenfull();
|
|
315
|
+
if (isEnabled.value) {
|
|
316
|
+
const result = await toggle(element);
|
|
317
|
+
if (!result.ok) console.error(result.error.message);
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Key differences are reactive refs, automatic lifecycle cleanup, SSR-safe imports, structured results/errors, optional pseudo-fullscreen, and Vue component/directive APIs.
|
|
322
|
+
Controller listeners receive typed state/errors rather than raw DOM events.
|
|
323
|
+
Legacy `onchange`/`onerror` aliases are not provided. The plugin is optional.
|
|
324
|
+
|
|
325
|
+
## API Reference
|
|
326
|
+
|
|
327
|
+
Root exports:
|
|
328
|
+
|
|
329
|
+
- `useScreenfull(options?)`, `useScreenfullTarget(target, options?)`
|
|
330
|
+
- `Screenfull`, `vScreenfull`, and the default plugin
|
|
331
|
+
- `createScreenfullController(options?)`
|
|
332
|
+
- `detectFullscreenApi(document)` and `resolveScreenfullTarget(target, document)`
|
|
333
|
+
- all public target, option, state, result, error, event, component, directive, plugin, and raw-map types
|
|
334
|
+
|
|
335
|
+
Actions resolve to `{ ok, mode, element, error }`; `mode` is `native`, `fallback`, or `none`.
|
|
336
|
+
Generated TypeDoc is published at `/api/`.
|
|
337
|
+
|
|
338
|
+
## Live Playground
|
|
339
|
+
|
|
340
|
+
The deployed playground is at [chengchuu.github.io/vue-screenfull/playground/](https://chengchuu.github.io/vue-screenfull/playground/).
|
|
341
|
+
It includes page, element, image-style, and video targets; explicit exit; diagnostics;
|
|
342
|
+
invalid-target feedback; event history; accessibility, iframe, mobile, and migration notes. Run it locally with:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
npm run dev
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Native fullscreen automation is intentionally not treated as universally reliable because browsers enforce user activation.
|
|
349
|
+
|
|
350
|
+
## Development
|
|
351
|
+
|
|
352
|
+
Node.js 22 is used in CI.
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
npm install
|
|
356
|
+
npm run typecheck
|
|
357
|
+
npm run lint
|
|
358
|
+
npm run format:check
|
|
359
|
+
npm run test
|
|
360
|
+
npm run build
|
|
361
|
+
npm run docs
|
|
362
|
+
npm run preview
|
|
363
|
+
npm pack --dry-run
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
See `MANUAL_TESTING.md` for the browser matrix and real-browser strategy.
|
|
367
|
+
Production output remains `lib/index.cjs.js`, `lib/index.esm.js`, `lib/vue-screenfull.min.js`, `lib/index.d.ts`, `lib/typing.d.ts`, and `lib/global.d.ts`.
|
|
368
|
+
|
|
369
|
+
## License and Attribution
|
|
370
|
+
|
|
371
|
+
Released under the MIT License. This independent project acknowledges [screenfull](https://github.com/sindresorhus/screenfull) (MIT) for its public API and cross-browser compatibility inspiration, and `vue-fullscreen` (MIT) as a Vue ecosystem reference. No endorsement is implied.
|
package/lib/global.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Legacy Fullscreen API names used only after runtime feature detection. */
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
declare global {
|
|
5
|
+
interface Document {
|
|
6
|
+
webkitExitFullscreen?: () => Promise<void> | void;
|
|
7
|
+
webkitFullscreenElement?: Element | null;
|
|
8
|
+
webkitFullscreenEnabled?: boolean;
|
|
9
|
+
mozCancelFullScreen?: () => Promise<void> | void;
|
|
10
|
+
mozFullScreenElement?: Element | null;
|
|
11
|
+
mozFullScreenEnabled?: boolean;
|
|
12
|
+
msExitFullscreen?: () => Promise<void> | void;
|
|
13
|
+
msFullscreenElement?: Element | null;
|
|
14
|
+
msFullscreenEnabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface Element {
|
|
17
|
+
webkitRequestFullscreen?: (
|
|
18
|
+
options?: FullscreenOptions,
|
|
19
|
+
) => Promise<void> | void;
|
|
20
|
+
mozRequestFullScreen?: (
|
|
21
|
+
options?: FullscreenOptions,
|
|
22
|
+
) => Promise<void> | void;
|
|
23
|
+
msRequestFullscreen?: (options?: FullscreenOptions) => Promise<void> | void;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export {};
|
package/lib/index.cjs.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* vue-screenfull v1.0.2
|
|
3
|
+
* (c) 2018-2026 Cheng https://www.npmjs.com/package/vue-screenfull
|
|
4
|
+
* Released under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");function n(e,n,t){return n&&function(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,l(r.key),r)}}(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function t(){var e,n,l="function"==typeof Symbol?Symbol:{},o=l.iterator||"@@iterator",u=l.toStringTag||"@@toStringTag";function i(t,l,o,u){var i=l&&l.prototype instanceof c?l:c,s=Object.create(i.prototype);return r(s,"_invoke",function(t,r,l){var o,u,i,c=0,s=l||[],f=!1,d={p:0,n:0,v:e,a:v,f:v.bind(e,4),d:function(n,t){return o=n,u=0,i=e,d.n=t,a}};function v(t,r){for(u=t,i=r,n=0;!f&&c&&!l&&n<s.length;n++){var l,o=s[n],v=d.p,b=o[2];t>3?(l=b===r)&&(i=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):o[0]<=v&&((l=t<2&&v<o[1])?(u=0,d.v=r,d.n=o[1]):v<b&&(l=t<3||o[0]>r||r>b)&&(o[4]=t,o[5]=r,d.n=b,u=0))}if(l||t>1)return a;throw f=!0,r}return function(l,s,b){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&v(s,b),u=s,i=b;(n=u<2?e:i)||!f;){o||(u?u<3?(u>1&&(d.n=-1),v(u,i)):d.n=i:d.v=i);try{if(c=2,o){if(u||(l="next"),n=o[l]){if(!(n=n.call(o,i)))throw TypeError("iterator result is not an object");if(!n.done)return n;i=n.value,u<2&&(u=0)}else 1===u&&(n=o.return)&&n.call(o),u<2&&(i=TypeError("The iterator does not provide a '"+l+"' method"),u=1);o=e}else if((n=(f=d.n<0)?i:t.call(r,d))!==a)break}catch(n){o=e,u=1,i=n}finally{c=1}}return{value:n,done:f}}}(t,o,u),!0),s}var a={};function c(){}function s(){}function f(){}n=Object.getPrototypeOf;var d=[][o]?n(n([][o]())):(r(n={},o,function(){return this}),n),v=f.prototype=c.prototype=Object.create(d);function b(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,r(e,u,"GeneratorFunction")),e.prototype=Object.create(v),e}return s.prototype=f,r(v,"constructor",f),r(f,"constructor",s),s.displayName="GeneratorFunction",r(f,u,"GeneratorFunction"),r(v),r(v,u,"Generator"),r(v,o,function(){return this}),r(v,"toString",function(){return"[object Generator]"}),(t=function(){return{w:i,m:b}})()}function r(e,n,t,l){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}r=function(e,n,t,l){function u(n,t){r(e,n,function(e){return this._invoke(n,t,e)})}n?o?o(e,n,{value:t,enumerable:!l,configurable:!l,writable:!l}):e[n]=t:(u("next",0),u("throw",1),u("return",2))},r(e,n,t,l)}function l(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof n?n:n+""}function o(e,n,t,r){return new(t||(t=Promise))(function(l,o){function u(e){try{a(r.next(e))}catch(e){o(e)}}function i(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var n;e.done?l(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(u,i)}a((r=r.apply(e,n||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;var u=[{requestFullscreen:"requestFullscreen",exitFullscreen:"exitFullscreen",fullscreenElement:"fullscreenElement",fullscreenEnabled:"fullscreenEnabled",fullscreenchange:"fullscreenchange",fullscreenerror:"fullscreenerror"},{requestFullscreen:"webkitRequestFullscreen",exitFullscreen:"webkitExitFullscreen",fullscreenElement:"webkitFullscreenElement",fullscreenEnabled:"webkitFullscreenEnabled",fullscreenchange:"webkitfullscreenchange",fullscreenerror:"webkitfullscreenerror"},{requestFullscreen:"mozRequestFullScreen",exitFullscreen:"mozCancelFullScreen",fullscreenElement:"mozFullScreenElement",fullscreenEnabled:"mozFullScreenEnabled",fullscreenchange:"mozfullscreenchange",fullscreenerror:"mozfullscreenerror"},{requestFullscreen:"msRequestFullscreen",exitFullscreen:"msExitFullscreen",fullscreenElement:"msFullscreenElement",fullscreenEnabled:"msFullscreenEnabled",fullscreenchange:"MSFullscreenChange",fullscreenerror:"MSFullscreenError"}];function i(e){var n=e.documentElement,t=e,r=u.find(function(e){return"function"==typeof n[e.requestFullscreen]&&"function"==typeof t[e.exitFullscreen]});return r?Object.freeze(Object.assign({},r)):null}var a=["position","inset","top","right","bottom","left","width","height","maxWidth","maxHeight","margin","zIndex","overflow","background"],c=/*#__PURE__*/function(){return n(function e(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.element=null,this.styles=null,this.bodyOverflow="",this.scrollX=0,this.scrollY=0,this.className=""},[{key:"enter",value:function(e){var n,t,r,l,o,u,i,c,s=e.element,f=e.document,d=e.options,v=null===(n=f.defaultView)||void 0===n?void 0:n.HTMLElement;if(!(v&&s instanceof v))throw new TypeError("CSS fallback requires an HTMLElement.");this.element=s,this.className=null!==(t=d.fallbackClass)&&void 0!==t?t:"vue-screenfull-fallback",this.styles={};for(var b=0,m=a;b<m.length;b++){var h=m[b];this.styles[h]=this.element.style[h]}this.bodyOverflow=null!==(l=null===(r=f.body)||void 0===r?void 0:r.style.overflow)&&void 0!==l?l:"",this.scrollX=null!==(u=null===(o=f.defaultView)||void 0===o?void 0:o.scrollX)&&void 0!==u?u:0,this.scrollY=null!==(c=null===(i=f.defaultView)||void 0===i?void 0:i.scrollY)&&void 0!==c?c:0,Object.assign(this.element.style,{position:"fixed",inset:"0",top:"0",right:"0",bottom:"0",left:"0",width:"100vw",height:"100dvh",maxWidth:"none",maxHeight:"none",margin:"0",zIndex:"2147483647",overflow:"auto",background:this.element.style.background||"Canvas"}),this.element.classList.add(this.className),!1!==d.lockScroll&&f.body&&(f.body.style.overflow="hidden")}},{key:"exit",value:function(e){var n,t,r,l=e.document;if(this.element&&this.styles){for(var o=0,u=a;o<u.length;o++){var i=u[o];this.element.style[i]=null!==(n=this.styles[i])&&void 0!==n?n:""}this.element.classList.remove(this.className),l.body&&(l.body.style.overflow=this.bodyOverflow),null===(r=null===(t=l.defaultView)||void 0===t?void 0:t.scrollTo)||void 0===r||r.call(t,this.scrollX,this.scrollY),this.element=null,this.styles=null}}}])}();function s(e){return e.fallback&&"none"!==e.fallback?"css"===e.fallback?new c:e.fallback:null}var f={NOT_SUPPORTED:"Enable the CSS fallback or use a browser with the Fullscreen API.",NOT_IN_BROWSER:"Call fullscreen actions after the component mounts in a browser.",USER_ACTIVATION_REQUIRED:"Call request() directly from a click, key, or touch handler.",PERMISSION_DENIED:"Check browser settings and the document Permissions Policy.",IFRAME_PERMISSION_REQUIRED:'Add allow="fullscreen" and allowfullscreen to the embedding iframe.',TARGET_NOT_CONNECTED:"Attach the target element to the current document before requesting fullscreen.",REQUEST_IN_PROGRESS:"Wait for the current fullscreen transition to finish."};function d(e,n,t){return{code:e,message:n,cause:t,recoverable:!(arguments.length>3&&void 0!==arguments[3])||arguments[3],suggestion:f[e]}}function v(e,n,t){var r,l=e instanceof Error?"".concat(e.name,": ").concat(e.message):String(e),o=l.toLowerCase(),u="exit"===n?"EXIT_FAILED":"fallback"===n?"FALLBACK_FAILED":"REQUEST_FAILED";if(o.includes("activation")||o.includes("gesture"))u="USER_ACTIVATION_REQUIRED";else if(o.includes("permission")||o.includes("denied")||o.includes("security")){var i;try{i=Boolean(null===(r=null==t?void 0:t.defaultView)||void 0===r?void 0:r.frameElement)}catch(e){i=!0}u=i?"IFRAME_PERMISSION_REQUIRED":"PERMISSION_DENIED"}return d(u,"Fullscreen ".concat(n," failed: ").concat(l),e)}var b=function(e,n){return{ok:!0,mode:e,element:n,error:null}};function m(){var e,n,r=this,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},u=null!==(e=l.document)&&void 0!==e?e:"undefined"==typeof document?void 0:document,a=u?i(u):null,c=new Set,f=new Set,m=s(l),h=null,p=l,g=null,E=!1,k=!1,y=null,w=u?"idle":"unsupported",F=function(){return u&&a?u[a.fullscreenElement]:null},S=function(){return{isEnabled:Boolean(u&&a&&!1!==u[a.fullscreenEnabled]),isFullscreen:Boolean(F()||h),isFallback:Boolean(h),element:F()||h,status:w}},O=null,T=S().isFullscreen,R=function(){var e,n=S();O&&O.isEnabled===n.isEnabled&&O.isFullscreen===n.isFullscreen&&O.isFallback===n.isFallback&&O.status===n.status&&O.element===n.element||(O=n,null===(e=l.onChange)||void 0===e||e.call(l,n),c.forEach(function(e){return e(n)}))},x=function(e){var n;return y=e,arguments.length>1&&void 0!==arguments[1]&&arguments[1]||(w="NOT_SUPPORTED"===e.code||"NOT_IN_BROWSER"===e.code?"unsupported":"error"),k||(null===(n=l.onError)||void 0===n||n.call(l,e),f.forEach(function(n){return n(e)}),R()),l.debug&&"undefined"!=typeof console&&console.warn("[vue-screenfull]",e),{ok:!1,mode:"none",element:S().element,error:e}},_=function(){var e,n;w=F()?"fullscreen":"idle";var t=S();t.isFullscreen!==T&&(t.isFullscreen?null===(e=l.onEnter)||void 0===e||e.call(l,t):null===(n=l.onExit)||void 0===n||n.call(l,t),T=t.isFullscreen),R()},I=function(e){E||x(v(e,"request",u))},N=function(e){"Escape"===e.key&&h&&L.exit()},j=function(){S().isFullscreen&&L.exit()},C=function(){var e,n,t=!1,r=new Promise(function(e){n=e}),l=function(){u&&a&&(u.removeEventListener(a.fullscreenchange,i),u.removeEventListener(a.fullscreenerror,c),void 0!==e&&globalThis.clearTimeout(e))},o=function(e){t||(t=!0,l(),n(e))},i=function(){return o({ok:!0})},c=function(e){return o({ok:!1,cause:e})};return u&&a&&(u.addEventListener(a.fullscreenchange,i),u.addEventListener(a.fullscreenerror,c),e=globalThis.setTimeout(function(){return o({ok:!1,cause:new Error("Timed out waiting for a fullscreen event.")})},3e3)),{promise:r,cleanup:l}},q=function(e){return o(r,void 0,void 0,/*#__PURE__*/t().m(function n(){var r,l,o;return t().w(function(n){for(;;)switch(n.p=n.n){case 0:if(r=C(),n.p=1,!(l=e())||"function"!=typeof l.then){n.n=3;break}return n.n=2,l;case 2:n.n=5;break;case 3:return n.n=4,r.promise;case 4:if((o=n.v).ok){n.n=5;break}throw o.cause;case 5:return n.p=5,r.cleanup(),n.f(5);case 6:return n.a(2)}},n,null,[[1,,5,6]])}))};function P(e,n){return o(this,void 0,void 0,/*#__PURE__*/t().m(function r(){var o,i,a,c,f,g,E,y;return t().w(function(t){for(;;)switch(t.p=t.n){case 0:if(c=null!==(o=null==n?void 0:n.fallback)&&void 0!==o?o:l.fallback,f=Object.assign(Object.assign({},l),{fallback:c}),m=s(f),u&&m){t.n=1;break}return t.a(2,x(d("NOT_SUPPORTED","The Fullscreen API is unavailable and no fallback is enabled.")));case 1:return t.p=1,p=f,t.n=2,m.enter({element:e,document:u,options:f});case 2:if(!k){t.n=4;break}return t.n=3,m.exit({element:e,document:u,options:f});case 3:return g=d("REQUEST_FAILED","The fullscreen controller was destroyed before the fallback request completed."),t.a(2,{ok:!1,mode:"none",element:null,error:g});case 4:return h=e,w="fallback",E=S(),T=!0,null===(i=l.onFallback)||void 0===i||i.call(l,E),null===(a=l.onEnter)||void 0===a||a.call(l,E),R(),t.a(2,b("fallback",e));case 5:return t.p=5,y=t.v,t.a(2,x(v(y,"fallback",u)))}},r,null,[[1,5]])}))}u&&a&&(u.addEventListener(a.fullscreenchange,_),u.addEventListener(a.fullscreenerror,I)),u&&(u.addEventListener("keydown",N),l.exitOnRouteChange&&(null===(n=u.defaultView)||void 0===n||n.addEventListener("popstate",j)));var L={get isEnabled(){return S().isEnabled},get isFullscreen(){return S().isFullscreen},get isFallback(){return S().isFallback},get element(){return S().element},get status(){return w},get error(){return y},get raw(){return a},request:function(e,n){return o(this,void 0,void 0,/*#__PURE__*/t().m(function r(){var o,i,c,s,f,m,p;return t().w(function(t){for(;;)switch(t.p=t.n){case 0:if(!k&&u){t.n=1;break}return t.a(2,x(d("NOT_IN_BROWSER","Fullscreen is unavailable outside a browser document.")));case 1:if(!E){t.n=2;break}return t.a(2,x(d("REQUEST_IN_PROGRESS","A fullscreen transition is already in progress."),!0));case 2:if((o=void 0===e?u.documentElement:e)&&1===o.nodeType){t.n=3;break}return t.a(2,x(d("INVALID_TARGET","The fullscreen target is not an Element.")));case 3:if(o.isConnected&&o.ownerDocument===u){t.n=4;break}return t.a(2,x(d("TARGET_NOT_CONNECTED","The fullscreen target must be connected to the current document.")));case 4:if(!S().isFullscreen){t.n=7;break}if(S().element!==o){t.n=5;break}return t.a(2,b(h?"fallback":"native",o));case 5:return t.n=6,L.exit();case 6:if((i=t.v).ok){t.n=7;break}return t.a(2,i);case 7:if(g=!1===l.restoreFocus?null:u.activeElement,E=!0,w="requesting",R(),t.p=8,a&&L.isEnabled){t.n=10;break}return t.n=9,P(o,n);case 9:case 14:return t.a(2,t.v);case 10:return c=o[a.requestFullscreen],delete(s=Object.assign({},n)).fallback,t.n=11,q(function(){return c.call(o,s)});case 11:return k||(w=F()?"fullscreen":"idle",R()),t.a(2,b("native",F()||o));case 12:if(t.p=12,p=t.v,!k){t.n=13;break}return f=v(p,"request",u),t.a(2,{ok:!1,mode:"none",element:null,error:f});case 13:if(m=v(p,"request",u),!(null==n?void 0:n.fallback)&&!l.fallback){t.n=15;break}return t.n=14,P(o,n);case 15:return t.a(2,x(m));case 16:return t.p=16,E=!1,t.f(16);case 17:return t.a(2)}},r,null,[[8,12,16,17]])}))},exit:function(){return o(this,void 0,void 0,/*#__PURE__*/t().m(function e(){var n,r,o,i,c,s;return t().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!k&&u){e.n=1;break}return e.a(2,x(d("NOT_IN_BROWSER","Fullscreen is unavailable outside a browser document.")));case 1:if(!E){e.n=2;break}return e.a(2,x(d("REQUEST_IN_PROGRESS","A fullscreen transition is already in progress."),!0));case 2:if(S().isFullscreen){e.n=3;break}return e.a(2,b("native",null));case 3:if(E=!0,w="exiting",R(),e.p=4,!h||!m){e.n=6;break}return o=h,e.n=5,m.exit({element:o,document:u,options:p});case 5:h=null,w="idle",i=S(),T=!1,null===(n=l.onExit)||void 0===n||n.call(l,i),R(),e.n=8;break;case 6:if(!a||!F()){e.n=8;break}return c=u[a.exitFullscreen],e.n=7,q(function(){return c.call(u)});case 7:w=F()?"fullscreen":"idle",R();case 8:return null===(r=null==g?void 0:g.focus)||void 0===r||r.call(g),g=null,e.a(2,b(h?"fallback":"native",S().element));case 9:return e.p=9,s=e.v,e.a(2,x(v(s,"exit",u)));case 10:return e.p=10,E=!1,e.f(10);case 11:return e.a(2)}},e,null,[[4,9,10,11]])}))},toggle:function(e,n){return o(this,void 0,void 0,/*#__PURE__*/t().m(function r(){return t().w(function(t){for(;;)if(0===t.n)return t.a(2,S().isFullscreen?L.exit():L.request(e,n))},r)}))},on:function(e,n){"change"===e?c.add(n):f.add(n)},off:function(e,n){"change"===e?c.delete(n):f.delete(n)},clearError:function(){y=null,"error"===w&&(w=S().isFullscreen?h?"fallback":"fullscreen":"idle"),R()},destroy:function(){return o(this,void 0,void 0,/*#__PURE__*/t().m(function e(){var n,r,o;return t().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!k){e.n=1;break}return e.a(2);case 1:if(k=!0,!(h&&m&&u)){e.n=6;break}return r=h,e.p=2,e.n=3,m.exit({element:r,document:u,options:p});case 3:e.n=5;break;case 4:e.p=4,o=e.v,y=v(o,"fallback",u);case 5:h=null;case 6:u&&a&&(u.removeEventListener(a.fullscreenchange,_),u.removeEventListener(a.fullscreenerror,I)),null==u||u.removeEventListener("keydown",N),l.exitOnRouteChange&&(null===(n=null==u?void 0:u.defaultView)||void 0===n||n.removeEventListener("popstate",j)),c.clear(),f.clear();case 7:return e.a(2)}},e,null,[[2,4]])}))}};return L}function h(n,t){if(!t)return null;var r=e.isRef(n)?n.value:n;if(null==r)return t.documentElement;if("string"==typeof r)try{return t.querySelector(r)}catch(e){return null}return"object"==typeof r&&"$el"in r&&(r=r.$el),r&&"object"==typeof r&&1===r.nodeType?r:null}function p(){var n,r=this,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},u=m(l),i=e.ref(u.isEnabled),a=e.ref(u.isFullscreen),c=e.ref(u.isFallback),s=e.shallowRef(u.element),f=e.shallowRef(null),v=e.ref(u.status),b=e.shallowRef(u.error),p=null!==(n=l.document)&&void 0!==n?n:"undefined"==typeof document?void 0:document,g=function(e){i.value=e.isEnabled,a.value=e.isFullscreen,c.value=e.isFallback,s.value=e.element,v.value=e.status,b.value=u.error},E=function(e){b.value=e,v.value=u.status};u.on("change",g),u.on("error",E);var k=function(){var e,n=d(p?"INVALID_TARGET":"NOT_IN_BROWSER",p?"The target is not a valid element or selector in this document.":"Fullscreen is unavailable outside a browser document.");return b.value=n,v.value=p?"error":"unsupported",null===(e=l.onError)||void 0===e||e.call(l,n),{ok:!1,mode:"none",element:null,error:n}},y=function(e){var n=h(e,p);return f.value=n,n};return e.getCurrentScope()&&e.onScopeDispose(function(){u.off("change",g),u.off("error",E),u.destroy()}),{isEnabled:e.readonly(i),isFullscreen:e.readonly(a),isFallback:e.readonly(c),fullscreenElement:e.shallowReadonly(s),targetElement:e.shallowReadonly(f),status:e.readonly(v),error:e.readonly(b),request:function(e,n){return o(r,void 0,void 0,/*#__PURE__*/t().m(function r(){var l;return t().w(function(t){for(;;)if(0===t.n)return l=y(e),t.a(2,l?u.request(l,n):k())},r)}))},exit:function(){return u.exit()},toggle:function(e,n){return o(r,void 0,void 0,/*#__PURE__*/t().m(function r(){var l;return t().w(function(t){for(;;)switch(t.n){case 0:if(!u.isFullscreen){t.n=1;break}return t.a(2,u.exit());case 1:return l=y(e),t.a(2,l?u.request(l,n):k())}},r)}))},clearError:function(){u.clearError(),b.value=null}}}var g=/*#__PURE__*/e.defineComponent({name:"Screenfull",props:{target:{type:[String,Object],default:void 0},fallback:{type:[String,Object],default:"none"},fallbackClass:{type:String,default:"vue-screenfull-fallback"},lockScroll:{type:Boolean,default:!0},restoreFocus:{type:Boolean,default:!0},exitOnRouteChange:{type:Boolean,default:!1},debug:{type:Boolean,default:!1}},emits:{change:function(e){return"object"==typeof e},enter:function(e){return"object"==typeof e},exit:function(e){return"object"==typeof e},error:function(e){return"object"==typeof e},fallback:function(e){return"object"==typeof e}},slots:Object,setup:function(e,n){var t=n.slots,r=n.emit,l=p({fallback:e.fallback,fallbackClass:e.fallbackClass,lockScroll:e.lockScroll,restoreFocus:e.restoreFocus,exitOnRouteChange:e.exitOnRouteChange,debug:e.debug,onChange:function(e){return r("change",e)},onEnter:function(e){return r("enter",e)},onExit:function(e){return r("exit",e)},onError:function(e){return r("error",e)},onFallback:function(e){return r("fallback",e)}}),o=Object.assign(Object.assign({},l),{request:function(n,t){return l.request(e.target,t)},toggle:function(n,t){return l.toggle(e.target,t)}});return function(){var e;return null===(e=t.default)||void 0===e?void 0:e.call(t,o)}}}),E=/*#__PURE__*/new WeakMap;var k={mounted:function(e,n){var t=m(),r={controller:t,binding:n,click:function(){}};r.click=function(){var n=r.binding.value,l=function(e){return Boolean(e&&"object"==typeof e&&!("nodeType"in e)&&!("value"in e)&&("target"in e||"action"in e||"options"in e))}(n)?n:{target:n},o=r.binding.arg||l.action||"toggle",u=h(l.target,e.ownerDocument);"exit"===o?t.exit():"request"===o?t.request(u,l.options):t.toggle(u,l.options)},E.set(e,r),e.addEventListener("click",r.click)},updated:function(e,n){var t=E.get(e);t&&(t.binding=n)},unmounted:function(e){var n=E.get(e);n&&(e.removeEventListener("click",n.click),n.controller.destroy(),E.delete(e))}},y={install:function(e){var n,t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.component(null!==(n=r.componentName)&&void 0!==n?n:"Screenfull",g),e.directive(null!==(t=r.directiveName)&&void 0!==t?t:"screenfull",k)}};exports.Screenfull=g,exports.createScreenfullController=m,exports.default=y,exports.detectFullscreenApi=i,exports.packageInfo={name:"vue-screenfull",version:"1.0.2"},exports.resolveScreenfullTarget=h,exports.useScreenfull=p,exports.useScreenfullTarget=function(e){var n=p(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return Object.assign(Object.assign({},n),{request:function(t,r){return n.request(e,r)},toggle:function(t,r){return n.toggle(e,r)}})},exports.vScreenfull=k;
|
|
7
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../node_modules/tslib/tslib.es6.js","../src/core/api-map.ts","../src/core/fallback.ts","../src/core/errors.ts","../src/core/controller.ts","../src/core/target.ts","../src/composables/useScreenfull.ts","../src/components/Screenfull.ts","../src/directives/screenfull.ts","../src/plugin/index.ts","../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","SuppressedError","candidates","requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror","detectFullscreenApi","doc","element","documentElement","documentRecord","match","find","candidate","Object","freeze","assign","properties","CssFallback","_createClass","_classCallCheck","this","styles","bodyOverflow","scrollX","scrollY","className","key","_ref","document","options","HTMLElementConstructor","_a","defaultView","HTMLElement","TypeError","_b","fallbackClass","_i","_properties","length","property","style","_d","body","_c","overflow","_f","_e","_h","_g","position","inset","top","right","bottom","left","width","height","maxWidth","maxHeight","margin","zIndex","background","classList","add","lockScroll","_ref2","_i2","_properties2","remove","scrollTo","call","createFallback","fallback","suggestions","NOT_SUPPORTED","NOT_IN_BROWSER","USER_ACTIVATION_REQUIRED","PERMISSION_DENIED","IFRAME_PERMISSION_REQUIRED","TARGET_NOT_CONNECTED","REQUEST_IN_PROGRESS","makeError","code","message","cause","recoverable","arguments","undefined","suggestion","normalizeError","operation","text","Error","concat","name","String","lower","toLowerCase","includes","embedded","Boolean","frameElement","success","mode","ok","error","createScreenfullController","_this","supplied","raw","changes","Set","errors","fallbackElement","activeFallbackOptions","previousFocus","pending","destroyed","currentError","currentStatus","nativeElement","state","isEnabled","isFullscreen","isFallback","status","lastState","lastFullscreen","emitChange","onChange","forEach","listener","report","onError","debug","console","warn","onNativeChange","onEnter","onExit","onNativeError","event","onKeydown","api","exit","onNavigation","waitForNativeTransition","timeoutId","resolveOutcome","settled","promise","cleanup","removeEventListener","globalThis","clearTimeout","settle","outcome","addEventListener","setTimeout","runNativeTransition","invoke","_regenerator","m","_callee","transition","returned","w","_context","p","n","v","f","a","enterFallback","requestOptions","selected","_context2","enter","onFallback","_t","_callee2","exitOnRouteChange","request","_context3","target","nodeType","isConnected","ownerDocument","exited","restoreFocus","activeElement","method","nativeOptions","_t2","normalized","_callee3","_context4","focus","_t3","_callee4","toggle","_callee5","on","off","delete","clearError","destroy","_context6","_t4","clear","_callee6","resolveScreenfullTarget","isRef","querySelector","$el","useScreenfull","controller","ref","shallowRef","targetElement","sync","syncError","invalid","getCurrentScope","onScopeDispose","readonly","shallowReadonly","Screenfull","defineComponent","props","type","default","emits","change","slots","setup","emit","screenfull","bound","_target","states","WeakMap","vScreenfull","mounted","binding","click","config","isConfig","action","arg","set","updated","get","unmounted","VueScreenfull","install","app","component","componentName","directive","directiveName","version"],"mappings":"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","x_google_ignoreList":[0]}
|