{"version":3,"file":"dat-touch-keyboard.mjs","sources":["../../../projects/ngx-touch-keyboard/src/lib/Locale/constants.ts","../../../projects/ngx-touch-keyboard/src/lib/Locale/en-GB/index.ts","../../../projects/ngx-touch-keyboard/src/lib/Locale/en-US/index.ts","../../../projects/ngx-touch-keyboard/src/lib/Locale/fa-IR/index.ts","../../../projects/ngx-touch-keyboard/src/lib/Locale/sv-SE/index.ts","../../../projects/ngx-touch-keyboard/src/lib/ngx-touch-keyboard.component.ts","../../../projects/ngx-touch-keyboard/src/lib/ngx-touch-keyboard.component.html","../../../projects/ngx-touch-keyboard/src/lib/ngx-touch-keyboard.directive.ts","../../../projects/ngx-touch-keyboard/src/lib/ngx-touch-keyboard.module.ts","../../../projects/ngx-touch-keyboard/src/public-api.ts","../../../projects/ngx-touch-keyboard/src/dat-touch-keyboard.ts"],"sourcesContent":["export const fnButton = {\n  DONE: `{done}`,\n  ENTER: `{enter}`,\n  SHIFT: `{shift}`,\n  BACKSPACE: `{backspace}`,\n  LANGUAGE: `{language}`,\n  SPACE: `{space}`,\n  TAB: `{tab}`,\n};\n\nexport const fnDisplay = {\n  DONE: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\"><path d=\"m12 15-5-5h10Z\"/></svg>`,\n  ENTER: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\"><path d=\"m9 18-6-6 6-6 1.4 1.4L6.8 11H19V7h2v6H6.8l3.6 3.6Z\"/></svg>`,\n  SHIFT: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\"><path d=\"M10.8796773,2.4676627 C10.7983669,2.53542133 10.7233714,2.61041687 10.6556128,2.69172724 L2.79065437,12.1296773 C2.17191723,12.8721619 2.27223434,13.9756501 3.01471891,14.5943872 L3.15432027,14.6993778 C3.44275103,14.8945506 3.78413686,15 4.13504161,15 L6.999,15 L7,20.25 C7,21.2164983 7.78350169,22 8.75,22 L15.25,22 L15.3935272,21.9941988 C16.2928897,21.9211923 17,21.1681734 17,20.25 L16.999,15 L19.8649584,15 C20.8314567,15 21.6149584,14.2164983 21.6149584,13.25 C21.6149584,12.8406111 21.47143,12.4441786 21.2093456,12.1296773 L13.3443872,2.69172724 C12.7600244,1.99049181 11.7432755,1.8620539 11.0066223,2.37118457 L10.8796773,2.4676627 Z M12.1920553,3.65200384 L20.0570137,13.0899539 C20.0944543,13.1348827 20.1149584,13.1915159 20.1149584,13.25 C20.1149584,13.3880712 20.0030296,13.5 19.8649584,13.5 L16.25,13.5 C15.8357864,13.5 15.5,13.8357864 15.5,14.25 L15.5,20.25 C15.5,20.3880712 15.3880712,20.5 15.25,20.5 L8.75,20.5 C8.61192881,20.5 8.5,20.3880712 8.5,20.25 L8.5,14.25 C8.5,13.8357864 8.16421356,13.5 7.75,13.5 L4.13504161,13.5 C4.07655749,13.5 4.01992426,13.4794959 3.97499551,13.4420553 C3.86892629,13.3536643 3.85459527,13.1960231 3.94298629,13.0899539 L11.8079447,3.65200384 C11.8176245,3.64038807 11.8283381,3.62967442 11.8399539,3.61999462 C11.9460231,3.5316036 12.1036643,3.54593461 12.1920553,3.65200384 Z\"></path></svg>`,\n  BACKSPACE: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\"><path d=\"M18.75,4 C20.4830315,4 21.8992459,5.35645477 21.9948552,7.06557609 L22,7.25 L22,16.75 C22,18.4830315 20.6435452,19.8992459 18.9344239,19.9948552 L18.75,20 L10.2488122,20 C9.48467584,20 8.74731983,19.7308489 8.16441163,19.243553 L8.00936186,19.1052839 L3.01367221,14.3552839 C1.71288481,13.1184697 1.66102433,11.0613371 2.89783857,9.76054971 L3.01367221,9.64471607 L8.00936186,4.89471607 C8.56313355,4.36817906 9.28295917,4.05514987 10.0411712,4.00663485 L10.2488122,4 L18.75,4 Z M18.75,5.5 L10.2488122,5.5 C9.85605678,5.5 9.47644043,5.63205173 9.16975262,5.87226779 L9.04295431,5.98177019 L4.04726465,10.7317702 L3.98489269,10.7941421 C3.3580909,11.4533647 3.34595643,12.473346 3.93064574,13.1462921 L4.04726465,13.2682298 L9.04295431,18.0182298 C9.32758521,18.2888625 9.69368599,18.4547433 10.0814672,18.4919848 L10.2488122,18.5 L18.75,18.5 C19.6681734,18.5 20.4211923,17.7928897 20.4941988,16.8935272 L20.5,16.75 L20.5,7.25 C20.5,6.3318266 19.7928897,5.57880766 18.8935272,5.5058012 L18.75,5.5 Z M11.4462117,8.39705176 L11.5303301,8.46966991 L14.000116,10.939 L16.4696699,8.46966991 C16.7625631,8.1767767 17.2374369,8.1767767 17.5303301,8.46966991 C17.7965966,8.73593648 17.8208027,9.15260016 17.6029482,9.44621165 L17.5303301,9.53033009 L15.061116,12 L17.5303301,14.4696699 C17.8232233,14.7625631 17.8232233,15.2374369 17.5303301,15.5303301 C17.2640635,15.7965966 16.8473998,15.8208027 16.5537883,15.6029482 L16.4696699,15.5303301 L14.000116,13.061 L11.5303301,15.5303301 C11.2374369,15.8232233 10.7625631,15.8232233 10.4696699,15.5303301 C10.2034034,15.2640635 10.1791973,14.8473998 10.3970518,14.5537883 L10.4696699,14.4696699 L12.939116,12 L10.4696699,9.53033009 C10.1767767,9.23743687 10.1767767,8.76256313 10.4696699,8.46966991 C10.7359365,8.20340335 11.1526002,8.1791973 11.4462117,8.39705176 Z\"></path></svg>`,\n  LANGUAGE: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\"><path d=\"M12 22q-2.05 0-3.875-.788-1.825-.787-3.187-2.15-1.363-1.362-2.15-3.187Q2 14.05 2 12q0-2.075.788-3.887.787-1.813 2.15-3.175Q6.3 3.575 8.125 2.787 9.95 2 12 2q2.075 0 3.887.787 1.813.788 3.175 2.151 1.363 1.362 2.15 3.175Q22 9.925 22 12q0 2.05-.788 3.875-.787 1.825-2.15 3.187-1.362 1.363-3.175 2.15Q14.075 22 12 22Zm0-2.05q.65-.9 1.125-1.875T13.9 16h-3.8q.3 1.1.775 2.075.475.975 1.125 1.875Zm-2.6-.4q-.45-.825-.787-1.713Q8.275 16.95 8.05 16H5.1q.725 1.25 1.812 2.175Q8 19.1 9.4 19.55Zm5.2 0q1.4-.45 2.487-1.375Q18.175 17.25 18.9 16h-2.95q-.225.95-.562 1.837-.338.888-.788 1.713ZM4.25 14h3.4q-.075-.5-.113-.988Q7.5 12.525 7.5 12t.037-1.012q.038-.488.113-.988h-3.4q-.125.5-.188.988Q4 11.475 4 12t.062 1.012q.063.488.188.988Zm5.4 0h4.7q.075-.5.113-.988.037-.487.037-1.012t-.037-1.012q-.038-.488-.113-.988h-4.7q-.075.5-.112.988Q9.5 11.475 9.5 12t.038 1.012q.037.488.112.988Zm6.7 0h3.4q.125-.5.188-.988Q20 12.525 20 12t-.062-1.012q-.063-.488-.188-.988h-3.4q.075.5.112.988.038.487.038 1.012t-.038 1.012q-.037.488-.112.988Zm-.4-6h2.95q-.725-1.25-1.813-2.175Q16 4.9 14.6 4.45q.45.825.788 1.712.337.888.562 1.838ZM10.1 8h3.8q-.3-1.1-.775-2.075Q12.65 4.95 12 4.05q-.65.9-1.125 1.875T10.1 8Zm-5 0h2.95q.225-.95.563-1.838.337-.887.787-1.712Q8 4.9 6.912 5.825 5.825 6.75 5.1 8Z\"/></svg>`,\n  SPACE: ` `,\n  TAB: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" width=\"20\" viewBox=\"0 0 24 24\"><path d=\"m12 18-1.425-1.4 3.6-3.6H2v-2h12.175L10.6 7.4 12 6l6 6Zm8 0V6h2v12Z\"/></svg>`,\n};\n","import { Layout, Display, Locale } from '../type';\nimport { fnDisplay } from '../constants';\n\nconst layouts: Layout = {\n  text_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['-', '/', ':', ';', '(', ')', '$', '&', '@', '\"'],\n    ['{symbolic}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  text_symbolic: [\n    ['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '<', '>', '€', '£', '¥', '•'],\n    ['{numeric}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['-', '/', ':', ';', '(', ')', '$', '&', '@', '\"'],\n    ['{symbolic}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_symbolic: [\n    ['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '<', '>', '€', '£', '¥', '•'],\n    ['{numeric}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  email_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['$', '!', '~', '&', '=', '#', '[', ']'],\n    ['{symbolic}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  email_symbolic: [\n    ['`', '|', '{', '}', '?', '%', '^', '*', '/', \"'\"],\n    ['$', '!', '~', '&', '=', '#', '[', ']'],\n    ['{numeric}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  url_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['@', '&', '%', '?', ',', '=', '[', ']'],\n    ['{symbolic}', '_', ':', '-', '+', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  url_symbolic: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['*', '$', '#', '!', \"'\", '^', '[', ']'],\n    ['{numeric}', '~', ';', '(', ')', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  numeric_default: [\n    ['1', '2', '3'],\n    ['4', '5', '6'],\n    ['7', '8', '9'],\n    ['0', '{backspace}'],\n  ],\n  decimal_default: [\n    ['1', '2', '3'],\n    ['4', '5', '6'],\n    ['7', '8', '9'],\n    ['.', '0', '{backspace}'],\n  ],\n  tel_default: [\n    ['1', '2', '3', '*'],\n    ['4', '5', '6', '#'],\n    ['7', '8', '9', '+'],\n    ['0', '{backspace}'],\n  ],\n};\n\nconst display: Display = {\n  '{done}': fnDisplay.DONE,\n  '{shift}': fnDisplay.SHIFT,\n  '{backspace}': fnDisplay.BACKSPACE,\n  '{space}': fnDisplay.SPACE,\n  '{alphabetic}': 'ABC',\n  '{numeric}': '123',\n  '{symbolic}': '#+=',\n};\n\nconst locale: Locale = {\n  code: 'en-GB',\n  dir: 'ltr',\n  layouts: layouts,\n  display: display,\n};\n\nexport default locale;\n","import { Layout, Display, Locale } from '../type';\nimport { fnDisplay } from '../constants';\n\nconst layouts: Layout = {\n  text_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['-', '/', ':', ';', '(', ')', '$', '&', '@', '\"'],\n    ['{symbolic}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  text_symbolic: [\n    ['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '<', '>', '€', '£', '¥', '•'],\n    ['{numeric}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['-', '/', ':', ';', '(', ')', '$', '&', '@', '\"'],\n    ['{symbolic}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_symbolic: [\n    ['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '<', '>', '€', '£', '¥', '•'],\n    ['{numeric}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  email_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['$', '!', '~', '&', '=', '#', '[', ']'],\n    ['{symbolic}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  email_symbolic: [\n    ['`', '|', '{', '}', '?', '%', '^', '*', '/', \"'\"],\n    ['$', '!', '~', '&', '=', '#', '[', ']'],\n    ['{numeric}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  url_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['@', '&', '%', '?', ',', '=', '[', ']'],\n    ['{symbolic}', '_', ':', '-', '+', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  url_symbolic: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['*', '$', '#', '!', \"'\", '^', '[', ']'],\n    ['{numeric}', '~', ';', '(', ')', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  numeric_default: [\n    ['1', '2', '3'],\n    ['4', '5', '6'],\n    ['7', '8', '9'],\n    ['0', '{backspace}'],\n  ],\n  decimal_default: [\n    ['1', '2', '3'],\n    ['4', '5', '6'],\n    ['7', '8', '9'],\n    ['.', '0', '{backspace}'],\n  ],\n  tel_default: [\n    ['1', '2', '3', '*'],\n    ['4', '5', '6', '#'],\n    ['7', '8', '9', '+'],\n    ['0', '{backspace}'],\n  ],\n};\n\nconst display: Display = {\n  '{done}': fnDisplay.DONE,\n  '{shift}': fnDisplay.SHIFT,\n  '{backspace}': fnDisplay.BACKSPACE,\n  '{space}': fnDisplay.SPACE,\n  '{alphabetic}': 'ABC',\n  '{numeric}': '123',\n  '{symbolic}': '#+=',\n};\n\nconst locale: Locale = {\n  code: 'en-US',\n  dir: 'ltr',\n  layouts: layouts,\n  display: display,\n};\n\nexport default locale;\n","import { Layout, Display, Locale } from '../type';\nimport { fnDisplay } from '../constants';\n\nconst layouts: Layout = {\n  text_alphabetic: [\n    ['ض', 'ص', 'ق', 'ف', 'غ', 'ع', 'ه', 'خ', 'ح', 'ج', 'چ'],\n    ['ش', 'س', 'ی', 'ب', 'ل', 'ا', 'ت', 'ن', 'م', 'ک', 'گ'],\n    ['ظ', 'ط', 'ژ', 'ز', 'ر', 'ذ', 'د', 'پ', 'و', 'ث', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_numeric: [\n    ['۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', '۰'],\n    ['-', '/', ':', '؛', ')', '(', '$', '@', '»', '«'],\n    ['{symbolic}', '.', '،', '؟', '!', '٫', '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  text_symbolic: [\n    [']', '[', '}', '{', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '>', '<', '&', '•', '‘', '“'],\n    ['{numeric}', '.', '،', '؟', '!', '٬', '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_alphabetic: [\n    ['ض', 'ص', 'ق', 'ف', 'غ', 'ع', 'ه', 'خ', 'ح', 'ج', 'چ'],\n    ['ش', 'س', 'ی', 'ب', 'ل', 'ا', 'ت', 'ن', 'م', 'ک', 'گ'],\n    ['ظ', 'ط', 'ژ', 'ز', 'ر', 'ذ', 'د', 'پ', 'و', 'ث', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_numeric: [\n    ['۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', '۰'],\n    ['-', '/', ':', '؛', ')', '(', '$', '@', '»', '«'],\n    ['{symbolic}', '.', '،', '؟', '!', '٫', '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_symbolic: [\n    [']', '[', '}', '{', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '>', '<', '&', '•', '‘', '“'],\n    ['{numeric}', '.', '،', '؟', '!', '٬', '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  email_alphabetic: [\n    ['ض', 'ص', 'ق', 'ف', 'غ', 'ع', 'ه', 'خ', 'ح', 'ج', 'چ'],\n    ['ش', 'س', 'ی', 'ب', 'ل', 'ا', 'ت', 'ن', 'م', 'ک', 'گ'],\n    ['ظ', 'ط', 'ژ', 'ز', 'ر', 'ذ', 'د', 'پ', 'و', 'ث', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_numeric: [\n    ['۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', '۰'],\n    ['$', '!', '~', '&', '=', '#', ']', '['],\n    ['{symbolic}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  email_symbolic: [\n    ['`', '|', '{', '}', '?', '%', '^', '*', '/', \"'\"],\n    ['$', '!', '~', '&', '=', '#', ']', '['],\n    ['{numeric}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  url_alphabetic: [\n    ['ض', 'ص', 'ق', 'ف', 'غ', 'ع', 'ه', 'خ', 'ح', 'ج', 'چ'],\n    ['ش', 'س', 'ی', 'ب', 'ل', 'ا', 'ت', 'ن', 'م', 'ک', 'گ'],\n    ['ظ', 'ط', 'ژ', 'ز', 'ر', 'ذ', 'د', 'پ', 'و', 'ث', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_numeric: [\n    ['۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', '۰'],\n    ['@', '&', '%', '?', ',', '=', ']', '['],\n    ['{symbolic}', '_', ':', '-', '+', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  url_symbolic: [\n    ['۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', '۰'],\n    ['*', '$', '#', '!', \"'\", '^', ']', '['],\n    ['{numeric}', '~', ';', ')', '(', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  numeric_default: [\n    ['۱', '۲', '۳'],\n    ['۴', '۵', '۶'],\n    ['۷', '۸', '۹'],\n    ['۰', '{backspace}'],\n  ],\n  decimal_default: [\n    ['۱', '۲', '۳'],\n    ['۴', '۵', '۶'],\n    ['۷', '۸', '۹'],\n    ['٫', '۰', '{backspace}'],\n  ],\n  tel_default: [\n    ['۱', '۲', '۳', '*'],\n    ['۴', '۵', '۶', '#'],\n    ['۷', '۸', '۹', '+'],\n    ['۰', '{backspace}'],\n  ],\n};\n\nconst display: Display = {\n  '{done}': fnDisplay.DONE,\n  '{backspace}': fnDisplay.BACKSPACE,\n  '{space}': fnDisplay.SPACE,\n  '{alphabetic}': 'ا‌ب‌پ',\n  '{numeric}': '۱۲۳',\n  '{symbolic}': '=+#',\n};\n\nconst locale: Locale = {\n  code: 'fa-IR',\n  dir: 'rtl',\n  layouts: layouts,\n  display: display,\n};\n\nexport default locale;\n","import { Layout, Display, Locale } from '../type';\nimport { fnDisplay } from '../constants';\n\nconst layouts: Layout = {\n  text_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'å'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Å'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Ö', 'Ä'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  text_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['-', '/', ':', ';', '(', ')', '$', '&', '@', '\"'],\n    ['{symbolic}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  text_symbolic: [\n    ['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '<', '>', '€', '£', '¥', '•'],\n    ['{numeric}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'å'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Å'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Ö', 'Ä'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '{space}', '{done}'],\n  ],\n  search_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['-', '/', ':', ';', '(', ')', '$', '&', '@', '\"'],\n    ['{symbolic}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  search_symbolic: [\n    ['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],\n    ['_', '\\\\', '|', '~', '<', '>', '€', '£', '¥', '•'],\n    ['{numeric}', '.', ',', '?', '!', \"'\", '{backspace}'],\n    ['{alphabetic}', '{space}', '{done}'],\n  ],\n  email_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'å'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Å'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Ö', 'Ä'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '@', '{space}', '.', '{done}'],\n  ],\n  email_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['$', '!', '~', '&', '=', '#', '[', ']'],\n    ['{symbolic}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  email_symbolic: [\n    ['`', '|', '{', '}', '?', '%', '^', '*', '/', \"'\"],\n    ['$', '!', '~', '&', '=', '#', '[', ']'],\n    ['{numeric}', '.', '_', '-', '+', '{backspace}'],\n    ['{alphabetic}', '@', '{space}', '.', '{done}'],\n  ],\n  url_alphabetic: [\n    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'å'],\n    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä'],\n    ['{shift}', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_shift: [\n    ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Å'],\n    ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Ö', 'Ä'],\n    ['{shift}', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '{backspace}'],\n    ['{numeric}', '/', '.com', '.', '{done}'],\n  ],\n  url_numeric: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['@', '&', '%', '?', ',', '=', '[', ']'],\n    ['{symbolic}', '_', ':', '-', '+', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  url_symbolic: [\n    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],\n    ['*', '$', '#', '!', \"'\", '^', '[', ']'],\n    ['{numeric}', '~', ';', '(', ')', '{backspace}'],\n    ['{alphabetic}', '/', '.com', '.', '{done}'],\n  ],\n  numeric_default: [\n    ['1', '2', '3'],\n    ['4', '5', '6'],\n    ['7', '8', '9'],\n    ['0', '{backspace}'],\n  ],\n  decimal_default: [\n    ['1', '2', '3'],\n    ['4', '5', '6'],\n    ['7', '8', '9'],\n    ['.', '0', '{backspace}'],\n  ],\n  tel_default: [\n    ['1', '2', '3', '*'],\n    ['4', '5', '6', '#'],\n    ['7', '8', '9', '+'],\n    ['0', '{backspace}'],\n  ],\n};\n\nconst display: Display = {\n  '{done}': fnDisplay.DONE,\n  '{shift}': fnDisplay.SHIFT,\n  '{backspace}': fnDisplay.BACKSPACE,\n  '{space}': fnDisplay.SPACE,\n  '{alphabetic}': 'ABC',\n  '{numeric}': '123',\n  '{symbolic}': '#+=',\n};\n\nconst locale: Locale = {\n  code: 'sv-SE',\n  dir: 'ltr',\n  layouts: layouts,\n  display: display,\n};\n\nexport default locale;\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Inject,\n  LOCALE_ID,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { fnButton } from './Locale/constants';\nimport { Locale } from './Locale/type';\nimport * as Locales from './Locale';\n\n@Component({\n  selector: 'ngx-touch-keyboard',\n  templateUrl: './ngx-touch-keyboard.component.html',\n  styleUrls: ['./ngx-touch-keyboard.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgxTouchKeyboardComponent {\n  locale: Locale = Locales.enUS;\n  layoutMode = 'text';\n  layoutName = 'alphabetic';\n  debug = false;\n\n  @Output() closePanel = new EventEmitter<void>();\n\n  private _activeButtonClass = 'active';\n  private _holdInteractionTimeout!: number;\n  private _holdTimeout!: number;\n  private _isMouseHold!: boolean;\n  private _caretPosition: number | null = null;\n  private _caretPositionEnd: number | null = null;\n  private _activeInputElement!: HTMLInputElement | HTMLTextAreaElement | null;\n  private _dotPressed: boolean = false;\n  private _isNumericType: boolean = false;\n  /**\n   * Constructor\n   */\n  constructor(\n    private _sanitizer: DomSanitizer,\n    private _elementRef: ElementRef<HTMLInputElement>,\n    @Inject(LOCALE_ID) private _defaultLocale: string\n  ) {}\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Accessors\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Getter for maxLength\n   */\n  get maxLength(): number {\n    return this._activeInputElement?.maxLength ?? -1;\n  }\n\n  /**\n   * Getter for type of input\n   */\n  get isTextarea(): boolean {\n    return this._activeInputElement?.type === 'textarea';\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Decorated methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On keyup\n   */\n  @HostListener('window:keyup', ['$event'])\n  handleKeyUp(event: KeyboardEvent): void {\n    if (event.isTrusted) {\n      this._caretEventHandler(event);\n      this._handleHighlightKeyUp(event);\n    }\n  }\n\n  /**\n   * On keydown\n   */\n  @HostListener('window:keydown', ['$event'])\n  handleKeyDown(event: KeyboardEvent): void {\n    if (event.isTrusted) {\n      this._handleHighlightKeyDown(event);\n    }\n  }\n\n  /**\n   * On pointerup (mouseup or touchend)\n   */\n  @HostListener('window:pointerup', ['$event'])\n  handleMouseUp(event: MouseEvent): void {\n    this._caretEventHandler(event);\n  }\n\n  /**\n   * On select\n   */\n  @HostListener('window:select', ['$event'])\n  handleSelect(event: Event): void {\n    this._caretEventHandler(event);\n  }\n\n  /**\n   * On selectionchange\n   */\n  @HostListener('window:selectionchange', ['$event'])\n  handleSelectionChange(event: Event): void {\n    this._caretEventHandler(event);\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Public methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Set layout keyboard for locale\n   *\n   * @param value\n   */\n  setLocale(value: string = this._defaultLocale): void {\n    // normalize value\n    value = value.replace('-', '').trim();\n    // Set Locale if supported\n    if ((Object.keys(Locales) as readonly string[]).includes(value)) {\n      this.locale = Locales[value as 'enUS'];\n    }\n    // Set default Locale if not supported\n    else {\n      this.locale = Locales.enUS;\n    }\n  }\n\n  /**\n   * Set active input\n   *\n   * @param input Input native element\n   */\n  setActiveInput(input: HTMLInputElement | HTMLTextAreaElement, isNumeric =  false): void {\n    this._activeInputElement = input;\n\n    /**\n     * Tracking keyboard layout\n     */\n    this._isNumericType = isNumeric;\n    const inputMode = this._activeInputElement?.inputMode;\n\n     if(this._isNumericType){\n      this.layoutMode = 'decimal';\n    }else if  (\n      inputMode &&\n      ['text', 'search', 'email', 'url', 'numeric', 'decimal', 'tel'].some(\n        (i) => i === inputMode\n      )\n    ) {\n      this.layoutMode = inputMode;\n    } else {\n      this.layoutMode = 'text';\n    }\n\n     if(this._isNumericType){\n       this.layoutName = 'default';\n    } else if (\n      inputMode &&\n      ['numeric', 'decimal', 'tel'].some((i) => i === inputMode)\n    ) {\n      this.layoutName = 'default';\n    } else {\n      this.layoutName = 'alphabetic';\n    }\n\n    if (this.debug) {\n      console.log('Locale:', `${this.locale.code || this._defaultLocale}`);\n      console.log('Layout:', `${this.layoutMode}_${this.layoutName}`);\n    }\n\n    /**\n     * we must ensure caretPosition doesn't persist once reactivated.\n     */    \n    this._setCaretPosition(\n      this._activeInputElement.selectionStart,\n      this._activeInputElement.selectionEnd\n    );\n   \n    if (this.debug) {\n      console.log(\n        'Caret start at:',\n        this._caretPosition,\n        this._caretPositionEnd\n      );\n    }\n\n    // And set focus to input\n    this._focusActiveInput();\n  }\n\n  /**\n   * Check whether the button is a standard button\n   */\n  isStandardButton = (button: string) =>\n    button && !(button[0] === '{' && button[button.length - 1] === '}');\n\n  /**\n   * Retrieve button type\n   *\n   * @param button The button's layout name\n   * @return The button type\n   */\n  getButtonType(button: string): 'standard-key' | 'function-key' {\n    return this.isStandardButton(button) ? 'standard-key' : 'function-key';\n  }\n\n  /**\n   * Adds default classes to a given button\n   *\n   * @param button The button's layout name\n   * @return The classes to be added to the button\n   */\n  getButtonClass(button: string): string {\n    const buttonTypeClass = this.getButtonType(button);\n    const buttonWithoutBraces = button.replace('{', '').replace('}', '');\n    let buttonNormalized = '';\n\n    if (buttonTypeClass !== 'standard-key')\n      buttonNormalized = `${buttonWithoutBraces}-key`;\n\n    return `${buttonTypeClass} ${buttonNormalized}`;\n  }\n\n  /**\n   * Returns the display (label) name for a given button\n   *\n   * @param button The button's layout name\n   * @return The display name to be show to the button\n   */\n  getButtonDisplayName(button: string): SafeHtml {\n    return this._sanitizer.bypassSecurityTrustHtml(\n      this.locale.display[button] || button\n    );\n  }\n\n  /**\n   * Handles clicks made to keyboard buttons\n   *\n   * @param button The button layout name.\n   * @param event The button event.\n   */\n  handleButtonClicked(button: string, e?: Event): void {\n    if (this.debug) {\n      console.log('Key pressed:', button);\n    }\n\n    if (button === fnButton.SHIFT) {\n      this.layoutName =\n        this.layoutName === 'alphabetic' ? 'shift' : 'alphabetic';\n      return;\n    } else if (button === fnButton.DONE) {\n      this.closePanel.emit();\n      return;\n    }\n\n    var commonParams: [number, number, boolean] = [\n      this._caretPosition || 0,\n      this._caretPositionEnd || 0,\n      true,\n    ];\n    let output = this._activeInputElement?.value || '';\n\n    // Handel functional button\n    if (!this.isStandardButton(button)) {\n      // Handel BACKSPACE\n      if (button === fnButton.BACKSPACE) {\n        if(this._dotPressed){\n          output = this._removeAt(output, ...commonParams);                \n          if(output.endsWith('.')){           \n            commonParams = [\n            this._caretPosition || 0,\n            this._caretPositionEnd || 0,\n            true,\n          ];\n            output = this._removeAt(output, ...commonParams);          \n          }\n          this._dotPressed = false;         \n        }else{\n          output = this._removeAt(output, ...commonParams);\n          if(output.endsWith('.')){  \n             commonParams = [\n            this._caretPosition || 0,\n            this._caretPositionEnd || 0,\n            true,\n          ];        \n            output = this._removeAt(output, ...commonParams);          \n          }\n        }            \n      }\n      // Handel SPACE\n      else if (button === fnButton.SPACE) {\n        output = this._addStringAt(output, ' ', ...commonParams);\n      }\n      // Handel TAB\n      else if (button === fnButton.TAB) {\n        output = this._addStringAt(output, '\\t', ...commonParams);\n      }\n      // Handel ENTER\n      else if (button === fnButton.ENTER) {\n        if (this.isTextarea) {\n          output = this._addStringAt(output, '\\n', ...commonParams);\n        }\n      }\n      // Handel LAYOUT\n      else {\n        this.layoutName = button.substring(1, button.length - 1);\n        return;\n      }\n    }\n    else if(button==='.' && this._isNumericType){\n      if(!output.includes('.') && output.length!=0){\n        output = this._addStringAt(output, button, ...commonParams);\n      }     \n    }\n    else if(button==='0' && this._isNumericType && output.length===1){\n      if(!output.includes('0')){\n        output = this._addStringAt(output, button, ...commonParams);\n      }     \n    }\n    else if(button==='.' && this._activeInputElement?.type == 'number'){\n       output = this._addStringAt(output, '.0', ...commonParams);\n      this._dotPressed = true;   \n    }\n    // Handel standard button\n    else {\n      if(this._dotPressed){\n        output = this._removeAt(output, ...commonParams);      \n        output = this._addStringAt(output, button, ...commonParams);\n        this._dotPressed = false;\n      }else if(this._activeInputElement?.type == 'number' && this._activeInputElement?.value ==='0'){\n        output = this._removeAt(output, ...commonParams);       \n        output = this._addStringAt(output, button, ...commonParams);\n        this._updateCaretPos(1,true);      \n      }else{\n        output = this._addStringAt(output, button, ...commonParams);\n      }      \n    }\n\n    if (this._activeInputElement) {\n      this._activeInputElement.value = output;\n\n      if (this.debug) {\n        console.log(\n          'Caret at:',\n          this._caretPosition,\n          this._caretPositionEnd,\n          'Button',\n          e\n        );\n      }\n    }\n\n    this._dispatchEvents(button);\n  }\n\n  /**\n   * Handles button mousedown\n   *\n   * @param button The button layout name.\n   * @param event The button event.\n   */\n  handleButtonMouseDown(button: string, e?: Event): void {\n    if (e) {\n      /**\n       * Handle event options\n       */\n      e.preventDefault();\n      e.stopPropagation();\n    }\n\n    /**\n     * Add active class\n     */\n    this._setActiveButton(button);\n\n    if (this._holdInteractionTimeout)\n      clearTimeout(this._holdInteractionTimeout);\n    if (this._holdTimeout) clearTimeout(this._holdTimeout);\n    this._isMouseHold = true;\n\n    /**\n     * Time to wait until a key hold is detected\n     */\n    this._holdTimeout = window.setTimeout(() => {\n      if (\n        this._isMouseHold &&\n        ((!button.includes('{') && !button.includes('}')) ||\n          button === fnButton.BACKSPACE ||\n          button === fnButton.SPACE)\n      ) {\n        if (this.debug) {\n          console.log('Button held:', button);\n        }\n        this.handleButtonHold(button);\n      }\n      clearTimeout(this._holdTimeout);\n    }, 500);\n  }\n\n  /**\n   * Handles button mouseup\n   *\n   * @param button The button layout name.\n   * @param event The button event.\n   */\n  handleButtonMouseUp(button: string, e?: Event): void {\n    if (e) {\n      /**\n       * Handle event options\n       */\n      e.preventDefault();\n      e.stopPropagation();\n    }\n\n    /**\n     * Remove active class\n     */\n    this._removeActiveButton();\n\n    this._isMouseHold = false;\n    if (this._holdInteractionTimeout)\n      clearTimeout(this._holdInteractionTimeout);\n  }\n\n  /**\n   * Handles button hold\n   */\n  handleButtonHold(button: string): void {\n    if (this._holdInteractionTimeout)\n      clearTimeout(this._holdInteractionTimeout);\n\n    /**\n     * Timeout dictating the speed of key hold iterations\n     */\n    this._holdInteractionTimeout = window.setTimeout(() => {\n      if (this._isMouseHold) {\n        this.handleButtonClicked(button);\n        this.handleButtonHold(button);\n      } else {\n        clearTimeout(this._holdInteractionTimeout);\n      }\n    }, 100);\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Private methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Changes the internal caret position\n   *\n   * @private\n   * @param position The caret's start position\n   * @param positionEnd The caret's end position\n   */\n  private _setCaretPosition(\n    position: number | null,\n    endPosition = position\n  ): void {\n     //begin customized by Datex\n    if(this._activeInputElement?.type == 'number' && (!position || position===0) ){\n      var val = this._activeInputElement.value.toString();\n      position = val.length;\n      endPosition = val.length;\n    } //end customized by Datex\n    this._caretPosition = position;\n    this._caretPositionEnd = endPosition;\n  }\n\n  /**\n   * Moves the cursor position by a given amount\n   *\n   * @private\n   * @param length Represents by how many characters the input should be moved\n   * @param minus Whether the cursor should be moved to the left or not.\n   */\n  private _updateCaretPos(length: number, minus = false) {\n    const newCaretPos = this._updateCaretPosAction(length, minus);\n    this._setCaretPosition(newCaretPos);\n    // Scroll to bottom\n    setTimeout(() => {\n      this._activeInputElement?.scrollTo({\n        top: this._activeInputElement.scrollHeight,\n      } as ScrollToOptions);\n    });\n  }\n\n  /**\n   * Action method of updateCaretPos\n   *\n   * @private\n   * @param length Represents by how many characters the input should be moved\n   * @param minus Whether the cursor should be moved to the left or not.\n   */\n  private _updateCaretPosAction(length: number, minus = false) {\n    let caretPosition = this._caretPosition;\n\n    if (caretPosition != null) {\n      if (minus) {\n        if (caretPosition > 0) caretPosition = caretPosition - length;\n      } else {\n        caretPosition = caretPosition + length;\n      }\n    }\n\n    return caretPosition;\n  }\n\n  /**\n   * Removes an amount of characters before a given position\n   *\n   * @private\n   * @param source The source input\n   * @param position The (cursor) position from where the characters should be removed\n   * @param moveCaret Whether to update input cursor\n   */\n  private _removeAt(\n    source: string,\n    position = source.length,\n    positionEnd = source.length,\n    moveCaret = false\n  ) {\n    if (position === 0 && positionEnd === 0) {\n      return source;\n    }\n\n    let output;\n\n    if (position === positionEnd) {\n      let prevTwoChars;\n      let emojiMatched;\n      const emojiMatchedReg = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n\n      /**\n       * Emojis are made out of two characters, so we must take a custom approach to trim them.\n       * For more info: https://mathiasbynens.be/notes/javascript-unicode\n       */\n      if (position && position >= 0) {\n        prevTwoChars = source.substring(position - 2, position);\n        emojiMatched = prevTwoChars.match(emojiMatchedReg);\n\n        if (emojiMatched) {\n          output = source.substr(0, position - 2) + source.substr(position);\n          if (moveCaret) this._updateCaretPos(2, true);\n        } else {\n          output = source.substr(0, position - 1) + source.substr(position);\n          if (moveCaret) this._updateCaretPos(1, true);\n        }\n      } else {\n        prevTwoChars = source.slice(-2);\n        emojiMatched = prevTwoChars.match(emojiMatchedReg);\n\n        if (emojiMatched) {\n          output = source.slice(0, -2);\n          if (moveCaret) this._updateCaretPos(2, true);\n        } else {\n          output = source.slice(0, -1);\n          if (moveCaret) this._updateCaretPos(1, true);\n        }\n      }\n    } else {\n      output = source.slice(0, position) + source.slice(positionEnd);\n      if (moveCaret) {\n        this._setCaretPosition(position);\n      }\n    }\n\n    return output;\n  }\n\n  /**\n   * Adds a string to the input at a given position\n   *\n   * @private\n   * @param source The source input\n   * @param str The string to add\n   * @param position The (cursor) position where the string should be added\n   * @param moveCaret Whether to update virtual-keyboard cursor\n   */\n  private _addStringAt(\n    source: string,\n    str: string,\n    position = source.length,\n    positionEnd = source.length,\n    moveCaret = false\n  ) {\n    if (this.maxLength !== -1 && source.length >= this.maxLength) {\n      return source;\n    }\n\n    let output;\n\n    //begin customized by Datex\n    let isNumber = this._activeInputElement?.type == 'number';\n    if (isNumber || (!position && position !== 0)) {\n      output = source + str;\n      if(isNumber){\n        if (moveCaret) this._updateCaretPos(str.length, false);\n      }//end customized by Datex\n    } else {\n      output = [source.slice(0, position), str, source.slice(positionEnd)].join(\n        ''\n      );\n      if (moveCaret) this._updateCaretPos(str.length, false);\n    }\n\n    return output;\n  }\n\n  /**\n   * Method to dispatch necessary keyboard events to current input element.\n   * @see https://w3c.github.io/uievents/tools/key-event-viewer.html\n   *\n   * @param button\n   */\n  private _dispatchEvents(button: string) {\n    let key, code;\n    if (button.includes('{') && button.includes('}')) {\n      // Capitalize name\n      key = button.slice(1, button.length - 1).toLowerCase();\n      key = key.charAt(0).toUpperCase() + key.slice(1);\n      code = key;\n    } else {\n      key = button;\n      code = Number.isInteger(Number(button))\n        ? `Digit${button}`\n        : `Key${button.toUpperCase()}`;\n    }\n\n    const eventInit: KeyboardEventInit = {\n      bubbles: true,\n      cancelable: true,\n      shiftKey: this.layoutName == 'shift',\n      key: key,\n      code: code,\n      location: 0,\n    };\n\n    // Simulate all needed events on base element\n    this._activeInputElement?.dispatchEvent(\n      new KeyboardEvent('keydown', eventInit)\n    );\n    this._activeInputElement?.dispatchEvent(\n      new KeyboardEvent('keypress', eventInit)\n    );\n    this._activeInputElement?.dispatchEvent(\n      new Event('input', { bubbles: true })\n    );\n    this._activeInputElement?.dispatchEvent(\n      new KeyboardEvent('keyup', eventInit)\n    );\n\n    // And set focus to input\n    this._focusActiveInput();\n  }\n\n  /**\n   * Called when an event that warrants a cursor position update is triggered\n   *\n   * @private\n   * @param event\n   */\n  private _caretEventHandler(event: any) {\n    let targetTagName = '';\n    if (event.target.tagName) {\n      targetTagName = event.target.tagName.toLowerCase();\n    }\n\n    const isTextInput =\n      targetTagName === 'textarea' ||\n      (targetTagName === 'input' &&\n        ['text', 'search', 'email', 'password', 'url', 'tel'].includes(\n          event.target.type\n        ));\n\n    const isKeyboard =\n      event.target === this._elementRef.nativeElement ||\n      (event.target && this._elementRef.nativeElement.contains(event.target));\n\n    if (isTextInput && this._activeInputElement == event.target) {\n      /**\n       * Tracks current cursor position\n       * As keys are pressed, text will be added/removed at that position within the input.\n       */\n      this._setCaretPosition(\n        event.target.selectionStart,\n        event.target.selectionEnd\n      );\n\n      if (this.debug) {\n        console.log(\n          'Caret at:',\n          this._caretPosition,\n          this._caretPositionEnd,\n          event && event.target.tagName.toLowerCase(),\n          event\n        );\n      }\n    } else if (\n      event.type === 'pointerup' &&\n      this._activeInputElement === document.activeElement\n    ) {\n      if (this._isMouseHold) {\n        this.handleButtonMouseUp('');\n      }\n      return;\n    } else if (!isKeyboard && event?.type !== 'selectionchange') {\n      /**\n       * we must ensure caretPosition doesn't persist once reactivated.\n       */\n      this._setCaretPosition(null);\n\n      if (this.debug) {\n        console.log(\n          `Caret position reset due to \"${event?.type}\" event`,\n          event\n        );\n      }\n\n      /**\n       * Close panel\n       */\n      this.closePanel.emit();\n      \n    }\n  }\n\n  /**\n   * Focus to input\n   *\n   * @private\n   */\n  private _focusActiveInput(): void {\n    this._activeInputElement?.focus();\n      //begin customized by Datex\n    if(this._activeInputElement?.type=='number'){\n      return;\n    } //end customized by Datex\n    this._activeInputElement?.setSelectionRange(\n     this._caretPosition,\n     this._caretPositionEnd\n    );\n  }\n\n  /**\n   * Handel highlight on key down\n   *\n   * @private\n   * @param event The KeyboardEvent\n   */\n  private _handleHighlightKeyDown(event: KeyboardEvent): void {\n    const buttonPressed = this._getKeyboardLayoutKey(event);\n    /**\n     * Add active class\n     */\n    this._setActiveButton(buttonPressed);\n  }\n\n  /**\n   * Handel highlight on key up\n   *\n   * @private\n   * @param event The KeyboardEvent\n   */\n  private _handleHighlightKeyUp(event: KeyboardEvent): void {\n    const buttonPressed = this._getKeyboardLayoutKey(event);\n    /**\n     * Remove active class\n     */\n    this._removeActiveButton(buttonPressed);\n  }\n\n  /**\n   * Transforms a KeyboardEvent's \"key.code\" string into a virtual-keyboard layout format\n   *\n   * @private\n   * @param event The KeyboardEvent\n   */\n  private _getKeyboardLayoutKey(event: KeyboardEvent) {\n    let output = '';\n    const keyId = event.code || event.key;\n\n    if (\n      keyId?.includes('Space') ||\n      keyId?.includes('Numpad') ||\n      keyId?.includes('Backspace') ||\n      keyId?.includes('CapsLock') ||\n      keyId?.includes('Meta')\n    ) {\n      output = `{${event.code}}` || '';\n    } else if (\n      keyId?.includes('Control') ||\n      keyId?.includes('Shift') ||\n      keyId?.includes('Alt')\n    ) {\n      output = `{${event.key}}` || '';\n    } else {\n      output = event.key || '';\n    }\n\n    return output.length > 1 ? output?.toLowerCase() : output;\n  }\n\n  /**\n   * Set active class in button\n   *\n   * @param buttonName\n   */\n  private _setActiveButton(buttonName: string): void {\n    const node = this._elementRef.nativeElement\n      .getElementsByTagName('button')\n      .namedItem(buttonName);\n    if (node && node.classList) {\n      node.classList.add(this._activeButtonClass);\n    }\n  }\n\n  /**\n   * Remove active button\n   *\n   * @param buttonName\n   */\n  private _removeActiveButton(buttonName?: string): void {\n    const nodes = this._elementRef.nativeElement.getElementsByTagName('button');\n    if (buttonName) {\n      const node = nodes.namedItem(buttonName);\n      if (node && node.classList) {\n        node.classList.remove(this._activeButtonClass);\n      }\n    } else {\n      for (let i = 0; i < nodes.length; i++) {\n        nodes[i].classList.remove(this._activeButtonClass);\n      }\n    }\n  }\n}\n","<div\n  dir=\"ltr\"\n  class=\"touch-keyboard\"\n  [ngClass]=\"'layout-' + layoutMode + '-' + layoutName\"\n>\n  <ng-container\n    *ngFor=\"\n      let row of locale.layouts[layoutMode + '_' + layoutName];\n      let rowIndex = index\n    \"\n  >\n    <div class=\"touch-keyboard-row\">\n      <ng-container *ngFor=\"let key of row; let keyIndex = index\">\n        <button\n          [name]=\"key\"\n          [dir]=\"locale.dir\"\n          class=\"touch-keyboard-key\"\n          [ngClass]=\"[getButtonClass(key)]\"\n          [attr.data-layout]=\"layoutMode\"\n          (pointerdown)=\"\n            handleButtonClicked(key, $event); handleButtonMouseDown(key, $event)\n          \"\n          (pointerup)=\"handleButtonMouseUp(key, $event)\"\n          (pointercancel)=\"handleButtonMouseUp(key, $event)\"\n          [innerHtml]=\"getButtonDisplayName(key)\"\n        ></button>\n      </ng-container>\n    </div>\n  </ng-container>\n</div>\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Overlay,\n  OverlayRef,\n  OverlaySizeConfig,\n  PositionStrategy,\n} from '@angular/cdk/overlay';\nimport { NgxTouchKeyboardComponent } from './ngx-touch-keyboard.component';\n\n@Directive({\n  selector: 'input[ngxTouchKeyboard], textarea[ngxTouchKeyboard]',\n  exportAs: 'ngxTouchKeyboard',\n})\nexport class NgxTouchKeyboardDirective implements OnDestroy {\n  isOpen = false;\n\n  private _locale!: string;\n  /** locale */\n  @Input()\n  get ngxTouchKeyboard() {\n    return this._locale;\n  }\n  set ngxTouchKeyboard(value: string) {\n    this._locale = value;\n  }\n\n  private _debugMode!: boolean;\n  /** debug mode */\n  @Input()\n  get ngxTouchKeyboardDebug() {\n    return this._debugMode;\n  }\n  set ngxTouchKeyboardDebug(value: any) {\n    this._debugMode = coerceBooleanProperty(value);\n  }\n\n  private _fullScreenMode!: boolean;\n  /** fullscreen mode */\n  @Input()\n  get ngxTouchKeyboardFullScreen() {\n    return this._fullScreenMode;\n  }\n  set ngxTouchKeyboardFullScreen(value: any) {\n    this._fullScreenMode = coerceBooleanProperty(value);\n  }\n\n  private _ngxNumericType:boolean = false;\n  /** numeric mode */\n  @Input()\n  get ngxNumericType(){\n    return this._ngxNumericType;\n  }  \n  set ngxNumericType(value: any){\n    this._ngxNumericType = coerceBooleanProperty(value);;\n  }\n\n  @Output()\n  onPanelClosed = new EventEmitter();\n\n  private _overlayRef!: OverlayRef;\n  private _panelRef!: ComponentRef<NgxTouchKeyboardComponent>;\n\n  /**\n   * Constructor\n   */\n  constructor(\n    private _overlay: Overlay,\n    private _elementRef: ElementRef<HTMLInputElement>,\n    @Inject(DOCUMENT) private _document: any\n  ) {}\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Lifecycle hooks\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Dispose the overlay\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n    }\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Public methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Open keyboard panel\n   */\n  openPanel(): void {\n    // return if panel is attached\n    if (this._overlayRef?.hasAttached()) {\n      return;\n    }\n\n    // Create the overlay if it doesn't exist\n    if (!this._overlayRef) {\n      this._createOverlay();\n    }\n\n    // Set overlay class\n    this._overlayRef.addPanelClass('ngx-touch-keyboard-overlay-pane');\n    if (this.ngxTouchKeyboardFullScreen)\n      this._overlayRef.addPanelClass('ngx-touch-keyboard-fullScreen');\n\n    // Update direction the overlay\n    this._overlayRef.setDirection(\n      this._document.body.getAttribute('dir') || this._document.dir || 'ltr'\n    );\n    // Update position the overlay\n    this._overlayRef.updatePositionStrategy(\n      this._getPositionStrategy(this.ngxTouchKeyboardFullScreen)\n    );\n    // Update size the overlay\n    this._overlayRef.updateSize(\n      this._getOverlaySize(this.ngxTouchKeyboardFullScreen)\n    );\n\n    // Attach the portal to the overlay\n    this._panelRef = this._overlayRef.attach(\n      new ComponentPortal(NgxTouchKeyboardComponent)\n    );\n    this._panelRef.instance.debug = this.ngxTouchKeyboardDebug;\n    this._panelRef.instance.setLocale(this._locale);\n    this._panelRef.instance.setActiveInput(this._elementRef.nativeElement, this._ngxNumericType);\n    this.isOpen = true;\n\n    // Reference the input element\n    this._panelRef.instance.closePanel.subscribe(() => {\n      this.closePanel();\n      this.onPanelClosed.emit();\n    });\n  }\n\n  /**\n   * Close keyboard panel\n   */\n  closePanel(): void {\n    this._overlayRef.detach();\n    this.isOpen = false;\n  }\n\n  /**\n   * Toggle keyboard panel\n   */\n  togglePanel(): void {\n    if (this.isOpen) {\n      this.closePanel();\n    } else {\n      this.openPanel();\n    }\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Private methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Create the overlay\n   *\n   * @private\n   */\n  private _createOverlay(): void {\n    this._overlayRef = this._overlay.create({\n      hasBackdrop: false,\n      scrollStrategy: this._overlay.scrollStrategies.noop(),\n    });\n  }\n\n  /**\n   * Get position strategy\n   *\n   * @param fullscreen\n   * @private\n   */\n  private _getPositionStrategy(fullscreen: boolean): PositionStrategy {\n    if (fullscreen) {\n      return this._overlay.position().global().centerHorizontally().bottom('0');\n    }\n\n    return this._overlay\n      .position()\n      .flexibleConnectedTo(this._inputOrigin())\n      .withLockedPosition(true)\n      .withPush(true)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n        },\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top',\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom',\n        },\n      ]);\n  }\n\n  /**\n   * Get overlay size\n   *\n   * @param fullscreen\n   * @private\n   */\n  private _getOverlaySize(fullscreen: boolean): OverlaySizeConfig {\n    if (fullscreen) {\n      return {\n        width: '100%',\n        maxWidth: '100%',\n        minWidth: '100%',\n      };\n    }\n\n    return {\n      width: this._inputOrigin().getBoundingClientRect().width,\n      maxWidth: this._inputOrigin().getBoundingClientRect().width,\n      minWidth: '260px',\n    };\n  }\n\n  /**\n   * Get input origin\n   *\n   * @private\n   */\n  private _inputOrigin(): any {\n    const element = this._elementRef.nativeElement;\n\n    // Material form field - Check input in mat-form-field\n    if (element.classList.contains('mat-input-element')) {\n      // Return [mat-form-field-flex] element\n      return element.parentNode?.parentNode;\n    }\n\n    // Material form field - Check input in mat-form-field\n    if (element.classList.contains('mat-mdc-input-element')) {\n      // Return [mat-form-field] element\n      return element.parentNode?.parentNode?.parentNode;\n    }\n\n    // Return input\n    return element;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\n\nimport { NgxTouchKeyboardDirective } from './ngx-touch-keyboard.directive';\nimport { NgxTouchKeyboardComponent } from './ngx-touch-keyboard.component';\n\n@NgModule({\n  declarations: [NgxTouchKeyboardDirective, NgxTouchKeyboardComponent],\n  imports: [CommonModule, OverlayModule, PortalModule],\n  exports: [NgxTouchKeyboardDirective, NgxTouchKeyboardComponent],\n})\nexport class NgxTouchKeyboardModule {}\n","/*\n * Public API Surface of ngx-touch-keyboard\n */\n\nexport * from './lib/ngx-touch-keyboard.component';\nexport * from './lib/ngx-touch-keyboard.directive';\nexport * from './lib/ngx-touch-keyboard.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["layouts","display","locale","Locales.enUS"],"mappings":"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"}