Upgrade rumext and add some examples of syntax sugar.

This commit is contained in:
Andrey Antukh 2022-01-20 18:21:46 +01:00 committed by Andrés Moya
parent dcd53183a8
commit c754a757eb
8 changed files with 67 additions and 89 deletions

View file

@ -546,7 +546,6 @@
(defn transform-selrect (defn transform-selrect
[selrect {:keys [displacement resize-transform-inverse resize-vector resize-origin resize-vector-2 resize-origin-2]}] [selrect {:keys [displacement resize-transform-inverse resize-vector resize-origin resize-vector-2 resize-origin-2]}]
;; FIXME: Improve Performance ;; FIXME: Improve Performance
(let [resize-transform-inverse (or resize-transform-inverse (gmt/matrix)) (let [resize-transform-inverse (or resize-transform-inverse (gmt/matrix))

View file

@ -9,7 +9,7 @@
funcool/beicon {:mvn/version "2021.07.05-1"} funcool/beicon {:mvn/version "2021.07.05-1"}
funcool/okulary {:mvn/version "2020.04.14-0"} funcool/okulary {:mvn/version "2020.04.14-0"}
funcool/potok {:mvn/version "2021.09.20-0"} funcool/potok {:mvn/version "2021.09.20-0"}
funcool/rumext {:mvn/version "2021.05.12-1"} funcool/rumext {:mvn/version "2022.01.20.128"}
funcool/tubax {:mvn/version "2021.05.20-0"} funcool/tubax {:mvn/version "2021.05.20-0"}
instaparse/instaparse {:mvn/version "1.4.10"} instaparse/instaparse {:mvn/version "1.4.10"}

View file

@ -227,31 +227,25 @@
include-metadata? (mf/use-ctx export/include-metadata-ctx) include-metadata? (mf/use-ctx export/include-metadata-ctx)
modifier modifier
(mf/use-memo (mf/with-memo [(:x frame) (:y frame)]
(mf/deps (:x frame) (:y frame))
(fn []
(-> (gpt/point (:x frame) (:y frame)) (-> (gpt/point (:x frame) (:y frame))
(gpt/negate) (gpt/negate)
(gmt/translate-matrix)))) (gmt/translate-matrix)))
objects objects
(mf/use-memo (mf/with-memo [frame-id objects modifier]
(mf/deps frame-id objects modifier)
(fn []
(let [update-fn #(assoc-in %1 [%2 :modifiers :displacement] modifier)] (let [update-fn #(assoc-in %1 [%2 :modifiers :displacement] modifier)]
(->> (cp/get-children frame-id objects) (->> (cp/get-children frame-id objects)
(into [frame-id]) (into [frame-id])
(reduce update-fn objects))))) (reduce update-fn objects))))
frame frame
(mf/use-memo (mf/with-memo [modifier]
(mf/deps modifier) (assoc-in frame [:modifiers :displacement] modifier))
(fn [] (assoc-in frame [:modifiers :displacement] modifier)))
wrapper wrapper
(mf/use-memo (mf/with-memo [objects]
(mf/deps objects) (frame-wrapper-factory objects))
(fn [] (frame-wrapper-factory objects)))
width (* (:width frame) zoom) width (* (:width frame) zoom)
height (* (:height frame) zoom) height (* (:height frame) zoom)

View file

@ -29,7 +29,8 @@
(mf/defc on-main-error (mf/defc on-main-error
[{:keys [error] :as props}] [{:keys [error] :as props}]
(mf/use-effect (st/emitf (rt/assign-exception error))) (mf/with-effect
(st/emit! (rt/assign-exception error)))
[:span "Internal application error"]) [:span "Internal application error"])
(mf/defc main-page (mf/defc main-page

View file

@ -51,17 +51,15 @@
(st/emit! (modal/hide)) (st/emit! (modal/hide))
(on-cancel props)))] (on-cancel props)))]
(mf/use-effect (mf/with-effect
(fn [] (letfn [(on-keydown [event]
(let [on-keydown
(fn [event]
(when (k/enter? event) (when (k/enter? event)
(dom/prevent-default event) (dom/prevent-default event)
(dom/stop-propagation event) (dom/stop-propagation event)
(st/emit! (modal/hide)) (st/emit! (modal/hide))
(on-accept props))) (on-accept props)))]
key (events/listen js/document EventType.KEYDOWN on-keydown)] (->> (events/listen js/document EventType.KEYDOWN on-keydown)
#(events/unlistenByKey key)))) (partial events/unlistenByKey))))
[:div.modal-overlay [:div.modal-overlay
[:div.modal-container.confirm-dialog [:div.modal-container.confirm-dialog

View file

@ -92,10 +92,8 @@
(hooks/use-shortcuts ::dashboard sc/shortcuts) (hooks/use-shortcuts ::dashboard sc/shortcuts)
(mf/use-effect (mf/with-effect [team-id]
(mf/deps team-id) (st/emit! (dd/initialize {:id team-id})))
(fn []
(st/emit! (dd/initialize {:id team-id}))))
[:& (mf/provider ctx/current-team-id) {:value team-id} [:& (mf/provider ctx/current-team-id) {:value team-id}
[:& (mf/provider ctx/current-project-id) {:value project-id} [:& (mf/provider ctx/current-project-id) {:value project-id}

View file

@ -78,28 +78,24 @@
vbox (str/join " " coords) vbox (str/join " " coords)
frame-wrapper frame-wrapper
(mf/use-memo (mf/with-memo [objects]
(mf/deps objects) (render/frame-wrapper-factory objects))
#(render/frame-wrapper-factory objects))
group-wrapper group-wrapper
(mf/use-memo (mf/with-memo [objects]
(mf/deps objects) (render/group-wrapper-factory objects))
#(render/group-wrapper-factory objects))
shape-wrapper shape-wrapper
(mf/use-memo (mf/with-memo [objects]
(mf/deps objects) (render/shape-wrapper-factory objects))
#(render/shape-wrapper-factory objects))
text-shapes text-shapes
(->> objects (->> objects
(filter (fn [[_ shape]] (= :text (:type shape)))) (filter (fn [[_ shape]] (= :text (:type shape))))
(mapv second))] (mapv second))]
(mf/use-effect (mf/with-effect [width height]
(mf/deps width height) (dom/set-page-style {:size (str (mth/ceil width) "px "
#(dom/set-page-style {:size (str (mth/ceil width) "px "
(mth/ceil height) "px")})) (mth/ceil height) "px")}))
[:& (mf/provider embed/context) {:value false} [:& (mf/provider embed/context) {:value false}
@ -148,9 +144,8 @@
(mf/defc render-object (mf/defc render-object
[{:keys [file-id page-id object-id render-texts?] :as props}] [{:keys [file-id page-id object-id render-texts?] :as props}]
(let [objects (mf/use-state nil)] (let [objects (mf/use-state nil)]
(mf/use-effect
(mf/deps file-id page-id object-id) (mf/with-effect [file-id page-id object-id]
(fn []
(->> (rx/zip (->> (rx/zip
(repo/query! :font-variants {:file-id file-id}) (repo/query! :font-variants {:file-id file-id})
(repo/query! :trimmed-file {:id file-id :page-id page-id :object-id object-id})) (repo/query! :trimmed-file {:id file-id :page-id page-id :object-id object-id}))
@ -161,7 +156,7 @@
(let [objs (get-in data [:pages-index page-id :objects]) (let [objs (get-in data [:pages-index page-id :objects])
objs (adapt-root-frame objs object-id)] objs (adapt-root-frame objs object-id)]
(reset! objects objs))))) (reset! objects objs)))))
(constantly nil))) (constantly nil))
(when @objects (when @objects
[:& object-svg {:objects @objects [:& object-svg {:objects @objects
@ -172,14 +167,13 @@
(mf/defc render-sprite (mf/defc render-sprite
[{:keys [file-id component-id] :as props}] [{:keys [file-id component-id] :as props}]
(let [file (mf/use-state nil)] (let [file (mf/use-state nil)]
(mf/use-effect
(mf/deps file-id) (mf/with-effect [file-id]
(fn []
(->> (repo/query! :file {:id file-id}) (->> (repo/query! :file {:id file-id})
(rx/subs (rx/subs
(fn [result] (fn [result]
(reset! file result)))) (reset! file result))))
(constantly nil))) (constantly nil))
(when @file (when @file
[:* [:*

View file

@ -117,29 +117,23 @@
layout (mf/deref refs/workspace-layout)] layout (mf/deref refs/workspace-layout)]
;; Setting the layout preset by its name ;; Setting the layout preset by its name
(mf/use-effect (mf/with-effect [layout-name]
(mf/deps layout-name) (st/emit! (dw/setup-layout layout-name)))
(fn []
(st/emit! (dw/setup-layout layout-name))))
(mf/use-effect (mf/with-effect [project-id file-id]
(mf/deps project-id file-id)
(fn []
(st/emit! (dw/initialize-file project-id file-id)) (st/emit! (dw/initialize-file project-id file-id))
(fn [] (fn []
(st/emit! ::dwp/force-persist (st/emit! ::dwp/force-persist
(dw/finalize-file project-id file-id))))) (dw/finalize-file project-id file-id))))
;; Close any non-modal dialog that may be still open ;; Close any non-modal dialog that may be still open
(mf/use-effect (mf/with-effect
(fn [] (st/emit! dm/hide))) (st/emit! dm/hide))
;; Set properly the page title ;; Set properly the page title
(mf/use-effect (mf/with-effect [(:name file)]
(mf/deps (:name file))
(fn []
(when (:name file) (when (:name file)
(dom/set-html-title (tr "title.workspace" (:name file)))))) (dom/set-html-title (tr "title.workspace" (:name file)))))
[:& (mf/provider ctx/current-file-id) {:value (:id file)} [:& (mf/provider ctx/current-file-id) {:value (:id file)}
[:& (mf/provider ctx/current-team-id) {:value (:team-id project)} [:& (mf/provider ctx/current-team-id) {:value (:team-id project)}