mirror of
https://github.com/penpot/penpot.git
synced 2025-05-20 01:36:10 +02:00
🐛 Fix thumbnails in viewer thumbnails
This commit is contained in:
parent
45b690ed05
commit
1bde183c50
4 changed files with 24 additions and 13 deletions
backend/src/app/rpc/queries
frontend/src/app/main
|
@ -53,8 +53,10 @@
|
||||||
[{:keys [pool] :as cfg} {:keys [profile-id file-id share-id] :as params}]
|
[{:keys [pool] :as cfg} {:keys [profile-id file-id share-id] :as params}]
|
||||||
(p/let [slink (slnk/retrieve-share-link pool file-id share-id)
|
(p/let [slink (slnk/retrieve-share-link pool file-id share-id)
|
||||||
perms (files/get-permissions pool profile-id file-id share-id)
|
perms (files/get-permissions pool profile-id file-id share-id)
|
||||||
|
thumbs (files/retrieve-object-thumbnails cfg file-id)
|
||||||
bundle (p/-> (retrieve-bundle cfg file-id)
|
bundle (p/-> (retrieve-bundle cfg file-id)
|
||||||
(assoc :permissions perms))]
|
(assoc :permissions perms)
|
||||||
|
(assoc-in [:file :thumbnails] thumbs))]
|
||||||
|
|
||||||
;; When we have neither profile nor share, we just return a not
|
;; When we have neither profile nor share, we just return a not
|
||||||
;; found response to the user.
|
;; found response to the user.
|
||||||
|
|
|
@ -360,15 +360,18 @@
|
||||||
|
|
||||||
;; ---- Viewer refs
|
;; ---- Viewer refs
|
||||||
|
|
||||||
(def viewer-file
|
|
||||||
(l/derived :viewer-file st/state))
|
|
||||||
|
|
||||||
(def viewer-project
|
|
||||||
(l/derived :viewer-file st/state))
|
|
||||||
|
|
||||||
(def viewer-data
|
(def viewer-data
|
||||||
(l/derived :viewer st/state))
|
(l/derived :viewer st/state))
|
||||||
|
|
||||||
|
(def viewer-file
|
||||||
|
(l/derived :file viewer-data))
|
||||||
|
|
||||||
|
(def viewer-thumbnails
|
||||||
|
(l/derived :thumbnails viewer-file))
|
||||||
|
|
||||||
|
(def viewer-project
|
||||||
|
(l/derived :project viewer-data))
|
||||||
|
|
||||||
(def viewer-state
|
(def viewer-state
|
||||||
(l/derived :viewer st/state))
|
(l/derived :viewer st/state))
|
||||||
|
|
||||||
|
|
|
@ -383,7 +383,8 @@
|
||||||
[:& thumbnails-panel {:frames frames
|
[:& thumbnails-panel {:frames frames
|
||||||
:show? (:show-thumbnails local false)
|
:show? (:show-thumbnails local false)
|
||||||
:page page
|
:page page
|
||||||
:index index}]
|
:index index
|
||||||
|
:thumbnail-data (:thumbnails file)}]
|
||||||
[:section.viewer-section {:id "viewer-section"
|
[:section.viewer-section {:id "viewer-section"
|
||||||
:ref viewer-section-ref
|
:ref viewer-section-ref
|
||||||
:class (if fullscreen? "fullscreen" "")}
|
:class (if fullscreen? "fullscreen" "")}
|
||||||
|
|
|
@ -77,23 +77,26 @@
|
||||||
(mf/defc thumbnail-item
|
(mf/defc thumbnail-item
|
||||||
{::mf/wrap [mf/memo
|
{::mf/wrap [mf/memo
|
||||||
#(mf/deferred % ts/idle-then-raf)]}
|
#(mf/deferred % ts/idle-then-raf)]}
|
||||||
[{:keys [selected? frame on-click index objects]}]
|
[{:keys [selected? frame on-click index objects page-id thumbnail-data]}]
|
||||||
|
|
||||||
(let [children-ids (cph/get-children-ids objects (:id frame))
|
(let [children-ids (cph/get-children-ids objects (:id frame))
|
||||||
children-bounds (gsh/selection-rect (concat [frame] (->> children-ids (keep (d/getf objects)))))]
|
children-bounds (gsh/selection-rect (concat [frame] (->> children-ids (keep (d/getf objects)))))]
|
||||||
[:div.thumbnail-item {:on-click #(on-click % index)}
|
[:div.thumbnail-item {:on-click #(on-click % index)}
|
||||||
[:div.thumbnail-preview
|
[:div.thumbnail-preview
|
||||||
{:class (dom/classnames :selected selected?)}
|
{:class (dom/classnames :selected selected?)}
|
||||||
[:& render/frame-svg {:frame (assoc frame :children-bounds children-bounds) :objects objects :show-thumbnails? true}]]
|
[:& render/frame-svg {:frame (-> frame
|
||||||
|
(assoc :thumbnail (get thumbnail-data (dm/str page-id (:id frame)))))
|
||||||
|
:objects objects
|
||||||
|
:show-thumbnails? true}]]
|
||||||
[:div.thumbnail-info
|
[:div.thumbnail-info
|
||||||
[:span.name {:title (:name frame)} (:name frame)]]]))
|
[:span.name {:title (:name frame)} (:name frame)]]]))
|
||||||
|
|
||||||
(mf/defc thumbnails-panel
|
(mf/defc thumbnails-panel
|
||||||
[{:keys [frames page index show?] :as props}]
|
[{:keys [frames page index show? thumbnail-data] :as props}]
|
||||||
(let [expanded? (mf/use-state false)
|
(let [expanded? (mf/use-state false)
|
||||||
container (mf/use-ref)
|
container (mf/use-ref)
|
||||||
|
|
||||||
objects (:objects page)
|
objects (:objects page)
|
||||||
|
|
||||||
on-close #(st/emit! dv/toggle-thumbnails-panel)
|
on-close #(st/emit! dv/toggle-thumbnails-panel)
|
||||||
selected (mf/use-var false)
|
selected (mf/use-var false)
|
||||||
|
|
||||||
|
@ -121,6 +124,8 @@
|
||||||
[:& thumbnail-item {:index i
|
[:& thumbnail-item {:index i
|
||||||
:key (dm/str (:id frame) "-" i)
|
:key (dm/str (:id frame) "-" i)
|
||||||
:frame frame
|
:frame frame
|
||||||
|
:page-id (:id page)
|
||||||
:objects objects
|
:objects objects
|
||||||
:on-click on-item-click
|
:on-click on-item-click
|
||||||
:selected? (= i index)}])]]))
|
:selected? (= i index)
|
||||||
|
:thumbnail-data thumbnail-data}])]]))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue