1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- define(function(require, exports, module) {
- var key = require('./key');
- var FOCUS_CLASS = 'hotbox-focus';
- var RECEIVER_CLASS = 'hotbox-key-receiver';
- function KeyControl(hotbox) {
- var _this = this;
- var _receiver;
- var _actived = true;
- var _receiverIsSelfCreated = false;
- var $container = hotbox.$container;
- _createReceiver();
- _bindReceiver();
- _bindContainer();
- _active();
- function _createReceiver() {
- _receiver = document.createElement('input');
- _receiver.classList.add(RECEIVER_CLASS);
- $container.appendChild(_receiver);
- _receiverIsSelfCreated = true;
- }
- function _bindReceiver() {
- _receiver.onkeyup = _handle;
- _receiver.onkeypress = _handle;
- _receiver.onkeydown = _handle;
- _receiver.onfocus = _active;
- _receiver.onblur = _deactive;
- if (_receiverIsSelfCreated) {
- _receiver.oninput = function(e) { _receiver.value = null; };
- }
- }
- function _bindContainer() {
- $container.onmousedown = function(e) {
- _active();
- e.preventDefault();
- };
- }
- function _handle(keyEvent) {
- if (!_actived) return;
- hotbox.dispatch(keyEvent);
- }
- function _active() {
- _receiver.select();
- _receiver.focus();
- _actived = true;
- $container.classList.add(FOCUS_CLASS);
- }
- function _deactive() {
- _receiver.blur();
- _actived = false;
- $container.classList.remove(FOCUS_CLASS);
- }
- this.handle = _handle;
- this.active = _active;
- this.deactive = _deactive;
- }
- module.exports = KeyControl;
- });
|