├── .gitignore
├── LICENSE
├── README.md
├── insomnia.js
├── package-lock.json
├── package.json
├── useVueInsomnia.js
└── vueInsomniaPlugin.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 |
63 | .idea/
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Mike Hamilton
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 all
13 | 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 THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-insomnia
2 |
3 | Prevents the display of a mobile device from going to sleep by playing a small (6kb) mp4 video that's positioned off screen on a loop.
4 |
5 | ## Installation
6 |
7 | Import into your project using npm or yarn.
8 |
9 | `yarn add vue-insomnia` or `npm install --save vue-insomnia`
10 |
11 |
12 |
13 | ## Vue 3.x
14 |
15 | ### Usage
16 |
17 | ````vue
18 |
19 |
20 |
21 |
22 |
23 |
26 | ````
27 |
28 | ## Vue 2.x
29 |
30 | In your main.js (or equivalent) import and then use vue-insomnia.
31 |
32 | ```
33 | import vueInsomnia from "vue-insomnia";
34 |
35 | Vue.use(vueInsomnia);
36 | ```
37 |
38 | ### Usage
39 |
40 | There are two methods globally available, vueInsomnia().on() and vueInsomnia().off(), to toggle screen wake lock on and off, respectively. For example, to turn on the wake lock when a component is loaded:
41 |
42 | ```
43 | mounted: {
44 | this.vueInsomnia().on();
45 | }
46 | ```
47 |
48 | or to use in a component template:
49 |
50 | Add a method
51 |
52 | ```
53 | methods: {
54 | wakeLockOn() {
55 | this.vueInsomnia().on();
56 | },
57 | wakeLockOff() {
58 | this.vueInsomnia().off();
59 | }
60 | }
61 | ```
62 |
63 | and then use the method:
64 |
65 | ```
66 |
67 | ```
68 |
--------------------------------------------------------------------------------
/insomnia.js:
--------------------------------------------------------------------------------
1 | export const playbackVideoSourceBase64 = "data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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"
2 |
3 | export const generatePlayer = () => {
4 | const vueInsomnia = document.createElement("video");
5 | vueInsomnia.setAttribute("id", "vue-insomnia");
6 | vueInsomnia.setAttribute(
7 | "style",
8 | "position: absolute; top: -10px; left: -10px;"
9 | );
10 | vueInsomnia.setAttribute("loop", "");
11 | vueInsomnia.setAttribute("playsinline", "");
12 | vueInsomnia.setAttribute("height", "10");
13 | vueInsomnia.setAttribute("width", "10");
14 | document.body.appendChild(vueInsomnia);
15 |
16 | // Create the source element (child of video el) with the source of the mp4
17 | const vueInsomniaSource = document.createElement("source");
18 | vueInsomniaSource.setAttribute("type", "video/mp4");
19 | vueInsomniaSource.setAttribute(
20 | "src",
21 | playbackVideoSourceBase64
22 | );
23 | document.getElementById("vue-insomnia").appendChild(vueInsomniaSource);
24 |
25 | return vueInsomnia;
26 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-insomnia",
3 | "version": "0.1.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vue-insomnia",
9 | "version": "0.1.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "vue": "^3.2.37"
13 | }
14 | },
15 | "node_modules/@babel/parser": {
16 | "version": "7.18.9",
17 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
18 | "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
19 | "bin": {
20 | "parser": "bin/babel-parser.js"
21 | },
22 | "engines": {
23 | "node": ">=6.0.0"
24 | }
25 | },
26 | "node_modules/@vue/compiler-core": {
27 | "version": "3.2.37",
28 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
29 | "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
30 | "dependencies": {
31 | "@babel/parser": "^7.16.4",
32 | "@vue/shared": "3.2.37",
33 | "estree-walker": "^2.0.2",
34 | "source-map": "^0.6.1"
35 | }
36 | },
37 | "node_modules/@vue/compiler-dom": {
38 | "version": "3.2.37",
39 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
40 | "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
41 | "dependencies": {
42 | "@vue/compiler-core": "3.2.37",
43 | "@vue/shared": "3.2.37"
44 | }
45 | },
46 | "node_modules/@vue/compiler-sfc": {
47 | "version": "3.2.37",
48 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
49 | "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
50 | "dependencies": {
51 | "@babel/parser": "^7.16.4",
52 | "@vue/compiler-core": "3.2.37",
53 | "@vue/compiler-dom": "3.2.37",
54 | "@vue/compiler-ssr": "3.2.37",
55 | "@vue/reactivity-transform": "3.2.37",
56 | "@vue/shared": "3.2.37",
57 | "estree-walker": "^2.0.2",
58 | "magic-string": "^0.25.7",
59 | "postcss": "^8.1.10",
60 | "source-map": "^0.6.1"
61 | }
62 | },
63 | "node_modules/@vue/compiler-ssr": {
64 | "version": "3.2.37",
65 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
66 | "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
67 | "dependencies": {
68 | "@vue/compiler-dom": "3.2.37",
69 | "@vue/shared": "3.2.37"
70 | }
71 | },
72 | "node_modules/@vue/reactivity": {
73 | "version": "3.2.37",
74 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
75 | "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
76 | "dependencies": {
77 | "@vue/shared": "3.2.37"
78 | }
79 | },
80 | "node_modules/@vue/reactivity-transform": {
81 | "version": "3.2.37",
82 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
83 | "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
84 | "dependencies": {
85 | "@babel/parser": "^7.16.4",
86 | "@vue/compiler-core": "3.2.37",
87 | "@vue/shared": "3.2.37",
88 | "estree-walker": "^2.0.2",
89 | "magic-string": "^0.25.7"
90 | }
91 | },
92 | "node_modules/@vue/runtime-core": {
93 | "version": "3.2.37",
94 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
95 | "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
96 | "dependencies": {
97 | "@vue/reactivity": "3.2.37",
98 | "@vue/shared": "3.2.37"
99 | }
100 | },
101 | "node_modules/@vue/runtime-dom": {
102 | "version": "3.2.37",
103 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
104 | "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
105 | "dependencies": {
106 | "@vue/runtime-core": "3.2.37",
107 | "@vue/shared": "3.2.37",
108 | "csstype": "^2.6.8"
109 | }
110 | },
111 | "node_modules/@vue/server-renderer": {
112 | "version": "3.2.37",
113 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
114 | "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
115 | "dependencies": {
116 | "@vue/compiler-ssr": "3.2.37",
117 | "@vue/shared": "3.2.37"
118 | },
119 | "peerDependencies": {
120 | "vue": "3.2.37"
121 | }
122 | },
123 | "node_modules/@vue/shared": {
124 | "version": "3.2.37",
125 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
126 | "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
127 | },
128 | "node_modules/csstype": {
129 | "version": "2.6.20",
130 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
131 | "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
132 | },
133 | "node_modules/estree-walker": {
134 | "version": "2.0.2",
135 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
136 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
137 | },
138 | "node_modules/magic-string": {
139 | "version": "0.25.9",
140 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
141 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
142 | "dependencies": {
143 | "sourcemap-codec": "^1.4.8"
144 | }
145 | },
146 | "node_modules/nanoid": {
147 | "version": "3.3.4",
148 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
149 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
150 | "bin": {
151 | "nanoid": "bin/nanoid.cjs"
152 | },
153 | "engines": {
154 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
155 | }
156 | },
157 | "node_modules/picocolors": {
158 | "version": "1.0.0",
159 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
160 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
161 | },
162 | "node_modules/postcss": {
163 | "version": "8.4.14",
164 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
165 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
166 | "funding": [
167 | {
168 | "type": "opencollective",
169 | "url": "https://opencollective.com/postcss/"
170 | },
171 | {
172 | "type": "tidelift",
173 | "url": "https://tidelift.com/funding/github/npm/postcss"
174 | }
175 | ],
176 | "dependencies": {
177 | "nanoid": "^3.3.4",
178 | "picocolors": "^1.0.0",
179 | "source-map-js": "^1.0.2"
180 | },
181 | "engines": {
182 | "node": "^10 || ^12 || >=14"
183 | }
184 | },
185 | "node_modules/source-map": {
186 | "version": "0.6.1",
187 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
188 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
189 | "engines": {
190 | "node": ">=0.10.0"
191 | }
192 | },
193 | "node_modules/source-map-js": {
194 | "version": "1.0.2",
195 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
196 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
197 | "engines": {
198 | "node": ">=0.10.0"
199 | }
200 | },
201 | "node_modules/sourcemap-codec": {
202 | "version": "1.4.8",
203 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
204 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
205 | },
206 | "node_modules/vue": {
207 | "version": "3.2.37",
208 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
209 | "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
210 | "dependencies": {
211 | "@vue/compiler-dom": "3.2.37",
212 | "@vue/compiler-sfc": "3.2.37",
213 | "@vue/runtime-dom": "3.2.37",
214 | "@vue/server-renderer": "3.2.37",
215 | "@vue/shared": "3.2.37"
216 | }
217 | }
218 | },
219 | "dependencies": {
220 | "@babel/parser": {
221 | "version": "7.18.9",
222 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
223 | "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg=="
224 | },
225 | "@vue/compiler-core": {
226 | "version": "3.2.37",
227 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
228 | "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
229 | "requires": {
230 | "@babel/parser": "^7.16.4",
231 | "@vue/shared": "3.2.37",
232 | "estree-walker": "^2.0.2",
233 | "source-map": "^0.6.1"
234 | }
235 | },
236 | "@vue/compiler-dom": {
237 | "version": "3.2.37",
238 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
239 | "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
240 | "requires": {
241 | "@vue/compiler-core": "3.2.37",
242 | "@vue/shared": "3.2.37"
243 | }
244 | },
245 | "@vue/compiler-sfc": {
246 | "version": "3.2.37",
247 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
248 | "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
249 | "requires": {
250 | "@babel/parser": "^7.16.4",
251 | "@vue/compiler-core": "3.2.37",
252 | "@vue/compiler-dom": "3.2.37",
253 | "@vue/compiler-ssr": "3.2.37",
254 | "@vue/reactivity-transform": "3.2.37",
255 | "@vue/shared": "3.2.37",
256 | "estree-walker": "^2.0.2",
257 | "magic-string": "^0.25.7",
258 | "postcss": "^8.1.10",
259 | "source-map": "^0.6.1"
260 | }
261 | },
262 | "@vue/compiler-ssr": {
263 | "version": "3.2.37",
264 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
265 | "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
266 | "requires": {
267 | "@vue/compiler-dom": "3.2.37",
268 | "@vue/shared": "3.2.37"
269 | }
270 | },
271 | "@vue/reactivity": {
272 | "version": "3.2.37",
273 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
274 | "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
275 | "requires": {
276 | "@vue/shared": "3.2.37"
277 | }
278 | },
279 | "@vue/reactivity-transform": {
280 | "version": "3.2.37",
281 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
282 | "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
283 | "requires": {
284 | "@babel/parser": "^7.16.4",
285 | "@vue/compiler-core": "3.2.37",
286 | "@vue/shared": "3.2.37",
287 | "estree-walker": "^2.0.2",
288 | "magic-string": "^0.25.7"
289 | }
290 | },
291 | "@vue/runtime-core": {
292 | "version": "3.2.37",
293 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
294 | "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
295 | "requires": {
296 | "@vue/reactivity": "3.2.37",
297 | "@vue/shared": "3.2.37"
298 | }
299 | },
300 | "@vue/runtime-dom": {
301 | "version": "3.2.37",
302 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
303 | "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
304 | "requires": {
305 | "@vue/runtime-core": "3.2.37",
306 | "@vue/shared": "3.2.37",
307 | "csstype": "^2.6.8"
308 | }
309 | },
310 | "@vue/server-renderer": {
311 | "version": "3.2.37",
312 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
313 | "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
314 | "requires": {
315 | "@vue/compiler-ssr": "3.2.37",
316 | "@vue/shared": "3.2.37"
317 | }
318 | },
319 | "@vue/shared": {
320 | "version": "3.2.37",
321 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
322 | "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
323 | },
324 | "csstype": {
325 | "version": "2.6.20",
326 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
327 | "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
328 | },
329 | "estree-walker": {
330 | "version": "2.0.2",
331 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
332 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
333 | },
334 | "magic-string": {
335 | "version": "0.25.9",
336 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
337 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
338 | "requires": {
339 | "sourcemap-codec": "^1.4.8"
340 | }
341 | },
342 | "nanoid": {
343 | "version": "3.3.4",
344 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
345 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
346 | },
347 | "picocolors": {
348 | "version": "1.0.0",
349 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
350 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
351 | },
352 | "postcss": {
353 | "version": "8.4.14",
354 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
355 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
356 | "requires": {
357 | "nanoid": "^3.3.4",
358 | "picocolors": "^1.0.0",
359 | "source-map-js": "^1.0.2"
360 | }
361 | },
362 | "source-map": {
363 | "version": "0.6.1",
364 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
365 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
366 | },
367 | "source-map-js": {
368 | "version": "1.0.2",
369 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
370 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
371 | },
372 | "sourcemap-codec": {
373 | "version": "1.4.8",
374 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
375 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
376 | },
377 | "vue": {
378 | "version": "3.2.37",
379 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
380 | "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
381 | "requires": {
382 | "@vue/compiler-dom": "3.2.37",
383 | "@vue/compiler-sfc": "3.2.37",
384 | "@vue/runtime-dom": "3.2.37",
385 | "@vue/server-renderer": "3.2.37",
386 | "@vue/shared": "3.2.37"
387 | }
388 | }
389 | }
390 | }
391 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-insomnia",
3 | "version": "0.1.0",
4 | "description": "A vue plugin that prevents display sleep.",
5 | "main": "useVueInsomnia.js",
6 | "repository": "https://github.com/gorbypark/vue-insomnia.git",
7 | "author": "Mike Hamilton ",
8 | "license": "MIT",
9 | "devDependencies": {
10 | "vue": "^3.2.37"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/useVueInsomnia.js:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue';
2 | import { generatePlayer } from './insomnia';
3 |
4 | const insomnia = ref(generatePlayer());
5 |
6 | const actions = {
7 | enableVueInsomnia: () => insomnia.play(),
8 | disableVueInsomnia: () => insomnia.pause(),
9 | }
10 |
11 | export const useVueInsomnia = () => ({
12 | ...actions
13 | });
--------------------------------------------------------------------------------
/vueInsomniaPlugin.js:
--------------------------------------------------------------------------------
1 | import { generatePlayer } from './insomnia';
2 |
3 | const VueInsomnia = {
4 | install(Vue) {
5 | // Create the video element with all it's attributes
6 | const vueInsomnia = generatePlayer();
7 |
8 | // Register the vueInsomnia method in all components
9 | Vue.mixin({
10 | methods: {
11 | vueInsomnia() {
12 | return {
13 | on() {
14 | vueInsomnia.play();
15 | },
16 | off() {
17 | vueInsomnia.pause();
18 | }
19 | };
20 | }
21 | }
22 | });
23 | }
24 | };
25 |
26 | export default VueInsomnia;
--------------------------------------------------------------------------------