♻️ Refactor (again) numeric input component

This commit is contained in:
Andrey Antukh 2023-07-06 15:27:14 +02:00
parent e96d129ee8
commit ab0245279f
11 changed files with 182 additions and 198 deletions

View file

@ -17,7 +17,21 @@
[app.util.webapi :as wapi]
[cuerdas.core :as str]
[goog.dom :as dom]
[promesa.core :as p]))
[promesa.core :as p])
(:import goog.events.BrowserEvent))
(extend-type BrowserEvent
cljs.core/IDeref
(-deref [it] (.getBrowserEvent it)))
(defn browser-event?
[o]
(instance? BrowserEvent o))
(defn native-event?
[o]
(instance? js/Event o))
(log/set-level! :warn)
@ -338,10 +352,19 @@
y (.-offsetY event)]
(gpt/point x y))))
(defn get-delta-position
[event]
(let [e (if (browser-event? event)
(deref event)
event)
x (.-deltaX ^js e)
y (.-deltaY ^js e)]
(gpt/point x y)))
(defn get-client-size
[^js node]
(when (some? node)
(grc/make-rect 0 0 (.-clientWidth ^js node) (.-clientHeight ^js node))))
(grc/make-rect 0 0 (.-clientWidth node) (.-clientHeight node))))
(defn get-bounding-rect
[node]

View file

@ -73,6 +73,11 @@
(unchecked-set obj key value)
obj)
(defn unset!
[obj key]
(js-delete obj key)
obj)
(defn update!
[obj key f & args]
(let [found (get obj key ::not-found)]