@opendaw/lib-dom 0.0.77 → 0.0.78
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/dist/browser.d.ts +1 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +10 -1
- package/dist/clipboard.d.ts +5 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +25 -0
- package/dist/dragging.d.ts.map +1 -1
- package/dist/dragging.js +13 -2
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +29 -13
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/shortcut-manager.d.ts +1 -0
- package/dist/shortcut-manager.d.ts.map +1 -1
- package/dist/shortcut-manager.js +7 -14
- package/package.json +4 -4
package/dist/browser.d.ts
CHANGED
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAIA,yBAAiB,OAAO,CAAC;IAGd,MAAM,WAAW,eAA2D,CAAA;IAC5E,MAAM,OAAO,eAAiE,CAAA;IAC9E,MAAM,SAAS,eAAgE,CAAA;IAC/E,MAAM,QAAQ,eAAoJ,CAAA;IAClK,MAAM,SAAS,eAA8E,CAAA;IAC7F,MAAM,KAAK,eAAsB,CAAA;IACjC,MAAM,QAAQ,SAAmE,CAAA;IACjF,MAAM,UAAU,eAA8B,CAAA;IAC9C,MAAM,SAAS,QAMH,CAAA;IACZ,MAAM,EAAE,cAQd,CAAA;CACJ"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAIA,yBAAiB,OAAO,CAAC;IAGd,MAAM,WAAW,eAA2D,CAAA;IAC5E,MAAM,OAAO,eAAiE,CAAA;IAC9E,MAAM,SAAS,eAAgE,CAAA;IAC/E,MAAM,QAAQ,eAAoJ,CAAA;IAClK,MAAM,SAAS,eAA8E,CAAA;IAC7F,MAAM,QAAQ,QAAO,OAI3B,CAAA;IACM,MAAM,KAAK,eAAsB,CAAA;IACjC,MAAM,QAAQ,SAAmE,CAAA;IACjF,MAAM,UAAU,eAA8B,CAAA;IAC9C,MAAM,SAAS,QAMH,CAAA;IACZ,MAAM,EAAE,cAQd,CAAA;CACJ"}
|
package/dist/browser.js
CHANGED
|
@@ -9,6 +9,15 @@ export var Browser;
|
|
|
9
9
|
Browser.isWindows = () => hasNavigator && navigator.userAgent.includes("Windows");
|
|
10
10
|
Browser.isChrome = () => hasNavigator && /chrome|chromium|crios/.test(navigator.userAgent.toLowerCase()) && !/edg|opera|opr/.test(navigator.userAgent.toLowerCase());
|
|
11
11
|
Browser.isFirefox = () => hasNavigator && navigator.userAgent.toLowerCase().includes("firefox");
|
|
12
|
+
Browser.isMobile = () => {
|
|
13
|
+
if (!hasNavigator) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (navigator.userAgentData?.mobile === true) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return /iPhone|iPod|Android.*Mobile|webOS|BlackBerry|Opera Mini|IEMobile/i.test(navigator.userAgent);
|
|
20
|
+
};
|
|
12
21
|
Browser.isWeb = () => !Browser.isTauriApp();
|
|
13
22
|
Browser.isVitest = typeof process !== "undefined" && process.env?.VITEST === "true";
|
|
14
23
|
Browser.isTauriApp = () => "__TAURI__" in window;
|
|
@@ -20,7 +29,7 @@ export var Browser;
|
|
|
20
29
|
.replace(/\s+/g, " ")
|
|
21
30
|
.trim() : "N/A";
|
|
22
31
|
Browser.id = () => {
|
|
23
|
-
if (!hasLocation) {
|
|
32
|
+
if (!hasLocation || typeof localStorage === "undefined") {
|
|
24
33
|
return "";
|
|
25
34
|
}
|
|
26
35
|
const key = "__id__";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAGA,yBAAiB,SAAS,CAAC;IAChB,MAAM,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAQ1D,CAAA;IACM,MAAM,QAAQ,QAAa,OAAO,CAAC,MAAM,CAQ/C,CAAA;CACJ"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RuntimeNotifier } from "@opendaw/lib-std";
|
|
2
|
+
import { Promises } from "@opendaw/lib-runtime";
|
|
3
|
+
export var Clipboard;
|
|
4
|
+
(function (Clipboard) {
|
|
5
|
+
Clipboard.writeText = async (text) => {
|
|
6
|
+
const result = await Promises.tryCatch(navigator.clipboard.writeText(text));
|
|
7
|
+
if (result.status === "rejected") {
|
|
8
|
+
await RuntimeNotifier.info({
|
|
9
|
+
headline: "Clipboard Error",
|
|
10
|
+
message: "Could not write to clipboard. Please check your browser permissions."
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
Clipboard.readText = async () => {
|
|
15
|
+
const result = await Promises.tryCatch(navigator.clipboard.readText());
|
|
16
|
+
if (result.status === "resolved") {
|
|
17
|
+
return result.value;
|
|
18
|
+
}
|
|
19
|
+
await RuntimeNotifier.info({
|
|
20
|
+
headline: "Clipboard Error",
|
|
21
|
+
message: "Could not read from clipboard. Please check your browser permissions."
|
|
22
|
+
});
|
|
23
|
+
return "";
|
|
24
|
+
};
|
|
25
|
+
})(Clipboard || (Clipboard = {}));
|
package/dist/dragging.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dragging.d.ts","sourceRoot":"","sources":["../src/dragging.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"dragging.d.ts","sourceRoot":"","sources":["../src/dragging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAkB,MAAM,EAAY,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAGhH,OAAO,EAAS,oBAAoB,EAAC,MAAM,UAAU,CAAA;AAGrD,yBAAiB,QAAQ,CAAC;IACtB,UAAiB,OAAO;QACpB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;QAC1B,MAAM,CAAC,IAAI,IAAI,CAAA;QACf,OAAO,CAAC,IAAI,IAAI,CAAA;QAChB,OAAO,CAAC,IAAI,IAAI,CAAA;QAChB,WAAW,CAAC,EAAE,WAAW,CAAA;KAC5B;IAED,UAAiB,KAAK;QAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;QACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;QAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAC5B;IAED,UAAiB,cAAc;QAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAChC;IAEM,IAAI,cAAc,SAAQ,CAAA;IAE1B,MAAM,MAAM,GAAI,CAAC,SAAS,oBAAoB,EAAE,QAAQ,CAAC,EACT,SAAS,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAC5C,UAAU,cAAc,KAAG,UA+IjF,CAAA;CACJ"}
|
package/dist/dragging.js
CHANGED
|
@@ -8,21 +8,29 @@ export var Dragging;
|
|
|
8
8
|
Dragging.usePointerLock = false;
|
|
9
9
|
Dragging.attach = (target, factory, options) => {
|
|
10
10
|
const processCycle = new Terminator();
|
|
11
|
+
// Cancel any active drag when a new one starts. On some platforms (e.g., ChromeOS),
|
|
12
|
+
// isPrimary may be true for multiple simultaneous touchpoints, bypassing the
|
|
13
|
+
// multitouch guard above. Without this, listeners from the previous drag accumulate
|
|
14
|
+
// and can reference stale state.
|
|
15
|
+
let cancelActive = EmptyExec;
|
|
11
16
|
return Terminable.many(processCycle, Events.subscribe(target, "pointerdown", (event) => {
|
|
17
|
+
if (event.defaultPrevented) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
12
20
|
if (options?.multiTouch !== true && !event.isPrimary) {
|
|
13
21
|
return;
|
|
14
22
|
}
|
|
15
23
|
if (event.buttons !== 1 || (Browser.isMacOS() && event.ctrlKey)) {
|
|
16
24
|
return;
|
|
17
25
|
}
|
|
26
|
+
cancelActive();
|
|
18
27
|
const option = factory(event);
|
|
19
28
|
if (option.isEmpty()) {
|
|
20
29
|
return;
|
|
21
30
|
}
|
|
22
31
|
const process = option.unwrap();
|
|
23
32
|
const pointerId = event.pointerId;
|
|
24
|
-
event.
|
|
25
|
-
event.stopImmediatePropagation();
|
|
33
|
+
event.preventDefault();
|
|
26
34
|
try {
|
|
27
35
|
target.setPointerCapture(pointerId);
|
|
28
36
|
}
|
|
@@ -98,6 +106,7 @@ export var Dragging;
|
|
|
98
106
|
}));
|
|
99
107
|
}
|
|
100
108
|
const cancel = () => {
|
|
109
|
+
cancelActive = EmptyExec;
|
|
101
110
|
if (pointerLockActive && targetElement !== null && document.pointerLockElement === targetElement) {
|
|
102
111
|
document.exitPointerLock();
|
|
103
112
|
}
|
|
@@ -105,9 +114,11 @@ export var Dragging;
|
|
|
105
114
|
process.finally?.call(process);
|
|
106
115
|
processCycle.terminate();
|
|
107
116
|
};
|
|
117
|
+
cancelActive = cancel;
|
|
108
118
|
const owner = safeRead(target, "ownerDocument", "defaultView") ?? self;
|
|
109
119
|
processCycle.ownAll(Events.subscribe(target, "pointerup", (event) => {
|
|
110
120
|
if (event.pointerId === pointerId) {
|
|
121
|
+
cancelActive = EmptyExec;
|
|
111
122
|
if (pointerLockActive && targetElement !== null && document.pointerLockElement === targetElement) {
|
|
112
123
|
document.exitPointerLock();
|
|
113
124
|
}
|
package/dist/files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAGA,yBAAiB,KAAK,CAAC;IACZ,MAAM,IAAI,GAAU,aAAa,WAAW,EAAE,UAAU,qBAAqB,KAAG,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAGA,yBAAiB,KAAK,CAAC;IACZ,MAAM,IAAI,GAAU,aAAa,WAAW,EAAE,UAAU,qBAAqB,KAAG,OAAO,CAAC,MAAM,CA8BpG,CAAA;IAaM,MAAM,IAAI,GAAU,UAAU,qBAAqB,KAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAgCvF,CAAA;CACJ"}
|
package/dist/files.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Arrays, asDefined, isDefined, RuntimeNotifier } from "@opendaw/lib-std";
|
|
1
|
+
import { Arrays, asDefined, Errors, isDefined, RuntimeNotifier } from "@opendaw/lib-std";
|
|
2
2
|
import { Promises } from "@opendaw/lib-runtime";
|
|
3
3
|
export var Files;
|
|
4
4
|
(function (Files) {
|
|
@@ -6,28 +6,44 @@ export var Files;
|
|
|
6
6
|
if (isDefined(window.showSaveFilePicker)) {
|
|
7
7
|
const { status, error, value: handle } = await Promises.tryCatch(window.showSaveFilePicker(options));
|
|
8
8
|
if (status === "rejected") {
|
|
9
|
+
if (Errors.isNotAllowed(error)) {
|
|
10
|
+
return saveBlobFallback(arrayBuffer, options);
|
|
11
|
+
}
|
|
9
12
|
return RuntimeNotifier.info({
|
|
10
13
|
headline: "Could not show file picker",
|
|
11
14
|
message: String(error)
|
|
12
15
|
}).then(() => Promise.reject(error));
|
|
13
16
|
}
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
const writeFile = async () => {
|
|
18
|
+
const writable = await handle.createWritable();
|
|
19
|
+
await writable.truncate(0);
|
|
20
|
+
await writable.write(arrayBuffer);
|
|
21
|
+
await writable.close();
|
|
22
|
+
};
|
|
23
|
+
const { status: writeStatus, error: writeError } = await Promises.tryCatch(writeFile());
|
|
24
|
+
if (writeStatus === "rejected") {
|
|
25
|
+
await RuntimeNotifier.info({
|
|
26
|
+
headline: "Could not save file",
|
|
27
|
+
message: String(writeError)
|
|
28
|
+
});
|
|
29
|
+
return Promise.reject(writeError);
|
|
30
|
+
}
|
|
18
31
|
return handle.name ?? "unknown";
|
|
19
32
|
}
|
|
20
33
|
else {
|
|
21
|
-
|
|
22
|
-
const url = URL.createObjectURL(blob);
|
|
23
|
-
const anchor = document.createElement("a");
|
|
24
|
-
anchor.href = url;
|
|
25
|
-
anchor.download = options?.suggestedName ?? `unknown`;
|
|
26
|
-
anchor.click();
|
|
27
|
-
URL.revokeObjectURL(url);
|
|
28
|
-
return options?.suggestedName ?? "Unknown";
|
|
34
|
+
return saveBlobFallback(arrayBuffer, options);
|
|
29
35
|
}
|
|
30
36
|
};
|
|
37
|
+
const saveBlobFallback = (arrayBuffer, options) => {
|
|
38
|
+
const blob = new Blob([arrayBuffer]);
|
|
39
|
+
const url = URL.createObjectURL(blob);
|
|
40
|
+
const anchor = document.createElement("a");
|
|
41
|
+
anchor.href = url;
|
|
42
|
+
anchor.download = options?.suggestedName ?? `unknown`;
|
|
43
|
+
anchor.click();
|
|
44
|
+
URL.revokeObjectURL(url);
|
|
45
|
+
return options?.suggestedName ?? "Unknown";
|
|
46
|
+
};
|
|
31
47
|
Files.open = async (options) => {
|
|
32
48
|
if (isDefined(window.showOpenFilePicker)) {
|
|
33
49
|
const { status, value: fileHandles, error } = await Promises.tryCatch(window.showOpenFilePicker(options));
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ else {
|
|
|
7
7
|
console.debug(`%c${key.description}%c is now available in ${globalThis.constructor.name}.`, "color: hsl(200, 83%, 60%)", "color: inherit");
|
|
8
8
|
}
|
|
9
9
|
export * from "./browser";
|
|
10
|
+
export * from "./clipboard";
|
|
10
11
|
export * from "./compression";
|
|
11
12
|
export * from "./console-commands";
|
|
12
13
|
export * from "./constraint";
|
|
@@ -28,6 +28,7 @@ export declare class Shortcut {
|
|
|
28
28
|
alt?: boolean;
|
|
29
29
|
}): Shortcut;
|
|
30
30
|
static fromJSON(value: JSONValue): Option<Shortcut>;
|
|
31
|
+
static resolveCode(event: KeyboardEvent): string;
|
|
31
32
|
static fromEvent(event: KeyboardEvent): Option<Shortcut>;
|
|
32
33
|
private constructor();
|
|
33
34
|
get code(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcut-manager.d.ts","sourceRoot":"","sources":["../src/shortcut-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EAEH,SAAS,EAET,KAAK,EAGL,QAAQ,EACR,MAAM,EACN,SAAS,EAET,QAAQ,EACR,YAAY,EACZ,UAAU,EAEb,MAAM,kBAAkB,CAAA;AAMzB,qBAAa,eAAe;;IAExB,MAAM,CAAC,GAAG,IAAI,eAAe;IAE7B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAIhC,OAAO;IAKP,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,eAAe;IAanG,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIxC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAoB1C;AAED,qBAAa,eAAgB,YAAW,UAAU;;gBAOlC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAMlE,IAAI,MAAM,IAAI,OAAO,CAA0B;IAC/C,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,QAAQ,IAAI,GAAG,CAAwB;IAC3C,IAAI,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAuB;IAElE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,YAAY;IAYlH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAExC,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAE3C,SAAS,IAAI,IAAI;CACpB;AAED,qBAAa,QAAQ;;IACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,QAAQ;IAIjG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAUnD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"shortcut-manager.d.ts","sourceRoot":"","sources":["../src/shortcut-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/shortcut-manager.js
CHANGED
|
@@ -120,6 +120,9 @@ export class Shortcut {
|
|
|
120
120
|
}
|
|
121
121
|
return Option.wrap(new Shortcut(code, ctrl, shift, alt));
|
|
122
122
|
}
|
|
123
|
+
static resolveCode(event) {
|
|
124
|
+
return event.code.startsWith("Key") ? `Key${event.key.toUpperCase()}` : event.code;
|
|
125
|
+
}
|
|
123
126
|
static fromEvent(event) {
|
|
124
127
|
if (Events.isAutofillEvent(event)) {
|
|
125
128
|
return Option.None;
|
|
@@ -135,10 +138,7 @@ export class Shortcut {
|
|
|
135
138
|
|| code === Key.Enter) {
|
|
136
139
|
return Option.None;
|
|
137
140
|
}
|
|
138
|
-
|
|
139
|
-
const effectiveCode = code.startsWith("Key")
|
|
140
|
-
? `Key${event.key.toUpperCase()}`
|
|
141
|
-
: code;
|
|
141
|
+
const effectiveCode = Shortcut.resolveCode(event);
|
|
142
142
|
const shortcut = new Shortcut(effectiveCode, Keyboard.isControlKey(event), event.shiftKey, event.altKey);
|
|
143
143
|
if (ReservedShortcuts.isReserved(shortcut)) {
|
|
144
144
|
return Option.None;
|
|
@@ -212,16 +212,9 @@ export class Shortcut {
|
|
|
212
212
|
if (Events.isAutofillEvent(event)) {
|
|
213
213
|
return false;
|
|
214
214
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
const expectedLetter = this.#code.slice(3).toLowerCase();
|
|
219
|
-
codeMatches = event.key.toLowerCase() === expectedLetter;
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
codeMatches = event.code === this.#code
|
|
223
|
-
|| (this.#code === Key.DeleteAction && Keyboard.isDelete(event));
|
|
224
|
-
}
|
|
215
|
+
const resolvedCode = Shortcut.resolveCode(event);
|
|
216
|
+
const codeMatches = resolvedCode === this.#code
|
|
217
|
+
|| (this.#code === Key.DeleteAction && Keyboard.isDelete(event));
|
|
225
218
|
return codeMatches
|
|
226
219
|
&& this.#ctrl === Keyboard.isControlKey(event)
|
|
227
220
|
&& this.#shift === event.shiftKey
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opendaw/lib-dom",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.78",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"test": "vitest run"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@opendaw/lib-runtime": "^0.0.
|
|
27
|
-
"@opendaw/lib-std": "^0.0.
|
|
26
|
+
"@opendaw/lib-runtime": "^0.0.74",
|
|
27
|
+
"@opendaw/lib-std": "^0.0.73",
|
|
28
28
|
"@types/wicg-file-system-access": "^2023.10.6"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@opendaw/eslint-config": "^0.0.27",
|
|
32
32
|
"@opendaw/typescript-config": "^0.0.29"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "0de255fcdacefee9ab663ceeb0d4424a278c5dc4"
|
|
35
35
|
}
|