@leonabcd123/modern-caps-lock 3.0.2 → 3.0.4

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/README.md CHANGED
@@ -60,6 +60,32 @@ if (isCapsLockOn()) {
60
60
  }
61
61
  ```
62
62
 
63
+ ### Support
64
+
65
+ ##### Supported Platforms:
66
+
67
+ - Windows
68
+ - Mac
69
+ - Linux
70
+ - iPad
71
+
72
+ ##### Unsupported Platforms:
73
+
74
+ - Platforms using [GBoard](https://en.wikipedia.org/wiki/Gboard)
75
+
76
+ ### Limitations
77
+
78
+ Because of browser limitations, we can only detect the Caps Lock state after a KeyboardEvent
79
+ or a MouseEvent. We currently detect updates to the Caps Lock state when the following events are fired:
80
+
81
+ - keydown
82
+ - keyup
83
+ - mousedown
84
+ - mousemove
85
+ - wheel
86
+
87
+ Before any of these events are fired, Caps Lock state is off.
88
+
63
89
  ### Credits
64
90
 
65
91
  Created by [Leon](https://github.com/Leonabcd123) and [fehmer](https://github.com/fehmer).
package/lib/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
+ type OnCapsChangeCallback = (capsState: boolean) => void;
1
2
  export declare function isCapsLockOn(): boolean;
2
- export declare function onCapsLockChange(callback: (capsState: boolean) => void): void;
3
+ export declare function onCapsLockChange(callback: OnCapsChangeCallback): void;
4
+ export {};
package/lib/index.js CHANGED
@@ -1,15 +1,15 @@
1
- function isPlatform(searchTerm) {
2
- var _a;
3
- return (((_a = navigator.userAgentData) !== null && _a !== void 0 ? _a : navigator).platform).toLowerCase().startsWith(searchTerm);
1
+ function isPlatform(osName) {
2
+ var _a, _b;
3
+ return osName.test((_b = (_a = navigator.userAgentData) === null || _a === void 0 ? void 0 : _a.platform) !== null && _b !== void 0 ? _b : (navigator.oscpu || navigator.userAgent || navigator.platform));
4
4
  }
5
5
  function getCurrentOs() {
6
- if (isPlatform("mac")) {
6
+ if (isPlatform(/Mac/i)) {
7
7
  return "Mac";
8
8
  }
9
- if (isPlatform("linux")) {
9
+ if (isPlatform(/Linux/i)) {
10
10
  return "Linux";
11
11
  }
12
- if (isPlatform("win")) {
12
+ if (isPlatform(/Win/i)) {
13
13
  return "Windows";
14
14
  }
15
15
  return "Unknown";
@@ -19,6 +19,8 @@ let capsState = false;
19
19
  const os = getCurrentOs();
20
20
  let onCapsChangeCallback;
21
21
  const mouseEventsToUpdateOn = ["mousedown", "mousemove", "wheel"];
22
+ const isiPad = os === "Mac" && navigator.maxTouchPoints > 1;
23
+ let isSendingCapsLockStateOniPad = !isiPad;
22
24
  function callCallbackIfNeeded() {
23
25
  const callCallback = previousCapsState !== capsState;
24
26
  previousCapsState = capsState;
@@ -27,18 +29,16 @@ function callCallbackIfNeeded() {
27
29
  }
28
30
  }
29
31
  function getCapsLockModifierState(event) {
30
- if ("getModifierState" in event) {
31
- return event.getModifierState("CapsLock");
32
- }
33
- else {
34
- return capsState;
35
- }
32
+ var _a, _b;
33
+ return (_b = (_a = event.getModifierState) === null || _a === void 0 ? void 0 : _a.call(event, "CapsLock")) !== null && _b !== void 0 ? _b : capsState;
36
34
  }
37
35
  mouseEventsToUpdateOn.forEach((eventType) => {
38
36
  document.addEventListener(eventType, (event) => {
39
37
  if (event instanceof MouseEvent) {
40
- capsState = getCapsLockModifierState(event);
41
- callCallbackIfNeeded();
38
+ if (!isiPad) {
39
+ capsState = getCapsLockModifierState(event);
40
+ callCallbackIfNeeded();
41
+ }
42
42
  }
43
43
  });
44
44
  });
@@ -48,8 +48,10 @@ document.addEventListener("keyup", (event) => {
48
48
  capsState = false;
49
49
  }
50
50
  else {
51
- if (navigator.maxTouchPoints <= 1) {
52
- capsState = getCapsLockModifierState(event);
51
+ const currentCapsState = getCapsLockModifierState(event);
52
+ isSendingCapsLockStateOniPad || (isSendingCapsLockStateOniPad = currentCapsState);
53
+ if (isSendingCapsLockStateOniPad) {
54
+ capsState = currentCapsState;
53
55
  }
54
56
  }
55
57
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@leonabcd123/modern-caps-lock",
3
- "version": "3.0.2",
4
- "description": "A package that allows you to know whether caps lock is active or not",
3
+ "version": "3.0.4",
4
+ "description": "A package that allows you to check whether caps lock is active or not",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "type": "module",