From d88912cd23d224a22a38da34cac7b645c6a8560c Mon Sep 17 00:00:00 2001 From: Francisco Hodge Date: Fri, 29 Jun 2018 20:43:07 -0400 Subject: [PATCH] Build update --- build/index.js | 2 +- build/index.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/index.js b/build/index.js index 6d6d9fd4..f71ffcb3 100644 --- a/build/index.js +++ b/build/index.js @@ -1,2 +1,2 @@ -!function(t,n){"object"===typeof exports&&"object"===typeof module?module.exports=n():"function"===typeof define&&define.amd?define([],n):"object"===typeof exports?exports.SimpleKeyboard=n():t.SimpleKeyboard=n()}(this,function(){return function(t){function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:o})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=0)}([function(t,n,e){t.exports=e(1)},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=e(2);n.default=o.a},function(t,n,e){"use strict";function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var i=e(3),a=(e.n(i),e(4)),s=e(5),r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u=function t(){o(this,t),p.call(this);var n="string"===typeof(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:".simple-keyboard",e="object"===r(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:arguments.length<=1?void 0:arguments[1];e||(e={}),this.keyboardDOM=document.querySelector(n),this.options=e,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.keyboardDOM?this.render():console.error('"'+n+'" was not found in the DOM.')},p=function(){var t=this;this.handleButtonClicked=function(n){var e=t.options.debug;if("{//}"===n)return!1;"function"===typeof t.options.onKeyPress&&t.options.onKeyPress(n);var o={newLineOnEnter:!0===t.options.newLineOnEnter};t.input[t.options.inputName]||(t.input[t.options.inputName]="");var i=s.a.getUpdatedInput(n,t.input[t.options.inputName],o);t.input[t.options.inputName]!==i&&(t.input[t.options.inputName]=i,e&&console.log("Input changed:",t.input),"function"===typeof t.options.onChange&&t.options.onChange(t.input[t.options.inputName])),e&&console.log("Key pressed:",n)},this.clearInput=function(n){n=n||t.options.inputName,t.input[t.options.inputName]=""},this.getInput=function(n){return n=n||t.options.inputName,t.input[t.options.inputName]},this.setInput=function(n,e){e=e||t.options.inputName,t.input[e]=n},this.setOptions=function(n){n=n||{},t.options=Object.assign(t.options,n),t.render()},this.clear=function(){t.keyboardDOM.innerHTML=""},this.render=function(){t.clear();var n=t.options.layout?"hg-layout-custom":"hg-layout-"+t.options.layoutName,e=t.options.layout||a.a.getLayout(t.options.layoutName),o={};Array.isArray(t.options.buttonTheme)&&t.options.buttonTheme.forEach(function(t){if(t.buttons&&t.class){var n=t.buttons.split(" ");Array.isArray(n)&&n.forEach(function(n){o[n]=t.class})}else console.warn('buttonTheme row is missing the "buttons" or the "class". Please check the documentation.')}),t.keyboardDOM.className+=" "+t.options.theme+" "+n,e[t.options.layoutName].forEach(function(n){var e=n.split(" "),i=document.createElement("div");i.className+="hg-row",e.forEach(function(n){var e=s.a.getButtonClass(n),a=o[n],r=s.a.getButtonDisplayName(n,t.options.display),u=document.createElement("div");u.className+="hg-button "+e+(a?" "+a:""),u.onclick=function(){return t.handleButtonClicked(n)};var p=document.createElement("span");p.innerHTML=r,u.appendChild(p),i.appendChild(u),"function"===typeof t.options.onInit&&t.options.onInit()}),t.keyboardDOM.appendChild(i)})}};n.a=u},function(t,n){},function(t,n,e){"use strict";function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var i=function t(){o(this,t)};i.getLayout=function(t){return"qwerty"===t?{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}"]}:"numeric"===t?{default:["1 2 3","4 5 6","7 8 9","{//} 0 {bksp}"]}:i.getLayout("qwerty")},n.a=i},function(t,n,e){"use strict";function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,n){for(var e=0;e0?o=o.slice(0,-1):"{space}"===t?o+=" ":"{tab}"===t?o+="\t":"{enter}"===t&&i?o+="\n":t.includes("{")||t.includes("}")||(o+=t),o},n.a=a}])}); +!function(t,n){"object"===typeof exports&&"object"===typeof module?module.exports=n():"function"===typeof define&&define.amd?define([],n):"object"===typeof exports?exports.SimpleKeyboard=n():t.SimpleKeyboard=n()}(this,function(){return function(t){function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:o})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=0)}([function(t,n,e){t.exports=e(1)},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=e(2);n.default=o.a},function(t,n,e){"use strict";function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var i=e(3),a=(e.n(i),e(4)),s=e(5),r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u=function t(){o(this,t),p.call(this);var n="string"===typeof(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:".simple-keyboard",e="object"===r(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:arguments.length<=1?void 0:arguments[1];e||(e={}),this.keyboardDOM=document.querySelector(n),this.options=e,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.keyboardDOM?this.render():console.error('"'+n+'" was not found in the DOM.')},p=function(){var t=this;this.handleButtonClicked=function(n){var e=t.options.debug;if("{//}"===n)return!1;"function"===typeof t.options.onKeyPress&&t.options.onKeyPress(n);var o={newLineOnEnter:!0===t.options.newLineOnEnter};t.input[t.options.inputName]||(t.input[t.options.inputName]="");var i=s.a.getUpdatedInput(n,t.input[t.options.inputName],o);t.input[t.options.inputName]!==i&&(t.input[t.options.inputName]=i,e&&console.log("Input changed:",t.input),"function"===typeof t.options.onChange&&t.options.onChange(t.input[t.options.inputName])),e&&console.log("Key pressed:",n)},this.clearInput=function(n){n=n||t.options.inputName,t.input[t.options.inputName]=""},this.getInput=function(n){return n=n||t.options.inputName,t.input[t.options.inputName]},this.setInput=function(n,e){e=e||t.options.inputName,t.input[e]=n},this.setOptions=function(n){n=n||{},t.options=Object.assign(t.options,n),t.render()},this.clear=function(){t.keyboardDOM.innerHTML=""},this.render=function(){t.clear();var n=t.options.layout?"hg-layout-custom":"hg-layout-"+t.options.layoutName,e=t.options.layout||a.a.getLayout(t.options.layoutName),o={};Array.isArray(t.options.buttonTheme)&&t.options.buttonTheme.forEach(function(t){if(t.buttons&&t.class){var n=t.buttons.split(" ");Array.isArray(n)&&n.forEach(function(n){var e=o[n];o[n]=e?e+" "+t.class:t.class})}else console.warn('buttonTheme row is missing the "buttons" or the "class". Please check the documentation.')}),t.keyboardDOM.className+=" "+t.options.theme+" "+n,e[t.options.layoutName].forEach(function(n){var e=n.split(" "),i=document.createElement("div");i.className+="hg-row",e.forEach(function(n){var e=s.a.getButtonClass(n),a=o[n],r=s.a.getButtonDisplayName(n,t.options.display),u=document.createElement("div");u.className+="hg-button "+e+(a?" "+a:""),u.onclick=function(){return t.handleButtonClicked(n)};var p=document.createElement("span");p.innerHTML=r,u.appendChild(p),i.appendChild(u),"function"===typeof t.options.onInit&&t.options.onInit()}),t.keyboardDOM.appendChild(i)})}};n.a=u},function(t,n){},function(t,n,e){"use strict";function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var i=function t(){o(this,t)};i.getLayout=function(t){return"qwerty"===t?{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}"]}:"numeric"===t?{default:["1 2 3","4 5 6","7 8 9","{//} 0 {bksp}"]}:i.getLayout("qwerty")},n.a=i},function(t,n,e){"use strict";function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,n){for(var e=0;e0?o=o.slice(0,-1):"{space}"===t?o+=" ":"{tab}"===t?o+="\t":"{enter}"===t&&i?o+="\n":t.includes("{")||t.includes("}")||(o+=t),o},n.a=a}])}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/index.js.map b/build/index.js.map index 4f779e9f..da6df4e2 100644 --- a/build/index.js.map +++ b/build/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///index.js","webpack:///webpack/bootstrap 8732894ed3723097d633","webpack:///./src/lib/index.js","webpack:///./src/lib/components/Keyboard.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_KeyboardLayout__","__WEBPACK_IMPORTED_MODULE_2__services_Utilities__","_typeof","Symbol","iterator","obj","constructor","SimpleKeyboard","_initialiseProps","keyboardDOMQuery","arguments","length","undefined","options","keyboardDOM","document","querySelector","layoutName","theme","inputName","input","render","console","error","_this","handleButtonClicked","button","debug","onKeyPress","newLineOnEnter","updatedInput","getUpdatedInput","log","onChange","clearInput","getInput","setInput","setOptions","option","assign","clear","innerHTML","layoutClass","layout","getLayout","buttonThemesParsed","Array","isArray","buttonTheme","forEach","themeObj","buttons","class","themeButtons","split","themeButton","warn","className","row","rowArray","rowDOM","createElement","fctBtnClass","getButtonClass","buttonThemeClass","buttonDisplayName","getButtonDisplayName","display","buttonDOM","onclick","buttonSpanDOM","appendChild","onInit","KeyboardLayout","default","shift","_createClass","defineProperties","target","props","descriptor","writable","key","protoProps","staticProps","Utilities","string","output","{bksp}","{enter}","{shift}","{s}","{tab}","{lock}","{accept}","{space}","{//}","buttonTypeClass","includes","buttonWithoutBraces","replace","normalizeString","getDefaultDiplay","slice"],"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_KeyboardLayout__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__services_Utilities__ = __webpack_require__(5);\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(){_classCallCheck(this,SimpleKeyboard);_initialiseProps.call(this);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 * 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]='';/**\r\n * Rendering keyboard\r\n */if(this.keyboardDOM)this.render();else console.error('\"'+keyboardDOMQuery+'\" was not found in the DOM.');};var _initialiseProps=function _initialiseProps(){var _this=this;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);/**\r\n * Updating input\r\n */var options={newLineOnEnter:_this.options.newLineOnEnter===true};if(!_this.input[_this.options.inputName])_this.input[_this.options.inputName]='';var updatedInput=__WEBPACK_IMPORTED_MODULE_2__services_Utilities__[\"a\" /* default */].getUpdatedInput(button,_this.input[_this.options.inputName],options);if(_this.input[_this.options.inputName]!==updatedInput){_this.input[_this.options.inputName]=updatedInput;if(debug)console.log('Input changed:',_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.clearInput=function(inputName){inputName=inputName||_this.options.inputName;_this.input[_this.options.inputName]='';};this.getInput=function(inputName){inputName=inputName||_this.options.inputName;return _this.input[_this.options.inputName];};this.setInput=function(input,inputName){inputName=inputName||_this.options.inputName;_this.input[inputName]=input;};this.setOptions=function(option){option=option||{};_this.options=Object.assign(_this.options,option);_this.render();};this.clear=function(){_this.keyboardDOM.innerHTML='';};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_1__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){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){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){var fctBtnClass=__WEBPACK_IMPORTED_MODULE_2__services_Utilities__[\"a\" /* default */].getButtonClass(button);var buttonThemeClass=buttonThemesParsed[button];var buttonDisplayName=__WEBPACK_IMPORTED_MODULE_2__services_Utilities__[\"a\" /* default */].getButtonDisplayName(button,_this.options.display);/**\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 button label to button\r\n */var buttonSpanDOM=document.createElement('span');buttonSpanDOM.innerHTML=buttonDisplayName;buttonDOM.appendChild(buttonSpanDOM);/**\r\n * Appending button to row\r\n */rowDOM.appendChild(buttonDOM);/**\r\n * Calling onInit\r\n */if(typeof _this.options.onInit===\"function\")_this.options.onInit();});/**\r\n * Appending row to keyboard\r\n */_this.keyboardDOM.appendChild(rowDOM);});};};/* 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 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/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass=function(){function defineProperties(target,props){for(var i=0;i0)output=output.slice(0,-1);else if(button===\"{space}\")output=output+' ';else if(button===\"{tab}\")output=output+\"\\t\";else if(button===\"{enter}\"&&newLineOnEnter)output=output+\"\\n\";else if(!button.includes(\"{\")&&!button.includes(\"}\"))output=output+button;return output;};/* 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 8732894ed3723097d633","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 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 * 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\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 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 /**\r\n * Updating input\r\n */\r\n let options = {\r\n newLineOnEnter: (this.options.newLineOnEnter === true)\r\n }\r\n \r\n if(!this.input[this.options.inputName])\r\n this.input[this.options.inputName] = '';\r\n\r\n let updatedInput = Utilities.getUpdatedInput(button, this.input[this.options.inputName], options);\r\n\r\n if(this.input[this.options.inputName] !== updatedInput){\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 * 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 clearInput = (inputName) => {\r\n inputName = inputName || this.options.inputName;\r\n this.input[this.options.inputName] = '';\r\n }\r\n\r\n getInput = (inputName) => {\r\n inputName = inputName || this.options.inputName;\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 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 }\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 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) => {\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) => {\r\n let fctBtnClass = Utilities.getButtonClass(button);\r\n let buttonThemeClass = buttonThemesParsed[button];\r\n let buttonDisplayName = Utilities.getButtonDisplayName(button, this.options.display);\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 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 * Appending button to row\r\n */\r\n rowDOM.appendChild(buttonDOM);\r\n\r\n /**\r\n * Calling onInit\r\n */\r\n if(typeof this.options.onInit === \"function\")\r\n this.options.onInit();\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\r\nexport default SimpleKeyboard;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/components/Keyboard.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 static 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\r\n output = '';\r\n\r\n return output ? ` hg-button-${output}` : '';\r\n }\r\n\r\n static getButtonClass = button => {\r\n let buttonTypeClass = (button.includes(\"{\") && button !== '{//}') ? \"functionBtn\" : \"standardBtn\";\r\n let buttonWithoutBraces = button.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n let buttonNormalized =\r\n buttonTypeClass === \"standardBtn\" ?\r\n Utilities.normalizeString(buttonWithoutBraces) : ` hg-button-${buttonWithoutBraces}`;\r\n\r\n return `hg-${buttonTypeClass}${buttonNormalized}`;\r\n }\r\n\r\n static getDefaultDiplay(){\r\n return {\r\n '{bksp}': 'delete',\r\n '{enter}': '< enter',\r\n '{shift}': 'shift',\r\n '{s}': 'shift',\r\n '{tab}': 'tab',\r\n '{lock}': 'caps',\r\n '{accept}': 'Submit',\r\n '{space}': ' ',\r\n '{//}': ' '\r\n };\r\n }\r\n\r\n static getButtonDisplayName = (button, display) => {\r\n display = display || Utilities.getDefaultDiplay();\r\n return display[button] || button;\r\n }\r\n\r\n static getUpdatedInput = (button, input, options) => {\r\n let output = input;\r\n let newLineOnEnter = options.newLineOnEnter;\r\n\r\n if(button === \"{bksp}\" && output.length > 0)\r\n output = output.slice(0, -1);\r\n else if(button === \"{space}\")\r\n output = output + ' ';\r\n else if(button === \"{tab}\")\r\n output = output + \"\\t\";\r\n else if(button === \"{enter}\" && newLineOnEnter)\r\n output = output + \"\\n\";\r\n else if(!button.includes(\"{\") && !button.includes(\"}\"))\r\n output = output + button;\r\n\r\n return output;\r\n }\r\n}\r\n\r\nexport default Utilities;\n\n\n// WEBPACK FOOTER //\n// ./src/lib/services/Utilities.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///index.js","webpack:///webpack/bootstrap 1cc29fc75d6022089202","webpack:///./src/lib/index.js","webpack:///./src/lib/components/Keyboard.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_KeyboardLayout__","__WEBPACK_IMPORTED_MODULE_2__services_Utilities__","_typeof","Symbol","iterator","obj","constructor","SimpleKeyboard","_initialiseProps","keyboardDOMQuery","arguments","length","undefined","options","keyboardDOM","document","querySelector","layoutName","theme","inputName","input","render","console","error","_this","handleButtonClicked","button","debug","onKeyPress","newLineOnEnter","updatedInput","getUpdatedInput","log","onChange","clearInput","getInput","setInput","setOptions","option","assign","clear","innerHTML","layoutClass","layout","getLayout","buttonThemesParsed","Array","isArray","buttonTheme","forEach","themeObj","buttons","class","themeButtons","split","themeButton","themeParsed","warn","className","row","rowArray","rowDOM","createElement","fctBtnClass","getButtonClass","buttonThemeClass","buttonDisplayName","getButtonDisplayName","display","buttonDOM","onclick","buttonSpanDOM","appendChild","onInit","KeyboardLayout","default","shift","_createClass","defineProperties","target","props","descriptor","writable","key","protoProps","staticProps","Utilities","string","output","{bksp}","{enter}","{shift}","{s}","{tab}","{lock}","{accept}","{space}","{//}","buttonTypeClass","includes","buttonWithoutBraces","replace","normalizeString","getDefaultDiplay","slice"],"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_KeyboardLayout__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__services_Utilities__ = __webpack_require__(5);\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(){_classCallCheck(this,SimpleKeyboard);_initialiseProps.call(this);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 * 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]='';/**\r\n * Rendering keyboard\r\n */if(this.keyboardDOM)this.render();else console.error('\"'+keyboardDOMQuery+'\" was not found in the DOM.');};var _initialiseProps=function _initialiseProps(){var _this=this;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);/**\r\n * Updating input\r\n */var options={newLineOnEnter:_this.options.newLineOnEnter===true};if(!_this.input[_this.options.inputName])_this.input[_this.options.inputName]='';var updatedInput=__WEBPACK_IMPORTED_MODULE_2__services_Utilities__[\"a\" /* default */].getUpdatedInput(button,_this.input[_this.options.inputName],options);if(_this.input[_this.options.inputName]!==updatedInput){_this.input[_this.options.inputName]=updatedInput;if(debug)console.log('Input changed:',_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.clearInput=function(inputName){inputName=inputName||_this.options.inputName;_this.input[_this.options.inputName]='';};this.getInput=function(inputName){inputName=inputName||_this.options.inputName;return _this.input[_this.options.inputName];};this.setInput=function(input,inputName){inputName=inputName||_this.options.inputName;_this.input[inputName]=input;};this.setOptions=function(option){option=option||{};_this.options=Object.assign(_this.options,option);_this.render();};this.clear=function(){_this.keyboardDOM.innerHTML='';};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_1__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){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){var fctBtnClass=__WEBPACK_IMPORTED_MODULE_2__services_Utilities__[\"a\" /* default */].getButtonClass(button);var buttonThemeClass=buttonThemesParsed[button];var buttonDisplayName=__WEBPACK_IMPORTED_MODULE_2__services_Utilities__[\"a\" /* default */].getButtonDisplayName(button,_this.options.display);/**\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 button label to button\r\n */var buttonSpanDOM=document.createElement('span');buttonSpanDOM.innerHTML=buttonDisplayName;buttonDOM.appendChild(buttonSpanDOM);/**\r\n * Appending button to row\r\n */rowDOM.appendChild(buttonDOM);/**\r\n * Calling onInit\r\n */if(typeof _this.options.onInit===\"function\")_this.options.onInit();});/**\r\n * Appending row to keyboard\r\n */_this.keyboardDOM.appendChild(rowDOM);});};};/* 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 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/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass=function(){function defineProperties(target,props){for(var i=0;i0)output=output.slice(0,-1);else if(button===\"{space}\")output=output+' ';else if(button===\"{tab}\")output=output+\"\\t\";else if(button===\"{enter}\"&&newLineOnEnter)output=output+\"\\n\";else if(!button.includes(\"{\")&&!button.includes(\"}\"))output=output+button;return output;};/* 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 1cc29fc75d6022089202","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 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 * 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\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 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 /**\r\n * Updating input\r\n */\r\n let options = {\r\n newLineOnEnter: (this.options.newLineOnEnter === true)\r\n }\r\n \r\n if(!this.input[this.options.inputName])\r\n this.input[this.options.inputName] = '';\r\n\r\n let updatedInput = Utilities.getUpdatedInput(button, this.input[this.options.inputName], options);\r\n\r\n if(this.input[this.options.inputName] !== updatedInput){\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 * 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 clearInput = (inputName) => {\r\n inputName = inputName || this.options.inputName;\r\n this.input[this.options.inputName] = '';\r\n }\r\n\r\n getInput = (inputName) => {\r\n inputName = inputName || this.options.inputName;\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 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 }\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) => {\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) => {\r\n let fctBtnClass = Utilities.getButtonClass(button);\r\n let buttonThemeClass = buttonThemesParsed[button];\r\n let buttonDisplayName = Utilities.getButtonDisplayName(button, this.options.display);\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 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 * Appending button to row\r\n */\r\n rowDOM.appendChild(buttonDOM);\r\n\r\n /**\r\n * Calling onInit\r\n */\r\n if(typeof this.options.onInit === \"function\")\r\n this.options.onInit();\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\r\nexport default SimpleKeyboard;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/components/Keyboard.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 static 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\r\n output = '';\r\n\r\n return output ? ` hg-button-${output}` : '';\r\n }\r\n\r\n static getButtonClass = button => {\r\n let buttonTypeClass = (button.includes(\"{\") && button !== '{//}') ? \"functionBtn\" : \"standardBtn\";\r\n let buttonWithoutBraces = button.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n let buttonNormalized =\r\n buttonTypeClass === \"standardBtn\" ?\r\n Utilities.normalizeString(buttonWithoutBraces) : ` hg-button-${buttonWithoutBraces}`;\r\n\r\n return `hg-${buttonTypeClass}${buttonNormalized}`;\r\n }\r\n\r\n static getDefaultDiplay(){\r\n return {\r\n '{bksp}': 'delete',\r\n '{enter}': '< enter',\r\n '{shift}': 'shift',\r\n '{s}': 'shift',\r\n '{tab}': 'tab',\r\n '{lock}': 'caps',\r\n '{accept}': 'Submit',\r\n '{space}': ' ',\r\n '{//}': ' '\r\n };\r\n }\r\n\r\n static getButtonDisplayName = (button, display) => {\r\n display = display || Utilities.getDefaultDiplay();\r\n return display[button] || button;\r\n }\r\n\r\n static getUpdatedInput = (button, input, options) => {\r\n let output = input;\r\n let newLineOnEnter = options.newLineOnEnter;\r\n\r\n if(button === \"{bksp}\" && output.length > 0)\r\n output = output.slice(0, -1);\r\n else if(button === \"{space}\")\r\n output = output + ' ';\r\n else if(button === \"{tab}\")\r\n output = output + \"\\t\";\r\n else if(button === \"{enter}\" && newLineOnEnter)\r\n output = output + \"\\n\";\r\n else if(!button.includes(\"{\") && !button.includes(\"}\"))\r\n output = output + button;\r\n\r\n return output;\r\n }\r\n}\r\n\r\nexport default Utilities;\n\n\n// WEBPACK FOOTER //\n// ./src/lib/services/Utilities.js"],"sourceRoot":""} \ No newline at end of file