mirror of
https://github.com/penpot/penpot.git
synced 2025-05-19 20:46:11 +02:00
🐛 Fix export from shared prototype
This commit is contained in:
parent
0d87dc5680
commit
009236bbe3
15 changed files with 69 additions and 47 deletions
|
@ -75,7 +75,7 @@
|
|||
{:exports (vec exports)})))))))
|
||||
|
||||
(defn show-viewer-export-dialog
|
||||
[{:keys [shapes page-id file-id exports]}]
|
||||
[{:keys [shapes page-id file-id share-id exports]}]
|
||||
(ptk/reify ::show-viewer-export-dialog
|
||||
ptk/WatchEvent
|
||||
(watch [_ _ _]
|
||||
|
@ -87,8 +87,9 @@
|
|||
(assoc :file-id file-id)
|
||||
(assoc :object-id (:id shape))
|
||||
(assoc :shape (dissoc shape :exports))
|
||||
(assoc :name (:name shape))))]
|
||||
(rx/of (modal/show :export-shapes {:exports (vec exports)}))))))
|
||||
(assoc :name (:name shape))
|
||||
(cond-> share-id (assoc :share-id share-id))))]
|
||||
(rx/of (modal/show :export-shapes {:exports (vec exports)})))))) #_TODO
|
||||
|
||||
(defn show-workspace-export-frames-dialog
|
||||
[frames]
|
||||
|
|
|
@ -215,7 +215,7 @@
|
|||
(mf/defc viewer
|
||||
[{:keys [params data]}]
|
||||
|
||||
(let [{:keys [page-id section index interactions-mode]} params
|
||||
(let [{:keys [page-id share-id section index interactions-mode]} params
|
||||
{:keys [file users project permissions]} data
|
||||
|
||||
allowed (or
|
||||
|
@ -519,7 +519,8 @@
|
|||
:size size
|
||||
:index index
|
||||
:viewer-pagination viewer-pagination
|
||||
:interactions-mode interactions-mode}]
|
||||
:interactions-mode interactions-mode
|
||||
:share-id share-id}]
|
||||
|
||||
|
||||
[:& (mf/provider ctx/current-zoom) {:value zoom}
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
(dom/add-class! layout "force-visible"))))))
|
||||
|
||||
(mf/defc viewport
|
||||
[{:keys [local file page frame index viewer-pagination size]}]
|
||||
[{:keys [local file page frame index viewer-pagination size share-id]}]
|
||||
(let [inspect-svg-container-ref (mf/use-ref nil)
|
||||
on-mouse-wheel
|
||||
(fn [event]
|
||||
|
@ -76,4 +76,5 @@
|
|||
[:& right-sidebar {:frame frame
|
||||
:selected (:selected local)
|
||||
:page page
|
||||
:file file}]]))
|
||||
:file file
|
||||
:share-id share-id}]]))
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
:text [:layout :text :shadow :blur :stroke :layout-flex-item]})
|
||||
|
||||
(mf/defc attributes
|
||||
[{:keys [page-id file-id shapes frame from libraries]}]
|
||||
[{:keys [page-id file-id shapes frame from libraries share-id]}]
|
||||
(let [shapes (hooks/use-equal-memo shapes)
|
||||
shapes (mf/with-memo [shapes]
|
||||
(mapv #(gsh/translate-to-frame % frame) shapes))
|
||||
|
@ -66,4 +66,5 @@
|
|||
{:shapes shapes
|
||||
:type type
|
||||
:page-id page-id
|
||||
:file-id file-id}]]))
|
||||
:file-id file-id
|
||||
:share-id share-id}]]))
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
(mf/defc exports
|
||||
{::mf/wrap [#(mf/memo % =)]}
|
||||
[{:keys [shapes page-id file-id type] :as props}]
|
||||
[{:keys [shapes page-id file-id share-id type] :as props}]
|
||||
(let [exports (mf/use-state [])
|
||||
xstate (mf/deref refs/export)
|
||||
vstate (mf/deref refs/viewer-data)
|
||||
|
@ -40,15 +40,17 @@
|
|||
:exports @exports
|
||||
:filename filename
|
||||
:page-id page-id
|
||||
:file-id file-id}))
|
||||
:file-id file-id
|
||||
:share-id share-id}))
|
||||
|
||||
;; In other all cases we only allowed to have a single
|
||||
;; shape-id because multiple shape-ids are handled
|
||||
;; separately by the export-modal.
|
||||
(let [defaults {:page-id page-id
|
||||
:file-id file-id
|
||||
:name filename
|
||||
:object-id (-> shapes first :id)}
|
||||
(let [defaults (-> {:page-id page-id
|
||||
:file-id file-id
|
||||
:name filename
|
||||
:object-id (-> shapes first :id)}
|
||||
(cond-> share-id (assoc :share-id share-id)))
|
||||
exports (mapv #(merge % defaults) @exports)]
|
||||
(if (= 1 (count exports))
|
||||
(st/emit! (de/request-simple-export {:export (first exports)}))
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
:data local})))))
|
||||
|
||||
(mf/defc right-sidebar
|
||||
[{:keys [frame page file selected shapes page-id file-id from]
|
||||
[{:keys [frame page file selected shapes page-id file-id share-id from]
|
||||
:or {from :inspect}}]
|
||||
(let [expanded (mf/use-state false)
|
||||
section (mf/use-state :info #_:code)
|
||||
|
@ -89,7 +89,8 @@
|
|||
:frame frame
|
||||
:shapes shapes
|
||||
:from from
|
||||
:libraries libraries}]]
|
||||
:libraries libraries
|
||||
:share-id share-id}]]
|
||||
|
||||
[:& tabs-element {:id :code :title (tr "inspect.tabs.code")}
|
||||
[:& code {:frame frame
|
||||
|
|
|
@ -95,16 +95,17 @@
|
|||
state))
|
||||
|
||||
(mf/defc object-svg
|
||||
[{:keys [page-id file-id object-id render-embed?]}]
|
||||
[{:keys [page-id file-id share-id object-id render-embed?]}]
|
||||
(let [components-v2 (feat/use-feature :components-v2)
|
||||
fetch-state (mf/use-fn
|
||||
(mf/deps file-id page-id object-id components-v2)
|
||||
(mf/deps file-id page-id share-id object-id components-v2)
|
||||
(fn []
|
||||
(let [features (cond-> #{} components-v2 (conj "components/v2"))]
|
||||
(->> (rx/zip
|
||||
(repo/cmd! :get-font-variants {:file-id file-id})
|
||||
(repo/cmd! :get-font-variants {:file-id file-id :share-id share-id})
|
||||
(repo/cmd! :get-page {:file-id file-id
|
||||
:page-id page-id
|
||||
:share-id share-id
|
||||
:object-id object-id
|
||||
:features features}))
|
||||
(rx/tap (fn [[fonts]]
|
||||
|
@ -135,16 +136,17 @@
|
|||
:render-embed? render-embed?}])))
|
||||
|
||||
(mf/defc objects-svg
|
||||
[{:keys [page-id file-id object-ids render-embed?]}]
|
||||
[{:keys [page-id file-id share-id object-ids render-embed?]}]
|
||||
(let [components-v2 (feat/use-feature :components-v2)
|
||||
fetch-state (mf/use-fn
|
||||
(mf/deps file-id page-id components-v2)
|
||||
(mf/deps file-id page-id share-id components-v2)
|
||||
(fn []
|
||||
(let [features (cond-> #{} components-v2 (conj "components/v2"))]
|
||||
(->> (rx/zip
|
||||
(repo/cmd! :get-font-variants {:file-id file-id})
|
||||
(repo/cmd! :get-font-variants {:file-id file-id :share-id share-id})
|
||||
(repo/cmd! :get-page {:file-id file-id
|
||||
:page-id page-id
|
||||
:share-id share-id
|
||||
:features features}))
|
||||
(rx/tap (fn [[fonts]]
|
||||
(when (seq fonts)
|
||||
|
@ -164,6 +166,7 @@
|
|||
|
||||
(s/def ::page-id ::us/uuid)
|
||||
(s/def ::file-id ::us/uuid)
|
||||
(s/def ::share-id ::us/uuid)
|
||||
(s/def ::object-id
|
||||
(s/or :single ::us/uuid
|
||||
:multiple (s/coll-of ::us/uuid)))
|
||||
|
@ -171,24 +174,25 @@
|
|||
|
||||
(s/def ::render-objects
|
||||
(s/keys :req-un [::file-id ::page-id ::object-id]
|
||||
:opt-un [::render-embed]))
|
||||
:opt-un [::render-embed ::share-id]))
|
||||
|
||||
(defn- render-objects
|
||||
[params]
|
||||
(let [{:keys [file-id
|
||||
page-id
|
||||
render-embed]
|
||||
render-embed
|
||||
share-id]
|
||||
:as params}
|
||||
(us/conform ::render-objects params)
|
||||
|
||||
[type object-id] (:object-id params)]
|
||||
|
||||
(case type
|
||||
:single
|
||||
(mf/html
|
||||
[:& object-svg
|
||||
{:file-id file-id
|
||||
:page-id page-id
|
||||
:share-id share-id
|
||||
:object-id object-id
|
||||
:render-embed? render-embed}])
|
||||
|
||||
|
@ -197,6 +201,7 @@
|
|||
[:& objects-svg
|
||||
{:file-id file-id
|
||||
:page-id page-id
|
||||
:share-id share-id
|
||||
:object-ids (into #{} object-id)
|
||||
:render-embed? render-embed}]))))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue