Add incremental performance enhacements to layout-containers (part 1)

This commit is contained in:
Andrey Antukh 2024-02-20 19:49:35 +01:00
parent 7879d883cf
commit 593966a30a

View file

@ -1041,11 +1041,13 @@
saved-grid-dir (:layout-grid-dir values) saved-grid-dir (:layout-grid-dir values)
set-direction set-direction
(fn [dir] (mf/use-fn
(let [dir (keyword dir)] (mf/deps ids)
(st/emit! (dwsl/update-layout ids {:layout-grid-dir dir})))) (fn [dir]
(let [dir (keyword dir)]
(st/emit! (dwsl/update-layout ids {:layout-grid-dir dir})))))
set-gap on-gap-change
(fn [gap-multiple? type val] (fn [gap-multiple? type val]
(if gap-multiple? (if gap-multiple?
(st/emit! (dwsl/update-layout ids {:layout-gap {:row-gap val :column-gap val}})) (st/emit! (dwsl/update-layout ids {:layout-gap {:row-gap val :column-gap val}}))
@ -1053,8 +1055,10 @@
;; Padding ;; Padding
change-padding-type change-padding-type
(fn [type] (mf/use-fn
(st/emit! (dwsl/update-layout ids {:layout-padding-type type}))) (mf/deps ids)
(fn [type]
(st/emit! (dwsl/update-layout ids {:layout-padding-type type}))))
on-padding-change on-padding-change
(fn [type prop val] (fn [type prop val]
@ -1095,20 +1099,17 @@
(st/emit! (dwsl/update-layout ids {:layout-justify-content value})) (st/emit! (dwsl/update-layout ids {:layout-justify-content value}))
(st/emit! (dwsl/update-layout ids {:layout-align-content value})))))) (st/emit! (dwsl/update-layout ids {:layout-align-content value}))))))
;;Grid columns columns-open? (mf/use-state false)
column-grid-values (:layout-grid-columns values) rows-open? (mf/use-state false)
grid-columns-open? (mf/use-state false)
toggle-columns-info (mf/use-fn
(fn [_]
(swap! grid-columns-open? not)))
;; Grid rows / columns column-values (:layout-grid-columns values)
rows-grid-values (:layout-grid-rows values) rows-values (:layout-grid-rows values)
grid-rows-open? (mf/use-state false)
toggle-rows-info toggle-columns-open
(mf/use-fn (mf/use-fn #(swap! columns-open? not))
(fn [_]
(swap! grid-rows-open? not))) toggle-rows-open
(mf/use-fn #(swap! rows-open? not))
add-new-element add-new-element
(mf/use-fn (mf/use-fn
@ -1214,9 +1215,9 @@
[:div {:class (stl/css :row :grid-tracks-row)} [:div {:class (stl/css :row :grid-tracks-row)}
[:& grid-columns-row {:is-col? true [:& grid-columns-row {:is-col? true
:expanded? @grid-columns-open? :expanded? @columns-open?
:toggle toggle-columns-info :toggle toggle-columns-open
:column-values column-grid-values :column-values column-values
:add-new-element add-new-element :add-new-element add-new-element
:set-column-value set-column-value :set-column-value set-column-value
:set-column-type set-column-type :set-column-type set-column-type
@ -1226,9 +1227,9 @@
:on-select-track handle-select-track}] :on-select-track handle-select-track}]
[:& grid-columns-row {:is-col? false [:& grid-columns-row {:is-col? false
:expanded? @grid-rows-open? :expanded? @rows-open?
:toggle toggle-rows-info :toggle toggle-rows-open
:column-values rows-grid-values :column-values rows-values
:add-new-element add-new-element :add-new-element add-new-element
:set-column-value set-column-value :set-column-value set-column-value
:set-column-type set-column-type :set-column-type set-column-type