mirror of
https://github.com/penpot/penpot.git
synced 2025-07-23 05:27:12 +02:00
⚡ Add performance oriented refactor for keyboard streams
This commit is contained in:
parent
9bb2c79ef8
commit
b6ef21e121
5 changed files with 135 additions and 129 deletions
|
@ -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))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue