js_lis 2.0.8 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/layouts.js CHANGED
@@ -1,25 +1,113 @@
1
1
  export const layouts = {
2
2
  full: [
3
3
  // ["Esc", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "DEL⌦", "HOME", "END"],"ㅤ","ㅤ","ㅤ","ㅤ",
4
- ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Backspace"].concat(["+", "-", "*","/"]),
5
- ["Tab ↹", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"].concat(["7", "8", "9", "%"]),
6
- ["Caps 🄰", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"].concat(["4", "5", "6", "_"]),
7
- ["Shift ⇧", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift ⇧", "↑"].concat(["1", "2", "3", "="]),
4
+ [
5
+ "`",
6
+ "1",
7
+ "2",
8
+ "3",
9
+ "4",
10
+ "5",
11
+ "6",
12
+ "7",
13
+ "8",
14
+ "9",
15
+ "0",
16
+ "-",
17
+ "=",
18
+ "Backspace",
19
+ ].concat(["+", "-", "*", "/"]),
20
+ [
21
+ "Tab ↹",
22
+ "q",
23
+ "w",
24
+ "e",
25
+ "r",
26
+ "t",
27
+ "y",
28
+ "u",
29
+ "i",
30
+ "o",
31
+ "p",
32
+ "[",
33
+ "]",
34
+ "\\",
35
+ ].concat(["7", "8", "9", "%"]),
36
+ [
37
+ "Caps 🄰",
38
+ "a",
39
+ "s",
40
+ "d",
41
+ "f",
42
+ "g",
43
+ "h",
44
+ "j",
45
+ "k",
46
+ "l",
47
+ ";",
48
+ "'",
49
+ "Enter",
50
+ ].concat(["4", "5", "6", "_"]),
51
+ [
52
+ "Shift ⇧",
53
+ "z",
54
+ "x",
55
+ "c",
56
+ "v",
57
+ "b",
58
+ "n",
59
+ "m",
60
+ ",",
61
+ ".",
62
+ "/",
63
+ "Shift ⇧",
64
+ "↑",
65
+ ].concat(["1", "2", "3", "="]),
8
66
  ["scrambled", " ", "←", "↓", "→"].concat(["0", "."]),
9
67
  ],
10
68
  en: [
11
- ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Backspace"],
69
+ [
70
+ "`",
71
+ "1",
72
+ "2",
73
+ "3",
74
+ "4",
75
+ "5",
76
+ "6",
77
+ "7",
78
+ "8",
79
+ "9",
80
+ "0",
81
+ "-",
82
+ "=",
83
+ "Backspace",
84
+ ],
12
85
  ["Tab ↹", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
13
86
  ["Caps 🄰", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],
14
87
  ["Shift ⇧", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift ⇧"],
15
88
  ["scrambled", " "],
16
89
  ],
17
90
  th: [
18
- ["_", "ๅ", "/", "-", "ภ", "ถ", "ุ", "ึ", "ค", "ต", "จ", "ข", "ช", "Backspace"],
91
+ [
92
+ "_",
93
+ "ๅ",
94
+ "/",
95
+ "-",
96
+ "ภ",
97
+ "ถ",
98
+ "ุ",
99
+ "ึ",
100
+ "ค",
101
+ "ต",
102
+ "จ",
103
+ "ข",
104
+ "ช",
105
+ "Backspace",
106
+ ],
19
107
  ["Tab ↹", "ๆ", "ไ", "ำ", "พ", "ะ", "ั", "ี", "ร", "น", "ย", "บ", "ล", "ฃ"],
20
108
  ["Caps 🄰", "ฟ", "ห", "ก", "ด", "เ", "้", "่", "า", "ส", "ว", "ง", "Enter"],
21
109
  ["Shift ⇧", "ผ", "ป", "แ", "อ", "ิ", "ื", "ท", "ม", "ใ", "ฝ", "Shift ⇧"],
22
- ["scrambled" ," "],
110
+ ["scrambled", " "],
23
111
  ],
24
112
  numpad: [
25
113
  ["scr", "+", "-", "*"],
@@ -27,13 +115,14 @@ export const layouts = {
27
115
  ["4", "5", "6", "%"],
28
116
  ["7", "8", "9", "."],
29
117
  ["(", "0", ")", "="],
30
- ["backspace"]
118
+ ["backspace"],
31
119
  ],
32
120
  symbols: [
33
- ['scr', '@', '#', '$', '%', '^', '&', '*', '(', ')'],
34
- ['_', '+', '~', '`', '{', '}', '|', '\\', ':', '!'],
35
- ["'", '<', '>', '?', '/', '[', ']', '±', '§', '¶'],
36
- ['', '£', '¥', '¢', '©', '®', '', '', '‰', '†'],
37
- ["backspace"]
38
- ]
39
- };
121
+ ['scr', '@', '#', '$', '%', '^', '&', '*'],
122
+ ['(', ')', '_', '+', '~', '`', '{', '}'],
123
+ ['|', '\\', ':', '!', "'", '<', '>', '?'],
124
+ ['/', '[', ']', '±', '§', '', '', '£'],
125
+ ['¥', '¢', '©', '®', '™', '℅', '‰', '†'],
126
+ ["backspace"],
127
+ ],
128
+ };
package/main.js CHANGED
@@ -1,43 +1,9 @@
1
- import { VirtualKeyboard } from './VirtualKeyboard.js';
1
+ import { VirtualKeyboard } from "./VirtualKeyboard.js";
2
2
 
3
- // Provide simple session-scoped AES crypto utilities backed by CryptoJS (loaded globally via CDN)
4
- function createSessionCrypto() {
5
- const sessionKey = CryptoJS.lib.WordArray.random(32); // 256-bit key
6
- return {
7
- encrypt(plaintext) {
8
- const iv = CryptoJS.lib.WordArray.random(16);
9
- const cipher = CryptoJS.AES.encrypt(plaintext, sessionKey, {
10
- iv,
11
- mode: CryptoJS.mode.CBC,
12
- padding: CryptoJS.pad.Pkcs7,
13
- });
14
- const ivHex = CryptoJS.enc.Hex.stringify(iv);
15
- const ctB64 = cipher.toString();
16
- return `${ivHex}:${ctB64}`;
17
- },
18
- decrypt(payload) {
19
- if (!payload) return "";
20
- const [ivHex, ctB64] = String(payload).split(":");
21
- if (!ivHex || !ctB64) return "";
22
- const iv = CryptoJS.enc.Hex.parse(ivHex);
23
- const decrypted = CryptoJS.AES.decrypt(ctB64, sessionKey, {
24
- iv,
25
- mode: CryptoJS.mode.CBC,
26
- padding: CryptoJS.pad.Pkcs7,
27
- });
28
- return decrypted.toString(CryptoJS.enc.Utf8);
29
- },
30
- };
31
- }
32
-
33
- window.onload = () => {
34
- try {
35
- // Initialize per-page crypto helper
36
- window.VKCrypto = createSessionCrypto();
37
-
38
- window.keyboard = new VirtualKeyboard();
39
- console.log("VirtualKeyboard initialized successfully.");
40
- } catch (error) {
41
- console.error("Error initializing VirtualKeyboard:", error);
42
- }
43
- };
3
+ window.addEventListener("DOMContentLoaded", () => {
4
+ try {
5
+ window.keyboard = new VirtualKeyboard();
6
+ } catch (error) {
7
+ console.error("Error initializing VirtualKeyboard:", error);
8
+ }
9
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js_lis",
3
- "version": "2.0.8",
3
+ "version": "3.0.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
package/style/kbstyle.js CHANGED
@@ -1,10 +1,9 @@
1
- // CSS-in-JS version of kbstyle.css
2
1
  export const css = `
3
- .keyboard-row,.virtual-keyboard{display:flex;display:flex}.keyb,.keyboard-key{cursor:pointer;font-size:16px;text-align:center}.virtual-keyboard{flex-direction:column;width:100%;max-width:800px;margin:0 auto;border:2px solid #333;border-radius:10px;padding:20px;background-color:#f5f5f5;box-shadow:0 4px 10px rgba(0,0,0,.1)}.keyboard-row{justify-content:space-between}.keyboard-key{flex:1;padding:10px 15px;margin:2px;border:1px solid #ccc;border-radius:5px;background-color:#fff;transition:background-color .2s}.keyboard-active,input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.backspacew{flex:1.5;width:260px}.keyboard-key:hover{background:#e0e0e0}.keyboard-key:active{background:#d0d0d0;transform:translateY(1px)}.keyboard-row{display:flex;justify-content:flex-start;margin:5px 0}.controls{margin-bottom:20px}button,select{margin-right:10px;padding:8px 12px;border:1px solid #ccc;border-radius:4px;font-size:14px;cursor:pointer}button:hover{background:#f0f0f0}input:focus,textarea:focus{outline:0}#keyboard{position:absolute;cursor:move;top:80%;left:50%;transform:translate(-50%,-50%)}.keyb{color:#fff;border:#000;width:40px;height:25px;line-height:50px;margin:8px}.keyboard-row .active{background:#c7c7c7}body.dark-mode .virtual-keyboard{background-color:#333;box-shadow:0 4px 8px rgba(247,245,245,.1)}body.dark-mode{background-color:#333}body.dark-mode .login-container{background-color:#000;box-shadow:0 4px 8px rgba(247,245,245,.1);color:#fff}body.dark-mode .login-container input{background-color:#3333335d;color:#fff}body.dark-mode .login-container button{background-color:#005703;color:#fff}.fa-keyboard{color:#000}body.dark-mode .keyb .fa-keyboard{color:#ffffffde}body.dark-mode .keyboard-key.key{background-color:#222;color:#ffffffde}[data-key="Caps 🄰"],[data-key="Shift ⇧"],[data-key="Tab ↹"]{min-width:90px}.keyboard-key.key[data-key="Shift ⇧"]{color:#333}.virtual-keyboard.full [data-key=Enter]{min-width:95px}.virtual-keyboard.full [data-key="Shift ⇧"]{min-width:92px}.virtual-keyboard.full [data-key=" "]{min-width:563.8px}.virtual-keyboard.full .concat-keys[data-key="0"]{min-width:102px}.virtual-keyboard.full{min-width:1000px}.virtual-keyboard.Scnum,.virtual-keyboard.numpad{max-width:300px}.hidden{display:none!important}[data-key="Tab ↹"],[data-key=Backspace]{min-width:80px}[data-key="Shift ⇧"]{min-width:100px}[data-key=" "]{min-width:670px}
2
+ .keyboard-row,.virtual-keyboard{display:flex;display:flex}.keyb,.keyboard-key{cursor:pointer;font-size:16px;text-align:center}.virtual-keyboard{flex-direction:column;width:100%;max-width:800px;margin:0 auto;border:2px solid #333;border-radius:10px;padding:20px;background-color:#f5f5f5;box-shadow:0 4px 10px rgba(0,0,0,.1)}.keyboard-row{justify-content:space-between}.keyboard-key{flex:1;padding:10px 15px;margin:2px;border:1px solid #ccc;border-radius:5px;background-color:#fff;transition:background-color .2s}.keyboard-active,input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.backspacew{flex:1.5;width:260px}.keyboard-key:hover{background:#e0e0e0}.keyboard-key:active{background:#d0d0d0;transform:translateY(1px)}.keyboard-row{display:flex;justify-content:flex-start;margin:5px 0}.controls{margin-bottom:20px}button,select{margin-right:10px;padding:8px 12px;border:1px solid #ccc;border-radius:4px;font-size:14px;cursor:pointer}button:hover{background:#f0f0f0}input:focus,textarea:focus{outline:0}#keyboard{position:absolute;cursor:move;top:80%;left:50%;transform:translate(-50%,-50%)}.keyb{color:#fff;border:#000;width:40px;height:25px;line-height:50px;margin:8px}.keyboard-row .active{background:#c7c7c7}body.dark-mode .virtual-keyboard{background-color:#333;box-shadow:0 4px 8px rgba(247,245,245,.1)}body.dark-mode{background-color:#333}body.dark-mode .login-container{background-color:#000;box-shadow:0 4px 8px rgba(247,245,245,.1);color:#fff}body.dark-mode .login-container input{background-color:#3333335d;color:#fff}body.dark-mode .login-container button{background-color:#005703;color:#fff}.fa-keyboard{color:#000}body.dark-mode .keyb .fa-keyboard{color:#ffffffde}body.dark-mode .keyboard-key.key{background-color:#222;color:#ffffffde}[data-key="Caps 🄰"],[data-key="Shift ⇧"],[data-key="Tab ↹"]{min-width:90px}.keyboard-key.key[data-key="Shift ⇧"]{color:#333}.virtual-keyboard.full [data-key=Enter]{min-width:95px}.virtual-keyboard.full [data-key="Shift ⇧"]{min-width:92px}.virtual-keyboard.full [data-key=" "]{min-width:563.8px}.virtual-keyboard.full .concat-keys[data-key="0"]{min-width:102px}.virtual-keyboard.full{min-width:1000px}.virtual-keyboard.Scnum,.virtual-keyboard.numpad{max-width:300px}.virtual-keyboard.symbols{max-width:450px}.hidden{display:none!important}[data-key="Tab ↹"],[data-key=Backspace]{min-width:80px}[data-key="Shift ⇧"]{min-width:100px}[data-key=" "]{min-width:670px}
4
3
  `;
5
4
 
6
- export function injectCSS() {
7
- const style = document.createElement('style');
8
- style.textContent = css;
9
- document.head.appendChild(style);
10
- }
5
+ export function injectCSS() {
6
+ const style = document.createElement("style");
7
+ style.textContent = css;
8
+ document.head.appendChild(style);
9
+ }