@leonabcd123/modern-caps-lock 3.0.3 → 3.0.5

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
@@ -2,6 +2,23 @@
2
2
 
3
3
  Modern Caps Lock provides an easy way to check whether Caps Lock is active or not, and it allows you to run your code whenever Caps Lock state changes.
4
4
 
5
+ 1. [Installation](#installation)
6
+ 2. [API](#api)
7
+ 1. [`onCapsLockChange`](#oncapslockchange)
8
+ 1. [Arguments](#arguments)
9
+ 2. [Return value](#return-value)
10
+ 2. [`isCapsLockOn`](#iscapslockon)
11
+ 1. [Arguments](#arguments-1)
12
+ 2. [Return value](#return-value-1)
13
+ 3. [Examples](#examples)
14
+ 1. [Print Caps Lock state after every change](#print-caps-lock-state-after-every-change)
15
+ 2. [Get current Caps Lock state](#get-current-caps-lock-state)
16
+ 5. [Support](#support)
17
+ 1. [Supported Platforms](#supported-platforms)
18
+ 2. [Unsupported Platforms](#unsupported-platforms)
19
+ 6. [Limitations](#limitations)
20
+ 7. [Credits](#credits)
21
+
5
22
  ### Installation
6
23
 
7
24
  Example installation with npm:
@@ -12,7 +29,7 @@ npm install @leonabcd123/modern-caps-lock
12
29
 
13
30
  ### API
14
31
 
15
- #### onCapsLockChange()
32
+ #### onCapsLockChange
16
33
 
17
34
  Runs the provided callback function whenever Caps Lock state is changed.
18
35
 
@@ -24,7 +41,7 @@ Runs the provided callback function whenever Caps Lock state is changed.
24
41
 
25
42
  `void`.
26
43
 
27
- #### isCapsLockOn()
44
+ #### isCapsLockOn
28
45
 
29
46
  Returns the current Caps Lock state.
30
47
 
@@ -60,6 +77,32 @@ if (isCapsLockOn()) {
60
77
  }
61
78
  ```
62
79
 
80
+ ### Support
81
+
82
+ ##### Supported Platforms
83
+
84
+ - Windows
85
+ - Mac
86
+ - Linux
87
+ - iPad
88
+
89
+ ##### Unsupported Platforms
90
+
91
+ - Platforms using [GBoard](https://en.wikipedia.org/wiki/Gboard)
92
+
93
+ ### Limitations
94
+
95
+ Because of browser limitations, we can only detect the Caps Lock state after a KeyboardEvent
96
+ or a MouseEvent. We currently detect updates to the Caps Lock state when the following events are fired:
97
+
98
+ - keydown
99
+ - keyup
100
+ - mousedown
101
+ - mousemove
102
+ - wheel
103
+
104
+ Before any of these events are fired, Caps Lock state is off.
105
+
63
106
  ### Credits
64
107
 
65
108
  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
1
  function isPlatform(osName) {
2
- var _a;
3
- return (((_a = navigator.userAgentData) !== null && _a !== void 0 ? _a : navigator).platform).toLowerCase().startsWith(osName) || new RegExp(osName, "i").test(navigator.userAgent);
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;
@@ -33,8 +35,10 @@ function getCapsLockModifierState(event) {
33
35
  mouseEventsToUpdateOn.forEach((eventType) => {
34
36
  document.addEventListener(eventType, (event) => {
35
37
  if (event instanceof MouseEvent) {
36
- capsState = getCapsLockModifierState(event);
37
- callCallbackIfNeeded();
38
+ if (!isiPad) {
39
+ capsState = getCapsLockModifierState(event);
40
+ callCallbackIfNeeded();
41
+ }
38
42
  }
39
43
  });
40
44
  });
@@ -44,8 +48,10 @@ document.addEventListener("keyup", (event) => {
44
48
  capsState = false;
45
49
  }
46
50
  else {
47
- if (navigator.maxTouchPoints <= 1) {
48
- capsState = getCapsLockModifierState(event);
51
+ const currentCapsState = getCapsLockModifierState(event);
52
+ if (isSendingCapsLockStateOniPad || currentCapsState) {
53
+ capsState = currentCapsState;
54
+ isSendingCapsLockStateOniPad = true;
49
55
  }
50
56
  }
51
57
  }
@@ -76,4 +82,3 @@ export function isCapsLockOn() {
76
82
  export function onCapsLockChange(callback) {
77
83
  onCapsChangeCallback = callback;
78
84
  }
79
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@leonabcd123/modern-caps-lock",
3
- "version": "3.0.3",
4
- "description": "A package that allows you to know whether caps lock is active or not",
3
+ "version": "3.0.5",
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",
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}