From 879890fbfaa054b93dfc43cecd07e97df095385d Mon Sep 17 00:00:00 2001 From: morethanwords Date: Wed, 1 Dec 2021 16:46:58 +0400 Subject: [PATCH] F --- src/components/appMediaViewerBase.ts | 3 +-- src/components/appNavigationController.ts | 3 +-- src/components/chat/input.ts | 24 +++++++++---------- src/components/chat/markupTooltip.ts | 3 +-- src/components/popups/index.ts | 3 +-- src/components/sidebarLeft/tabs/2fa/email.ts | 3 +-- .../sidebarLeft/tabs/2fa/enterPassword.ts | 3 +-- src/components/sidebarLeft/tabs/2fa/hint.ts | 3 +-- .../sidebarLeft/tabs/2fa/reEnterPassword.ts | 3 +-- src/components/telInputField.ts | 3 +-- src/helpers/dom/attachListNavigation.ts | 5 ++-- src/helpers/dom/getKeyFromEvent.ts | 21 ---------------- .../dom/getKeyFromEventCaseInsensitive.ts | 12 ---------- src/helpers/dom/isSendShortcutPressed.ts | 3 +-- src/lib/appManagers/appImManager.ts | 5 ++-- src/lib/mediaPlayer.ts | 13 +++++----- src/pages/pagePassword.ts | 3 +-- src/pages/pageSignIn.ts | 5 ++-- 18 files changed, 34 insertions(+), 84 deletions(-) delete mode 100644 src/helpers/dom/getKeyFromEvent.ts delete mode 100644 src/helpers/dom/getKeyFromEventCaseInsensitive.ts diff --git a/src/components/appMediaViewerBase.ts b/src/components/appMediaViewerBase.ts index 2c0d7b61..4259a079 100644 --- a/src/components/appMediaViewerBase.ts +++ b/src/components/appMediaViewerBase.ts @@ -42,7 +42,6 @@ import EventListenerBase from "../helpers/eventListenerBase"; import { MyMessage } from "../lib/appManagers/appMessagesManager"; import RichTextProcessor from "../lib/richtextprocessor"; import { NULL_PEER_ID } from "../lib/mtproto/mtproto_config"; -import getKeyFromEventCaseInsensitive from "../helpers/dom/getKeyFromEventCaseInsensitive"; const ZOOM_STEP = 0.5; const ZOOM_INITIAL_VALUE = 1; @@ -493,7 +492,7 @@ export default class AppMediaViewerBase< return; } - const key = getKeyFromEventCaseInsensitive(e); + const key = e.key; let good = true; if(key === 'ArrowRight') { diff --git a/src/components/appNavigationController.ts b/src/components/appNavigationController.ts index b8b00b3a..52a20c48 100644 --- a/src/components/appNavigationController.ts +++ b/src/components/appNavigationController.ts @@ -12,7 +12,6 @@ import blurActiveElement from "../helpers/dom/blurActiveElement"; import { cancelEvent } from "../helpers/dom/cancelEvent"; import { indexOfAndSplice } from "../helpers/array"; import isSwipingBackSafari from "../helpers/dom/isSwipingBackSafari"; -import getKeyFromEvent from "../helpers/dom/getKeyFromEvent"; export type NavigationItem = { type: 'left' | 'right' | 'im' | 'chat' | 'popup' | 'media' | 'menu' | @@ -64,7 +63,7 @@ export class AppNavigationController { window.addEventListener('keydown', (e) => { const item = this.navigations[this.navigations.length - 1]; if(!item) return; - if(getKeyFromEvent(e) === 'Escape' && (item.onEscape ? item.onEscape() : true)) { + if(e.key === 'Escape' && (item.onEscape ? item.onEscape() : true)) { cancelEvent(e); this.back(item.type); } diff --git a/src/components/chat/input.ts b/src/components/chat/input.ts index a002b8c4..ab96aa17 100644 --- a/src/components/chat/input.ts +++ b/src/components/chat/input.ts @@ -82,8 +82,6 @@ import MEDIA_MIME_TYPES_SUPPORTED from '../../environment/mediaMimeTypesSupport' import appMediaPlaybackController from '../appMediaPlaybackController'; import { NULL_PEER_ID } from '../../lib/mtproto/mtproto_config'; import setCaretAt from '../../helpers/dom/setCaretAt'; -import getKeyFromEvent from '../../helpers/dom/getKeyFromEvent'; -import getKeyFromEventCaseInsensitive from '../../helpers/dom/getKeyFromEventCaseInsensitive'; import CheckboxField from '../checkboxField'; import DropdownHover from '../../helpers/dropdownHover'; import RadioForm from '../radioForm'; @@ -1086,7 +1084,7 @@ export default class ChatInput { private attachMessageInputListeners() { this.listenerSetter.add(this.messageInput)('keydown', (e: KeyboardEvent) => { - const key = getKeyFromEvent(e); + const key = e.key; if(isSendShortcutPressed(e)) { cancelEvent(e); this.sendMessage(); @@ -1288,24 +1286,24 @@ export default class ChatInput { private handleMarkdownShortcut = (e: KeyboardEvent) => { // console.log('handleMarkdownShortcut', e); const formatKeys: {[key: string]: MarkdownType} = { - 'B': 'bold', - 'I': 'italic', - 'U': 'underline', - 'S': 'strikethrough', - 'M': 'monospace' + 'KeyB': 'bold', + 'KeyI': 'italic', + 'KeyU': 'underline', + 'KeyS': 'strikethrough', + 'KeyM': 'monospace' }; if(this.appImManager.markupTooltip) { - formatKeys['K'] = 'link'; + formatKeys['KeyK'] = 'link'; } - const key = getKeyFromEventCaseInsensitive(e); - const applyMarkdown = formatKeys[key]; + const code = e.code; + const applyMarkdown = formatKeys[code]; const selection = document.getSelection(); if(selection.toString().trim().length && applyMarkdown) { // * костыльчик - if(key === 'K') { + if(code === 'KeyK') { this.appImManager.markupTooltip.showLinkEditor(); } else { this.applyMarkdown(applyMarkdown); @@ -1315,7 +1313,7 @@ export default class ChatInput { } //return; - if(key === 'Z') { + if(code === 'KeyZ') { let html = this.messageInput.innerHTML; if(e.shiftKey) { diff --git a/src/components/chat/markupTooltip.ts b/src/components/chat/markupTooltip.ts index 16ede6da..a240ca64 100644 --- a/src/components/chat/markupTooltip.ts +++ b/src/components/chat/markupTooltip.ts @@ -17,7 +17,6 @@ import { attachClickEvent } from "../../helpers/dom/clickEvent"; import getSelectedNodes from "../../helpers/dom/getSelectedNodes"; import isSelectionEmpty from "../../helpers/dom/isSelectionEmpty"; import { MarkdownType, markdownTags } from "../../helpers/dom/getRichElementValue"; -import getKeyFromEvent from "../../helpers/dom/getKeyFromEvent"; //import { logger } from "../../lib/logger"; export default class MarkupTooltip { @@ -81,7 +80,7 @@ export default class MarkupTooltip { this.linkInput.addEventListener('keydown', (e) => { const valid = !this.linkInput.value.length || !!RichTextProcessor.matchUrl(this.linkInput.value);///^(http)|(https):\/\//i.test(this.linkInput.value); - if(getKeyFromEvent(e) === 'Enter') { + if(e.key === 'Enter') { if(!valid) { if(this.linkInput.classList.contains('error')) { this.linkInput.classList.remove('error'); diff --git a/src/components/popups/index.ts b/src/components/popups/index.ts index 7b033578..fb973fef 100644 --- a/src/components/popups/index.ts +++ b/src/components/popups/index.ts @@ -15,7 +15,6 @@ import ListenerSetter from "../../helpers/listenerSetter"; import { attachClickEvent, simulateClickEvent } from "../../helpers/dom/clickEvent"; import isSendShortcutPressed from "../../helpers/dom/isSendShortcutPressed"; import { cancelEvent } from "../../helpers/dom/cancelEvent"; -import getKeyFromEvent from "../../helpers/dom/getKeyFromEvent"; import EventListenerBase from "../../helpers/eventListenerBase"; export type PopupButton = { @@ -172,7 +171,7 @@ export default class PopupElement extends EventListenerBase<{ // cannot add event instantly because keydown propagation will fire it setTimeout(() => { this.listenerSetter.add(document.body)('keydown', (e) => { - if(this.confirmShortcutIsSendShortcut ? isSendShortcutPressed(e) : getKeyFromEvent(e) === 'Enter') { + if(this.confirmShortcutIsSendShortcut ? isSendShortcutPressed(e) : e.key === 'Enter') { simulateClickEvent(this.btnConfirmOnEnter); cancelEvent(e); } diff --git a/src/components/sidebarLeft/tabs/2fa/email.ts b/src/components/sidebarLeft/tabs/2fa/email.ts index 255183c5..f3732955 100644 --- a/src/components/sidebarLeft/tabs/2fa/email.ts +++ b/src/components/sidebarLeft/tabs/2fa/email.ts @@ -20,7 +20,6 @@ import PopupPeer from "../../../popups/peer"; import { cancelEvent } from "../../../../helpers/dom/cancelEvent"; import { canFocus } from "../../../../helpers/dom/canFocus"; import { attachClickEvent } from "../../../../helpers/dom/clickEvent"; -import getKeyFromEvent from "../../../../helpers/dom/getKeyFromEvent"; export default class AppTwoStepVerificationEmailTab extends SliderSuperTab { public inputField: InputField; @@ -73,7 +72,7 @@ export default class AppTwoStepVerificationEmailTab extends SliderSuperTab { }); inputField.input.addEventListener('keypress', (e) => { - if(getKeyFromEvent(e) === 'Enter') { + if(e.key === 'Enter') { cancelEvent(e); return onContinueClick(); } diff --git a/src/components/sidebarLeft/tabs/2fa/enterPassword.ts b/src/components/sidebarLeft/tabs/2fa/enterPassword.ts index 902d7d40..56e97e55 100644 --- a/src/components/sidebarLeft/tabs/2fa/enterPassword.ts +++ b/src/components/sidebarLeft/tabs/2fa/enterPassword.ts @@ -10,7 +10,6 @@ import { cancelEvent } from "../../../../helpers/dom/cancelEvent"; import { canFocus } from "../../../../helpers/dom/canFocus"; import { attachClickEvent } from "../../../../helpers/dom/clickEvent"; import replaceContent from "../../../../helpers/dom/replaceContent"; -import getKeyFromEvent from "../../../../helpers/dom/getKeyFromEvent"; import { AccountPassword } from "../../../../layer"; import I18n, { i18n } from "../../../../lib/langPack"; import passwordManager from "../../../../lib/mtproto/passwordManager"; @@ -65,7 +64,7 @@ export default class AppTwoStepVerificationEnterPasswordTab extends SliderSuperT textEl.update(); } - if(getKeyFromEvent(e) === 'Enter') { + if(e.key === 'Enter') { return onContinueClick(); } }); diff --git a/src/components/sidebarLeft/tabs/2fa/hint.ts b/src/components/sidebarLeft/tabs/2fa/hint.ts index f37284a4..fa6967b5 100644 --- a/src/components/sidebarLeft/tabs/2fa/hint.ts +++ b/src/components/sidebarLeft/tabs/2fa/hint.ts @@ -16,7 +16,6 @@ import { toast } from "../../../toast"; import I18n from "../../../../lib/langPack"; import { cancelEvent } from "../../../../helpers/dom/cancelEvent"; import { attachClickEvent } from "../../../../helpers/dom/clickEvent"; -import getKeyFromEvent from "../../../../helpers/dom/getKeyFromEvent"; export default class AppTwoStepVerificationHintTab extends SliderSuperTab { public inputField: InputField; @@ -63,7 +62,7 @@ export default class AppTwoStepVerificationHintTab extends SliderSuperTab { }); inputField.input.addEventListener('keypress', (e) => { - if(getKeyFromEvent(e) === 'Enter') { + if(e.key === 'Enter') { cancelEvent(e); return inputField.value ? onContinueClick() : onSkipClick(); } diff --git a/src/components/sidebarLeft/tabs/2fa/reEnterPassword.ts b/src/components/sidebarLeft/tabs/2fa/reEnterPassword.ts index c1aecff9..bd600797 100644 --- a/src/components/sidebarLeft/tabs/2fa/reEnterPassword.ts +++ b/src/components/sidebarLeft/tabs/2fa/reEnterPassword.ts @@ -14,7 +14,6 @@ import AppTwoStepVerificationHintTab from "./hint"; import { InputState } from "../../../inputField"; import { cancelEvent } from "../../../../helpers/dom/cancelEvent"; import { attachClickEvent } from "../../../../helpers/dom/clickEvent"; -import getKeyFromEvent from "../../../../helpers/dom/getKeyFromEvent"; export default class AppTwoStepVerificationReEnterPasswordTab extends SliderSuperTab { public state: AccountPassword; @@ -52,7 +51,7 @@ export default class AppTwoStepVerificationReEnterPasswordTab extends SliderSupe passwordInputField.setState(InputState.Neutral); } - if(getKeyFromEvent(e) === 'Enter') { + if(e.key === 'Enter') { return onContinueClick(); } }); diff --git a/src/components/telInputField.ts b/src/components/telInputField.ts index 5570a994..945228ac 100644 --- a/src/components/telInputField.ts +++ b/src/components/telInputField.ts @@ -9,7 +9,6 @@ import { formatPhoneNumber } from "../helpers/formatPhoneNumber"; import { IS_APPLE, IS_ANDROID, IS_APPLE_MOBILE } from "../environment/userAgent"; import { HelpCountry, HelpCountryCode } from "../layer"; import InputField, { InputFieldOptions } from "./inputField"; -import getKeyFromEvent from "../helpers/dom/getKeyFromEvent"; export default class TelInputField extends InputField { private pasted = false; @@ -98,7 +97,7 @@ export default class TelInputField extends InputField { telEl.addEventListener('keypress', (e) => { //console.log('keypress', this.value); - const key = getKeyFromEvent(e); + const key = e.key; if(/\D/.test(key) && !(e.metaKey || e.ctrlKey) && key !== 'Backspace' && !(key === '+' && e.shiftKey/* && !this.value */)) { e.preventDefault(); return false; diff --git a/src/helpers/dom/attachListNavigation.ts b/src/helpers/dom/attachListNavigation.ts index 0d3d652b..4035167f 100644 --- a/src/helpers/dom/attachListNavigation.ts +++ b/src/helpers/dom/attachListNavigation.ts @@ -5,7 +5,6 @@ */ import fastSmoothScroll from "../fastSmoothScroll"; -import getKeyFromEventCaseInsensitive from "./getKeyFromEventCaseInsensitive"; import { cancelEvent } from "./cancelEvent"; import { attachClickEvent, detachClickEvent } from "./clickEvent"; import findUpAsChild from "./findUpAsChild"; @@ -89,7 +88,7 @@ export default function attachListNavigation({list, type, onSelect, once, waitFo } let onKeyDown = (e: KeyboardEvent) => { - const key = getKeyFromEventCaseInsensitive(e); + const key = e.key; if(!keyNames.has(key as any)) { if(key === 'Enter' || (type !== 'xy' && key === 'Tab')) { cancelEvent(e); @@ -154,7 +153,7 @@ export default function attachListNavigation({list, type, onSelect, once, waitFo if(waitForKey) { const _onKeyDown = onKeyDown; onKeyDown = (e) => { - if(getKeyFromEventCaseInsensitive(e) === waitForKey) { + if(e.key === waitForKey) { cancelEvent(e); document.removeEventListener(HANDLE_EVENT, onKeyDown, {capture: true}); diff --git a/src/helpers/dom/getKeyFromEvent.ts b/src/helpers/dom/getKeyFromEvent.ts deleted file mode 100644 index ae7851a4..00000000 --- a/src/helpers/dom/getKeyFromEvent.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * https://github.com/morethanwords/tweb - * Copyright (C) 2019-2021 Eduard Kuzmenko - * https://github.com/morethanwords/tweb/blob/master/LICENSE - */ - -export default function getKeyFromEvent(e: KeyboardEvent) { - let key = e.key; - if(!key) { - key = e.code; - if(key.startsWith('Key')) { - key = e.code.slice(3); - - if(!e.shiftKey && key.length < 2) { - key = key.toLowerCase(); - } - } - } - - return key; -} diff --git a/src/helpers/dom/getKeyFromEventCaseInsensitive.ts b/src/helpers/dom/getKeyFromEventCaseInsensitive.ts deleted file mode 100644 index ba8b94db..00000000 --- a/src/helpers/dom/getKeyFromEventCaseInsensitive.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * https://github.com/morethanwords/tweb - * Copyright (C) 2019-2021 Eduard Kuzmenko - * https://github.com/morethanwords/tweb/blob/master/LICENSE - */ - -import getKeyFromEvent from "./getKeyFromEvent"; -import { capitalizeFirstLetter } from "../string"; - -export default function getKeyFromEventCaseInsensitive(e: KeyboardEvent) { - return capitalizeFirstLetter(getKeyFromEvent(e)); -} diff --git a/src/helpers/dom/isSendShortcutPressed.ts b/src/helpers/dom/isSendShortcutPressed.ts index 199d8bea..c66a418d 100644 --- a/src/helpers/dom/isSendShortcutPressed.ts +++ b/src/helpers/dom/isSendShortcutPressed.ts @@ -6,10 +6,9 @@ import rootScope from "../../lib/rootScope"; import { IS_MOBILE, IS_APPLE } from "../../environment/userAgent"; -import getKeyFromEvent from "./getKeyFromEvent"; export default function isSendShortcutPressed(e: KeyboardEvent) { - if(getKeyFromEvent(e) === 'Enter' && !IS_MOBILE && !e.isComposing) { + if(e.key === 'Enter' && !IS_MOBILE && !e.isComposing) { /* if(e.ctrlKey || e.metaKey) { this.messageInput.innerHTML += '
'; placeCaretAtEnd(this.message) diff --git a/src/lib/appManagers/appImManager.ts b/src/lib/appManagers/appImManager.ts index 4c70d296..18bfac95 100644 --- a/src/lib/appManagers/appImManager.ts +++ b/src/lib/appManagers/appImManager.ts @@ -72,7 +72,6 @@ import { NULL_PEER_ID } from '../mtproto/mtproto_config'; import telegramMeWebManager from '../mtproto/telegramMeWebManager'; import { ONE_DAY } from '../../helpers/date'; import { numberThousandSplitter } from '../../helpers/number'; -import getKeyFromEventCaseInsensitive from '../../helpers/dom/getKeyFromEventCaseInsensitive'; //console.log('appImManager included33!'); @@ -445,7 +444,7 @@ export class AppImManager { private attachKeydownListener() { const IGNORE_KEYS = new Set(['PageUp', 'PageDown', 'Meta', 'Control']); const onKeyDown = (e: KeyboardEvent) => { - const key = getKeyFromEventCaseInsensitive(e); + const key = e.key; if(rootScope.isOverlayActive || IGNORE_KEYS.has(key)) return; const target = e.target as HTMLElement; @@ -456,7 +455,7 @@ export class AppImManager { const chat = this.chat; - if(key === 'C' && (e.ctrlKey || e.metaKey) && target.tagName !== 'INPUT') { + if(e.code === 'KeyC' && (e.ctrlKey || e.metaKey) && target.tagName !== 'INPUT') { return; } else if(e.altKey && (key === 'ArrowUp' || key === 'ArrowDown')) { const folder = appMessagesManager.dialogsStorage.getFolderDialogs(rootScope.filterId, true); diff --git a/src/lib/mediaPlayer.ts b/src/lib/mediaPlayer.ts index 911d3434..7409e331 100644 --- a/src/lib/mediaPlayer.ts +++ b/src/lib/mediaPlayer.ts @@ -18,7 +18,6 @@ import rootScope from "./rootScope"; import findUpClassName from "../helpers/dom/findUpClassName"; import { GrabEvent } from "../helpers/dom/attachGrabListeners"; import { attachClickEvent } from "../helpers/dom/clickEvent"; -import getKeyFromEventCaseInsensitive from "../helpers/dom/getKeyFromEventCaseInsensitive"; export class MediaProgressLine extends RangeSelector { protected filledLoad: HTMLDivElement; @@ -387,18 +386,18 @@ export default class VideoPlayer extends EventListenerBase<{ return; } - const key = getKeyFromEventCaseInsensitive(e); + const {key, code} = e; let good = true; - if(key === 'F') { + if(code === 'KeyF') { this.toggleFullScreen(fullScreenButton); - } else if(key === 'M') { + } else if(code === 'KeyM') { appMediaPlaybackController.muted = !appMediaPlaybackController.muted; - } else if(key === ' ') { + } else if(code === 'Space') { this.togglePlay(); - } else if(e.altKey && key === '=') { + } else if(e.altKey && code === 'Equal') { appMediaPlaybackController.playbackRate += .25; - } else if(e.altKey && key === '-') { + } else if(e.altKey && code === 'Minus') { appMediaPlaybackController.playbackRate -= .25; } else if(this.wrapper.classList.contains('ckin__fullscreen') && (key === 'ArrowLeft' || key === 'ArrowRight')) { if(key === 'ArrowLeft') appMediaPlaybackController.seekBackward({action: 'seekbackward'}); diff --git a/src/pages/pagePassword.ts b/src/pages/pagePassword.ts index ee23e202..b2e34f14 100644 --- a/src/pages/pagePassword.ts +++ b/src/pages/pagePassword.ts @@ -21,7 +21,6 @@ import { attachClickEvent } from '../helpers/dom/clickEvent'; import htmlToSpan from '../helpers/dom/htmlToSpan'; import replaceContent from '../helpers/dom/replaceContent'; import toggleDisability from '../helpers/dom/toggleDisability'; -import getKeyFromEvent from '../helpers/dom/getKeyFromEvent'; const TEST = false; let passwordInput: HTMLInputElement; @@ -126,7 +125,7 @@ let onFirstMount = (): Promise => { this.classList.remove('error'); btnNextI18n.update({key: 'Login.Next'}); - if(getKeyFromEvent(e) === 'Enter') { + if(e.key === 'Enter') { return onSubmit(); } }); diff --git a/src/pages/pageSignIn.ts b/src/pages/pageSignIn.ts index eef2bc3c..99090b66 100644 --- a/src/pages/pageSignIn.ts +++ b/src/pages/pageSignIn.ts @@ -40,7 +40,6 @@ import stateStorage from "../lib/stateStorage"; import rootScope from "../lib/rootScope"; import TelInputField from "../components/telInputField"; import IS_EMOJI_SUPPORTED from "../environment/emojiSupport"; -import getKeyFromEvent from "../helpers/dom/getKeyFromEvent"; //import _countries from '../countries_pretty.json'; let btnNext: HTMLButtonElement = null, btnQr: HTMLButtonElement; @@ -233,7 +232,7 @@ let onFirstMount = () => { }, {capture: true}); */ countryInput.addEventListener('keyup', (e) => { - const key = getKeyFromEvent(e); + const key = e.key; if(e.ctrlKey || key === 'Control') return false; //let i = new RegExp('^' + this.value, 'i'); @@ -304,7 +303,7 @@ let onFirstMount = () => { telEl.addEventListener('keypress', (e) => { //console.log('keypress', this.value); - if(!btnNext.style.visibility &&/* this.value.length >= 9 && */ getKeyFromEvent(e) === 'Enter') { + if(!btnNext.style.visibility &&/* this.value.length >= 9 && */ e.key === 'Enter') { return onSubmit(); } });