mirror of
https://github.com/penpot/penpot.git
synced 2025-05-23 17:26:11 +02:00
✨ Upgrade rumext and add some examples of syntax sugar.
This commit is contained in:
parent
dcd53183a8
commit
c754a757eb
8 changed files with 67 additions and 89 deletions
|
@ -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))
|
||||||
|
|
||||||
|
|
|
@ -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"}
|
||||||
|
|
|
@ -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))
|
(-> (gpt/point (:x frame) (:y frame))
|
||||||
(fn []
|
(gpt/negate)
|
||||||
(-> (gpt/point (:x frame) (:y frame))
|
(gmt/translate-matrix)))
|
||||||
(gpt/negate)
|
|
||||||
(gmt/translate-matrix))))
|
|
||||||
|
|
||||||
objects
|
objects
|
||||||
(mf/use-memo
|
(mf/with-memo [frame-id objects modifier]
|
||||||
(mf/deps frame-id objects modifier)
|
(let [update-fn #(assoc-in %1 [%2 :modifiers :displacement] modifier)]
|
||||||
(fn []
|
(->> (cp/get-children frame-id objects)
|
||||||
(let [update-fn #(assoc-in %1 [%2 :modifiers :displacement] modifier)]
|
(into [frame-id])
|
||||||
(->> (cp/get-children frame-id objects)
|
(reduce update-fn objects))))
|
||||||
(into [frame-id])
|
|
||||||
(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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
(when (k/enter? event)
|
||||||
(fn [event]
|
(dom/prevent-default event)
|
||||||
(when (k/enter? event)
|
(dom/stop-propagation event)
|
||||||
(dom/prevent-default event)
|
(st/emit! (modal/hide))
|
||||||
(dom/stop-propagation event)
|
(on-accept props)))]
|
||||||
(st/emit! (modal/hide))
|
(->> (events/listen js/document EventType.KEYDOWN on-keydown)
|
||||||
(on-accept props)))
|
(partial events/unlistenByKey))))
|
||||||
key (events/listen js/document EventType.KEYDOWN on-keydown)]
|
|
||||||
#(events/unlistenByKey key))))
|
|
||||||
|
|
||||||
[:div.modal-overlay
|
[:div.modal-overlay
|
||||||
[:div.modal-container.confirm-dialog
|
[:div.modal-container.confirm-dialog
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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,20 +144,19 @@
|
||||||
(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}))
|
(rx/subs
|
||||||
(rx/subs
|
(fn [[fonts {:keys [data]}]]
|
||||||
(fn [[fonts {:keys [data]}]]
|
(when (seq fonts)
|
||||||
(when (seq fonts)
|
(st/emit! (df/fonts-fetched fonts)))
|
||||||
(st/emit! (df/fonts-fetched fonts)))
|
(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
|
||||||
[:*
|
[:*
|
||||||
|
|
|
@ -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)
|
(st/emit! (dw/initialize-file project-id file-id))
|
||||||
(fn []
|
(fn []
|
||||||
(st/emit! (dw/initialize-file project-id file-id))
|
(st/emit! ::dwp/force-persist
|
||||||
(fn []
|
(dw/finalize-file project-id file-id))))
|
||||||
(st/emit! ::dwp/force-persist
|
|
||||||
(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))
|
(when (:name file)
|
||||||
(fn []
|
(dom/set-html-title (tr "title.workspace" (:name file)))))
|
||||||
(when (: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)}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue