vue-screenfull 1.0.5 → 1.0.7

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/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  [license-url]: https://github.com/chengchuu/vue-screenfull/blob/main/LICENSE
10
10
 
11
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.
12
+ An optional CSS pseudo-fullscreen fallback is also available.
13
13
 
14
14
  - [Project website](https://chengchuu.github.io/vue-screenfull/)
15
15
  - [Live playground](https://chengchuu.github.io/vue-screenfull/playground/)
@@ -146,8 +146,9 @@ const { request, exit, isFallback } = useScreenfull({
146
146
  ```
147
147
 
148
148
  CSS fallback fixes an `HTMLElement` to the visual viewport, preserves every inline style it changes,
149
- locks and restores body scrolling, preserves the scroll position, adds the configured class,
150
- exits on Escape when possible, and restores focus. Cleanup also runs when its Vue scope is disposed.
149
+ locks and restores background body scrolling for element targets, keeps whole-page targets scrollable,
150
+ preserves the scroll position, adds the configured class, exits on Escape when possible, and restores
151
+ focus. Cleanup also runs when its Vue scope is disposed.
151
152
  It is pseudo-fullscreen: it cannot hide address bars, browser controls, notifications,
152
153
  or operating-system UI. Keep an accessible exit button inside the target:
153
154
 
@@ -0,0 +1,367 @@
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
+ 专为 Vue 3 设计的响应式、强类型且支持 SSR 的全屏工具。
12
+ 还提供可选的 CSS 伪全屏回退方案。
13
+
14
+ - [项目网站](https://chengchuu.github.io/vue-screenfull/)
15
+ - [在线演练场](https://chengchuu.github.io/vue-screenfull/playground/)
16
+ - [API 文档](https://chengchuu.github.io/vue-screenfull/api/)
17
+
18
+ ## 功能特性
19
+
20
+ - 响应式 Composition API 状态,支持自动清理作用域。
21
+ - 检测标准 API。
22
+ - 检测带 WebKit、Mozilla、Microsoft 前缀的 API。
23
+ - 支持 Vue 模板引用、组件引用、元素和安全的 CSS 选择器。
24
+ - 返回结构化结果和可操作的错误,不会静默忽略 Promise 拒绝。
25
+ - 提供无渲染组件、指令、可选插件和轻量级框架控制器。
26
+ - 不依赖全屏包装器或其他运行时依赖;Vue 仍是对等依赖。
27
+ - 提供 CJS、ESM、浏览器 IIFE、源映射和类型声明。
28
+
29
+ ## 安装
30
+
31
+ ```bash
32
+ npm install vue-screenfull
33
+ ```
34
+
35
+ 浏览器包为 `lib/vue-screenfull.min.js`。它会暴露 `VUE_SCREENFULL`,并要求通过全局变量 `Vue` 访问 Vue。
36
+
37
+ ## 浏览器支持
38
+
39
+ 本项目在运行时检测功能。当前桌面版 Chrome、Edge、Firefox 和 Safari 通常会提供该 API。Android 上的 Chrome、Firefox 和 Samsung Internet 通常也会提供。iPadOS 上的 Safari 通常也支持该 API。iPhone Safari 和 Android/iOS WebView 可能限制任意元素全屏。受管理设备和嵌入式文档也可能存在限制。此策略描述目标平台,不保证支持每个操作系统或浏览器版本。
40
+
41
+ 原生全屏可以隐藏更多浏览器界面,但浏览器和操作系统仍保留控制权。CSS 回退方案只会填满可视视口,不会声称能够隐藏系统或浏览器界面。
42
+
43
+ ## 基本用法
44
+
45
+ ```vue
46
+ <script setup lang="ts">
47
+ import { useTemplateRef } from "vue";
48
+ import { useScreenfull } from "vue-screenfull";
49
+
50
+ const target = useTemplateRef<HTMLElement>("target");
51
+ const { isEnabled, isFullscreen, error, toggle } = useScreenfull();
52
+ </script>
53
+
54
+ <template>
55
+ <section ref="target">
56
+ <p>Fullscreen content</p>
57
+ <button type="button" :disabled="!isEnabled" @click="toggle(target)">
58
+ {{ isFullscreen ? "Exit fullscreen" : "Enter fullscreen" }}
59
+ </button>
60
+ <p v-if="error" role="alert">{{ error.message }}</p>
61
+ </section>
62
+ </template>
63
+ ```
64
+
65
+ 请在点击、键盘或触摸事件处理程序中直接调用 `request` 或 `toggle`。浏览器通常要求短暂的用户激活状态。即使 `isEnabled.value` 为 `true`,浏览器也可能拒绝请求。
66
+
67
+ ## 将指定元素设为全屏
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()` 时可以不传目标。此时会打开 `document.documentElement`。可以将 `"#player"` 等选择器传给 `request`。`document.querySelector` 会解析这些选择器。无效或未匹配的选择器会返回 `INVALID_TARGET`。
85
+
86
+ ## 切换全屏状态
87
+
88
+ ```ts
89
+ const result = await toggle(target, { navigationUI: "hide" });
90
+ if (!result.ok) console.warn(result.error.code, result.error.suggestion);
91
+ ```
92
+
93
+ 对于图片内容,请传入图片的模板引用。对于视频,请传入 `HTMLVideoElement` 引用。部分移动浏览器提供仅限视频的全屏功能,与任意元素全屏相互独立。
94
+
95
+ ## 退出全屏
96
+
97
+ ```vue
98
+ <button type="button" @click="exit">Exit fullscreen</button>
99
+ ```
100
+
101
+ 请始终提供可见的退出按钮,启用回退方案时尤其如此。Escape 键通常可以退出,但无法可靠地覆盖浏览器的 Escape 键行为。通过浏览器界面发起的退出操作会由原生变更事件反映。
102
+
103
+ ## 检查支持情况
104
+
105
+ ```ts
106
+ const { isEnabled, status } = useScreenfull();
107
+ // isEnabled.value: native API currently enabled
108
+ // status.value: idle | requesting | fullscreen | exiting | fallback | unsupported | error
109
+ ```
110
+
111
+ 在 Safari、iOS/iPadOS 和 WebView 中,功能检测比用户代理检查更可靠。
112
+
113
+ ## 处理错误
114
+
115
+ ```ts
116
+ const result = await request(target);
117
+ if (!result.ok) {
118
+ console.error(
119
+ result.error.code,
120
+ result.error.message,
121
+ result.error.suggestion,
122
+ );
123
+ }
124
+ ```
125
+
126
+ 错误类型可以区分不支持的环境或 SSR 环境,以及无效或已分离的目标。它还能区分用户激活状态、权限和 iframe 策略。其他类型包括待处理的转换、原生请求或退出失败,以及回退失败。调用 `clearError()` 前,`error` 会保留最近一次错误。
127
+
128
+ ## CSS 回退方案
129
+
130
+ ```ts
131
+ const { request, exit, isFallback } = useScreenfull({
132
+ fallback: "css",
133
+ fallbackClass: "my-pseudo-fullscreen",
134
+ lockScroll: true,
135
+ restoreFocus: true,
136
+ });
137
+ ```
138
+
139
+ CSS 回退方案会将 `HTMLElement` 固定到可视视口。它会保留自身修改的所有内联样式。对于元素目标,它会锁定背景页面的滚动,并在退出后恢复。整个页面作为目标时仍可滚动。它还会保留滚动位置并添加配置的类。它会尽可能响应 Escape 键退出并恢复焦点。Vue 作用域销毁时也会执行清理。
140
+
141
+ 这是伪全屏模式,无法隐藏地址栏、浏览器控件、通知或操作系统界面。请在目标元素中保留易于访问的退出按钮:
142
+
143
+ ```vue
144
+ <button type="button" @click="exit">Close full-page view</button>
145
+ ```
146
+
147
+ 自定义回退方案需要实现 `enter(context)` 和 `exit(context)`。该方案负责完成所有清理工作。
148
+
149
+ ## 组件用法
150
+
151
+ ```vue
152
+ <Screenfull
153
+ target="#article"
154
+ fallback="css"
155
+ v-slot="screenfull"
156
+ @error="report"
157
+ >
158
+ <button type="button" @click="screenfull.toggle()">
159
+ {{ screenfull.isFullscreen ? "Exit" : "Open article" }}
160
+ </button>
161
+ <button v-if="screenfull.isFullscreen" type="button" @click="screenfull.exit">Exit</button>
162
+ </Screenfull>
163
+ ```
164
+
165
+ 无渲染组件会触发 `change`、`enter`、`exit`、`error` 和 `fallback` 事件。其默认插槽接收组合式函数的所有引用和操作。组件不会施加任何视觉样式。
166
+
167
+ ## 指令用法
168
+
169
+ ```vue
170
+ <button v-screenfull>Fullscreen page</button>
171
+ <button v-screenfull="target">Toggle target</button>
172
+ <button v-screenfull:request="target">Enter target</button>
173
+ <button v-screenfull:exit>Exit</button>
174
+ <button
175
+ v-screenfull="{ target, action: 'toggle', options: { navigationUI: 'hide' } }"
176
+ >Toggle</button>
177
+ ```
178
+
179
+ 仅支持 `request`、`exit` 和 `toggle` 参数,默认为 `toggle`。除非已安装插件,否则需要在本地注册指令:
180
+
181
+ ```ts
182
+ const vScreenfull = importedDirective;
183
+ ```
184
+
185
+ ## 安装插件
186
+
187
+ ```ts
188
+ import { createApp } from "vue";
189
+ import VueScreenfull from "vue-screenfull";
190
+ import App from "./App.vue";
191
+
192
+ createApp(App).use(VueScreenfull).mount("#app");
193
+ ```
194
+
195
+ 这会注册 `Screenfull` 和 `v-screenfull`。可以通过 `componentName` 和 `directiveName` 更改名称。具名导入组合式函数时无需安装插件,且仍可进行摇树优化。
196
+
197
+ ## 高级用法
198
+
199
+ 轻量级框架控制器适用于迁移和非组件集成:
200
+
201
+ ```ts
202
+ import { createScreenfullController } from "vue-screenfull";
203
+
204
+ const controller = createScreenfullController({ restoreFocus: true });
205
+ const onChange = (state) => console.log(state.isFullscreen, state.element);
206
+ controller.on("change", onChange);
207
+ await controller.request(document.querySelector("#map"));
208
+ controller.off("change", onChange);
209
+ await controller.destroy();
210
+ ```
211
+
212
+ `raw` 是检测到的浏览器属性或事件名称的只读诊断映射,也可能为 `null`。不建议将其作为 API 使用。每个组合式函数都会创建一个控制器,并随 Vue 作用域销毁。多个控制器通过同一文档的原生事件保持同步。导入此软件包不会注册监听器或访问 DOM。
213
+
214
+ 响应式回调可以观察变更,无需重复连接组件:
215
+
216
+ ```ts
217
+ useScreenfull({ onEnter: announce, onExit: announce, onError: report });
218
+ ```
219
+
220
+ `restoreFocus: true` (默认值) 会在退出后尽可能恢复焦点。焦点会移回触发操作的元素。`exitOnRouteChange` 会监听浏览器的 `popstate`。对于路由器特有的导航,可以改为在应用自身的路由钩子中调用 `exit()`。
221
+
222
+ ## iframe 用法
223
+
224
+ 嵌入页面负责控制权限。典型的 iframe 如下:
225
+
226
+ ```html
227
+ <iframe
228
+ src="https://example.com/player"
229
+ allow="fullscreen"
230
+ allowfullscreen
231
+ ></iframe>
232
+ ```
233
+
234
+ Permissions Policy 或缺少 iframe 权限仍可能导致拒绝。如果拒绝与嵌入式文档有关,库会返回 `IFRAME_PERMISSION_REQUIRED`。库无法覆盖父页面的策略。
235
+
236
+ ## 移动端注意事项
237
+
238
+ - 使用直接的用户手势,并保留可见且便于触控的退出控件。
239
+ - 使用功能检测,不要根据设备名称推断支持情况。
240
+ - iPhone Safari 和 WKWebView 可能受限,也可能仅支持视频全屏。
241
+ - 动态浏览器界面会改变视口高度;CSS 回退方案会在支持时使用 `100dvh`。
242
+ - 原生导航、切换标签页、切换应用和操作系统手势可能退出全屏。
243
+ - 原生功能和本库都无法保证浏览器或操作系统控件消失。
244
+
245
+ ## SSR 和 Nuxt
246
+
247
+ 在 Vite SSR、Nuxt 3、Node 测试和静态生成中可以安全导入。在浏览器外,`isEnabled` 为 `false`,状态为 `unsupported`。此时操作会返回 `NOT_IN_BROWSER`。
248
+
249
+ ```vue
250
+ <script setup lang="ts">
251
+ import { useScreenfull } from "vue-screenfull";
252
+ const screenfull = useScreenfull(); // safe during Nuxt setup/SSR
253
+ </script>
254
+ <template>
255
+ <ClientOnly>
256
+ <button
257
+ type="button"
258
+ :disabled="!screenfull.isEnabled.value"
259
+ @click="screenfull.toggle()"
260
+ >
261
+ Toggle page fullscreen
262
+ </button>
263
+ </ClientOnly>
264
+ </template>
265
+ ```
266
+
267
+ 在 `<script setup>` 中解构引用时,模板会自动解包。像上面的示例一样通过对象访问时,请在脚本表达式中使用 `.value`。
268
+
269
+ ## 从 screenfull 迁移
270
+
271
+ `vue-screenfull` 是独立的 Vue 3 库。其设计灵感来自 screenfull 的公共 API 和兼容性目标。它不能作为直接替代品,也未获得 screenfull 维护者的认可。
272
+
273
+ | screenfull 概念 | vue-screenfull 对应项 |
274
+ | -------------------------------------- | -------------------------------- |
275
+ | `screenfull.request(element, options)` | `request(element, options)` |
276
+ | `screenfull.exit()` | `exit()` |
277
+ | `screenfull.toggle(element, options)` | `toggle(element, options)` |
278
+ | `screenfull.isEnabled` | 响应式 `isEnabled.value` |
279
+ | `screenfull.isFullscreen` | 响应式 `isFullscreen.value` |
280
+ | `screenfull.element` | 响应式 `fullscreenElement.value` |
281
+ | `screenfull.on("change", fn)` | 引用、回调、组件事件或控制器事件 |
282
+ | `screenfull.on("error", fn)` | 响应式 `error`、回调或控制器事件 |
283
+
284
+ 迁移前:
285
+
286
+ ```ts
287
+ import screenfull from "screenfull";
288
+ if (screenfull.isEnabled) await screenfull.toggle(element);
289
+ ```
290
+
291
+ 迁移后:
292
+
293
+ ```ts
294
+ import { useScreenfull } from "vue-screenfull";
295
+ const { isEnabled, toggle } = useScreenfull();
296
+ if (isEnabled.value) {
297
+ const result = await toggle(element);
298
+ if (!result.ok) console.error(result.error.message);
299
+ }
300
+ ```
301
+
302
+ 主要区别包括响应式引用、自动清理生命周期和支持 SSR 的安全导入。还包括结构化结果和错误、可选伪全屏,以及 Vue 组件和指令 API。控制器监听器接收带类型的状态或错误,而非原始 DOM 事件。项目未提供旧版 `onchange` 或 `onerror` 别名。插件为可选功能。
303
+
304
+ ## API 参考
305
+
306
+ 根导出如下:
307
+
308
+ - `useScreenfull(options?)`、`useScreenfullTarget(target, options?)`
309
+ - `Screenfull`、`vScreenfull` 和默认插件
310
+ - `createScreenfullController(options?)`
311
+ - `detectFullscreenApi(document)` 和 `resolveScreenfullTarget(target, document)`
312
+ - 所有公开的目标、选项、状态、结果、错误、事件、组件、指令、插件和原始映射类型
313
+
314
+ 操作会解析为 `{ ok, mode, element, error }`。`mode` 为 `native`、`fallback` 或 `none`。生成的 TypeDoc 发布于 [API 文档网站](https://chengchuu.github.io/vue-screenfull/api/)。
315
+
316
+ ## 在线演练场
317
+
318
+ 已部署的版本位于 [vue-screenfull 在线演练场](https://chengchuu.github.io/vue-screenfull/playground/)。其中包含页面、元素、图片样式和视频目标。它还提供显式退出、诊断、无效目标反馈和事件历史记录。其他内容包括无障碍、iframe、移动端和迁移说明。使用以下命令在本地运行:
319
+
320
+ ```bash
321
+ npm run dev
322
+ ```
323
+
324
+ 浏览器会强制要求用户激活,因此本项目不会将原生全屏自动化视为在所有环境中均可靠。
325
+
326
+ ## 可安装的文档网站
327
+
328
+ 项目网站是渐进式 Web 应用 (Progressive Web App,PWA)。其作用域为 `/vue-screenfull/`。首页、演练场和 API 文档共享生成的清单和 Google Workbox v7 Service Worker。文档、脚本和样式使用容量受限的网络优先缓存。它通常会优先使用最新文档,避免新 HTML 与旧软件包搭配使用。本地图片和字体使用容量受限的缓存优先存储。只有当网络和运行时缓存均无法提供请求的文档时,才会使用预缓存的离线页面。
329
+
330
+ 如果浏览器支持,安装功能会使用原生 `beforeinstallprompt` 流程。网站不会自动打开该提示。不支持自定义提示的浏览器可以使用菜单;在 iOS/iPadOS Safari 上,可以使用 **共享 → 添加到主屏幕**。安装此网站与 Fullscreen API 相互独立,不会授予全屏功能。
331
+
332
+ Worker 更新仍由用户控制。有新版本等待更新时,选择 **立即更新** 即可激活版本,并重新加载当前页面一次。在演练场中,此显式操作是唯一会重新加载活动会话的更新方式。生成的 Worker 包含最终产物版本标记。它无需预缓存未进行版本控制的软件包,也能检测到可部署的网站变更。
333
+
334
+ ## 开发
335
+
336
+ CI 使用 Node.js 22。
337
+
338
+ ```bash
339
+ npm install
340
+ npm run typecheck
341
+ npm run lint
342
+ npm run format:check
343
+ npm run test
344
+ npm run build
345
+ npm run docs
346
+ npm run seo:validate
347
+ npm run pwa:validate
348
+ npm run preview
349
+ npm pack --dry-run
350
+ ```
351
+
352
+ 常规的 `npm run dev` 不会注册生产环境 Worker。若要在类似生产环境中测试 PWA,请运行 `npm run docs`。然后在 localhost 的 `/vue-screenfull/` 路径下提供生成的 `docs` 目录。
353
+
354
+ 有关浏览器矩阵和真实浏览器测试策略,请参阅 `MANUAL_TESTING.md`。生产输出仍包含以下文件:
355
+
356
+ - `lib/index.cjs.js`
357
+ - `lib/index.esm.js`
358
+ - `lib/vue-screenfull.min.js`
359
+ - `lib/index.d.ts`
360
+ - `lib/typing.d.ts`
361
+ - `lib/global.d.ts`
362
+
363
+ 原生 Node ESM 通过额外的条件入口 `lib/index.mjs` 解析。
364
+
365
+ ## 许可证与致谢
366
+
367
+ 本项目根据 MIT License 发布。[screenfull](https://github.com/sindresorhus/screenfull) (MIT) 的公共 API 和跨浏览器兼容性为本项目提供了灵感。`vue-fullscreen` (MIT) 是 Vue 生态系统参考。以上内容不表示相关项目对本项目的认可。
package/lib/index.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * vue-screenfull v1.0.5
2
+ * vue-screenfull v1.0.7
3
3
  * (c) 2018-2026 Cheng https://www.npmjs.com/package/vue-screenfull
4
4
  * Released under the MIT License.
5
5
  */
6
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");function n(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=Array(n);r<n;r++)t[r]=e[r];return t}function r(e,n,r){return n&&function(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,u(t.key),t)}}(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function t(){var e,n,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",u=r.toStringTag||"@@toStringTag";function i(r,t,o,u){var i=t&&t.prototype instanceof c?t:c,s=Object.create(i.prototype);return l(s,"_invoke",function(r,t,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,r){return o=n,u=0,i=e,d.n=r,a}};function v(r,t){for(u=r,i=t,n=0;!f&&c&&!l&&n<s.length;n++){var l,o=s[n],v=d.p,b=o[2];r>3?(l=b===t)&&(i=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):o[0]<=v&&((l=r<2&&v<o[1])?(u=0,d.v=t,d.n=o[1]):v<b&&(l=r<3||o[0]>t||t>b)&&(o[4]=r,o[5]=t,d.n=b,u=0))}if(l||r>1)return a;throw f=!0,t}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:r.call(t,d))!==a)break}catch(n){o=e,u=1,i=n}finally{c=1}}return{value:n,done:f}}}(r,o,u),!0),s}var a={};function c(){}function s(){}function f(){}n=Object.getPrototypeOf;var d=[][o]?n(n([][o]())):(l(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,l(e,u,"GeneratorFunction")),e.prototype=Object.create(v),e}return s.prototype=f,l(v,"constructor",f),l(f,"constructor",s),s.displayName="GeneratorFunction",l(f,u,"GeneratorFunction"),l(v),l(v,u,"Generator"),l(v,o,function(){return this}),l(v,"toString",function(){return"[object Generator]"}),(t=function(){return{w:i,m:b}})()}function l(e,n,r,t){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}l=function(e,n,r,t){function u(n,r){l(e,n,function(e){return this._invoke(n,r,e)})}n?o?o(e,n,{value:r,enumerable:!t,configurable:!t,writable:!t}):e[n]=r:(u("next",0),u("throw",1),u("return",2))},l(e,n,r,t)}function o(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,l,o,u,i=[],a=!0,c=!1;try{if(o=(r=r.call(e)).next,0===n);else for(;!(a=(t=o.call(r)).done)&&(i.push(t.value),i.length!==n);a=!0);}catch(e){c=!0,l=e}finally{try{if(!a&&null!=r.return&&(u=r.return(),Object(u)!==u))return}finally{if(c)throw l}}return i}}(e,r)||function(e,r){if(e){if("string"==typeof e)return n(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,n);if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof n?n:n+""}function i(e,n,r,t){return new(r||(r=Promise))(function(l,o){function u(e){try{a(t.next(e))}catch(e){o(e)}}function i(e){try{a(t.throw(e))}catch(e){o(e)}}function a(e){var n;e.done?l(e.value):(n=e.value,n instanceof r?n:new r(function(e){e(n)})).then(u,i)}a((t=t.apply(e,n||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;var a=[{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:"webkitRequestFullScreen",exitFullscreen:"webkitCancelFullScreen",fullscreenElement:"webkitCurrentFullScreenElement",fullscreenEnabled:"webkitCancelFullScreen",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 c(e){var n=e.documentElement,r=e,t=a.find(function(e){return"function"==typeof n[e.requestFullscreen]&&"function"==typeof r[e.exitFullscreen]});return t?Object.freeze(Object.assign({},t)):null}var s=["position","inset","top","right","bottom","left","width","height","max-width","max-height","margin","z-index","overflow","background"],f=new WeakMap,d=/*#__PURE__*/function(){return r(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={value:"",priority:""},this.scrollX=0,this.scrollY=0,this.className="",this.addedClass=!1,this.lockedScroll=!1},[{key:"enter",value:function(e){var n,r,t,l,u,i,a,c,d,v,b=e.element,h=e.document,m=e.options,p=null===(n=h.defaultView)||void 0===n?void 0:n.HTMLElement;if(!(p&&b instanceof p))throw new TypeError("CSS fallback requires an HTMLElement.");var y=f.get(h);if(y&&y!==this)throw new Error("Another CSS fullscreen fallback is already active.");f.set(h,this);try{this.element=b,this.className=null!==(r=m.fallbackClass)&&void 0!==r?r:"vue-screenfull-fallback",this.styles={};for(var g=0,E=s;g<E.length;g++){var k=E[g];this.styles[k]={value:this.element.style.getPropertyValue(k),priority:this.element.style.getPropertyPriority(k)}}this.bodyOverflow={value:null!==(l=null===(t=h.body)||void 0===t?void 0:t.style.getPropertyValue("overflow"))&&void 0!==l?l:"",priority:null!==(i=null===(u=h.body)||void 0===u?void 0:u.style.getPropertyPriority("overflow"))&&void 0!==i?i:""},this.scrollX=null!==(c=null===(a=h.defaultView)||void 0===a?void 0:a.scrollX)&&void 0!==c?c:0,this.scrollY=null!==(v=null===(d=h.defaultView)||void 0===d?void 0:d.scrollY)&&void 0!==v?v:0;for(var w=[["position","fixed"],["inset","0"],["top","0"],["right","0"],["bottom","0"],["left","0"],["width","100vw"],["height","100dvh"],["max-width","none"],["max-height","none"],["margin","0"],["z-index","2147483647"],["overflow","auto"],["background",this.element.style.background||"Canvas"]],S=0,F=w;S<F.length;S++){var O=o(F[S],2),T=O[0],x=O[1];this.element.style.setProperty(T,x,"important")}this.addedClass=!this.element.classList.contains(this.className),this.addedClass&&this.element.classList.add(this.className),this.lockedScroll=!1!==m.lockScroll,this.lockedScroll&&h.body&&h.body.style.setProperty("overflow","hidden","important")}catch(e){try{this.exit({element:b,document:h,options:m})}finally{f.get(h)===this&&f.delete(h)}throw e}}},{key:"exit",value:function(e){var n,r,t=e.document;if(this.element&&this.styles)try{for(var l=0,o=s;l<o.length;l++){var u=o[l],i=this.styles[u];i.value?this.element.style.setProperty(u,i.value,i.priority):this.element.style.removeProperty(u)}this.addedClass&&this.element.classList.remove(this.className),this.lockedScroll&&t.body&&(this.bodyOverflow.value?t.body.style.setProperty("overflow",this.bodyOverflow.value,this.bodyOverflow.priority):t.body.style.removeProperty("overflow"),null===(r=null===(n=t.defaultView)||void 0===n?void 0:n.scrollTo)||void 0===r||r.call(n,this.scrollX,this.scrollY))}finally{f.get(t)===this&&f.delete(t),this.element=null,this.styles=null,this.addedClass=!1,this.lockedScroll=!1}}}])}();function v(e){return e.fallback&&"none"!==e.fallback?"css"===e.fallback?new d:e.fallback:null}var b={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 h(e,n,r){return{code:e,message:n,cause:r,recoverable:!(arguments.length>3&&void 0!==arguments[3])||arguments[3],suggestion:b[e]}}function m(e,n,r){var t,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===(t=null==r?void 0:r.defaultView)||void 0===t?void 0:t.frameElement)}catch(e){i=!0}u=i?"IFRAME_PERMISSION_REQUIRED":"PERMISSION_DENIED"}return h(u,"Fullscreen ".concat(n," failed: ").concat(l),e)}var p=function(e,n){return{ok:!0,mode:e,element:n,error:null}};function y(){var e,n,r=this,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=null!==(e=l.document)&&void 0!==e?e:"undefined"==typeof document?void 0:document,u=o?c(o):null,a=new Set,s=new Set,f=v(l),d=null,b=l,y=null,g=!1,E=!1,k=null,w=o?"idle":"unsupported",S=function(){return o&&u?o[u.fullscreenElement]:null},F=function(){return{isEnabled:Boolean(o&&u&&!1!==o[u.fullscreenEnabled]),isFullscreen:Boolean(S()||d),isFallback:Boolean(d),element:S()||d,status:w}},O=function(e,n){if(e)try{e(n)}catch(e){"undefined"!=typeof console&&console.error("[vue-screenfull] Listener failed.",e)}},T=null,x=F().isFullscreen,R=function(){var e=F();T&&T.isEnabled===e.isEnabled&&T.isFullscreen===e.isFullscreen&&T.isFallback===e.isFallback&&T.status===e.status&&T.element===e.element||(T=e,O(l.onChange,e),a.forEach(function(n){return O(n,e)}))},_=function(e){return k=e,arguments.length>1&&void 0!==arguments[1]&&arguments[1]||(w="NOT_SUPPORTED"===e.code||"NOT_IN_BROWSER"===e.code?"unsupported":"error"),E||(O(l.onError,e),s.forEach(function(n){return O(n,e)}),R()),l.debug&&"undefined"!=typeof console&&console.warn("[vue-screenfull]",e),{ok:!1,mode:"none",element:F().element,error:e}},C=function(){w=S()?"fullscreen":"idle";var e=F();e.isFullscreen!==x&&(e.isFullscreen?O(l.onEnter,e):O(l.onExit,e),x=e.isFullscreen),R()},I=function(e){g||_(m(e,"request",o))},N=function(e){"Escape"===e.key&&d&&D.exit()},P=function(){F().isFullscreen&&D.exit()},j=function(){var e,n,r=!1,t=new Promise(function(e){n=e}),l=function(){o&&u&&(o.removeEventListener(u.fullscreenchange,a),o.removeEventListener(u.fullscreenerror,c),void 0!==e&&globalThis.clearTimeout(e))},i=function(e){r||(r=!0,l(),n(e))},a=function(){return i({ok:!0})},c=function(e){return i({ok:!1,cause:e})};return o&&u&&(o.addEventListener(u.fullscreenchange,a),o.addEventListener(u.fullscreenerror,c),e=globalThis.setTimeout(function(){return i({ok:!1,cause:new Error("Timed out waiting for a fullscreen event.")})},3e3)),{promise:t,cleanup:l}},q=function(e){return i(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=j(),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]])}))},A=function(){return i(r,void 0,void 0,/*#__PURE__*/t().m(function e(){var n;return t().w(function(e){for(;;)switch(e.n){case 0:if(o&&u&&S()){e.n=1;break}return e.a(2);case 1:return n=o[u.exitFullscreen],e.n=2,q(function(){return n.call(o)});case 2:return e.a(2)}},e)}))};function L(e,n){return i(this,void 0,void 0,/*#__PURE__*/t().m(function r(){var u,i,a,c,s,y;return t().w(function(r){for(;;)switch(r.p=r.n){case 0:if(i=null!==(u=null==n?void 0:n.fallback)&&void 0!==u?u:l.fallback,a=Object.assign(Object.assign({},l),{fallback:i}),f=v(a),o&&f){r.n=1;break}return r.a(2,_(h("NOT_SUPPORTED","The Fullscreen API is unavailable and no fallback is enabled.")));case 1:return r.p=1,b=a,r.n=2,f.enter({element:e,document:o,options:a});case 2:if(!E){r.n=4;break}return r.n=3,f.exit({element:e,document:o,options:a});case 3:return c=h("REQUEST_FAILED","The fullscreen controller was destroyed before the fallback request completed."),r.a(2,{ok:!1,mode:"none",element:null,error:c});case 4:return d=e,w="fallback",s=F(),x=!0,O(l.onFallback,s),O(l.onEnter,s),R(),r.a(2,p("fallback",e));case 5:return r.p=5,y=r.v,r.a(2,_(m(y,"fallback",o)))}},r,null,[[1,5]])}))}o&&u&&(o.addEventListener(u.fullscreenchange,C),o.addEventListener(u.fullscreenerror,I)),o&&(o.addEventListener("keydown",N),l.exitOnRouteChange&&(null===(n=o.defaultView)||void 0===n||n.addEventListener("popstate",P)));var D={get isEnabled(){return F().isEnabled},get isFullscreen(){return F().isFullscreen},get isFallback(){return F().isFallback},get element(){return F().element},get status(){return w},get error(){return k},get raw(){return u},request:function(e,n){return i(this,void 0,void 0,/*#__PURE__*/t().m(function r(){var i,a,c,s,f,v,b,k;return t().w(function(r){for(;;)switch(r.p=r.n){case 0:if(!E&&o){r.n=1;break}return r.a(2,_(h("NOT_IN_BROWSER","Fullscreen is unavailable outside a browser document.")));case 1:if(!g){r.n=2;break}return r.a(2,_(h("REQUEST_IN_PROGRESS","A fullscreen transition is already in progress."),!0));case 2:if((i=void 0===e?o.documentElement:e)&&1===i.nodeType){r.n=3;break}return r.a(2,_(h("INVALID_TARGET","The fullscreen target is not an Element.")));case 3:if(i.isConnected&&i.ownerDocument===o){r.n=4;break}return r.a(2,_(h("TARGET_NOT_CONNECTED","The fullscreen target must be connected to the current document.")));case 4:if(!F().isFullscreen){r.n=7;break}if(F().element!==i){r.n=5;break}return r.a(2,p(d?"fallback":"native",i));case 5:if(!d){r.n=7;break}return r.n=6,D.exit();case 6:if((a=r.v).ok){r.n=7;break}return r.a(2,a);case 7:if(y=!1===l.restoreFocus?null:o.activeElement,g=!0,w="requesting",R(),r.p=8,u&&D.isEnabled){r.n=10;break}return r.n=9,L(i,n);case 9:case 18:return r.a(2,r.v);case 10:return c=i[u.requestFullscreen],delete(s=Object.assign({},n)).fallback,r.n=11,q(function(){return c.call(i,s)});case 11:return E||(w=S()?"fullscreen":"idle",R()),r.a(2,p("native",S()||i));case 12:if(r.p=12,b=r.v,!E){r.n=13;break}return f=m(b,"request",o),r.a(2,{ok:!1,mode:"none",element:null,error:f});case 13:if(v=m(b,"request",o),!(null==n?void 0:n.fallback)&&!l.fallback){r.n=19;break}if(!S()){r.n=17;break}return r.p=14,r.n=15,A();case 15:r.n=17;break;case 16:return r.p=16,k=r.v,r.a(2,_(m(k,"exit",o)));case 17:return r.n=18,L(i,n);case 19:return r.a(2,_(v));case 20:return r.p=20,g=!1,r.f(20);case 21:return r.a(2)}},r,null,[[14,16],[8,12,20,21]])}))},exit:function(){return i(this,void 0,void 0,/*#__PURE__*/t().m(function e(){var n,r,i,a;return t().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!E&&o){e.n=1;break}return e.a(2,_(h("NOT_IN_BROWSER","Fullscreen is unavailable outside a browser document.")));case 1:if(!g){e.n=2;break}return e.a(2,_(h("REQUEST_IN_PROGRESS","A fullscreen transition is already in progress."),!0));case 2:if(F().isFullscreen){e.n=3;break}return e.a(2,p("native",null));case 3:if(g=!0,w="exiting",R(),e.p=4,!d||!f){e.n=6;break}return r=d,e.n=5,f.exit({element:r,document:o,options:b});case 5:d=null,w="idle",i=F(),x=!1,O(l.onExit,i),R(),e.n=8;break;case 6:if(!u||!S()){e.n=8;break}return e.n=7,A();case 7:w=S()?"fullscreen":"idle",R();case 8:return null===(n=null==y?void 0:y.focus)||void 0===n||n.call(y),y=null,e.a(2,p(d?"fallback":"native",F().element));case 9:return e.p=9,a=e.v,e.a(2,_(m(a,"exit",o)));case 10:return e.p=10,g=!1,e.f(10);case 11:return e.a(2)}},e,null,[[4,9,10,11]])}))},toggle:function(e,n){return i(this,void 0,void 0,/*#__PURE__*/t().m(function r(){return t().w(function(r){for(;;)if(0===r.n)return r.a(2,F().isFullscreen?D.exit():D.request(e,n))},r)}))},on:function(e,n){"change"===e?a.add(n):s.add(n)},off:function(e,n){"change"===e?a.delete(n):s.delete(n)},clearError:function(){k=null,"error"===w&&(w=F().isFullscreen?d?"fallback":"fullscreen":"idle"),R()},destroy:function(){return i(this,void 0,void 0,/*#__PURE__*/t().m(function e(){var n,r,i;return t().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!E){e.n=1;break}return e.a(2);case 1:if(E=!0,!(d&&f&&o)){e.n=6;break}return r=d,e.p=2,e.n=3,f.exit({element:r,document:o,options:b});case 3:e.n=5;break;case 4:e.p=4,i=e.v,k=m(i,"fallback",o);case 5:d=null;case 6:o&&u&&(o.removeEventListener(u.fullscreenchange,C),o.removeEventListener(u.fullscreenerror,I)),null==o||o.removeEventListener("keydown",N),l.exitOnRouteChange&&(null===(n=null==o?void 0:o.defaultView)||void 0===n||n.removeEventListener("popstate",P)),a.clear(),s.clear();case 7:return e.a(2)}},e,null,[[2,4]])}))}};return D}function g(n,r){if(!r)return null;if(void 0===n)return r.documentElement;var t=e.isRef(n)?n.value:n;if(null==t)return null;if("string"==typeof t)try{return r.querySelector(t)}catch(e){return null}return"object"==typeof t&&"$el"in t&&(t=t.$el),t&&"object"==typeof t&&1===t.nodeType?t:null}function E(){var n,r=this,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=y(l),u=e.ref(o.isEnabled),a=e.ref(o.isFullscreen),c=e.ref(o.isFallback),s=e.shallowRef(o.element),f=e.shallowRef(null),d=e.ref(o.status),v=e.shallowRef(o.error),b=null!==(n=l.document)&&void 0!==n?n:"undefined"==typeof document?void 0:document,m=function(e){u.value=e.isEnabled,a.value=e.isFullscreen,c.value=e.isFallback,s.value=e.element,d.value=e.status,v.value=o.error},p=function(e){v.value=e,d.value=o.status};o.on("change",m),o.on("error",p);var E=function(){var e,n=h(b?"INVALID_TARGET":"NOT_IN_BROWSER",b?"The target is not a valid element or selector in this document.":"Fullscreen is unavailable outside a browser document.");v.value=n,d.value=b?"error":"unsupported";try{null===(e=l.onError)||void 0===e||e.call(l,n)}catch(e){"undefined"!=typeof console&&console.error("[vue-screenfull] Listener failed.",e)}return{ok:!1,mode:"none",element:null,error:n}},k=function(e){var n=g(e,b);return f.value=n,n};return e.getCurrentScope()&&e.onScopeDispose(function(){o.off("change",m),o.off("error",p),o.destroy()}),{isEnabled:e.readonly(u),isFullscreen:e.readonly(a),isFallback:e.readonly(c),fullscreenElement:e.shallowReadonly(s),targetElement:e.shallowReadonly(f),status:e.readonly(d),error:e.readonly(v),request:function(e,n){return i(r,void 0,void 0,/*#__PURE__*/t().m(function r(){var l;return t().w(function(r){for(;;)if(0===r.n)return l=k(e),r.a(2,l?o.request(l,n):E())},r)}))},exit:function(){return o.exit()},toggle:function(e,n){return i(r,void 0,void 0,/*#__PURE__*/t().m(function r(){var l;return t().w(function(r){for(;;)switch(r.n){case 0:if(!o.isFullscreen){r.n=1;break}return r.a(2,o.exit());case 1:return l=k(e),r.a(2,l?o.request(l,n):E())}},r)}))},clearError:function(){o.clearError(),v.value=null}}}var k=/*#__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 r=n.slots,t=n.emit,l=E({fallback:e.fallback,fallbackClass:e.fallbackClass,lockScroll:e.lockScroll,restoreFocus:e.restoreFocus,exitOnRouteChange:e.exitOnRouteChange,debug:e.debug,onChange:function(e){return t("change",e)},onEnter:function(e){return t("enter",e)},onExit:function(e){return t("exit",e)},onError:function(e){return t("error",e)},onFallback:function(e){return t("fallback",e)}}),o=Object.assign(Object.assign({},l),{request:function(n,r){return l.request(void 0===n?e.target:n,r)},toggle:function(n,r){return l.toggle(void 0===n?e.target:n,r)}});return function(){var e;return null===(e=r.default)||void 0===e?void 0:e.call(r,o)}}}),w=/*#__PURE__*/new WeakMap;var S={mounted:function(e,n){var r=y(),t={controller:r,binding:n,click:function(){}};t.click=function(){var n=t.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=t.binding.arg||l.action||"toggle",u=g(l.target,e.ownerDocument);"exit"===o?r.exit():"request"===o?r.request(u,l.options):r.toggle(u,l.options)},w.set(e,t),e.addEventListener("click",t.click)},updated:function(e,n){var r=w.get(e);r&&(r.binding=n)},unmounted:function(e){var n=w.get(e);n&&(e.removeEventListener("click",n.click),n.controller.destroy(),w.delete(e))}},F={install:function(e){var n,r,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.component(null!==(n=t.componentName)&&void 0!==n?n:"Screenfull",k),e.directive(null!==(r=t.directiveName)&&void 0!==r?r:"screenfull",S)}};exports.Screenfull=k,exports.createScreenfullController=y,exports.default=F,exports.detectFullscreenApi=c,exports.resolveScreenfullTarget=g,exports.useScreenfull=E,exports.useScreenfullTarget=function(e){var n=E(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return Object.assign(Object.assign({},n),{request:function(r,t){return n.request(e,t)},toggle:function(r,t){return n.toggle(e,t)}})},exports.vScreenfull=S;
6
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");function n(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function t(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,u(r.key),r)}}(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function r(){var e,n,t="function"==typeof Symbol?Symbol:{},o=t.iterator||"@@iterator",u=t.toStringTag||"@@toStringTag";function i(t,r,o,u){var i=r&&r.prototype instanceof c?r:c,s=Object.create(i.prototype);return l(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]())):(l(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,l(e,u,"GeneratorFunction")),e.prototype=Object.create(v),e}return s.prototype=f,l(v,"constructor",f),l(f,"constructor",s),s.displayName="GeneratorFunction",l(f,u,"GeneratorFunction"),l(v),l(v,u,"Generator"),l(v,o,function(){return this}),l(v,"toString",function(){return"[object Generator]"}),(r=function(){return{w:i,m:b}})()}function l(e,n,t,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}l=function(e,n,t,r){function u(n,t){l(e,n,function(e){return this._invoke(n,t,e)})}n?o?o(e,n,{value:t,enumerable:!r,configurable:!r,writable:!r}):e[n]=t:(u("next",0),u("throw",1),u("return",2))},l(e,n,t,r)}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,l,o,u,i=[],a=!0,c=!1;try{if(o=(t=t.call(e)).next,0===n);else for(;!(a=(r=o.call(t)).done)&&(i.push(r.value),i.length!==n);a=!0);}catch(e){c=!0,l=e}finally{try{if(!a&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(c)throw l}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(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 i(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 a=[{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:"webkitRequestFullScreen",exitFullscreen:"webkitCancelFullScreen",fullscreenElement:"webkitCurrentFullScreenElement",fullscreenEnabled:"webkitCancelFullScreen",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 c(e){var n=e.documentElement,t=e,r=a.find(function(e){return"function"==typeof n[e.requestFullscreen]&&"function"==typeof t[e.exitFullscreen]});return r?Object.freeze(Object.assign({},r)):null}var s=["position","inset","top","right","bottom","left","width","height","max-width","max-height","margin","z-index","overflow","background"],f=new WeakMap,d=/*#__PURE__*/function(){return t(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={value:"",priority:""},this.scrollX=0,this.scrollY=0,this.className="",this.addedClass=!1,this.lockedScroll=!1,this.bodyScrollLocked=!1},[{key:"enter",value:function(e){var n,t,r,l,u,i,a,c,d,v,b=e.element,h=e.document,m=e.options,p=null===(n=h.defaultView)||void 0===n?void 0:n.HTMLElement;if(!(p&&b instanceof p))throw new TypeError("CSS fallback requires an HTMLElement.");var y=f.get(h);if(y&&y!==this)throw new Error("Another CSS fullscreen fallback is already active.");f.set(h,this);try{this.element=b,this.className=null!==(t=m.fallbackClass)&&void 0!==t?t:"vue-screenfull-fallback",this.styles={};for(var g=0,E=s;g<E.length;g++){var k=E[g];this.styles[k]={value:this.element.style.getPropertyValue(k),priority:this.element.style.getPropertyPriority(k)}}this.bodyOverflow={value:null!==(l=null===(r=h.body)||void 0===r?void 0:r.style.getPropertyValue("overflow"))&&void 0!==l?l:"",priority:null!==(i=null===(u=h.body)||void 0===u?void 0:u.style.getPropertyPriority("overflow"))&&void 0!==i?i:""},this.scrollX=null!==(c=null===(a=h.defaultView)||void 0===a?void 0:a.scrollX)&&void 0!==c?c:0,this.scrollY=null!==(v=null===(d=h.defaultView)||void 0===d?void 0:d.scrollY)&&void 0!==v?v:0;for(var w=[["position","fixed"],["inset","0"],["top","0"],["right","0"],["bottom","0"],["left","0"],["width","100vw"],["height","100dvh"],["max-width","none"],["max-height","none"],["margin","0"],["z-index","2147483647"],["overflow","auto"],["background",this.element.style.background||"Canvas"]],S=0,F=w;S<F.length;S++){var O=o(F[S],2),T=O[0],x=O[1];this.element.style.setProperty(T,x,"important")}this.addedClass=!this.element.classList.contains(this.className),this.addedClass&&this.element.classList.add(this.className),this.lockedScroll=!1!==m.lockScroll,this.bodyScrollLocked=Boolean(this.lockedScroll&&h.body&&this.element!==h.documentElement&&this.element!==h.body),this.bodyScrollLocked&&h.body&&h.body.style.setProperty("overflow","hidden","important")}catch(e){try{this.exit({element:b,document:h,options:m})}finally{f.get(h)===this&&f.delete(h)}throw e}}},{key:"exit",value:function(e){var n,t,r=e.document;if(this.element&&this.styles)try{for(var l=0,o=s;l<o.length;l++){var u=o[l],i=this.styles[u];i.value?this.element.style.setProperty(u,i.value,i.priority):this.element.style.removeProperty(u)}this.addedClass&&this.element.classList.remove(this.className),this.bodyScrollLocked&&r.body&&(this.bodyOverflow.value?r.body.style.setProperty("overflow",this.bodyOverflow.value,this.bodyOverflow.priority):r.body.style.removeProperty("overflow")),this.lockedScroll&&(null===(t=null===(n=r.defaultView)||void 0===n?void 0:n.scrollTo)||void 0===t||t.call(n,this.scrollX,this.scrollY))}finally{f.get(r)===this&&f.delete(r),this.element=null,this.styles=null,this.addedClass=!1,this.lockedScroll=!1,this.bodyScrollLocked=!1}}}])}();function v(e){return e.fallback&&"none"!==e.fallback?"css"===e.fallback?new d:e.fallback:null}var b={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 h(e,n,t){return{code:e,message:n,cause:t,recoverable:!(arguments.length>3&&void 0!==arguments[3])||arguments[3],suggestion:b[e]}}function m(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 h(u,"Fullscreen ".concat(n," failed: ").concat(l),e)}var p=function(e,n){return{ok:!0,mode:e,element:n,error:null}};function y(){var e,n,t=this,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=null!==(e=l.document)&&void 0!==e?e:"undefined"==typeof document?void 0:document,u=o?c(o):null,a=new Set,s=new Set,f=v(l),d=null,b=l,y=null,g=!1,E=!1,k=null,w=o?"idle":"unsupported",S=function(){return o&&u?o[u.fullscreenElement]:null},F=function(){return{isEnabled:Boolean(o&&u&&!1!==o[u.fullscreenEnabled]),isFullscreen:Boolean(S()||d),isFallback:Boolean(d),element:S()||d,status:w}},O=function(e,n){if(e)try{e(n)}catch(e){"undefined"!=typeof console&&console.error("[vue-screenfull] Listener failed.",e)}},T=null,x=F().isFullscreen,R=function(){var e=F();T&&T.isEnabled===e.isEnabled&&T.isFullscreen===e.isFullscreen&&T.isFallback===e.isFallback&&T.status===e.status&&T.element===e.element||(T=e,O(l.onChange,e),a.forEach(function(n){return O(n,e)}))},_=function(e){return k=e,arguments.length>1&&void 0!==arguments[1]&&arguments[1]||(w="NOT_SUPPORTED"===e.code||"NOT_IN_BROWSER"===e.code?"unsupported":"error"),E||(O(l.onError,e),s.forEach(function(n){return O(n,e)}),R()),l.debug&&"undefined"!=typeof console&&console.warn("[vue-screenfull]",e),{ok:!1,mode:"none",element:F().element,error:e}},C=function(){w=S()?"fullscreen":"idle";var e=F();e.isFullscreen!==x&&(e.isFullscreen?O(l.onEnter,e):O(l.onExit,e),x=e.isFullscreen),R()},I=function(e){g||_(m(e,"request",o))},N=function(e){"Escape"===e.key&&d&&D.exit()},P=function(){F().isFullscreen&&D.exit()},j=function(){var e,n,t=!1,r=new Promise(function(e){n=e}),l=function(){o&&u&&(o.removeEventListener(u.fullscreenchange,a),o.removeEventListener(u.fullscreenerror,c),void 0!==e&&globalThis.clearTimeout(e))},i=function(e){t||(t=!0,l(),n(e))},a=function(){return i({ok:!0})},c=function(e){return i({ok:!1,cause:e})};return o&&u&&(o.addEventListener(u.fullscreenchange,a),o.addEventListener(u.fullscreenerror,c),e=globalThis.setTimeout(function(){return i({ok:!1,cause:new Error("Timed out waiting for a fullscreen event.")})},3e3)),{promise:r,cleanup:l}},L=function(e){return i(t,void 0,void 0,/*#__PURE__*/r().m(function n(){var t,l,o;return r().w(function(n){for(;;)switch(n.p=n.n){case 0:if(t=j(),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,t.promise;case 4:if((o=n.v).ok){n.n=5;break}throw o.cause;case 5:return n.p=5,t.cleanup(),n.f(5);case 6:return n.a(2)}},n,null,[[1,,5,6]])}))},q=function(){return i(t,void 0,void 0,/*#__PURE__*/r().m(function e(){var n;return r().w(function(e){for(;;)switch(e.n){case 0:if(o&&u&&S()){e.n=1;break}return e.a(2);case 1:return n=o[u.exitFullscreen],e.n=2,L(function(){return n.call(o)});case 2:return e.a(2)}},e)}))};function A(e,n){return i(this,void 0,void 0,/*#__PURE__*/r().m(function t(){var u,i,a,c,s,y;return r().w(function(t){for(;;)switch(t.p=t.n){case 0:if(i=null!==(u=null==n?void 0:n.fallback)&&void 0!==u?u:l.fallback,a=Object.assign(Object.assign({},l),{fallback:i}),f=v(a),o&&f){t.n=1;break}return t.a(2,_(h("NOT_SUPPORTED","The Fullscreen API is unavailable and no fallback is enabled.")));case 1:return t.p=1,b=a,t.n=2,f.enter({element:e,document:o,options:a});case 2:if(!E){t.n=4;break}return t.n=3,f.exit({element:e,document:o,options:a});case 3:return c=h("REQUEST_FAILED","The fullscreen controller was destroyed before the fallback request completed."),t.a(2,{ok:!1,mode:"none",element:null,error:c});case 4:return d=e,w="fallback",s=F(),x=!0,O(l.onFallback,s),O(l.onEnter,s),R(),t.a(2,p("fallback",e));case 5:return t.p=5,y=t.v,t.a(2,_(m(y,"fallback",o)))}},t,null,[[1,5]])}))}o&&u&&(o.addEventListener(u.fullscreenchange,C),o.addEventListener(u.fullscreenerror,I)),o&&(o.addEventListener("keydown",N),l.exitOnRouteChange&&(null===(n=o.defaultView)||void 0===n||n.addEventListener("popstate",P)));var D={get isEnabled(){return F().isEnabled},get isFullscreen(){return F().isFullscreen},get isFallback(){return F().isFallback},get element(){return F().element},get status(){return w},get error(){return k},get raw(){return u},request:function(e,n){return i(this,void 0,void 0,/*#__PURE__*/r().m(function t(){var i,a,c,s,f,v,b,k;return r().w(function(t){for(;;)switch(t.p=t.n){case 0:if(!E&&o){t.n=1;break}return t.a(2,_(h("NOT_IN_BROWSER","Fullscreen is unavailable outside a browser document.")));case 1:if(!g){t.n=2;break}return t.a(2,_(h("REQUEST_IN_PROGRESS","A fullscreen transition is already in progress."),!0));case 2:if((i=void 0===e?o.documentElement:e)&&1===i.nodeType){t.n=3;break}return t.a(2,_(h("INVALID_TARGET","The fullscreen target is not an Element.")));case 3:if(i.isConnected&&i.ownerDocument===o){t.n=4;break}return t.a(2,_(h("TARGET_NOT_CONNECTED","The fullscreen target must be connected to the current document.")));case 4:if(!F().isFullscreen){t.n=7;break}if(F().element!==i){t.n=5;break}return t.a(2,p(d?"fallback":"native",i));case 5:if(!d){t.n=7;break}return t.n=6,D.exit();case 6:if((a=t.v).ok){t.n=7;break}return t.a(2,a);case 7:if(y=!1===l.restoreFocus?null:o.activeElement,g=!0,w="requesting",R(),t.p=8,u&&D.isEnabled){t.n=10;break}return t.n=9,A(i,n);case 9:case 18:return t.a(2,t.v);case 10:return c=i[u.requestFullscreen],delete(s=Object.assign({},n)).fallback,t.n=11,L(function(){return c.call(i,s)});case 11:return E||(w=S()?"fullscreen":"idle",R()),t.a(2,p("native",S()||i));case 12:if(t.p=12,b=t.v,!E){t.n=13;break}return f=m(b,"request",o),t.a(2,{ok:!1,mode:"none",element:null,error:f});case 13:if(v=m(b,"request",o),!(null==n?void 0:n.fallback)&&!l.fallback){t.n=19;break}if(!S()){t.n=17;break}return t.p=14,t.n=15,q();case 15:t.n=17;break;case 16:return t.p=16,k=t.v,t.a(2,_(m(k,"exit",o)));case 17:return t.n=18,A(i,n);case 19:return t.a(2,_(v));case 20:return t.p=20,g=!1,t.f(20);case 21:return t.a(2)}},t,null,[[14,16],[8,12,20,21]])}))},exit:function(){return i(this,void 0,void 0,/*#__PURE__*/r().m(function e(){var n,t,i,a;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!E&&o){e.n=1;break}return e.a(2,_(h("NOT_IN_BROWSER","Fullscreen is unavailable outside a browser document.")));case 1:if(!g){e.n=2;break}return e.a(2,_(h("REQUEST_IN_PROGRESS","A fullscreen transition is already in progress."),!0));case 2:if(F().isFullscreen){e.n=3;break}return e.a(2,p("native",null));case 3:if(g=!0,w="exiting",R(),e.p=4,!d||!f){e.n=6;break}return t=d,e.n=5,f.exit({element:t,document:o,options:b});case 5:d=null,w="idle",i=F(),x=!1,O(l.onExit,i),R(),e.n=8;break;case 6:if(!u||!S()){e.n=8;break}return e.n=7,q();case 7:w=S()?"fullscreen":"idle",R();case 8:return null===(n=null==y?void 0:y.focus)||void 0===n||n.call(y),y=null,e.a(2,p(d?"fallback":"native",F().element));case 9:return e.p=9,a=e.v,e.a(2,_(m(a,"exit",o)));case 10:return e.p=10,g=!1,e.f(10);case 11:return e.a(2)}},e,null,[[4,9,10,11]])}))},toggle:function(e,n){return i(this,void 0,void 0,/*#__PURE__*/r().m(function t(){return r().w(function(t){for(;;)if(0===t.n)return t.a(2,F().isFullscreen?D.exit():D.request(e,n))},t)}))},on:function(e,n){"change"===e?a.add(n):s.add(n)},off:function(e,n){"change"===e?a.delete(n):s.delete(n)},clearError:function(){k=null,"error"===w&&(w=F().isFullscreen?d?"fallback":"fullscreen":"idle"),R()},destroy:function(){return i(this,void 0,void 0,/*#__PURE__*/r().m(function e(){var n,t,i;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!E){e.n=1;break}return e.a(2);case 1:if(E=!0,!(d&&f&&o)){e.n=6;break}return t=d,e.p=2,e.n=3,f.exit({element:t,document:o,options:b});case 3:e.n=5;break;case 4:e.p=4,i=e.v,k=m(i,"fallback",o);case 5:d=null;case 6:o&&u&&(o.removeEventListener(u.fullscreenchange,C),o.removeEventListener(u.fullscreenerror,I)),null==o||o.removeEventListener("keydown",N),l.exitOnRouteChange&&(null===(n=null==o?void 0:o.defaultView)||void 0===n||n.removeEventListener("popstate",P)),a.clear(),s.clear();case 7:return e.a(2)}},e,null,[[2,4]])}))}};return D}function g(n,t){if(!t)return null;if(void 0===n)return t.documentElement;var r=e.isRef(n)?n.value:n;if(null==r)return null;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 E(){var n,t=this,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=y(l),u=e.ref(o.isEnabled),a=e.ref(o.isFullscreen),c=e.ref(o.isFallback),s=e.shallowRef(o.element),f=e.shallowRef(null),d=e.ref(o.status),v=e.shallowRef(o.error),b=null!==(n=l.document)&&void 0!==n?n:"undefined"==typeof document?void 0:document,m=function(e){u.value=e.isEnabled,a.value=e.isFullscreen,c.value=e.isFallback,s.value=e.element,d.value=e.status,v.value=o.error},p=function(e){v.value=e,d.value=o.status};o.on("change",m),o.on("error",p);var E=function(){var e,n=h(b?"INVALID_TARGET":"NOT_IN_BROWSER",b?"The target is not a valid element or selector in this document.":"Fullscreen is unavailable outside a browser document.");v.value=n,d.value=b?"error":"unsupported";try{null===(e=l.onError)||void 0===e||e.call(l,n)}catch(e){"undefined"!=typeof console&&console.error("[vue-screenfull] Listener failed.",e)}return{ok:!1,mode:"none",element:null,error:n}},k=function(e){var n=g(e,b);return f.value=n,n};return e.getCurrentScope()&&e.onScopeDispose(function(){o.off("change",m),o.off("error",p),o.destroy()}),{isEnabled:e.readonly(u),isFullscreen:e.readonly(a),isFallback:e.readonly(c),fullscreenElement:e.shallowReadonly(s),targetElement:e.shallowReadonly(f),status:e.readonly(d),error:e.readonly(v),request:function(e,n){return i(t,void 0,void 0,/*#__PURE__*/r().m(function t(){var l;return r().w(function(t){for(;;)if(0===t.n)return l=k(e),t.a(2,l?o.request(l,n):E())},t)}))},exit:function(){return o.exit()},toggle:function(e,n){return i(t,void 0,void 0,/*#__PURE__*/r().m(function t(){var l;return r().w(function(t){for(;;)switch(t.n){case 0:if(!o.isFullscreen){t.n=1;break}return t.a(2,o.exit());case 1:return l=k(e),t.a(2,l?o.request(l,n):E())}},t)}))},clearError:function(){o.clearError(),v.value=null}}}var k=/*#__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=E({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(void 0===n?e.target:n,t)},toggle:function(n,t){return l.toggle(void 0===n?e.target:n,t)}});return function(){var e;return null===(e=t.default)||void 0===e?void 0:e.call(t,o)}}}),w=/*#__PURE__*/new WeakMap;var S={mounted:function(e,n){var t=y(),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=g(l.target,e.ownerDocument);"exit"===o?t.exit():"request"===o?t.request(u,l.options):t.toggle(u,l.options)},w.set(e,r),e.addEventListener("click",r.click)},updated:function(e,n){var t=w.get(e);t&&(t.binding=n)},unmounted:function(e){var n=w.get(e);n&&(e.removeEventListener("click",n.click),n.controller.destroy(),w.delete(e))}},F={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",k),e.directive(null!==(t=r.directiveName)&&void 0!==t?t:"screenfull",S)}};exports.Screenfull=k,exports.createScreenfullController=y,exports.default=F,exports.detectFullscreenApi=c,exports.resolveScreenfullTarget=g,exports.useScreenfull=E,exports.useScreenfullTarget=function(e){var n=E(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=S;
7
7
  //# sourceMappingURL=index.cjs.js.map