mirror of
https://github.com/penpot/penpot.git
synced 2025-07-30 09:58:31 +02:00
93 lines
2 KiB
Clojure
93 lines
2 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns app.util.keyboard
|
|
(:require
|
|
[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 [^KeyboardEvent e]
|
|
(= (.-key e) key)))
|
|
|
|
(defn is-key-ignore-case?
|
|
[^string key]
|
|
(let [key (str/upper key)]
|
|
(fn [^KeyboardEvent e]
|
|
(= (str/upper (.-key e)) key))))
|
|
|
|
(defn ^boolean alt?
|
|
[^js event]
|
|
(.-altKey event))
|
|
|
|
(defn ^boolean ctrl?
|
|
[^js event]
|
|
(.-ctrlKey event))
|
|
|
|
(defn ^boolean meta?
|
|
[^js event]
|
|
(.-metaKey event))
|
|
|
|
(defn ^boolean shift?
|
|
[^js event]
|
|
(.-shiftKey event))
|
|
|
|
(defn ^boolean mod?
|
|
[^js event]
|
|
(if (cfg/check-platform? :macos)
|
|
(meta? event)
|
|
(ctrl? event)))
|
|
|
|
(def esc? (is-key? "Escape"))
|
|
(def enter? (is-key? "Enter"))
|
|
(def space? (is-key? " "))
|
|
(def z? (is-key-ignore-case? "z"))
|
|
(def equals? (is-key? "="))
|
|
(def plus? (is-key? "+"))
|
|
(def minus? (is-key? "-"))
|
|
(def underscore? (is-key? "_"))
|
|
(def up-arrow? (is-key? "ArrowUp"))
|
|
(def down-arrow? (is-key? "ArrowDown"))
|
|
(def left-arrow? (is-key? "ArrowLeft"))
|
|
(def right-arrow? (is-key? "ArrowRight"))
|
|
(def alt-key? (is-key? "Alt"))
|
|
(def shift-key? (is-key? "Shift"))
|
|
(def ctrl-key? (is-key? "Control"))
|
|
(def meta-key? (is-key? "Meta"))
|
|
(def comma? (is-key? ","))
|
|
(def backspace? (is-key? "Backspace"))
|
|
(def home? (is-key? "Home"))
|
|
(def tab? (is-key? "Tab"))
|
|
|