|
4 | 4 | * ZephyrJS is licensed under the MIT License. |
5 | 5 | * |
6 | 6 | * Consider contributing to the project! |
7 | | - * https://github.com/ZephyrStudio/ZephyrJS |
| 7 | + * https://github.com/ZephyrJS-Project/ZephyrJS |
8 | 8 | */ |
9 | 9 | const ZEPHYR = { VERSION: '23.9' }; |
10 | 10 | (function (exports) { |
@@ -73,25 +73,10 @@ const ZEPHYR = { VERSION: '23.9' }; |
73 | 73 | while (b = arr[i++]) |
74 | 74 | for (const k in b) tgt[k] = b[k]; |
75 | 75 | }; |
76 | | - u.toggleFullScreen = function (view) { |
77 | | - if (!view.fullscreenElement && |
78 | | - !view.mozFullScreenElement && !view.webkitFullscreenElement) { |
79 | | - if (view.requestFullscreen) { |
80 | | - view.requestFullscreen(); |
81 | | - } else if (view.mozRequestFullScreen) { |
82 | | - view.mozRequestFullScreen(); |
83 | | - } else if (view.webkitRequestFullscreen) { |
84 | | - view.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); |
85 | | - } |
86 | | - } else { |
87 | | - if (view.cancelFullScreen) { |
88 | | - view.cancelFullScreen(); |
89 | | - } else if (view.mozCancelFullScreen) { |
90 | | - view.mozCancelFullScreen(); |
91 | | - } else if (view.webkitCancelFullScreen) { |
92 | | - view.webkitCancelFullScreen(); |
93 | | - } |
94 | | - } |
| 76 | + u.toggleFullScreen = function (view = document.body) { |
| 77 | + view.requestFullScreen = view.requestFullScreen || view.webkitRequestFullScreen || view.mozRequestFullScreen || function () { return false }; |
| 78 | + document.cancelFullScreen = document.cancelFullScreen || document.webkitCancelFullScreen || document.mozCancelFullScreen || function () { return false }; |
| 79 | + (document.webkitIsFullScreen || document.mozFullScreen || false) ? document.cancelFullScreen() : view.requestFullScreen(); |
95 | 80 | } |
96 | 81 | return u; |
97 | 82 | })(index || {}); |
@@ -232,14 +217,22 @@ const ZEPHYR = { VERSION: '23.9' }; |
232 | 217 | })(File || {}); |
233 | 218 |
|
234 | 219 | var Keys = (function (k) { |
235 | | - k._map = new Map(), |
236 | | - k.down = function (key) { |
237 | | - if (k._map.size > 0 && k._map.has(key)) { |
238 | | - k._map.set(key, false); |
239 | | - return true; |
240 | | - } |
241 | | - return false; |
242 | | - }; |
| 220 | + k._map = new Map(); |
| 221 | + k._bind = new Map(); |
| 222 | + k.bind = function (key, fn, event = 'keydown') { |
| 223 | + if (fn) k._bind.set(key + event, fn); |
| 224 | + else { |
| 225 | + k._bind.delete(key + 'keydown'); |
| 226 | + k._bind.delete(key + 'keyup'); |
| 227 | + } |
| 228 | + } |
| 229 | + k.down = function (key) { |
| 230 | + if (k._map.size > 0 && k._map.has(key)) { |
| 231 | + k._map.set(key, false); |
| 232 | + return true; |
| 233 | + } |
| 234 | + return false; |
| 235 | + }; |
243 | 236 | k.fired = function (key) { |
244 | 237 | if (k._map.size > 0 && k._map.get(key)) { |
245 | 238 | k._map.set(key, false); |
@@ -340,8 +333,14 @@ const ZEPHYR = { VERSION: '23.9' }; |
340 | 333 | window.addEventListener('contextmenu', e => { e.preventDefault() }); |
341 | 334 |
|
342 | 335 | // KEYBOARD |
343 | | - window.addEventListener('keydown', e => { if (!Keys._map.has(e.code)) Keys._map.set(e.code, true) }); |
344 | | - window.addEventListener('keyup', e => { Keys._map.delete(e.code) }); |
| 336 | + window.addEventListener('keydown', e => { |
| 337 | + if (!Keys._map.has(e.code)) Keys._map.set(e.code, true) |
| 338 | + if (Keys._bind.has(e.code + 'keydown')) Keys._bind.get(e.code + 'keydown')(); |
| 339 | + }); |
| 340 | + window.addEventListener('keyup', e => { |
| 341 | + if (Keys._bind.has(e.code + 'keyup')) Keys._bind.get(e.code + 'keyup')(); |
| 342 | + Keys._map.delete(e.code); |
| 343 | + }); |
345 | 344 |
|
346 | 345 | // MOUSE |
347 | 346 | window.addEventListener('resize', () => { Mouse._bounds = Mouse._container.getBoundingClientRect() }); |
|
0 commit comments