springroll-keyboard
Version:
Keyboard is a plugin for [SpringRoll](http://github.com/SpringRoll/SpringRoll). It is designed to make working with the keyboard outside of text editing easier. Keyboard has capabilities for detecting key presses and releases, tracking pressed keys, custo
2 lines • 17.8 kB
JavaScript
/*! Keyboard 0.1.5 */
!function(){"use strict";!function(){var a=function(){var a=function(){},b={browser_parsers:[{regex:"(Pale[Mm]oon)/(\\d+)\\.(\\d+)\\.?(\\d+)?",family_replacement:"Pale Moon (Firefox Variant)",other:!0},{regex:"(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)",family_replacement:"Firefox Mobile"},{regex:"(Fennec)/(\\d+)\\.(\\d+)(pre)",family_replacment:"Firefox Mobile"},{regex:"(Fennec)/(\\d+)\\.(\\d+)",family_replacement:"Firefox Mobile"},{regex:"Mobile.*(Firefox)/(\\d+)\\.(\\d+)",family_replacement:"Firefox Mobile"},{regex:"(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)",family_replacement:"Firefox ($1)"},{regex:"(Firefox)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)",family_replacement:"Firefox Alpha"},{regex:"(Firefox)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)",family_replacement:"Firefox Beta"},{regex:"(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(a\\d+[a-z]*)",family_replacement:"Firefox Alpha"},{regex:"(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(b\\d+[a-z]*)",family_replacement:"Firefox Beta"},{regex:"(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?",family_replacement:"Firefox ($1)"},{regex:"(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"MicroB",tablet:!0},{regex:"(MozillaDeveloperPreview)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?"},{regex:"(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"Chrome Mobile"},{regex:"(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"Chrome Mobile iOS"},{regex:"(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile",family_replacement:"Chrome Mobile"},{regex:"(chromeframe)/(\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"Chrome Frame"},{regex:"(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iron|Iris|UP\\.Browser|Bunjaloo|Google Earth|Raven for Mac)/(\\d+)\\.(\\d+)\\.(\\d+)"},{regex:"(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Iron|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris)/(\\d+)\\.(\\d+)"},{regex:"(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)"},{regex:"(iCab|Lunascape|Opera|Android|Jasmine|Polaris|BREW) (\\d+)\\.(\\d+)\\.?(\\d+)?"},{regex:"(IEMobile)[ /](\\d+)\\.(\\d+)",family_replacement:"IE Mobile"},{regex:"(MSIE) (\\d+)\\.(\\d+).*XBLWP7",family_replacement:"IE Large Screen"},{regex:"(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)"},{regex:"(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?"},{regex:"(iPod).+Version/(\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"Mobile Safari",manufacturer:"Apple"},{regex:"(iPod).*Version/(\\d+)\\.(\\d+)",family_replacement:"Mobile Safari",manufacturer:"Apple"},{regex:"(iPod)",family_replacement:"Mobile Safari",manufacturer:"Apple"},{regex:"(iPhone).*Version/(\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"Mobile Safari",manufacturer:"Apple"},{regex:"(iPhone).*Version/(\\d+)\\.(\\d+)",family_replacement:"Mobile Safari",manufacturer:"Apple"},{regex:"(iPhone)",family_replacement:"Mobile Safari",manufacturer:"Apple"},{regex:"(iPad).*Version/(\\d+)\\.(\\d+)\\.(\\d+)",family_replacement:"Mobile Safari",tablet:!0,manufacturer:"Apple"},{regex:"(iPad).*Version/(\\d+)\\.(\\d+)",family_replacement:"Mobile Safari",tablet:!0,manufacturer:"Apple"},{regex:"(iPad)",family_replacement:"Mobile Safari",tablet:!0,manufacturer:"Apple"},{regex:"(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))?",other:!0,tablet:!0},{regex:"(AppleWebKit)/(\\d+)\\.?(\\d+)?\\+ .* Version/\\d+\\.\\d+.\\d+ Safari/",family_replacement:"WebKit Nightly"},{regex:"(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/",family_replacement:"Safari"},{regex:"(Safari)/\\d+"},{regex:"Trident(.*)rv.(\\d+)\\.(\\d+)",family_replacement:"IE"},{regex:"(MSIE) (\\d+)\\.(\\d+)",family_replacement:"IE"}],os_parsers:[{regex:"(Android) (\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+))?"},{regex:"(Android)\\-(\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+))?"},{regex:"(Android) Donut",os_v2_replacement:"2",os_v1_replacement:"1"},{regex:"(Android) Eclair",os_v2_replacement:"1",os_v1_replacement:"2"},{regex:"(Android) Froyo",os_v2_replacement:"2",os_v1_replacement:"2"},{regex:"(Android) Gingerbread",os_v2_replacement:"3",os_v1_replacement:"2"},{regex:"(Android) Honeycomb",os_v1_replacement:"3"},{regex:"(Silk-Accelerated=[a-z]{4,5})",os_replacement:"Android"},{regex:"(Windows Phone 6\\.5)"},{regex:"(Windows (?:NT 5\\.2|NT 5\\.1))",os_replacement:"Windows XP"},{regex:"(XBLWP7)",os_replacement:"Windows Phone OS"},{regex:"(Windows NT 6\\.1)",os_replacement:"Windows 7"},{regex:"(Windows NT 6\\.0)",os_replacement:"Windows Vista"},{regex:"(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\\.0|Windows Vista|Windows 2000)"},{regex:"(Windows NT 6\\.2)",os_replacement:"Windows 8"},{regex:"(Windows Phone 8)",os_replacement:"Windows Phone 8"},{regex:"(Windows NT 5\\.0)",os_replacement:"Windows 2000"},{regex:"(Windows Phone OS) (\\d+)\\.(\\d+)"},{regex:"(Windows ?Mobile)",os_replacement:"Windows Mobile"},{regex:"(WinNT4.0)",os_replacement:"Windows NT 4.0"},{regex:"(Win98)",os_replacement:"Windows 98"},{regex:"(Tizen)/(\\d+)\\.(\\d+)",other:!0},{regex:"(Mac OS X) (\\d+)[_.](\\d+)(?:[_.](\\d+))?",manufacturer:"Apple"},{regex:"(?:PPC|Intel) (Mac OS X)",manufacturer:"Apple"},{regex:"(CPU OS|iPhone OS) (\\d+)_(\\d+)(?:_(\\d+))?",os_replacement:"iOS",manufacturer:"Apple"},{regex:"(iPhone|iPad|iPod); Opera",os_replacement:"iOS",manufacturer:"Apple"},{regex:"(iPad); Opera",tablet:!0,manufacturer:"Apple"},{regex:"(iPhone|iPad|iPod).*Mac OS X.*Version/(\\d+)\\.(\\d+)",os_replacement:"iOS",manufacturer:"Apple"},{regex:"(Ubuntu|Kindle|Bada|Lubuntu|BackTrack|Red Hat|Slackware)/(\\d+)\\.(\\d+)"},{regex:"(Windows|OpenBSD|FreeBSD|NetBSD|Ubuntu|Kubuntu|Android|Arch Linux|CentOS|WeTab|Slackware)"},{regex:"(Linux|BSD)",other:!0}],mobile_os_families:["Windows Phone 6.5","Windows CE","Symbian OS"],mobile_browser_families:["Firefox Mobile","Opera Mobile","Opera Mini","Mobile Safari","webOS","IE Mobile","Playstation Portable","Nokia","Blackberry","Palm","Silk","Android","Maemo","Obigo","Netfront","AvantGo","Teleca","SEMC-Browser","Bolt","Iris","UP.Browser","Symphony","Minimo","Bunjaloo","Jasmine","Dolfin","Polaris","BREW","Chrome Mobile","Chrome Mobile iOS","UC Browser","Tizen Browser"]};a.parsers=["browser_parsers","os_parsers","mobile_os_families","mobile_browser_families"],a.types=["browser","os"],a.regexes=b||function(){var b={};return a.parsers.map(function(a){b[a]=[]}),b}(),a.families=function(){var b={};return a.types.map(function(a){b[a]=[]}),b}();var c,d,e=Array.prototype,f=(Object.prototype,Function.prototype,e.forEach),g=(e.indexOf,function(a,b){for(var c={},d=0;d<b.length&&!(c=b[d](a));d++);return c}),h=function(a,b){d(a,function(a){d(b,function(b){delete a[b]})})};d=c=function(a,b,c){if(a)if(f&&a.forEach===f)a.forEach(b,c);else if(a.length===+a.length)for(var d=0,e=a.length;e>d;d++)b.call(c,a[d],d,a);else for(var g in a)_.has(a,g)&&b.call(c,a[g],g,a)};var i=function(a){return!(!a||"undefined"==typeof a||a)},j=function(a){var b="";return a=a||{},i(a)&&i(a.major)&&(b+=a.major,i(a.minor)&&(b+="."+a.minor,i(a.patch)&&(b+="."+a.patch))),b},k=function(a){a=a||{};var b=j(a);return b&&(b=" "+b),a&&i(a.family)?a.family+b:""};return a.parse=function(b){var c=function(b){return a.regexes[b+"_parsers"].map(function(a){function c(b){var c=b.match(d);if(!c)return null;var f={};return f.family=(e?e.replace("$1",c[1]):c[1])||"other",f.tablet=a.tablet,f}var d=new RegExp(a.regex),e=a[("browser"===b?"family":b)+"_replacement"];a.major_version_replacement;return c})},d=function(){},e=c("browser"),f=c("os"),i=new d;i.source=b,i.browser=g(b,e),i.browser?(i.browser.name=k(i.browser),i.browser.version=j(i.browser)):i.browser={},i.os=g(b,f),i.os?(i.os.name=k(i.os),i.os.version=j(i.os)):i.os={};var l={};a.regexes.mobile_browser_families.map(function(a){l[a]=!0}),a.regexes.mobile_os_families.map(function(a){l[a]=!0});return h([i.browser,i.os],["tablet","man"]),i},a};namespace("springroll").Detect=a()}(),function(){var a,b,c=include("springroll.Detect").parse(navigator.userAgent);a=c.browser.family.indexOf("Safari")>=0?"Safari":c.browser.family.indexOf("Firefox")>=0?"Firefox":c.browser.family.indexOf("IE")>=0?"IE":"Chrome",c.os.name.indexOf("Windows")>=0?b="Windows":c.os.name.indexOf("Mac")>=0?b="Mac":c.os.name.indexOf("iOS")>=0?(b="Mac",a="Safari"):b="Linux";var d,e={cancel:3,backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":"Mac"==b&&"Firefox"!=a?126:19,caps_lock:20,esc:27,spacebar:32,pageup:33,pagedown:34,end:35,home:36,arrow_left:37,arrow_up:38,arrow_right:39,arrow_down:40,print_screen:"Linux"==b?42:"Mac"==b&&"Firefox"!=a?124:44,insert:45,"delete":46,scroll_lock:"Mac"==b&&"Firefox"!=a?125:145,OS:"Firefox"==a?"Mac"==b?224:91:[91,"Mac"==b?93:92],context_menu:"Mac"==b?0:93,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"\\":220,"[":219,"]":221,"'":222,"num_*":106,"num_+":107,num_enter:108,"num_-":109,"num_.":110,"num_/":111,num_lock:"Mac"==b?12:144,clear:"Mac"==b?12:144};for(d=65;90>=d;++d)e[String.fromCharCode(d+32)]=d;for(d=48;57>=d;++d)e[String.fromCharCode(d)]=d;for(d=96;105>=d;++d)e["num_"+(d-96)]=d;for(d=112;123>=d;++d)e["F"+(d-111)]=d;"Mac"==b?e.meta=e.command=e.OS:(e.meta=e.ctrl,e.command=0),namespace("springroll.keyboard").USLocale=e}(),function(){var a=include("springroll.Application"),b=include("springroll.Debug",!1),c=function(b,c){this._onFocusLost=this._onFocusLost.bind(this),this._onPaused=this._onPaused.bind(this),this._onResumed=this._onResumed.bind(this),this._update=this._update.bind(this),this._keyDown=this._keyDown.bind(this),this._keyUp=this._keyUp.bind(this),this.target=b,b.addEventListener("onblur",this._onFocusLost);var d=this._keysByCode={},f=this._keysByName={};this._activeCombos=[],this._updatedKeys=[],this.detectKeyCallback=null,this.detectCancelKey=null,this.detectModifiers=!1,this.modifiers=["ctrl","alt","shift","command"];for(var g in c){var h=c[g];Array.isArray(h)||(h=[h]);var i,j=null;for(i=0;i<h.length;++i)if(d[h[i]]){j=d[h[i]];break}for(j||(j=new e),j.addName(g),j.addCode(h),f[g]=j,i=0;i<h.length;++i)d[h[i]]=j}this.enabled=!0;var k=a.instance;k.on("paused",this._onPaused),k.on("resumed",this._onResumed)},d=c.prototype;d.addKeyDown=function(a,c,d){var e=this._keysByName[a];return e?void e.addListener(c,!1,a,!!d):void(b&&b.warn("No key found with name '"+a+"'"))},d.removeKeyDown=function(a,b){var c=this._keysByName[a];c&&c.removeListener(b,!1)},d.addKeyUp=function(a,c,d){var e=this._keysByName[a];return e?void e.addListener(c,!0,a,!!d):void(b&&b.warn("No key found with name '"+a+"'"))},d.removeKeyUp=function(a,b){var c=this._keysByName[a];c&&c.removeListener(b,!0)},d.setPreventDefaultOnKey=function(a,b){var c=this._keysByName[a];c&&(c.preventDownDefault=b)},d.addCombo=function(a,b,c){c!==!1&&(c=!0);for(var d,e=this._activeCombos,g=e.length-1;g>=0;--g)if(e[g].name==a&&e[g].preventDefault==c){d=e[g];break}d||(d=new f(a,c,this._keysByName),e.push(d)),d.addListener(b)},d.removeCombo=function(a,b){for(var c=this._activeCombos,d=c.length-1;d>=0;--d)c[d].name==a&&c[d].removeListener(b)&&(d==c.length-1?c.pop():c.splice(d,1))},d.detectNextKey=function(a,b,c){void 0===b?b=this._keysByName.esc:b&&(b=this._keysByName[b]),this.detectKeyCallback=a,this.detectCancelKey=b||null,this.detectModifiers=!!c},d.stopDetecting=function(){this.detectKeyCallback=null,this.detectCancelKey=null},d.justPressed=function(a){var b=this._keysByName[a];return b?b.justDown:!1},d.isDown=function(a){var b=this._keysByName[a];return b?b.isDown:!1},d.justReleased=function(a){var b=this._keysByName[a];return b?b.justUp:!1},Object.defineProperty(d,"enabled",{get:function(){return this._enabled},set:function(b){this._enabled=b;var c=this.target;c.removeEventListener("keydown",this._keyDown,!0),c.removeEventListener("keyup",this._keyUp,!0),a.instance.off("update",this._update),b?(c.addEventListener("keydown",this._keyDown,!0),c.addEventListener("keyup",this._keyUp,!0),a.instance.on("update",this._update,-1e3)):this.clearKeys()}}),d.clearKeys=function(){var a=this._keysByCode;if(a)for(var b in a){var c=a[b];c.isDown=c.justDown=c.justUp=!1}},d._onFocusLost=function(a){this.clearKeys()},d._onPaused=function(){this.enabled=!1},d._onResumed=function(){this.enabled=!0;var a=this.target;a&&a.focus&&a.focus()},d._update=function(a){var b=this._updatedKeys;if(b&&b.length){for(var c=b.length-1;c>=0;--c){var d=b[c];d.justDown=d.justUp=!1}b.length=0}},d._keyDown=function(a){var b,c=this._keysByCode[a.keyCode];if(this.detectKeyCallback){var d=this.detectKeyCallback;if(c&&c==this.detectCancelKey)this.detectKeyCallback=null,d(null);else{var f=!1,g=this.modifiers;if(this.detectModifiers)for(b=0;b<g.length;++b)if(c===this._keysByName[g[b]]){f=!0;break}if(!f){this.detectKeyCallback=null,c||(c=new e(a.keyCode,"key_"+a.keyCode),this._keysByCode[a.keyCode]=c,this._keysByName[c.name]=c);var h=c.preferredName;if(this.detectModifiers)for(b=0;b<g.length;++b)this._keysByName[g[b]].isDown&&(h=g[b]+" + "+h);d(h)}}}var i=!1;if(c&&!c.isDown)for(c.isDown=c.justDown=!0,-1==this._updatedKeys.indexOf(c)&&this._updatedKeys.push(c),c.trigger()&&(i=!0),b=this._activeCombos.length-1;b>=0;--b)this._activeCombos[b].testKeyDown(a.keyCode)&&(i=!0);return i?(a.preventDefault(),!0):void 0},d._keyUp=function(a){var b=this._keysByCode[a.keyCode],c=!1;if(b&&b.isDown){b.isDown=!1,b.justUp=!0,-1==this._updatedKeys.indexOf(b)&&this._updatedKeys.push(b),b.trigger()&&(c=!0);for(var d=this._activeCombos.length-1;d>=0;--d)this._activeCombos[d].testKeyUp(a.keyCode)&&(c=!0)}return c?(a.preventDefault(),!0):void 0},d.destroy=function(){this.enabled=!1;var b=a.instance;b&&(b.off("paused",this._onPaused),b.off("resumed",this._onResumed)),this.target.removeEventListener("onblur",this._onFocusLost);var c;for(c in this._keysByCode)this._keysByCode[c].destroy();for(c=this._activeCombos.length-1;c>=0;--c)this._activeCombos[c].destroy();this._keysByCode=this._keysByName=this._updatedKeys=this._activeCombos=this.target=null,this._update=this._keyDown=this._keyUp=this._onResumed=this._onPaused=this._onFocusLost=null},namespace("springroll").Keyboard=c;var e=function(){this.codes=[],this.names=[],this.preferredName=null,this.upListeners=[],this.downListeners=[],this.preventDownDefault=!1,this.preventUpDefault=!1,this.isDown=!1,this.justDown=!1,this.justUp=!1};d=e.prototype,d.addCode=function(a){if(Array.isArray(a))for(var b=0;b<a.length;++b)this.codes.push(a[b]);else this.codes.push(a)},d.addName=function(a){this.names.length||(this.preferredName=a),this.names.push(a)},d.addListener=function(a,b,c,d){var e=b?this.upListeners:this.downListeners;-1==e.indexOf(a)&&e.push(a),this.preferredName!=c&&(this.preferredName=c),a.preventDefault=d,d&&(b?this.preventUpDefault=!0:this.preventDownDefault=!0)},d.removeListener=function(a,b){var c=b?this.upListeners:this.downListeners,d=c.indexOf(a);d>=0&&(1>d?c.shift():c.splice(d,1));var e=!1;for(d=c.length-1;d>=0;--d)if(c[d]&&c[d].preventDefault){e=!0;break}b?this.preventUpDefault=e:this.preventDownDefault=e},d.trigger=function(){for(var a=this.isDown?this.downListeners:this.upListeners,b=0;b<a.length;++b)a[b](this.preferredName);return this.isDown?this.preventDownDefault:this.preventUpDefault},d.destroy=function(){this.codes=this.names=this.upListeners=this.downListeners=null};var f=function(a,c,d){this.name=a,this.listeners=[],this.steps=[],this.currentStep=0,this.preventDefault=c;for(var e=a.split(/\s+>\s+/g),f=0;f<e.length;++f){for(var g=e[f].split(/\s+\+\s+/g),h=[],i=0;i<g.length;++i){var j=g[i];"\\>"==j?j=">":"\\+"==j&&(j="+");var k=d[j];k?h.push({sated:!1,released:!1,codes:k.codes}):b&&b.warn("Issue while creating combo - no key with name "+j)}h.length&&this.steps.push(h)}};d=f.prototype,d.testKeyDown=function(a){var b,c,d=this.steps[this.currentStep],e=!1;for(b=0;b<d.length;++b)if(c=d[b],c.codes.indexOf(a)>=0){if(c.sated)break;c.sated=!0,e=!0;break}if(!e)return this.resetStep(),this.currentStep=0,!1;var f=!0;for(b=0;b<d.length;++b)if(c=d[b],!c.sated){f=!1;break}return f&&this.currentStep+1==this.steps.length&&(this.trigger(),this.resetStep(),this.currentStep=0),this.preventDefault},d.testKeyUp=function(a){var b,c,d=this.steps[this.currentStep],e=!1;for(b=0;b<d.length;++b)if(c=d[b],c.sated&&c.codes.indexOf(a)>=0){c.released=!0,e=!0;break}if(e){var f=!0;for(b=0;b<d.length;++b)if(!d[b].released){f=!1;break}f&&(this.resetStep(),++this.currentStep)}return e&&this.preventDefault},d.resetStep=function(){var a=this.steps[this.currentStep];for(i=0;i<a.length;++i)key=a[i],key.sated=key.released=!1},d.trigger=function(){for(var a=this.listeners,b=0;b<a.length;++b)a[b](this.name)},d.addListener=function(a){var b=this.listeners;-1==b.indexOf(a)&&b.push(a)},d.removeListener=function(a){var b=this.listeners,c=b.indexOf(a);return c>=0&&(1>c?b.shift():b.splice(c,1)),b.length<1},d.destroy=function(){this.listeners=this.steps=null}}(),function(){var a=include("springroll.Keyboard"),b=include("springroll.ApplicationPlugin"),c=include("springroll.keyboard.USLocale"),d=new b;d.setup=function(){this.options.add("keyboardLocale",c,!0),this.options.add("keyboardTarget",null,!0)},d.preload=function(b){var d=this.options;d.asDOMElement("keyboardTarget"),d.keepFocus=!0;var e=d.keyboardTarget||document,f=d.keyboardLocale||c;this.keyboard=new a(e,f),b()},d.teardown=function(){this.keyboard.destroy(),this.keyboard=null}}();}();