Add performance oriented refactor for keyboard streams

This commit is contained in:
Andrey Antukh 2023-11-28 10:40:24 +01:00
parent 9bb2c79ef8
commit b6ef21e121
5 changed files with 135 additions and 129 deletions

View file

@ -9,15 +9,44 @@
[app.config :as cfg]
[cuerdas.core :as str]))
(defrecord KeyboardEvent [type key shift ctrl alt meta mod editing native-event]
Object
(preventDefault [_]
(.preventDefault native-event))
(stopPropagation [_]
(.stopPropagation native-event)))
(defn keyboard-event?
[o]
(instance? KeyboardEvent o))
(defn key-up-event?
[^KeyboardEvent event]
(= :up (.-type event)))
(defn key-down-event?
[^KeyboardEvent event]
(= :down (.-type event)))
(defn mod-event?
[^KeyboardEvent event]
(true? (.-mod event)))
(defn editing-event?
[^KeyboardEvent event]
(true? (.-editing event)))
(defn is-key?
[^string key]
(fn [^js e]
(fn [^KeyboardEvent e]
(= (.-key e) key)))
(defn is-key-ignore-case?
[^string key]
(fn [^js e]
(= (str/upper (.-key e)) (str/upper key))))
(let [key (str/upper key)]
(fn [^KeyboardEvent e]
(= (str/upper (.-key e)) key))))
(defn ^boolean alt?
[^js event]
@ -62,6 +91,3 @@
(def home? (is-key? "Home"))
(def tab? (is-key? "Tab"))
(defn editing? [e]
(.-editing ^js e))