simple-keyboard/build/index.js.map
Francisco Hodge b2f7bac585 Build update
2018-10-10 12:21:38 -04:00

1 line
72 KiB
Plaintext

{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///index.js","webpack:///webpack/bootstrap 7fa194db0a0cb33420cf","webpack:///./src/lib/index.js","webpack:///./src/lib/components/Keyboard.js","webpack:///./src/lib/services/PhysicalKeyboard.js","webpack:///./src/lib/services/KeyboardLayout.js","webpack:///./src/lib/services/Utilities.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__components_Keyboard__","_classCallCheck","instance","Constructor","TypeError","__WEBPACK_IMPORTED_MODULE_0__Keyboard_css__","__WEBPACK_IMPORTED_MODULE_1__services_PhysicalKeyboard__","__WEBPACK_IMPORTED_MODULE_2__services_KeyboardLayout__","__WEBPACK_IMPORTED_MODULE_3__services_Utilities__","_typeof","Symbol","iterator","obj","constructor","SimpleKeyboard","_this","handleButtonClicked","button","debug","options","onKeyPress","input","inputName","updatedInput","utilities","getUpdatedInput","caretPosition","maxLength","handleMaxLength","console","log","syncInstanceInputs","onChange","dispatch","section","replaceInput","clearInput","getInput","setInput","inputObj","setOptions","option","assign","render","clear","keyboardDOM","innerHTML","className","keyboardDOMClass","buttonElements","callback","window","keys","forEach","key","error","addButtonTheme","buttons","split","classNameItem","buttonTheme","classNameFound","map","class","includes","buttonThemeArray","push","join","removeButtonTheme","Array","isArray","length","buttonArray","index","filteredButtonArray","filter","item","splice","getButtonElement","output","buttonArr","handleCaret","handler","event","targetTagName","target","tagName","toLowerCase","selectionStart","document","addEventListener","onInit","onRender","layoutClass","layout","layoutName","getLayout","buttonThemesParsed","themeObj","themeButtons","themeButton","themeParsed","warn","theme","row","rIndex","rowArray","rowDOM","createElement","bIndex","fctBtnClass","getButtonClass","buttonThemeClass","buttonDisplayName","getButtonDisplayName","display","mergeDisplay","buttonDOM","onclick","setAttribute","buttonUID","buttonSpanDOM","appendChild","initialized","keyboardDOMQuery","arguments","undefined","querySelector","timers","camelCase","physicalKeyboardInterface","PhysicalKeyboard","simpleKeyboardInstance","initKeyboardListener","physicalKeyboardHighlight","buttonPressed","getSimpleKeyboardLayoutKey","style","backgroundColor","physicalKeyboardHighlightBgColor","color","physicalKeyboardHighlightTextColor","removeAttribute","code","toUpperCase","Number","isInteger","KeyboardLayout","default","shift","_createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","Utilities","buttonTypeClass","buttonWithoutBraces","replace","normalizeString","getDefaultDiplay","caretPos","removeAt","addStringAt","tabCharOnTab","newLineOnEnter","updateCaretPos","minus","isMaxLengthReached","Boolean","maxLengthReached","string","trim","reduce","word","slice","{bksp}","{backspace}","{enter}","{shift}","{shiftleft}","{shiftright}","{alt}","{s}","{tab}","{lock}","{capslock}","{accept}","{space}","{//}","{esc}","{escape}","{f1}","{f2}","{f3}","{f4}","{f5}","{f6}","{f7}","{f8}","{f9}","{f10}","{f11}","{f12}","{numpaddivide}","{numlock}","{arrowup}","{arrowleft}","{arrowdown}","{arrowright}","{prtscr}","{scrolllock}","{pause}","{insert}","{home}","{pageup}","{delete}","{end}","{pagedown}","{numpadmultiply}","{numpadsubtract}","{numpadadd}","{numpadenter}","{period}","{numpaddecimal}","{numpad0}","{numpad1}","{numpad2}","{numpad3}","{numpad4}","{numpad5}","{numpad6}","{numpad7}","{numpad8}","{numpad9}","source","position","prevTwoChars","emojiMatched","emojiMatchedReg","substring","match","substr","currentInput","condition"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SimpleKeyboard\"] = factory();\n\telse\n\t\troot[\"SimpleKeyboard\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SimpleKeyboard\"] = factory();\n\telse\n\t\troot[\"SimpleKeyboard\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Keyboard__ = __webpack_require__(2);\n/* harmony default export */ __webpack_exports__[\"default\"] = (__WEBPACK_IMPORTED_MODULE_0__components_Keyboard__[\"a\" /* default */]);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Keyboard_css__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Keyboard_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__Keyboard_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__services_PhysicalKeyboard__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__services_KeyboardLayout__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__services_Utilities__ = __webpack_require__(6);\nvar _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}// Services\nvar SimpleKeyboard=function SimpleKeyboard(){var _this=this;_classCallCheck(this,SimpleKeyboard);this.handleButtonClicked=function(button){var debug=_this.options.debug;/**\r\n * Ignoring placeholder buttons\r\n */if(button==='{//}')return false;/**\r\n * Calling onKeyPress\r\n */if(typeof _this.options.onKeyPress===\"function\")_this.options.onKeyPress(button);if(!_this.input[_this.options.inputName])_this.input[_this.options.inputName]='';var updatedInput=_this.utilities.getUpdatedInput(button,_this.input[_this.options.inputName],_this.options,_this.caretPosition);if(_this.input[_this.options.inputName]!==updatedInput){/**\r\n * If maxLength and handleMaxLength yield true, halting\r\n */if(_this.options.maxLength&&_this.utilities.handleMaxLength(_this.input,_this.options,updatedInput)){return false;}_this.input[_this.options.inputName]=updatedInput;if(debug)console.log('Input changed:',_this.input);/**\r\n * syncInstanceInputs\r\n */if(_this.options.syncInstanceInputs)_this.syncInstanceInputs(_this.input);/**\r\n * Calling onChange\r\n */if(typeof _this.options.onChange===\"function\")_this.options.onChange(_this.input[_this.options.inputName]);}if(debug){console.log(\"Key pressed:\",button);}};this.syncInstanceInputs=function(){_this.dispatch(function(section){section.replaceInput(_this.input);});};this.clearInput=function(inputName){inputName=inputName||_this.options.inputName;_this.input[_this.options.inputName]='';/**\r\n * syncInstanceInputs\r\n */if(_this.options.syncInstanceInputs)_this.syncInstanceInputs(_this.input);};this.getInput=function(inputName){inputName=inputName||_this.options.inputName;/**\r\n * syncInstanceInputs\r\n */if(_this.options.syncInstanceInputs)_this.syncInstanceInputs(_this.input);return _this.input[_this.options.inputName];};this.setInput=function(input,inputName){inputName=inputName||_this.options.inputName;_this.input[inputName]=input;/**\r\n * syncInstanceInputs\r\n */if(_this.options.syncInstanceInputs)_this.syncInstanceInputs(_this.input);};this.replaceInput=function(inputObj){_this.input=inputObj;};this.setOptions=function(option){option=option||{};_this.options=Object.assign(_this.options,option);_this.render();};this.clear=function(){_this.keyboardDOM.innerHTML='';_this.keyboardDOM.className=_this.keyboardDOMClass;_this.buttonElements={};};this.dispatch=function(callback){if(!window['SimpleKeyboardInstances']){console.error(\"SimpleKeyboardInstances is not defined. Dispatch cannot be called.\");return false;}return Object.keys(window['SimpleKeyboardInstances']).forEach(function(key){callback(window['SimpleKeyboardInstances'][key],key);});};this.addButtonTheme=function(buttons,className){if(!className||!buttons)return false;buttons.split(\" \").forEach(function(button){className.split(\" \").forEach(function(classNameItem){if(!_this.options.buttonTheme)_this.options.buttonTheme=[];var classNameFound=false;/**\r\n * If class is already defined, we add button to class definition\r\n */_this.options.buttonTheme.map(function(buttonTheme){if(buttonTheme.class.split(\" \").includes(classNameItem)){classNameFound=true;var buttonThemeArray=buttonTheme.buttons.split(\" \");if(!buttonThemeArray.includes(button)){classNameFound=true;buttonThemeArray.push(button);buttonTheme.buttons=buttonThemeArray.join(\" \");}}return buttonTheme;});/**\r\n * If class is not defined, we create a new entry\r\n */if(!classNameFound){_this.options.buttonTheme.push({class:classNameItem,buttons:buttons});}});});_this.render();};this.removeButtonTheme=function(buttons,className){/**\r\n * When called with empty parameters, remove all button themes\r\n */if(!buttons&&!className){_this.options.buttonTheme=[];_this.render();return false;}/**\r\n * If buttons are passed and buttonTheme has items\r\n */if(buttons&&Array.isArray(_this.options.buttonTheme)&&_this.options.buttonTheme.length){var buttonArray=buttons.split(\" \");buttonArray.forEach(function(button,key){_this.options.buttonTheme.map(function(buttonTheme,index){/**\r\n * If className is set, we affect the buttons only for that class\r\n * Otherwise, we afect all classes\r\n */if(className&&className.includes(buttonTheme.class)||!className){var filteredButtonArray=void 0;if(buttonArray.includes(button)){filteredButtonArray=buttonTheme.buttons.split(\" \").filter(function(item){return item!==button;});}/**\r\n * If buttons left, return them, otherwise, remove button Theme\r\n */if(filteredButtonArray.length){buttonTheme.buttons=filteredButtonArray.join(\" \");}else{_this.options.buttonTheme.splice(index,1);buttonTheme=null;}}return buttonTheme;});});_this.render();}};this.getButtonElement=function(button){var output=void 0;var buttonArr=_this.buttonElements[button];if(buttonArr){if(buttonArr.length>1){output=buttonArr;}else{output=buttonArr[0];}}return output;};this.handleCaret=function(){if(_this.options.debug){console.log(\"Caret handling started\");}var handler=function handler(event){var targetTagName=event.target.tagName.toLowerCase();if(targetTagName===\"textarea\"||targetTagName===\"input\"){_this.caretPosition=event.target.selectionStart;if(_this.options.debug){console.log('Caret at: ',event.target.selectionStart,event.target.tagName.toLowerCase());}}};document.addEventListener(\"keyup\",handler);document.addEventListener(\"mouseup\",handler);document.addEventListener(\"touchend\",handler);};this.onInit=function(){if(_this.options.debug){console.log(\"Initialized\");}/**\r\n * Caret handling\r\n */_this.handleCaret();if(typeof _this.options.onInit===\"function\")_this.options.onInit();};this.onRender=function(){if(typeof _this.options.onRender===\"function\")_this.options.onRender();};this.render=function(){/**\r\n * Clear keyboard\r\n */_this.clear();var layoutClass=_this.options.layout?\"hg-layout-custom\":'hg-layout-'+_this.options.layoutName;var layout=_this.options.layout||__WEBPACK_IMPORTED_MODULE_2__services_KeyboardLayout__[\"a\" /* default */].getLayout(_this.options.layoutName);/**\r\n * Account for buttonTheme, if set\r\n */var buttonThemesParsed={};if(Array.isArray(_this.options.buttonTheme)){_this.options.buttonTheme.forEach(function(themeObj){if(themeObj.buttons&&themeObj.class){var themeButtons=themeObj.buttons.split(' ');if(Array.isArray(themeButtons)){themeButtons.forEach(function(themeButton){var themeParsed=buttonThemesParsed[themeButton];// If the button has already been added\nif(themeParsed)buttonThemesParsed[themeButton]=themeParsed+' '+themeObj.class;else buttonThemesParsed[themeButton]=themeObj.class;});}}else{console.warn('buttonTheme row is missing the \"buttons\" or the \"class\". Please check the documentation.');}});}/**\r\n * Adding themeClass, layoutClass to keyboardDOM\r\n */_this.keyboardDOM.className+=' '+_this.options.theme+' '+layoutClass;/**\r\n * Iterating through each row\r\n */layout[_this.options.layoutName].forEach(function(row,rIndex){var rowArray=row.split(' ');/**\r\n * Creating empty row\r\n */var rowDOM=document.createElement('div');rowDOM.className+=\"hg-row\";/**\r\n * Iterating through each button in row\r\n */rowArray.forEach(function(button,bIndex){var fctBtnClass=_this.utilities.getButtonClass(button);var buttonThemeClass=buttonThemesParsed[button];var buttonDisplayName=_this.utilities.getButtonDisplayName(button,_this.options.display,_this.options.mergeDisplay);/**\r\n * Creating button\r\n */var buttonDOM=document.createElement('div');buttonDOM.className+='hg-button '+fctBtnClass+(buttonThemeClass?\" \"+buttonThemeClass:\"\");buttonDOM.onclick=function(){return _this.handleButtonClicked(button);};/**\r\n * Adding identifier\r\n */buttonDOM.setAttribute(\"data-skBtn\",button);/**\r\n * Adding unique id\r\n * Since there's no limit on spawning same buttons, the unique id ensures you can style every button\r\n */var buttonUID=_this.options.layoutName+'-r'+rIndex+'b'+bIndex;buttonDOM.setAttribute(\"data-skBtnUID\",buttonUID);/**\r\n * Adding button label to button\r\n */var buttonSpanDOM=document.createElement('span');buttonSpanDOM.innerHTML=buttonDisplayName;buttonDOM.appendChild(buttonSpanDOM);/**\r\n * Adding to buttonElements\r\n */if(!_this.buttonElements[button])_this.buttonElements[button]=[];_this.buttonElements[button].push(buttonDOM);/**\r\n * Appending button to row\r\n */rowDOM.appendChild(buttonDOM);});/**\r\n * Appending row to keyboard\r\n */_this.keyboardDOM.appendChild(rowDOM);});/**\r\n * Calling onRender\r\n */_this.onRender();if(!_this.initialized){_this.initialized=true;/**\r\n * Calling onInit\r\n */_this.onInit();}};var keyboardDOMQuery=typeof(arguments.length<=0?undefined:arguments[0])===\"string\"?arguments.length<=0?undefined:arguments[0]:'.simple-keyboard';var options=_typeof(arguments.length<=0?undefined:arguments[0])===\"object\"?arguments.length<=0?undefined:arguments[0]:arguments.length<=1?undefined:arguments[1];if(!options)options={};/**\r\n * Initializing Utilities\r\n */this.utilities=new __WEBPACK_IMPORTED_MODULE_3__services_Utilities__[\"a\" /* default */](this);/**\r\n * Processing options\r\n */this.keyboardDOM=document.querySelector(keyboardDOMQuery);this.options=options;this.options.layoutName=this.options.layoutName||\"default\";this.options.theme=this.options.theme||\"hg-theme-default\";this.options.inputName=this.options.inputName||\"default\";this.input={};this.input[this.options.inputName]='';this.keyboardDOMClass=keyboardDOMQuery.split('.').join(\"\");this.timers={};this.buttonElements={};/**\r\n * Rendering keyboard\r\n */if(this.keyboardDOM)this.render();else console.error('\"'+keyboardDOMQuery+'\" was not found in the DOM.');/**\r\n * Saving instance\r\n * This enables multiple simple-keyboard support with easier management\r\n */if(!window['SimpleKeyboardInstances'])window['SimpleKeyboardInstances']={};window['SimpleKeyboardInstances'][this.utilities.camelCase(this.keyboardDOMClass)]=this;/**\r\n * Physical Keyboard support\r\n */this.physicalKeyboardInterface=new __WEBPACK_IMPORTED_MODULE_1__services_PhysicalKeyboard__[\"a\" /* default */](this);};/* harmony default export */ __webpack_exports__[\"a\"] = (SimpleKeyboard);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}var PhysicalKeyboard=function PhysicalKeyboard(simpleKeyboardInstance){var _this=this;_classCallCheck(this,PhysicalKeyboard);this.initKeyboardListener=function(){// Normal Keyboard\ndocument.addEventListener(\"keydown\",function(event){if(_this.simpleKeyboardInstance.options.physicalKeyboardHighlight){var buttonPressed=_this.getSimpleKeyboardLayoutKey(event);_this.simpleKeyboardInstance.dispatch(function(instance){var buttonDOM=instance.getButtonElement(buttonPressed)||instance.getButtonElement('{'+buttonPressed+'}');if(buttonDOM){buttonDOM.style.backgroundColor=_this.simpleKeyboardInstance.options.physicalKeyboardHighlightBgColor||\"#9ab4d0\";buttonDOM.style.color=_this.simpleKeyboardInstance.options.physicalKeyboardHighlightTextColor||\"white\";}});}});// Removing button style on keyup\ndocument.addEventListener(\"keyup\",function(event){if(_this.simpleKeyboardInstance.options.physicalKeyboardHighlight){var buttonPressed=_this.getSimpleKeyboardLayoutKey(event);_this.simpleKeyboardInstance.dispatch(function(instance){var buttonDOM=instance.getButtonElement(buttonPressed)||instance.getButtonElement('{'+buttonPressed+'}');if(buttonDOM){buttonDOM.removeAttribute(\"style\");}});}});};this.getSimpleKeyboardLayoutKey=function(event){if(_this.simpleKeyboardInstance.options.debug){console.log(event);}var output=void 0;if(event.code.includes(\"Numpad\")||event.code.includes(\"Shift\")||event.code.includes(\"Space\")||event.code.includes(\"Backspace\")||event.code.includes(\"Control\")||event.code.includes(\"Alt\")||event.code.includes(\"Meta\")){output=event.code;}else{output=event.key;}/**\r\n * If button is not uppercase, casting to lowercase\r\n */if(output!==output.toUpperCase()||event.code[0]===\"F\"&&Number.isInteger(Number(event.code[1]))&&event.code.length<=3){output=output.toLowerCase();}return output;};this.simpleKeyboardInstance=simpleKeyboardInstance;if(!window['SimpleKeyboardPhysicalKeyboardInit'])window['SimpleKeyboardPhysicalKeyboardInit']=true;else return false;this.initKeyboardListener();};/* harmony default export */ __webpack_exports__[\"a\"] = (PhysicalKeyboard);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}var KeyboardLayout=function KeyboardLayout(){_classCallCheck(this,KeyboardLayout);};KeyboardLayout.getLayout=function(layout){if(layout===\"qwerty\"){return{'default':['` 1 2 3 4 5 6 7 8 9 0 - = {bksp}','{tab} q w e r t y u i o p [ ] \\\\','{lock} a s d f g h j k l ; \\' {enter}','{shift} z x c v b n m , . / {shift}','.com @ {space}'],'shift':['~ ! @ # $ % ^ & * ( ) _ + {bksp}','{tab} Q W E R T Y U I O P { } |','{lock} A S D F G H J K L : \" {enter}','{shift} Z X C V B N M < > ? {shift}','.com @ {space}']};}else if(layout===\"numeric\"){return{'default':['1 2 3','4 5 6','7 8 9','{//} 0 {bksp}']};}else{return KeyboardLayout.getLayout(\"qwerty\");}};/* harmony default export */ __webpack_exports__[\"a\"] = (KeyboardLayout);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if(\"value\"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}var Utilities=function(){function Utilities(simpleKeyboardInstance){var _this=this;_classCallCheck(this,Utilities);this.getButtonClass=function(button){var buttonTypeClass=button.includes(\"{\")&&button.includes(\"}\")&&button!=='{//}'?\"functionBtn\":\"standardBtn\";var buttonWithoutBraces=button.replace(\"{\",\"\").replace(\"}\",\"\");var buttonNormalized=buttonTypeClass===\"standardBtn\"?_this.normalizeString(buttonWithoutBraces):\" hg-button-\"+buttonWithoutBraces;return\"hg-\"+buttonTypeClass+buttonNormalized;};this.getButtonDisplayName=function(button,display,mergeDisplay){if(mergeDisplay){display=Object.assign({},_this.getDefaultDiplay(),display);}else{display=display||_this.getDefaultDiplay();}return display[button]||button;};this.getUpdatedInput=function(button,input,options,caretPos){var output=input;if((button===\"{bksp}\"||button===\"{backspace}\")&&output.length>0){output=_this.removeAt(output,caretPos);}else if(button===\"{space}\")output=_this.addStringAt(output,\" \",caretPos);else if(button===\"{tab}\"&&!(typeof options.tabCharOnTab===\"boolean\"&&options.tabCharOnTab===false)){output=_this.addStringAt(output,\"\\t\",caretPos);}else if((button===\"{enter}\"||button===\"{numpadenter}\")&&options.newLineOnEnter)output=_this.addStringAt(output,\"\\n\",caretPos);else if(button.includes(\"numpad\")&&Number.isInteger(Number(button[button.length-2]))){output=_this.addStringAt(output,button[button.length-2],caretPos);}else if(button===\"{numpaddivide}\")output=_this.addStringAt(output,'/',caretPos);else if(button===\"{numpadmultiply}\")output=_this.addStringAt(output,'*',caretPos);else if(button===\"{numpadsubtract}\")output=_this.addStringAt(output,'-',caretPos);else if(button===\"{numpadadd}\")output=_this.addStringAt(output,'+',caretPos);else if(button===\"{numpadadd}\")output=_this.addStringAt(output,'+',caretPos);else if(button===\"{numpaddecimal}\")output=_this.addStringAt(output,'.',caretPos);else if(button===\"{\"||button===\"}\")output=_this.addStringAt(output,button,caretPos);else if(!button.includes(\"{\")&&!button.includes(\"}\"))output=_this.addStringAt(output,button,caretPos);return output;};this.updateCaretPos=function(length,minus){if(minus){if(_this.simpleKeyboardInstance.caretPosition>0)_this.simpleKeyboardInstance.caretPosition=_this.simpleKeyboardInstance.caretPosition-length;}else{_this.simpleKeyboardInstance.caretPosition=_this.simpleKeyboardInstance.caretPosition+length;}};this.isMaxLengthReached=function(){return Boolean(_this.maxLengthReached);};this.camelCase=function(string){return string.toLowerCase().trim().split(/[.\\-_\\s]/g).reduce(function(string,word){return string+word[0].toUpperCase()+word.slice(1);});};this.simpleKeyboardInstance=simpleKeyboardInstance;}_createClass(Utilities,[{key:\"normalizeString\",value:function normalizeString(string){var output=void 0;if(string===\"@\")output='at';else if(string===\",\")output='comma';else if(string===\".\")output='dot';else if(string===\"\\\\\")output='backslash';else if(string===\"/\")output='fordardslash';else if(string===\"*\")output='asterisk';else if(string===\"&\")output='ampersand';else if(string===\"$\")output='dollarsign';else if(string===\"=\")output='equals';else if(string===\"+\")output='plus';else if(string===\"-\")output='minus';else if(string===\"'\")output='apostrophe';else if(string===\";\")output='colon';else if(string===\"[\")output='openbracket';else if(string===\"]\")output='closebracket';else if(string===\"//\")output='emptybutton';else if(string===\".com\")output='com';else output='';return output?\" hg-button-\"+output:'';}},{key:\"getDefaultDiplay\",value:function getDefaultDiplay(){return{'{bksp}':'backspace','{backspace}':'backspace','{enter}':'< enter','{shift}':'shift','{shiftleft}':'shift','{shiftright}':'shift','{alt}':'alt','{s}':'shift','{tab}':'tab','{lock}':'caps','{capslock}':'caps','{accept}':'Submit','{space}':' ','{//}':' ',\"{esc}\":\"esc\",\"{escape}\":\"esc\",\"{f1}\":\"f1\",\"{f2}\":\"f2\",\"{f3}\":\"f3\",\"{f4}\":\"f4\",\"{f5}\":\"f5\",\"{f6}\":\"f6\",\"{f7}\":\"f7\",\"{f8}\":\"f8\",\"{f9}\":\"f9\",\"{f10}\":\"f10\",\"{f11}\":\"f11\",\"{f12}\":\"f12\",'{numpaddivide}':'/','{numlock}':'lock',\"{arrowup}\":\"↑\",\"{arrowleft}\":\"←\",\"{arrowdown}\":\"↓\",\"{arrowright}\":\"→\",\"{prtscr}\":\"print\",\"{scrolllock}\":\"scroll\",\"{pause}\":\"pause\",\"{insert}\":\"ins\",\"{home}\":\"home\",\"{pageup}\":\"up\",\"{delete}\":\"del\",\"{end}\":\"end\",\"{pagedown}\":\"down\",\"{numpadmultiply}\":\"*\",\"{numpadsubtract}\":\"-\",\"{numpadadd}\":\"+\",\"{numpadenter}\":\"enter\",\"{period}\":\".\",\"{numpaddecimal}\":\".\",\"{numpad0}\":\"0\",\"{numpad1}\":\"1\",\"{numpad2}\":\"2\",\"{numpad3}\":\"3\",\"{numpad4}\":\"4\",\"{numpad5}\":\"5\",\"{numpad6}\":\"6\",\"{numpad7}\":\"7\",\"{numpad8}\":\"8\",\"{numpad9}\":\"9\"};}},{key:\"addStringAt\",value:function addStringAt(source,string,position){var output=void 0;if(this.simpleKeyboardInstance.options.debug){console.log(\"Caret at:\",position);}if(!position&&position!==0){output=source+string;}else{output=[source.slice(0,position),string,source.slice(position)].join('');/**\r\n * Avoid caret position change when maxLength is set\r\n */if(!this.isMaxLengthReached()){this.updateCaretPos(string.length);}}return output;}},{key:\"removeAt\",value:function removeAt(source,position){var output=void 0;var prevTwoChars=void 0;var emojiMatched=void 0;var emojiMatchedReg=/([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;/**\r\n * Emojis are made out of two characters, so we must take a custom approach to trim them.\r\n * For more info: https://mathiasbynens.be/notes/javascript-unicode\r\n */if(position&&position>=0){prevTwoChars=source.substring(position-2,position);emojiMatched=prevTwoChars.match(emojiMatchedReg);if(emojiMatched){output=source.substr(0,position-2)+source.substr(position);this.updateCaretPos(2,true);}else{output=source.substr(0,position-1)+source.substr(position);this.updateCaretPos(1,true);}}else{prevTwoChars=source.slice(-2);emojiMatched=prevTwoChars.match(emojiMatchedReg);if(emojiMatched){output=source.slice(0,-2);this.updateCaretPos(2,true);}else{output=source.slice(0,-1);this.updateCaretPos(1,true);}}return output;}},{key:\"handleMaxLength\",value:function handleMaxLength(inputObj,options,updatedInput){var maxLength=options.maxLength;var currentInput=inputObj[options.inputName];var condition=currentInput.length===maxLength;if(/**\r\n * If pressing this button won't add more characters\r\n * We exit out of this limiter function\r\n */updatedInput.length<=currentInput.length){return false;}if(Number.isInteger(maxLength)){if(options.debug){console.log(\"maxLength (num) reached:\",condition);}if(condition){this.maxLengthReached=true;return true;}else{this.maxLengthReached=false;return false;}}if((typeof maxLength===\"undefined\"?\"undefined\":_typeof(maxLength))===\"object\"){var _condition=currentInput.length===maxLength[options.inputName];if(options.debug){console.log(\"maxLength (obj) reached:\",_condition);}if(_condition){this.maxLengthReached=true;return true;}else{this.maxLengthReached=false;return false;}}}}]);return Utilities;}();/* harmony default export */ __webpack_exports__[\"a\"] = (Utilities);\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// index.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 7fa194db0a0cb33420cf","import SimpleKeyboard from './components/Keyboard';\r\nexport default SimpleKeyboard;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/index.js","import './Keyboard.css';\r\n\r\n// Services\r\nimport PhysicalKeyboard from '../services/PhysicalKeyboard';\r\nimport KeyboardLayout from '../services/KeyboardLayout';\r\nimport Utilities from '../services/Utilities';\r\n\r\nclass SimpleKeyboard {\r\n constructor(...params){\r\n let keyboardDOMQuery = typeof params[0] === \"string\" ? params[0] : '.simple-keyboard';\r\n let options = typeof params[0] === \"object\" ? params[0] : params[1];\r\n\r\n if(!options)\r\n options = {};\r\n\r\n /**\r\n * Initializing Utilities\r\n */\r\n this.utilities = new Utilities(this);\r\n\r\n /**\r\n * Processing options\r\n */\r\n this.keyboardDOM = document.querySelector(keyboardDOMQuery);\r\n this.options = options;\r\n this.options.layoutName = this.options.layoutName || \"default\";\r\n this.options.theme = this.options.theme || \"hg-theme-default\";\r\n this.options.inputName = this.options.inputName || \"default\";\r\n this.input = {};\r\n this.input[this.options.inputName] = '';\r\n this.keyboardDOMClass = keyboardDOMQuery.split('.').join(\"\");\r\n this.timers = {};\r\n this.buttonElements = {};\r\n\r\n /**\r\n * Rendering keyboard\r\n */\r\n if(this.keyboardDOM)\r\n this.render();\r\n else\r\n console.error(`\"${keyboardDOMQuery}\" was not found in the DOM.`);\r\n\r\n /**\r\n * Saving instance\r\n * This enables multiple simple-keyboard support with easier management\r\n */\r\n if(!window['SimpleKeyboardInstances'])\r\n window['SimpleKeyboardInstances'] = {};\r\n \r\n window['SimpleKeyboardInstances'][this.utilities.camelCase(this.keyboardDOMClass)] = this;\r\n\r\n /**\r\n * Physical Keyboard support\r\n */\r\n this.physicalKeyboardInterface = new PhysicalKeyboard(this);\r\n }\r\n\r\n handleButtonClicked = (button) => {\r\n let debug = this.options.debug;\r\n\r\n /**\r\n * Ignoring placeholder buttons\r\n */\r\n if(button === '{//}')\r\n return false;\r\n\r\n /**\r\n * Calling onKeyPress\r\n */\r\n if(typeof this.options.onKeyPress === \"function\")\r\n this.options.onKeyPress(button);\r\n \r\n if(!this.input[this.options.inputName])\r\n this.input[this.options.inputName] = '';\r\n\r\n let updatedInput = this.utilities.getUpdatedInput(button, this.input[this.options.inputName], this.options, this.caretPosition);\r\n\r\n if(this.input[this.options.inputName] !== updatedInput){\r\n\r\n /**\r\n * If maxLength and handleMaxLength yield true, halting\r\n */\r\n if(this.options.maxLength && this.utilities.handleMaxLength(this.input, this.options, updatedInput)){\r\n return false;\r\n }\r\n\r\n this.input[this.options.inputName] = updatedInput;\r\n\r\n if(debug)\r\n console.log('Input changed:', this.input);\r\n\r\n /**\r\n * syncInstanceInputs\r\n */\r\n if(this.options.syncInstanceInputs)\r\n this.syncInstanceInputs(this.input);\r\n\r\n /**\r\n * Calling onChange\r\n */\r\n if(typeof this.options.onChange === \"function\")\r\n this.options.onChange(this.input[this.options.inputName]);\r\n }\r\n \r\n if(debug){\r\n console.log(\"Key pressed:\", button);\r\n }\r\n }\r\n\r\n syncInstanceInputs = () => {\r\n this.dispatch((section) => {\r\n section.replaceInput(this.input);\r\n });\r\n }\r\n\r\n clearInput = (inputName) => {\r\n inputName = inputName || this.options.inputName;\r\n this.input[this.options.inputName] = '';\r\n\r\n /**\r\n * syncInstanceInputs\r\n */\r\n if(this.options.syncInstanceInputs)\r\n this.syncInstanceInputs(this.input);\r\n }\r\n\r\n getInput = (inputName) => {\r\n inputName = inputName || this.options.inputName;\r\n\r\n /**\r\n * syncInstanceInputs\r\n */\r\n if(this.options.syncInstanceInputs)\r\n this.syncInstanceInputs(this.input);\r\n\r\n return this.input[this.options.inputName];\r\n }\r\n\r\n setInput = (input, inputName) => {\r\n inputName = inputName || this.options.inputName;\r\n this.input[inputName] = input;\r\n\r\n /**\r\n * syncInstanceInputs\r\n */\r\n if(this.options.syncInstanceInputs)\r\n this.syncInstanceInputs(this.input);\r\n }\r\n\r\n replaceInput = (inputObj) => {\r\n this.input = inputObj;\r\n }\r\n\r\n setOptions = option => {\r\n option = option || {};\r\n this.options = Object.assign(this.options, option);\r\n this.render();\r\n }\r\n\r\n clear = () => {\r\n this.keyboardDOM.innerHTML = '';\r\n this.keyboardDOM.className = this.keyboardDOMClass;\r\n this.buttonElements = {};\r\n }\r\n\r\n dispatch = (callback) => {\r\n if(!window['SimpleKeyboardInstances']){\r\n console.error(\"SimpleKeyboardInstances is not defined. Dispatch cannot be called.\")\r\n return false;\r\n }\r\n \r\n return Object.keys(window['SimpleKeyboardInstances']).forEach((key) => {\r\n callback(window['SimpleKeyboardInstances'][key], key);\r\n })\r\n }\r\n\r\n addButtonTheme = (buttons, className) => {\r\n if(!className || !buttons)\r\n return false;\r\n\r\n buttons.split(\" \").forEach(button => {\r\n className.split(\" \").forEach(classNameItem => {\r\n if(!this.options.buttonTheme)\r\n this.options.buttonTheme = [];\r\n\r\n let classNameFound = false;\r\n \r\n /**\r\n * If class is already defined, we add button to class definition\r\n */\r\n this.options.buttonTheme.map(buttonTheme => {\r\n\r\n if(buttonTheme.class.split(\" \").includes(classNameItem)){\r\n classNameFound = true;\r\n \r\n let buttonThemeArray = buttonTheme.buttons.split(\" \");\r\n if(!buttonThemeArray.includes(button)){\r\n classNameFound = true;\r\n buttonThemeArray.push(button);\r\n buttonTheme.buttons = buttonThemeArray.join(\" \");\r\n }\r\n }\r\n return buttonTheme;\r\n });\r\n\r\n /**\r\n * If class is not defined, we create a new entry\r\n */\r\n if(!classNameFound){\r\n this.options.buttonTheme.push({\r\n class: classNameItem,\r\n buttons: buttons\r\n });\r\n }\r\n\r\n });\r\n });\r\n\r\n this.render();\r\n }\r\n\r\n removeButtonTheme = (buttons, className) => {\r\n /**\r\n * When called with empty parameters, remove all button themes\r\n */\r\n if(!buttons && !className){\r\n this.options.buttonTheme = [];\r\n this.render();\r\n return false;\r\n }\r\n\r\n /**\r\n * If buttons are passed and buttonTheme has items\r\n */\r\n if(buttons && Array.isArray(this.options.buttonTheme) && this.options.buttonTheme.length){\r\n let buttonArray = buttons.split(\" \");\r\n buttonArray.forEach((button, key) => {\r\n this.options.buttonTheme.map((buttonTheme, index) => {\r\n\r\n /**\r\n * If className is set, we affect the buttons only for that class\r\n * Otherwise, we afect all classes\r\n */\r\n if(\r\n (className && className.includes(buttonTheme.class)) ||\r\n !className\r\n ){\r\n let filteredButtonArray;\r\n\r\n if(buttonArray.includes(button)){\r\n filteredButtonArray = buttonTheme.buttons.split(\" \").filter(item => item !== button);\r\n }\r\n\r\n /**\r\n * If buttons left, return them, otherwise, remove button Theme\r\n */\r\n if(filteredButtonArray.length){\r\n buttonTheme.buttons = filteredButtonArray.join(\" \");\r\n } else {\r\n this.options.buttonTheme.splice(index, 1);\r\n buttonTheme = null;\r\n }\r\n \r\n }\r\n\r\n return buttonTheme;\r\n });\r\n });\r\n\r\n this.render();\r\n }\r\n }\r\n\r\n getButtonElement = (button) => {\r\n let output;\r\n\r\n let buttonArr = this.buttonElements[button];\r\n if(buttonArr){\r\n if(buttonArr.length > 1){\r\n output = buttonArr;\r\n } else {\r\n output = buttonArr[0];\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n handleCaret = () => {\r\n if(this.options.debug){\r\n console.log(\"Caret handling started\");\r\n }\r\n\r\n let handler = (event) => {\r\n let targetTagName = event.target.tagName.toLowerCase();\r\n\r\n if(\r\n targetTagName === \"textarea\" ||\r\n targetTagName === \"input\"\r\n ){\r\n this.caretPosition = event.target.selectionStart;\r\n\r\n if(this.options.debug){\r\n console.log('Caret at: ', event.target.selectionStart, event.target.tagName.toLowerCase());\r\n } \r\n }\r\n };\r\n\r\n document.addEventListener(\"keyup\", handler);\r\n document.addEventListener(\"mouseup\", handler);\r\n document.addEventListener(\"touchend\", handler);\r\n }\r\n\r\n onInit = () => {\r\n if(this.options.debug){\r\n console.log(\"Initialized\");\r\n }\r\n\r\n /**\r\n * Caret handling\r\n */\r\n this.handleCaret();\r\n\r\n if(typeof this.options.onInit === \"function\")\r\n this.options.onInit();\r\n }\r\n\r\n onRender = () => {\r\n if(typeof this.options.onRender === \"function\")\r\n this.options.onRender();\r\n }\r\n\r\n render = () => {\r\n /**\r\n * Clear keyboard\r\n */\r\n this.clear();\r\n\r\n let layoutClass = this.options.layout ? \"hg-layout-custom\" : `hg-layout-${this.options.layoutName}`;\r\n let layout = this.options.layout || KeyboardLayout.getLayout(this.options.layoutName);\r\n\r\n /**\r\n * Account for buttonTheme, if set\r\n */\r\n let buttonThemesParsed = {};\r\n if(Array.isArray(this.options.buttonTheme)){\r\n this.options.buttonTheme.forEach(themeObj => {\r\n if(themeObj.buttons && themeObj.class){\r\n let themeButtons = themeObj.buttons.split(' ');\r\n\r\n if(Array.isArray(themeButtons)){\r\n themeButtons.forEach(themeButton => {\r\n let themeParsed = buttonThemesParsed[themeButton];\r\n\r\n // If the button has already been added\r\n if(themeParsed)\r\n buttonThemesParsed[themeButton] = `${themeParsed} ${themeObj.class}`;\r\n else\r\n buttonThemesParsed[themeButton] = themeObj.class;\r\n });\r\n }\r\n } else {\r\n console.warn(`buttonTheme row is missing the \"buttons\" or the \"class\". Please check the documentation.`)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adding themeClass, layoutClass to keyboardDOM\r\n */\r\n this.keyboardDOM.className += ` ${this.options.theme} ${layoutClass}`;\r\n\r\n /**\r\n * Iterating through each row\r\n */\r\n layout[this.options.layoutName].forEach((row, rIndex) => {\r\n let rowArray = row.split(' ');\r\n\r\n /**\r\n * Creating empty row\r\n */\r\n var rowDOM = document.createElement('div');\r\n rowDOM.className += \"hg-row\";\r\n\r\n /**\r\n * Iterating through each button in row\r\n */\r\n rowArray.forEach((button, bIndex) => {\r\n let fctBtnClass = this.utilities.getButtonClass(button);\r\n let buttonThemeClass = buttonThemesParsed[button];\r\n let buttonDisplayName = this.utilities.getButtonDisplayName(button, this.options.display, this.options.mergeDisplay);\r\n\r\n /**\r\n * Creating button\r\n */\r\n var buttonDOM = document.createElement('div');\r\n buttonDOM.className += `hg-button ${fctBtnClass}${buttonThemeClass ? \" \"+buttonThemeClass : \"\"}`;\r\n buttonDOM.onclick = () => this.handleButtonClicked(button);\r\n\r\n /**\r\n * Adding identifier\r\n */\r\n buttonDOM.setAttribute(\"data-skBtn\", button);\r\n\r\n /**\r\n * Adding unique id\r\n * Since there's no limit on spawning same buttons, the unique id ensures you can style every button\r\n */\r\n let buttonUID = `${this.options.layoutName}-r${rIndex}b${bIndex}`;\r\n buttonDOM.setAttribute(\"data-skBtnUID\", buttonUID);\r\n\r\n /**\r\n * Adding button label to button\r\n */\r\n var buttonSpanDOM = document.createElement('span');\r\n buttonSpanDOM.innerHTML = buttonDisplayName;\r\n buttonDOM.appendChild(buttonSpanDOM);\r\n\r\n /**\r\n * Adding to buttonElements\r\n */\r\n if(!this.buttonElements[button])\r\n this.buttonElements[button] = [];\r\n\r\n this.buttonElements[button].push(buttonDOM);\r\n\r\n /**\r\n * Appending button to row\r\n */\r\n rowDOM.appendChild(buttonDOM);\r\n\r\n });\r\n\r\n /**\r\n * Appending row to keyboard\r\n */\r\n this.keyboardDOM.appendChild(rowDOM);\r\n });\r\n\r\n /**\r\n * Calling onRender\r\n */\r\n this.onRender();\r\n\r\n if(!this.initialized){\r\n this.initialized = true;\r\n\r\n /**\r\n * Calling onInit\r\n */\r\n this.onInit();\r\n }\r\n }\r\n}\r\n\r\nexport default SimpleKeyboard;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/components/Keyboard.js","class PhysicalKeyboard {\r\n constructor(simpleKeyboardInstance){\r\n this.simpleKeyboardInstance = simpleKeyboardInstance;\r\n\r\n if(!window['SimpleKeyboardPhysicalKeyboardInit'])\r\n window['SimpleKeyboardPhysicalKeyboardInit'] = true;\r\n else\r\n return false;\r\n\r\n this.initKeyboardListener();\r\n }\r\n\r\n initKeyboardListener = () => {\r\n // Normal Keyboard\r\n document.addEventListener(\"keydown\", (event) => {\r\n if(this.simpleKeyboardInstance.options.physicalKeyboardHighlight){\r\n let buttonPressed = this.getSimpleKeyboardLayoutKey(event);\r\n\r\n this.simpleKeyboardInstance.dispatch(instance => {\r\n let buttonDOM = instance.getButtonElement(buttonPressed) || instance.getButtonElement(`{${buttonPressed}}`);\r\n\r\n if(buttonDOM){\r\n buttonDOM.style.backgroundColor = this.simpleKeyboardInstance.options.physicalKeyboardHighlightBgColor || \"#9ab4d0\";\r\n buttonDOM.style.color = this.simpleKeyboardInstance.options.physicalKeyboardHighlightTextColor || \"white\";\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Removing button style on keyup\r\n document.addEventListener(\"keyup\", (event) => {\r\n if(this.simpleKeyboardInstance.options.physicalKeyboardHighlight){\r\n let buttonPressed = this.getSimpleKeyboardLayoutKey(event);\r\n\r\n this.simpleKeyboardInstance.dispatch(instance => {\r\n let buttonDOM = instance.getButtonElement(buttonPressed) || instance.getButtonElement(`{${buttonPressed}}`);\r\n\r\n if(buttonDOM){\r\n buttonDOM.removeAttribute(\"style\");\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n getSimpleKeyboardLayoutKey = (event) => {\r\n if(this.simpleKeyboardInstance.options.debug){\r\n console.log(event);\r\n }\r\n \r\n let output;\r\n\r\n if(\r\n event.code.includes(\"Numpad\") ||\r\n event.code.includes(\"Shift\") ||\r\n event.code.includes(\"Space\") ||\r\n event.code.includes(\"Backspace\") ||\r\n event.code.includes(\"Control\") ||\r\n event.code.includes(\"Alt\") ||\r\n event.code.includes(\"Meta\")\r\n ){\r\n output = event.code;\r\n } else {\r\n output = event.key;\r\n }\r\n\r\n /**\r\n * If button is not uppercase, casting to lowercase\r\n */\r\n if (\r\n output !== output.toUpperCase() ||\r\n (event.code[0] === \"F\" && Number.isInteger(Number(event.code[1])) && event.code.length <= 3)\r\n ) {\r\n output = output.toLowerCase();\r\n }\r\n\r\n return output;\r\n }\r\n}\r\n\r\nexport default PhysicalKeyboard;\n\n\n// WEBPACK FOOTER //\n// ./src/lib/services/PhysicalKeyboard.js","class KeyboardLayout {\r\n\r\n static getLayout = layout => {\r\n if(layout === \"qwerty\"){\r\n return {\r\n 'default': [\r\n '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',\r\n '{tab} q w e r t y u i o p [ ] \\\\',\r\n '{lock} a s d f g h j k l ; \\' {enter}',\r\n '{shift} z x c v b n m , . / {shift}',\r\n '.com @ {space}'\r\n ],\r\n 'shift': [\r\n '~ ! @ # $ % ^ & * ( ) _ + {bksp}',\r\n '{tab} Q W E R T Y U I O P { } |',\r\n '{lock} A S D F G H J K L : \" {enter}',\r\n '{shift} Z X C V B N M < > ? {shift}',\r\n '.com @ {space}'\r\n ]\r\n };\r\n } else if(layout === \"numeric\"){\r\n return {\r\n 'default': [\r\n '1 2 3',\r\n '4 5 6',\r\n '7 8 9',\r\n '{//} 0 {bksp}'\r\n ]\r\n };\r\n } else {\r\n return KeyboardLayout.getLayout(\"qwerty\");\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default KeyboardLayout;\n\n\n// WEBPACK FOOTER //\n// ./src/lib/services/KeyboardLayout.js","class Utilities {\r\n constructor(simpleKeyboardInstance){\r\n this.simpleKeyboardInstance = simpleKeyboardInstance;\r\n }\r\n\r\n normalizeString(string){\r\n let output;\r\n\r\n if(string === \"@\")\r\n output = 'at';\r\n else if(string === \",\")\r\n output = 'comma';\r\n else if(string === \".\")\r\n output = 'dot';\r\n else if(string === \"\\\\\")\r\n output = 'backslash';\r\n else if(string === \"/\")\r\n output = 'fordardslash';\r\n else if(string === \"*\")\r\n output = 'asterisk';\r\n else if(string === \"&\")\r\n output = 'ampersand';\r\n else if(string === \"$\")\r\n output = 'dollarsign';\r\n else if(string === \"=\")\r\n output = 'equals';\r\n else if(string === \"+\")\r\n output = 'plus';\r\n else if(string === \"-\")\r\n output = 'minus';\r\n else if(string === \"'\")\r\n output = 'apostrophe';\r\n else if(string === \";\")\r\n output = 'colon';\r\n else if(string === \"[\")\r\n output = 'openbracket';\r\n else if(string === \"]\")\r\n output = 'closebracket';\r\n else if(string === \"//\")\r\n output = 'emptybutton';\r\n else if(string === \".com\")\r\n output = 'com';\r\n else\r\n output = '';\r\n\r\n return output ? ` hg-button-${output}` : '';\r\n }\r\n\r\n getButtonClass = button => {\r\n let buttonTypeClass = (button.includes(\"{\") && button.includes(\"}\") && button !== '{//}') ? \"functionBtn\" : \"standardBtn\";\r\n let buttonWithoutBraces = button.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n let buttonNormalized =\r\n buttonTypeClass === \"standardBtn\" ?\r\n this.normalizeString(buttonWithoutBraces) : ` hg-button-${buttonWithoutBraces}`;\r\n\r\n return `hg-${buttonTypeClass}${buttonNormalized}`;\r\n }\r\n\r\n getDefaultDiplay(){\r\n return {\r\n '{bksp}': 'backspace',\r\n '{backspace}': 'backspace',\r\n '{enter}': '< enter',\r\n '{shift}': 'shift',\r\n '{shiftleft}': 'shift',\r\n '{shiftright}': 'shift',\r\n '{alt}': 'alt',\r\n '{s}': 'shift',\r\n '{tab}': 'tab',\r\n '{lock}': 'caps',\r\n '{capslock}': 'caps',\r\n '{accept}': 'Submit',\r\n '{space}': ' ',\r\n '{//}': ' ',\r\n \"{esc}\": \"esc\",\r\n \"{escape}\": \"esc\",\r\n \"{f1}\": \"f1\",\r\n \"{f2}\": \"f2\",\r\n \"{f3}\": \"f3\",\r\n \"{f4}\": \"f4\",\r\n \"{f5}\": \"f5\",\r\n \"{f6}\": \"f6\",\r\n \"{f7}\": \"f7\",\r\n \"{f8}\": \"f8\",\r\n \"{f9}\": \"f9\",\r\n \"{f10}\": \"f10\",\r\n \"{f11}\": \"f11\",\r\n \"{f12}\": \"f12\",\r\n '{numpaddivide}': '/',\r\n '{numlock}': 'lock',\r\n \"{arrowup}\": \"↑\",\r\n \"{arrowleft}\": \"←\",\r\n \"{arrowdown}\": \"↓\",\r\n \"{arrowright}\": \"→\",\r\n \"{prtscr}\": \"print\",\r\n \"{scrolllock}\": \"scroll\",\r\n \"{pause}\": \"pause\",\r\n \"{insert}\": \"ins\",\r\n \"{home}\": \"home\",\r\n \"{pageup}\": \"up\",\r\n \"{delete}\": \"del\",\r\n \"{end}\": \"end\",\r\n \"{pagedown}\": \"down\",\r\n \"{numpadmultiply}\": \"*\",\r\n \"{numpadsubtract}\": \"-\",\r\n \"{numpadadd}\": \"+\",\r\n \"{numpadenter}\": \"enter\",\r\n \"{period}\": \".\",\r\n \"{numpaddecimal}\": \".\",\r\n \"{numpad0}\": \"0\",\r\n \"{numpad1}\": \"1\",\r\n \"{numpad2}\": \"2\",\r\n \"{numpad3}\": \"3\",\r\n \"{numpad4}\": \"4\",\r\n \"{numpad5}\": \"5\",\r\n \"{numpad6}\": \"6\",\r\n \"{numpad7}\": \"7\",\r\n \"{numpad8}\": \"8\",\r\n \"{numpad9}\": \"9\",\r\n };\r\n }\r\n\r\n getButtonDisplayName = (button, display, mergeDisplay) => {\r\n if(mergeDisplay){\r\n display = Object.assign({}, this.getDefaultDiplay(), display);\r\n } else {\r\n display = display || this.getDefaultDiplay();\r\n }\r\n\r\n return display[button] || button;\r\n }\r\n\r\n getUpdatedInput = (button, input, options, caretPos) => {\r\n \r\n let output = input;\r\n\r\n if((button === \"{bksp}\" || button === \"{backspace}\") && output.length > 0){\r\n output = this.removeAt(output, caretPos);\r\n\r\n } else if(button === \"{space}\")\r\n output = this.addStringAt(output, \" \", caretPos);\r\n\r\n else if(button === \"{tab}\" && !(typeof options.tabCharOnTab === \"boolean\" && options.tabCharOnTab === false)){\r\n output = this.addStringAt(output, \"\\t\", caretPos);\r\n\r\n } else if((button === \"{enter}\" || button === \"{numpadenter}\") && options.newLineOnEnter)\r\n output = this.addStringAt(output, \"\\n\", caretPos);\r\n\r\n else if(button.includes(\"numpad\") && Number.isInteger(Number(button[button.length - 2]))){\r\n output = this.addStringAt(output, button[button.length - 2], caretPos);\r\n }\r\n else if(button === \"{numpaddivide}\")\r\n output = this.addStringAt(output, '/', caretPos);\r\n\r\n else if(button === \"{numpadmultiply}\")\r\n output = this.addStringAt(output, '*', caretPos);\r\n else if(button === \"{numpadsubtract}\")\r\n output = this.addStringAt(output, '-', caretPos);\r\n\r\n else if(button === \"{numpadadd}\")\r\n output = this.addStringAt(output, '+', caretPos);\r\n\r\n else if(button === \"{numpadadd}\")\r\n output = this.addStringAt(output, '+', caretPos);\r\n\r\n else if(button === \"{numpaddecimal}\")\r\n output = this.addStringAt(output, '.', caretPos);\r\n\r\n else if(button === \"{\" || button === \"}\")\r\n output = this.addStringAt(output, button, caretPos);\r\n\r\n else if(!button.includes(\"{\") && !button.includes(\"}\"))\r\n output = this.addStringAt(output, button, caretPos);\r\n\r\n return output;\r\n }\r\n\r\n updateCaretPos = (length, minus) => {\r\n if(minus){\r\n if(this.simpleKeyboardInstance.caretPosition > 0)\r\n this.simpleKeyboardInstance.caretPosition = this.simpleKeyboardInstance.caretPosition - length\r\n } else {\r\n this.simpleKeyboardInstance.caretPosition = this.simpleKeyboardInstance.caretPosition + length;\r\n }\r\n }\r\n\r\n addStringAt(source, string, position){\r\n let output;\r\n\r\n if(this.simpleKeyboardInstance.options.debug){\r\n console.log(\"Caret at:\", position);\r\n }\r\n\r\n if(!position && position !== 0){\r\n output = source + string;\r\n } else {\r\n output = [source.slice(0, position), string, source.slice(position)].join('');\r\n\r\n /**\r\n * Avoid caret position change when maxLength is set\r\n */\r\n if(!this.isMaxLengthReached()){\r\n this.updateCaretPos(string.length);\r\n }\r\n\r\n }\r\n\r\n return output;\r\n }\r\n\r\n removeAt(source, position){\r\n let output;\r\n let prevTwoChars;\r\n let emojiMatched;\r\n let emojiMatchedReg = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\r\n\r\n /**\r\n * Emojis are made out of two characters, so we must take a custom approach to trim them.\r\n * For more info: https://mathiasbynens.be/notes/javascript-unicode\r\n */\r\n if(position && position >= 0){\r\n prevTwoChars = source.substring(position - 2, position)\r\n emojiMatched = prevTwoChars.match(emojiMatchedReg);\r\n\r\n if(emojiMatched){\r\n output = source.substr(0, (position - 2)) + source.substr(position);\r\n this.updateCaretPos(2, true);\r\n } else {\r\n output = source.substr(0, (position - 1)) + source.substr(position);\r\n this.updateCaretPos(1, true);\r\n }\r\n } else {\r\n prevTwoChars = source.slice(-2);\r\n emojiMatched = prevTwoChars.match(emojiMatchedReg);\r\n\r\n if(emojiMatched){\r\n output = source.slice(0, -2);\r\n this.updateCaretPos(2, true);\r\n } else {\r\n output = source.slice(0, -1);\r\n this.updateCaretPos(1, true);\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n handleMaxLength(inputObj, options, updatedInput){\r\n let maxLength = options.maxLength;\r\n let currentInput = inputObj[options.inputName];\r\n let condition = currentInput.length === maxLength;\r\n\r\n\r\n if(\r\n /**\r\n * If pressing this button won't add more characters\r\n * We exit out of this limiter function\r\n */\r\n updatedInput.length <= currentInput.length\r\n ){\r\n return false;\r\n }\r\n\r\n if(Number.isInteger(maxLength)){\r\n if(options.debug){\r\n console.log(\"maxLength (num) reached:\", condition);\r\n }\r\n\r\n if(condition){\r\n this.maxLengthReached = true;\r\n return true;\r\n } else {\r\n this.maxLengthReached = false;\r\n return false;\r\n }\r\n }\r\n\r\n if(typeof maxLength === \"object\"){\r\n let condition = currentInput.length === maxLength[options.inputName];\r\n\r\n if(options.debug){\r\n console.log(\"maxLength (obj) reached:\", condition);\r\n }\r\n\r\n if(condition){\r\n this.maxLengthReached = true;\r\n return true;\r\n } else {\r\n this.maxLengthReached = false;\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n isMaxLengthReached = () => {\r\n return Boolean(this.maxLengthReached);\r\n }\r\n\r\n camelCase = (string) => {\r\n return string.toLowerCase().trim().split(/[.\\-_\\s]/g).reduce((string, word) => string + word[0].toUpperCase() + word.slice(1));\r\n };\r\n\r\n}\r\n\r\nexport default Utilities;\n\n\n// WEBPACK FOOTER //\n// ./src/lib/services/Utilities.js"],"sourceRoot":""}