mirror of
https://github.com/penpot/penpot.git
synced 2025-05-14 00:06:37 +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
|
@ -34,6 +34,9 @@
|
||||||
- Fix problem with selection shortcuts [Taiga #5492](https://tree.taiga.io/project/penpot/issue/5492)
|
- Fix problem with selection shortcuts [Taiga #5492](https://tree.taiga.io/project/penpot/issue/5492)
|
||||||
- Fix issue with paths line to curve and concurrent editing [Taiga #5191](https://tree.taiga.io/project/penpot/issue/5191)
|
- Fix issue with paths line to curve and concurrent editing [Taiga #5191](https://tree.taiga.io/project/penpot/issue/5191)
|
||||||
- Fix problems with locked layers [Taiga #5139](https://tree.taiga.io/project/penpot/issue/5139)
|
- Fix problems with locked layers [Taiga #5139](https://tree.taiga.io/project/penpot/issue/5139)
|
||||||
|
- Fix export from shared prototype [Taiga #5565](https://tree.taiga.io/project/penpot/issue/5565)
|
||||||
|
|
||||||
|
### :arrow_up: Deps updates
|
||||||
|
|
||||||
### :heart: Community contributions by (Thank you!)
|
### :heart: Community contributions by (Thank you!)
|
||||||
|
|
||||||
|
|
|
@ -512,6 +512,7 @@
|
||||||
[:map {:title "GetPage"}
|
[:map {:title "GetPage"}
|
||||||
[:file-id ::sm/uuid]
|
[:file-id ::sm/uuid]
|
||||||
[:page-id {:optional true} ::sm/uuid]
|
[:page-id {:optional true} ::sm/uuid]
|
||||||
|
[:share-id {:optional true} ::sm/uuid]
|
||||||
[:object-id {:optional true} ::sm/uuid]
|
[:object-id {:optional true} ::sm/uuid]
|
||||||
[:features {:optional true} ::features]])
|
[:features {:optional true} ::features]])
|
||||||
|
|
||||||
|
@ -527,14 +528,12 @@
|
||||||
Mainly used for rendering purposes."
|
Mainly used for rendering purposes."
|
||||||
{::doc/added "1.17"
|
{::doc/added "1.17"
|
||||||
::sm/params ::get-page}
|
::sm/params ::get-page}
|
||||||
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id file-id] :as params}]
|
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id file-id share-id] :as params}]
|
||||||
(dm/with-open [conn (db/open pool)]
|
(dm/with-open [conn (db/open pool)]
|
||||||
(check-read-permissions! conn profile-id file-id)
|
(let [perms (get-permissions conn profile-id file-id share-id)]
|
||||||
|
(check-read-permissions! perms)
|
||||||
(binding [pmap/*load-fn* (partial load-pointer conn file-id)]
|
(binding [pmap/*load-fn* (partial load-pointer conn file-id)]
|
||||||
(get-page conn params))))
|
(get-page conn params)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; --- COMMAND QUERY: get-team-shared-files
|
;; --- COMMAND QUERY: get-team-shared-files
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
(s/def ::id ::us/uuid)
|
(s/def ::id ::us/uuid)
|
||||||
(s/def ::name ::us/not-empty-string)
|
(s/def ::name ::us/not-empty-string)
|
||||||
(s/def ::project-id ::us/uuid)
|
(s/def ::project-id ::us/uuid)
|
||||||
|
(s/def ::share-id ::us/uuid)
|
||||||
(s/def ::style valid-style)
|
(s/def ::style valid-style)
|
||||||
(s/def ::team-id ::us/uuid)
|
(s/def ::team-id ::us/uuid)
|
||||||
(s/def ::weight valid-weight)
|
(s/def ::weight valid-weight)
|
||||||
|
@ -47,7 +48,8 @@
|
||||||
(s/keys :req [::rpc/profile-id]
|
(s/keys :req [::rpc/profile-id]
|
||||||
:opt-un [::team-id
|
:opt-un [::team-id
|
||||||
::file-id
|
::file-id
|
||||||
::project-id])
|
::project-id
|
||||||
|
::share-id])
|
||||||
(fn [o]
|
(fn [o]
|
||||||
(or (contains? o :team-id)
|
(or (contains? o :team-id)
|
||||||
(contains? o :file-id)
|
(contains? o :file-id)
|
||||||
|
@ -55,7 +57,7 @@
|
||||||
|
|
||||||
(sv/defmethod ::get-font-variants
|
(sv/defmethod ::get-font-variants
|
||||||
{::doc/added "1.18"}
|
{::doc/added "1.18"}
|
||||||
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id team-id file-id project-id] :as params}]
|
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id team-id file-id project-id share-id] :as params}]
|
||||||
(dm/with-open [conn (db/open pool)]
|
(dm/with-open [conn (db/open pool)]
|
||||||
(cond
|
(cond
|
||||||
(uuid? team-id)
|
(uuid? team-id)
|
||||||
|
@ -74,8 +76,9 @@
|
||||||
|
|
||||||
(uuid? file-id)
|
(uuid? file-id)
|
||||||
(let [file (db/get-by-id conn :file file-id {:columns [:id :project-id]})
|
(let [file (db/get-by-id conn :file file-id {:columns [:id :project-id]})
|
||||||
project (db/get-by-id conn :project (:project-id file) {:columns [:id :team-id]})]
|
project (db/get-by-id conn :project (:project-id file) {:columns [:id :team-id]})
|
||||||
(files/check-read-permissions! conn profile-id file-id)
|
perms (files/get-permissions conn profile-id file-id share-id)]
|
||||||
|
(files/check-read-permissions! perms)
|
||||||
(db/query conn :team-font-variant
|
(db/query conn :team-font-variant
|
||||||
{:team-id (:team-id project)
|
{:team-id (:team-id project)
|
||||||
:deleted-at nil})))))
|
:deleted-at nil})))))
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
(s/def ::name ::us/string)
|
(s/def ::name ::us/string)
|
||||||
(s/def ::object-id ::us/uuid)
|
(s/def ::object-id ::us/uuid)
|
||||||
(s/def ::page-id ::us/uuid)
|
(s/def ::page-id ::us/uuid)
|
||||||
|
(s/def ::share-id ::us/uuid)
|
||||||
(s/def ::profile-id ::us/uuid)
|
(s/def ::profile-id ::us/uuid)
|
||||||
(s/def ::scale ::us/number)
|
(s/def ::scale ::us/number)
|
||||||
(s/def ::suffix ::us/string)
|
(s/def ::suffix ::us/string)
|
||||||
|
@ -35,7 +36,8 @@
|
||||||
(s/def ::wait ::us/boolean)
|
(s/def ::wait ::us/boolean)
|
||||||
|
|
||||||
(s/def ::export
|
(s/def ::export
|
||||||
(s/keys :req-un [::page-id ::file-id ::object-id ::type ::suffix ::scale ::name]))
|
(s/keys :req-un [::page-id ::file-id ::object-id ::type ::suffix ::scale ::name]
|
||||||
|
:opt-un [::share-id]))
|
||||||
|
|
||||||
(s/def ::exports
|
(s/def ::exports
|
||||||
(s/coll-of ::export :kind vector? :min-count 1))
|
(s/coll-of ::export :kind vector? :min-count 1))
|
||||||
|
@ -89,7 +91,6 @@
|
||||||
proc (-> (rd/render export on-progress)
|
proc (-> (rd/render export on-progress)
|
||||||
(p/then (constantly resource))
|
(p/then (constantly resource))
|
||||||
(p/catch on-error))]
|
(p/catch on-error))]
|
||||||
|
|
||||||
(if wait
|
(if wait
|
||||||
(p/then proc #(assoc exchange :response/body (dissoc % :path)))
|
(p/then proc #(assoc exchange :response/body (dissoc % :path)))
|
||||||
(assoc exchange :response/body (dissoc resource :path)))))
|
(assoc exchange :response/body (dissoc resource :path)))))
|
||||||
|
@ -188,6 +189,7 @@
|
||||||
(process-partition [[part1 :as part]]
|
(process-partition [[part1 :as part]]
|
||||||
{:file-id (:file-id part1)
|
{:file-id (:file-id part1)
|
||||||
:page-id (:page-id part1)
|
:page-id (:page-id part1)
|
||||||
|
:share-id (:share-id part1)
|
||||||
:name (:name part1)
|
:name (:name part1)
|
||||||
:token token
|
:token token
|
||||||
:type (:type part1)
|
:type (:type part1)
|
||||||
|
|
|
@ -18,12 +18,14 @@
|
||||||
(s/def ::type #{:jpeg :png :pdf :svg})
|
(s/def ::type #{:jpeg :png :pdf :svg})
|
||||||
(s/def ::page-id ::us/uuid)
|
(s/def ::page-id ::us/uuid)
|
||||||
(s/def ::file-id ::us/uuid)
|
(s/def ::file-id ::us/uuid)
|
||||||
|
(s/def ::share-id ::us/uuid)
|
||||||
(s/def ::scale ::us/number)
|
(s/def ::scale ::us/number)
|
||||||
(s/def ::token ::us/string)
|
(s/def ::token ::us/string)
|
||||||
(s/def ::filename ::us/string)
|
(s/def ::filename ::us/string)
|
||||||
|
|
||||||
(s/def ::object
|
(s/def ::object
|
||||||
(s/keys :req-un [::id ::name ::suffix ::filename]))
|
(s/keys :req-un [::id ::name ::suffix ::filename]
|
||||||
|
:opt-un [::share-id]))
|
||||||
|
|
||||||
(s/def ::objects
|
(s/def ::objects
|
||||||
(s/coll-of ::object :min-count 1))
|
(s/coll-of ::object :min-count 1))
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
[promesa.core :as p]))
|
[promesa.core :as p]))
|
||||||
|
|
||||||
(defn render
|
(defn render
|
||||||
[{:keys [file-id page-id token scale type objects] :as params} on-object]
|
[{:keys [file-id page-id share-id token scale type objects] :as params} on-object]
|
||||||
(letfn [(prepare-options [uri]
|
(letfn [(prepare-options [uri]
|
||||||
#js {:screen #js {:width bw/default-viewport-width
|
#js {:screen #js {:width bw/default-viewport-width
|
||||||
:height bw/default-viewport-height}
|
:height bw/default-viewport-height}
|
||||||
|
@ -48,9 +48,9 @@
|
||||||
;; take the screnshot of requested objects, one by one
|
;; take the screnshot of requested objects, one by one
|
||||||
(p/run! (partial render-object page) objects)
|
(p/run! (partial render-object page) objects)
|
||||||
nil))]
|
nil))]
|
||||||
|
|
||||||
(p/let [params {:file-id file-id
|
(p/let [params {:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:object-id (mapv :id objects)
|
:object-id (mapv :id objects)
|
||||||
:route "objects"}
|
:route "objects"}
|
||||||
uri (-> (cf/get :public-uri)
|
uri (-> (cf/get :public-uri)
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
[promesa.core :as p]))
|
[promesa.core :as p]))
|
||||||
|
|
||||||
(defn render
|
(defn render
|
||||||
[{:keys [file-id page-id token scale type objects] :as params} on-object]
|
[{:keys [file-id page-id share-id token scale type objects] :as params} on-object]
|
||||||
(letfn [(prepare-options [uri]
|
(letfn [(prepare-options [uri]
|
||||||
#js {:screen #js {:width bw/default-viewport-width
|
#js {:screen #js {:width bw/default-viewport-width
|
||||||
:height bw/default-viewport-height}
|
:height bw/default-viewport-height}
|
||||||
|
@ -31,6 +31,7 @@
|
||||||
(prepare-uri [base-uri object-id]
|
(prepare-uri [base-uri object-id]
|
||||||
(let [params {:file-id file-id
|
(let [params {:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:object-id object-id
|
:object-id object-id
|
||||||
:route "objects"}]
|
:route "objects"}]
|
||||||
(-> base-uri
|
(-> base-uri
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
:height height}))
|
:height height}))
|
||||||
|
|
||||||
(defn render
|
(defn render
|
||||||
[{:keys [page-id file-id objects token scale type]} on-object]
|
[{:keys [page-id file-id share-id objects token scale type]} on-object]
|
||||||
(letfn [(convert-to-ppm [pngpath]
|
(letfn [(convert-to-ppm [pngpath]
|
||||||
(let [ppmpath (str/concat pngpath "origin.ppm")]
|
(let [ppmpath (str/concat pngpath "origin.ppm")]
|
||||||
(l/trace :fn :convert-to-ppm :path ppmpath)
|
(l/trace :fn :convert-to-ppm :path ppmpath)
|
||||||
|
@ -338,9 +338,9 @@
|
||||||
;; take the screnshot of requested objects, one by one
|
;; take the screnshot of requested objects, one by one
|
||||||
(p/run! (partial render-object page) objects)
|
(p/run! (partial render-object page) objects)
|
||||||
nil))]
|
nil))]
|
||||||
|
|
||||||
(p/let [params {:file-id file-id
|
(p/let [params {:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:render-embed true
|
:render-embed true
|
||||||
:object-id (mapv :id objects)
|
:object-id (mapv :id objects)
|
||||||
:route "objects"}
|
:route "objects"}
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
{:exports (vec exports)})))))))
|
{:exports (vec exports)})))))))
|
||||||
|
|
||||||
(defn show-viewer-export-dialog
|
(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/reify ::show-viewer-export-dialog
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ _ _]
|
(watch [_ _ _]
|
||||||
|
@ -87,8 +87,9 @@
|
||||||
(assoc :file-id file-id)
|
(assoc :file-id file-id)
|
||||||
(assoc :object-id (:id shape))
|
(assoc :object-id (:id shape))
|
||||||
(assoc :shape (dissoc shape :exports))
|
(assoc :shape (dissoc shape :exports))
|
||||||
(assoc :name (:name shape))))]
|
(assoc :name (:name shape))
|
||||||
(rx/of (modal/show :export-shapes {:exports (vec exports)}))))))
|
(cond-> share-id (assoc :share-id share-id))))]
|
||||||
|
(rx/of (modal/show :export-shapes {:exports (vec exports)})))))) #_TODO
|
||||||
|
|
||||||
(defn show-workspace-export-frames-dialog
|
(defn show-workspace-export-frames-dialog
|
||||||
[frames]
|
[frames]
|
||||||
|
|
|
@ -215,7 +215,7 @@
|
||||||
(mf/defc viewer
|
(mf/defc viewer
|
||||||
[{:keys [params data]}]
|
[{: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
|
{:keys [file users project permissions]} data
|
||||||
|
|
||||||
allowed (or
|
allowed (or
|
||||||
|
@ -519,7 +519,8 @@
|
||||||
:size size
|
:size size
|
||||||
:index index
|
:index index
|
||||||
:viewer-pagination viewer-pagination
|
:viewer-pagination viewer-pagination
|
||||||
:interactions-mode interactions-mode}]
|
:interactions-mode interactions-mode
|
||||||
|
:share-id share-id}]
|
||||||
|
|
||||||
|
|
||||||
[:& (mf/provider ctx/current-zoom) {:value zoom}
|
[:& (mf/provider ctx/current-zoom) {:value zoom}
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
(dom/add-class! layout "force-visible"))))))
|
(dom/add-class! layout "force-visible"))))))
|
||||||
|
|
||||||
(mf/defc viewport
|
(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)
|
(let [inspect-svg-container-ref (mf/use-ref nil)
|
||||||
on-mouse-wheel
|
on-mouse-wheel
|
||||||
(fn [event]
|
(fn [event]
|
||||||
|
@ -76,4 +76,5 @@
|
||||||
[:& right-sidebar {:frame frame
|
[:& right-sidebar {:frame frame
|
||||||
:selected (:selected local)
|
:selected (:selected local)
|
||||||
:page page
|
:page page
|
||||||
:file file}]]))
|
:file file
|
||||||
|
:share-id share-id}]]))
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
:text [:layout :text :shadow :blur :stroke :layout-flex-item]})
|
:text [:layout :text :shadow :blur :stroke :layout-flex-item]})
|
||||||
|
|
||||||
(mf/defc attributes
|
(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)
|
(let [shapes (hooks/use-equal-memo shapes)
|
||||||
shapes (mf/with-memo [shapes]
|
shapes (mf/with-memo [shapes]
|
||||||
(mapv #(gsh/translate-to-frame % frame) shapes))
|
(mapv #(gsh/translate-to-frame % frame) shapes))
|
||||||
|
@ -66,4 +66,5 @@
|
||||||
{:shapes shapes
|
{:shapes shapes
|
||||||
:type type
|
:type type
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
:file-id file-id}]]))
|
:file-id file-id
|
||||||
|
:share-id share-id}]]))
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
(mf/defc exports
|
(mf/defc exports
|
||||||
{::mf/wrap [#(mf/memo % =)]}
|
{::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 [])
|
(let [exports (mf/use-state [])
|
||||||
xstate (mf/deref refs/export)
|
xstate (mf/deref refs/export)
|
||||||
vstate (mf/deref refs/viewer-data)
|
vstate (mf/deref refs/viewer-data)
|
||||||
|
@ -40,15 +40,17 @@
|
||||||
:exports @exports
|
:exports @exports
|
||||||
:filename filename
|
:filename filename
|
||||||
:page-id page-id
|
: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
|
;; In other all cases we only allowed to have a single
|
||||||
;; shape-id because multiple shape-ids are handled
|
;; shape-id because multiple shape-ids are handled
|
||||||
;; separately by the export-modal.
|
;; separately by the export-modal.
|
||||||
(let [defaults {:page-id page-id
|
(let [defaults (-> {:page-id page-id
|
||||||
:file-id file-id
|
:file-id file-id
|
||||||
:name filename
|
:name filename
|
||||||
:object-id (-> shapes first :id)}
|
:object-id (-> shapes first :id)}
|
||||||
|
(cond-> share-id (assoc :share-id share-id)))
|
||||||
exports (mapv #(merge % defaults) @exports)]
|
exports (mapv #(merge % defaults) @exports)]
|
||||||
(if (= 1 (count exports))
|
(if (= 1 (count exports))
|
||||||
(st/emit! (de/request-simple-export {:export (first exports)}))
|
(st/emit! (de/request-simple-export {:export (first exports)}))
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
:data local})))))
|
:data local})))))
|
||||||
|
|
||||||
(mf/defc right-sidebar
|
(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}}]
|
:or {from :inspect}}]
|
||||||
(let [expanded (mf/use-state false)
|
(let [expanded (mf/use-state false)
|
||||||
section (mf/use-state :info #_:code)
|
section (mf/use-state :info #_:code)
|
||||||
|
@ -89,7 +89,8 @@
|
||||||
:frame frame
|
:frame frame
|
||||||
:shapes shapes
|
:shapes shapes
|
||||||
:from from
|
:from from
|
||||||
:libraries libraries}]]
|
:libraries libraries
|
||||||
|
:share-id share-id}]]
|
||||||
|
|
||||||
[:& tabs-element {:id :code :title (tr "inspect.tabs.code")}
|
[:& tabs-element {:id :code :title (tr "inspect.tabs.code")}
|
||||||
[:& code {:frame frame
|
[:& code {:frame frame
|
||||||
|
|
|
@ -95,16 +95,17 @@
|
||||||
state))
|
state))
|
||||||
|
|
||||||
(mf/defc object-svg
|
(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)
|
(let [components-v2 (feat/use-feature :components-v2)
|
||||||
fetch-state (mf/use-fn
|
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 []
|
(fn []
|
||||||
(let [features (cond-> #{} components-v2 (conj "components/v2"))]
|
(let [features (cond-> #{} components-v2 (conj "components/v2"))]
|
||||||
(->> (rx/zip
|
(->> (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
|
(repo/cmd! :get-page {:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:object-id object-id
|
:object-id object-id
|
||||||
:features features}))
|
:features features}))
|
||||||
(rx/tap (fn [[fonts]]
|
(rx/tap (fn [[fonts]]
|
||||||
|
@ -135,16 +136,17 @@
|
||||||
:render-embed? render-embed?}])))
|
:render-embed? render-embed?}])))
|
||||||
|
|
||||||
(mf/defc objects-svg
|
(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)
|
(let [components-v2 (feat/use-feature :components-v2)
|
||||||
fetch-state (mf/use-fn
|
fetch-state (mf/use-fn
|
||||||
(mf/deps file-id page-id components-v2)
|
(mf/deps file-id page-id share-id components-v2)
|
||||||
(fn []
|
(fn []
|
||||||
(let [features (cond-> #{} components-v2 (conj "components/v2"))]
|
(let [features (cond-> #{} components-v2 (conj "components/v2"))]
|
||||||
(->> (rx/zip
|
(->> (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
|
(repo/cmd! :get-page {:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:features features}))
|
:features features}))
|
||||||
(rx/tap (fn [[fonts]]
|
(rx/tap (fn [[fonts]]
|
||||||
(when (seq fonts)
|
(when (seq fonts)
|
||||||
|
@ -164,6 +166,7 @@
|
||||||
|
|
||||||
(s/def ::page-id ::us/uuid)
|
(s/def ::page-id ::us/uuid)
|
||||||
(s/def ::file-id ::us/uuid)
|
(s/def ::file-id ::us/uuid)
|
||||||
|
(s/def ::share-id ::us/uuid)
|
||||||
(s/def ::object-id
|
(s/def ::object-id
|
||||||
(s/or :single ::us/uuid
|
(s/or :single ::us/uuid
|
||||||
:multiple (s/coll-of ::us/uuid)))
|
:multiple (s/coll-of ::us/uuid)))
|
||||||
|
@ -171,24 +174,25 @@
|
||||||
|
|
||||||
(s/def ::render-objects
|
(s/def ::render-objects
|
||||||
(s/keys :req-un [::file-id ::page-id ::object-id]
|
(s/keys :req-un [::file-id ::page-id ::object-id]
|
||||||
:opt-un [::render-embed]))
|
:opt-un [::render-embed ::share-id]))
|
||||||
|
|
||||||
(defn- render-objects
|
(defn- render-objects
|
||||||
[params]
|
[params]
|
||||||
(let [{:keys [file-id
|
(let [{:keys [file-id
|
||||||
page-id
|
page-id
|
||||||
render-embed]
|
render-embed
|
||||||
|
share-id]
|
||||||
:as params}
|
:as params}
|
||||||
(us/conform ::render-objects params)
|
(us/conform ::render-objects params)
|
||||||
|
|
||||||
[type object-id] (:object-id params)]
|
[type object-id] (:object-id params)]
|
||||||
|
|
||||||
(case type
|
(case type
|
||||||
:single
|
:single
|
||||||
(mf/html
|
(mf/html
|
||||||
[:& object-svg
|
[:& object-svg
|
||||||
{:file-id file-id
|
{:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:object-id object-id
|
:object-id object-id
|
||||||
:render-embed? render-embed}])
|
:render-embed? render-embed}])
|
||||||
|
|
||||||
|
@ -197,6 +201,7 @@
|
||||||
[:& objects-svg
|
[:& objects-svg
|
||||||
{:file-id file-id
|
{:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
:share-id share-id
|
||||||
:object-ids (into #{} object-id)
|
:object-ids (into #{} object-id)
|
||||||
:render-embed? render-embed}]))))
|
:render-embed? render-embed}]))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue