Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / helpers / events.ts
blob8098f9c0e0ef9556cf056ae8c5c958a79e6fa8aa
1 export const isKeyboardEvent = (event: Event): event is KeyboardEvent => {
2     if ('key' in event) {
3         return true;
4     }
5     return false;
6 };
8 export const isDragEvent = (event: Event): event is DragEvent => {
9     if ('dataTransfer' in event) {
10         return true;
11     }
12     return false;
15 const assignKeyboardKeys = (customEvent: CustomEvent, event: Event) => {
16     const KEYBOARD_EVENT_RELATED_KEYS = [
17         'altKey',
18         'charCode',
19         'ctrlKey',
20         'code',
21         'key',
22         'keyCode',
23         'locale',
24         'location',
25         'metaKey',
26         'repeat',
27         'shiftKey',
28     ];
30     KEYBOARD_EVENT_RELATED_KEYS.forEach((key) => {
31         // @ts-expect-error
32         customEvent[key] = event[key];
33     });
36 export const cloneEvent = (event: Event) => {
37     const clonedEvent = new CustomEvent(event.type, { bubbles: true });
39     if (isDragEvent(event)) {
40         // @ts-expect-error 'dataTransfert' key is not present in customEvent interface
41         clonedEvent.dataTransfer = event.dataTransfer;
42     }
44     if (isKeyboardEvent(event)) {
45         assignKeyboardKeys(clonedEvent, event);
46     }
48     return clonedEvent;