0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-16 09:41:41 -05:00

🐛 Fix thumbnails in viewer thumbnails

This commit is contained in:
alonso.torres 2022-06-17 14:24:37 +02:00
parent 45b690ed05
commit 1bde183c50
4 changed files with 24 additions and 13 deletions

View file

@ -53,8 +53,10 @@
[{: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)
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)
(assoc :permissions perms))]
(assoc :permissions perms)
(assoc-in [:file :thumbnails] thumbs))]
;; When we have neither profile nor share, we just return a not
;; found response to the user.

View file

@ -360,15 +360,18 @@
;; ---- Viewer refs
(def viewer-file
(l/derived :viewer-file st/state))
(def viewer-project
(l/derived :viewer-file st/state))
(def viewer-data
(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
(l/derived :viewer st/state))

View file

@ -383,7 +383,8 @@
[:& thumbnails-panel {:frames frames
:show? (:show-thumbnails local false)
:page page
:index index}]
:index index
:thumbnail-data (:thumbnails file)}]
[:section.viewer-section {:id "viewer-section"
:ref viewer-section-ref
:class (if fullscreen? "fullscreen" "")}

View file

@ -77,23 +77,26 @@
(mf/defc thumbnail-item
{::mf/wrap [mf/memo
#(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))
children-bounds (gsh/selection-rect (concat [frame] (->> children-ids (keep (d/getf objects)))))]
[:div.thumbnail-item {:on-click #(on-click % index)}
[:div.thumbnail-preview
{: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
[:span.name {:title (:name frame)} (:name frame)]]]))
(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)
container (mf/use-ref)
objects (:objects page)
on-close #(st/emit! dv/toggle-thumbnails-panel)
selected (mf/use-var false)
@ -121,6 +124,8 @@
[:& thumbnail-item {:index i
:key (dm/str (:id frame) "-" i)
:frame frame
:page-id (:id page)
:objects objects
:on-click on-item-click
:selected? (= i index)}])]]))
:selected? (= i index)
:thumbnail-data thumbnail-data}])]]))