VulpesOS/assets/webapps/keyboard.gaiamobile.org/js/keyboard/target_handlers.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

14 lines
No EOL
11 KiB
JavaScript

;'use strict';(function(exports){var DefaultTargetHandler=function(target,app){this.target=target;this.app=app;this.ignoreCommitActions=false;};DefaultTargetHandler.prototype.activate=function(){this.app.console.log('DefaultTargetHandler.activate()');this.app.feedbackManager.triggerFeedback(this.target);this.app.visualHighlightManager.show(this.target);};DefaultTargetHandler.prototype.longPress=function(){this.app.console.log('DefaultTargetHandler.longPress()');if(!('longPressValue'in this.target)){return;}
this.ignoreCommitActions=true;var keyCode=this.target.longPressKeyCode;var promise=Promise.resolve(this.app.inputMethodManager.currentIMEngine.click(keyCode));this.app.visualHighlightManager.hide(this.target);return promise;};DefaultTargetHandler.prototype.moveOut=function(){this.app.console.log('DefaultTargetHandler.moveOut()');this.app.visualHighlightManager.hide(this.target);};DefaultTargetHandler.prototype.moveIn=function(){this.app.console.log('DefaultTargetHandler.moveIn()');this.app.visualHighlightManager.show(this.target);};DefaultTargetHandler.prototype.commit=function(){this.app.console.log('DefaultTargetHandler.commit()');if(this.ignoreCommitActions){this.app.console.log('DefaultTargetHandler.commit()::return early');return;}
var keyCode=this.target.keyCode;var keyCodeUpper=this.target.keyCodeUpper;var engine=this.app.inputMethodManager.currentIMEngine;var code=this.app.upperCaseStateManager.isUpperCase?keyCodeUpper:keyCode;this.app.console.log('DefaultTargetHandler.commit()::engine.click',code);var promise=Promise.resolve(engine.click(code));this.app.visualHighlightManager.hide(this.target);return promise;};DefaultTargetHandler.prototype.cancel=function(){this.app.console.log('DefaultTargetHandler.cancel()');this.app.visualHighlightManager.hide(this.target);};DefaultTargetHandler.prototype.doubleTap=function(){this.app.console.log('DefaultTargetHandler.doubleTap()');return this.commit();};DefaultTargetHandler.prototype.newTargetActivate=function(){this.commit();this.ignoreCommitActions=true;};DefaultTargetHandler.prototype.move=function(){};var NullTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};NullTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);NullTargetHandler.prototype.activate=NullTargetHandler.prototype.moveIn=NullTargetHandler.prototype.moveOut=NullTargetHandler.prototype.commit=NullTargetHandler.prototype.cancel=NullTargetHandler.prototype.doubleTap=function(){};var SpaceKeyTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};SpaceKeyTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);SpaceKeyTargetHandler.prototype.longPress=function(){this.app.targetHandlersManager.activeTargetsManager.clearAllTargets();navigator.mozInputMethod.mgmt.hide();this.app.visualHighlightManager.hide(this.target);};var CandidateSelectionTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};CandidateSelectionTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);CandidateSelectionTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){this.app.console.log('CandidateSelectionTargetHandler.commit()::return early');return;}
this.app.candidatePanelManager.hideFullPanel();var engine=this.app.inputMethodManager.currentIMEngine;if(typeof engine.select==='function'){engine.select(this.target.text,this.target.data);}
this.app.visualHighlightManager.hide(this.target);};var BackspaceTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);this.deleteTimeout=undefined;this.deleteInterval=undefined;this.ignoreCommitActions=false;};BackspaceTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);BackspaceTargetHandler.prototype.REPEAT_RATE=50;BackspaceTargetHandler.prototype.REPEAT_TIMEOUT=500;BackspaceTargetHandler.prototype._sendDelete=function(isRepeat){var engine=this.app.inputMethodManager.currentIMEngine;engine.click(KeyEvent.DOM_VK_BACK_SPACE,null,isRepeat);};BackspaceTargetHandler.prototype.activate=function(){this.app.feedbackManager.triggerFeedback(this.target);this.app.visualHighlightManager.show(this.target);this.deleteTimeout=setTimeout(function(){this._sendDelete(true);this.deleteInterval=setInterval(function(){this._sendDelete(true);}.bind(this),this.REPEAT_RATE);}.bind(this),this.REPEAT_TIMEOUT);};BackspaceTargetHandler.prototype.moveOut=function(){this.app.visualHighlightManager.hide(this.target);clearTimeout(this.deleteTimeout);clearInterval(this.deleteInterval);};BackspaceTargetHandler.prototype.moveIn=function(){this.ignoreCommitActions=true;};BackspaceTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){this.app.console.log('BackspaceTargetHandler.commit()::return early');return;}
clearTimeout(this.deleteTimeout);clearInterval(this.deleteInterval);this._sendDelete(false);this.app.visualHighlightManager.hide(this.target);};BackspaceTargetHandler.prototype.cancel=function(){clearTimeout(this.deleteTimeout);clearInterval(this.deleteInterval);this.app.visualHighlightManager.hide(this.target);};var CompositeTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};CompositeTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);CompositeTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){this.app.console.log('CompositeTargetHandler.commit()::return early');return;}
var compositeString=this.target.compositeKey;var promise;var engine=this.app.inputMethodManager.currentIMEngine;if(engine.handleKey){promise=engine.handleKey({key:compositeString,printable:true});}else{promise=Promise.resolve();compositeString.split('').forEach(function(chr){promise=promise.then(function(){return engine.click(chr.charCodeAt(0));},function(e){console.error(e);return engine.click(chr.charCodeAt(0));});});}
this.app.visualHighlightManager.hide(this.target);return promise;};var PageSwitchingTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};PageSwitchingTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);PageSwitchingTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){this.app.console.log('PageSwitchingTargetHandler.commit()::return early');return;}
var page=this.target.targetPage;this.app.setLayoutPage(page);this.app.visualHighlightManager.hide(this.target);var currentIMEngine=this.app.inputMethodManager.currentIMEngine;if(typeof currentIMEngine.empty==='function'){currentIMEngine.empty();}};var CapsLockTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);this.isPreviouslyUpperCase=undefined;};CapsLockTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);CapsLockTargetHandler.prototype.isNewTargetActivated=false;CapsLockTargetHandler.prototype.activate=function(){this.isPreviouslyUpperCase=this.app.upperCaseStateManager.isUpperCase;this.app.upperCaseStateManager.switchUpperCaseState({isUpperCaseLocked:true});this.app.feedbackManager.triggerFeedback(this.target);this.app.visualHighlightManager.show(this.target);};CapsLockTargetHandler.prototype.commit=function(){if(this.isNewTargetActivated){this.app.upperCaseStateManager.switchUpperCaseState({isUpperCase:false,isUpperCaseLocked:false});}else{this.app.upperCaseStateManager.switchUpperCaseState({isUpperCase:!this.isPreviouslyUpperCase,isUpperCaseLocked:false});}
this.app.visualHighlightManager.hide(this.target);};CapsLockTargetHandler.prototype.doubleTap=function(){this.app.upperCaseStateManager.switchUpperCaseState({isUpperCaseLocked:true});this.app.visualHighlightManager.hide(this.target);};CapsLockTargetHandler.prototype.newTargetActivate=function(){this.isNewTargetActivated=true;};var SwitchKeyboardTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};SwitchKeyboardTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);SwitchKeyboardTargetHandler.prototype.longPress=function(){this.ignoreCommitActions=true;this.app.targetHandlersManager.activeTargetsManager.clearAllTargets();navigator.mozInputMethod.mgmt.showAll();this.app.visualHighlightManager.hide(this.target);};SwitchKeyboardTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){return;}
this.app.targetHandlersManager.activeTargetsManager.clearAllTargets();navigator.mozInputMethod.mgmt.next();this.app.visualHighlightManager.hide(this.target);};var ToggleCandidatePanelTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};ToggleCandidatePanelTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);ToggleCandidatePanelTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){this.app.console.log('ToggleCandidatePanelTargetHandler.commit()::return early');return;}
this.app.candidatePanelManager.toggleFullPanel();this.app.visualHighlightManager.hide(this.target);};var DismissSuggestionsTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};DismissSuggestionsTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);DismissSuggestionsTargetHandler.prototype.commit=function(){if(this.ignoreCommitActions){this.app.console.log('DismissSuggestionsTargetHandler.commit()::return early');return;}
var engine=this.app.inputMethodManager.currentIMEngine;if(typeof engine.dismissSuggestions==='function'){engine.dismissSuggestions();}
this.app.visualHighlightManager.hide(this.target);};var HandwritingPadTargetHandler=function(target,app){DefaultTargetHandler.apply(this,arguments);};HandwritingPadTargetHandler.prototype=Object.create(DefaultTargetHandler.prototype);HandwritingPadTargetHandler.prototype.activate=function(press){this.app.handwritingPadsManager.handlePressStart(press);};HandwritingPadTargetHandler.prototype.move=function(press){this.app.handwritingPadsManager.handlePressMove(press);};HandwritingPadTargetHandler.prototype.moveOut=function(press){};HandwritingPadTargetHandler.prototype.moveIn=function(press){this.app.handwritingPadsManager.handlePressStart(press);};HandwritingPadTargetHandler.prototype.commit=function(){this.app.handwritingPadsManager.handlePressEnd();};HandwritingPadTargetHandler.prototype.newTargetActivate=function(){};exports.DefaultTargetHandler=DefaultTargetHandler;exports.NullTargetHandler=NullTargetHandler;exports.SpaceKeyTargetHandler=SpaceKeyTargetHandler;exports.CandidateSelectionTargetHandler=CandidateSelectionTargetHandler;exports.BackspaceTargetHandler=BackspaceTargetHandler;exports.CompositeTargetHandler=CompositeTargetHandler;exports.PageSwitchingTargetHandler=PageSwitchingTargetHandler;exports.CapsLockTargetHandler=CapsLockTargetHandler;exports.SwitchKeyboardTargetHandler=SwitchKeyboardTargetHandler;exports.ToggleCandidatePanelTargetHandler=ToggleCandidatePanelTargetHandler;exports.DismissSuggestionsTargetHandler=DismissSuggestionsTargetHandler;exports.HandwritingPadTargetHandler=HandwritingPadTargetHandler;})(window);