Skip to content

Commit

Permalink
generalize delayed attrs
Browse files Browse the repository at this point in the history
  • Loading branch information
mitchdzugan committed May 15, 2020
1 parent 6f75805 commit 30225ab
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 32 deletions.
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(defproject mayu "0.1.40"
(defproject mayu "0.1.41"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
Expand Down
21 changes: 9 additions & 12 deletions src/cljc/mayu/dom.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -167,13 +167,12 @@
[{} arg])]
(create-element tag attrs m)))
([tag attrs- m-]
let [attrs (-> attrs-
(#(if (contains? %1 :class)
(update %1 :class render-class)
%1))
(#(if (contains? %1 :delayed-class)
(update %1 :delayed-class render-class)
%1)))
let [update-class #(if (contains? %1 :class)
(update %1 :class render-class)
%1)
attrs (-> attrs-
update-class
(update :delayed update-class))
m (if (fn? m-) m- (text m-))]
{:keys [key]} <- w/get
(w/pass (step tag (inner-create-element key tag attrs m)))))
Expand Down Expand Up @@ -458,13 +457,11 @@
!MCreateElement
(let [{:keys [tag attrs children]} mdom
fixed-attrs (-> attrs
(merge (:delayed attrs))
(dissoc :delayed)
(update :style #(-> %1
(dissoc :delayed :remove)
(merge (:delayed %1))))
(#(if (contains? %1 :delayed-class)
(assoc %1 :class (:delayed-class %1))
%1))
(dissoc :delayed-class))]
(merge (:delayed %1)))))]
(str "<" tag (render-attr-map fixed-attrs) ">"
(reduce #(str %1 (proc-mdom %2 split-path state)) "" children)
"</" tag ">"))
Expand Down
4 changes: 2 additions & 2 deletions src/cljc/mayu/examples.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@
(dom/emit ::items (e/map (varg# (->Append)) (dom/on-click btn)))
<[keyed counter
<[div {:class "no-transition"
:delayed-class ["test" "123"]}
:delayed {:class ["test" "123"]}}
$=
<[for items $[{:keys [id]}]=
<[keyed id
Expand All @@ -359,7 +359,7 @@
s-timer <- (s/reduce inc 0 (e/timer 1000))
<[dom/bind s-timer $[timer]=
<[ul {:class ["a" "b"]
:delayed-class ["c" "d"]} $=
:delayed {:class ["c" "d"]}} $=
<[li {:style {:display "none"
:delayed {:display "block"}
:remove {:display "none"}}
Expand Down
27 changes: 10 additions & 17 deletions src/cljs/mayu/attach.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,14 @@
(when @has?
(swap! g-mutable-els #(assoc % path elm)))))

(defn handle-delayed-class [prev curr]
(defn handle-delayed [prev curr]
(let [has? (atom false)
elm (aget curr "elm")
prev-data (or (aget prev "data") #js {})
curr-data (or (aget curr "data") #js {})]
(when (and (.hasOwnProperty curr-data "delayed-class")
(.hasOwnProperty prev-data "delayed-class"))
(let [args (aget curr-data "args")
delayed-class (aget curr-data "delayed-class")]
(->> (assoc-in args [1 :attrs :class] delayed-class)
(aset curr-data "args"))))))
data (or (aget curr "data") #js {})
args (or (aget data "args") [])
[_ clj-data _ path] args]
(->> (update-in args [1 :attrs] #(merge %1 (:delayed clj-data)))
(aset data "args"))))

(defrecord TText [s])
(defrecord TCreateElement [tag key path attrs children])
Expand Down Expand Up @@ -96,14 +93,14 @@

TCreateElement
(let [{:keys [tag key path attrs children]} tdom
{:keys [delayed-class]} attrs
{:keys [delayed]} attrs
mutable (reduce #(if (contains? attrs %2)
(assoc %1 %2 (get attrs %2))
%1)
{}
dom/mutable-keys)
fixed-attrs (reduce #(dissoc %1 %2)
(dissoc attrs :style :delayed-class)
(dissoc attrs :style :delayed)
dom/mutable-keys)
fix-keys
(fn [styles]
Expand All @@ -121,14 +118,12 @@

data (-> {:attrs fixed-attrs
:mutable mutable
:delayed delayed
:path path
:on {:beforeinput before-input}
:hook {:insert push-el-mount
:postpatch push-el}}
(#(if (nil? key) %1 (assoc %1 :key (str (hash key)))))
(#(if (nil? delayed-class) %1 (assoc %1
:delayed-class
delayed-class)))
((fn [data]
(if (empty? (:style attrs))
data
Expand Down Expand Up @@ -172,7 +167,7 @@
(copy-to-thunk (if (= prev-args curr-args)
prev
(do
(handle-delayed-class prev curr)
(handle-delayed prev curr)
(build-thunk curr)))
curr)))

Expand All @@ -184,8 +179,6 @@
:args [tag data children path]}]
(when (not (nil? (:key data)))
(aset jsdata "key" (:key data)))
(when (not (nil? (:delayed-class data)))
(aset jsdata "delayed-class" (:delayed-class data)))
(h tag jsdata)))

(defprotomethod to-tdoms [mdom]
Expand Down

0 comments on commit 30225ab

Please sign in to comment.