Merge pull request #4030 from penpot/azazeln28-bugfixes-4

Azazeln28 bugfixes 4
This commit is contained in:
Andrey Antukh 2024-01-25 23:25:31 +01:00 committed by GitHub
commit 6bc6f7ae7f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 72 additions and 33 deletions

View file

@ -276,7 +276,8 @@
(cond-> (some? drop-index) (cond-> (some? drop-index)
(with-meta {:index drop-index}))))))))) (with-meta {:index drop-index})))))))))
(defn handle-new-shape-result [shape-id] (defn handle-new-shape-result
[shape-id]
(ptk/reify ::handle-new-shape-result (ptk/reify ::handle-new-shape-result
ptk/UpdateEvent ptk/UpdateEvent
(update [_ state] (update [_ state]
@ -293,7 +294,7 @@
ptk/WatchEvent ptk/WatchEvent
(watch [_ state _] (watch [_ state _]
(let [content (get-in state [:workspace-drawing :object :content] [])] (let [content (get-in state [:workspace-drawing :object :content] [])]
(if (seq content) (if (and (seq content) (> (count content) 1))
(rx/of (setup-frame) (rx/of (setup-frame)
(dwdc/handle-finish-drawing) (dwdc/handle-finish-drawing)
(dwe/start-edition-mode shape-id) (dwe/start-edition-mode shape-id)

View file

@ -319,9 +319,9 @@
(= (ptk/type %) ::start-path-edit)))) (= (ptk/type %) ::start-path-edit))))
interrupt (->> stream (rx/filter #(= % :interrupt)) (rx/take 1))] interrupt (->> stream (rx/filter #(= % :interrupt)) (rx/take 1))]
(rx/concat (rx/concat
(rx/of (dwc/hide-toolbar)) (rx/of (dwc/hide-toolbar)
(rx/of (undo/start-path-undo)) (undo/start-path-undo)
(rx/of (drawing/change-edit-mode mode)) (drawing/change-edit-mode mode))
(->> interrupt (->> interrupt
(rx/map #(stop-path-edit id)) (rx/map #(stop-path-edit id))
(rx/take-until stopper))))))) (rx/take-until stopper)))))))

View file

@ -8,6 +8,7 @@
(:require (:require
[app.main.data.shortcuts :as ds] [app.main.data.shortcuts :as ds]
[app.main.data.workspace :as dw] [app.main.data.workspace :as dw]
[app.main.data.workspace.common :as dwc]
[app.main.data.workspace.path :as drp] [app.main.data.workspace.path :as drp]
[app.main.store :as st] [app.main.store :as st]
[beicon.v2.core :as rx] [beicon.v2.core :as rx]
@ -26,10 +27,13 @@
;; Not interrupt when we're editing a path ;; Not interrupt when we're editing a path
(let [edition-id (or (get-in state [:workspace-drawing :object :id]) (let [edition-id (or (get-in state [:workspace-drawing :object :id])
(get-in state [:workspace-local :edition])) (get-in state [:workspace-local :edition]))
content (get-in state [:workspace-drawing :object :content])
path-edit-mode (get-in state [:workspace-local :edit-path edition-id :edit-mode])] path-edit-mode (get-in state [:workspace-local :edit-path edition-id :edit-mode])]
(if-not (= :draw path-edit-mode) (if-not (= :draw path-edit-mode)
(rx/of :interrupt) (rx/of :interrupt)
(rx/empty)))))) (if (<= (count content) 1)
(rx/of (dwc/show-toolbar))
(rx/empty)))))))
(def shortcuts (def shortcuts
{:move-nodes {:tooltip "M" {:move-nodes {:tooltip "M"

View file

@ -376,7 +376,6 @@
wrapper (dom/get-element "inspect-svg-wrapper") wrapper (dom/get-element "inspect-svg-wrapper")
section (dom/get-element "inspect-svg-container") section (dom/get-element "inspect-svg-container")
target (.-target event)] target (.-target event)]
;; TODO: Reemplazar el dom/class? por un data-attribute
(when (or (dom/child? target wrapper) (dom/id? target "inspect-svg-container")) (when (or (dom/child? target wrapper) (dom/id? target "inspect-svg-container"))
(let [norm-event ^js (nw/normalize-wheel event) (let [norm-event ^js (nw/normalize-wheel event)
mod? (kbd/mod? event) mod? (kbd/mod? event)
@ -458,7 +457,9 @@
fullscreen-dom? (dom/fullscreen?)] fullscreen-dom? (dom/fullscreen?)]
(when (not= fullscreen? fullscreen-dom?) (when (not= fullscreen? fullscreen-dom?)
(if fullscreen? (if fullscreen?
(wapi/request-fullscreen wrapper) (let [layout (dom/get-element "viewer-layout")]
(dom/set-data! layout "force-visible" false)
(wapi/request-fullscreen wrapper))
(wapi/exit-fullscreen)))))) (wapi/exit-fullscreen))))))
(mf/use-effect (mf/use-effect
@ -543,16 +544,9 @@
:data-fullscreen fullscreen? :data-fullscreen fullscreen?
:data-force-visible (:show-thumbnails local)} :data-force-visible (:show-thumbnails local)}
[:div {:class (stl/css :viewer-content)} [:div {:class (stl/css :viewer-content)}
[:& header/header {:project project
:index index
:file file
:page page
:frame frame
:permissions permissions
:zoom zoom
:section section
:interactions-mode interactions-mode}]
[:button {:on-click on-thumbnails-close [:button {:on-click on-thumbnails-close
:class (stl/css-case :thumbnails-close true :class (stl/css-case :thumbnails-close true
@ -609,7 +603,17 @@
:overlays overlays :overlays overlays
:zoom zoom :zoom zoom
:section section :section section
:index index}]]))]]])) :index index}]]))]]
[:& header/header {:project project
:index index
:file file
:page page
:frame frame
:permissions permissions
:zoom zoom
:section section
:interactions-mode interactions-mode}]]))
;; --- Component: Viewer ;; --- Component: Viewer

View file

@ -86,6 +86,7 @@
top: calc(50vh - $s-32); top: calc(50vh - $s-32);
z-index: $z-index-2; z-index: $z-index-2;
background-color: var(--viewer-controls-background-color); background-color: var(--viewer-controls-background-color);
transition: transform 400ms ease 300ms;
svg { svg {
@extend .button-icon; @extend .button-icon;
stroke: var(--icon-foreground); stroke: var(--icon-foreground);
@ -199,3 +200,19 @@
[data-force-visible="true"] .viewer-bottom { [data-force-visible="true"] .viewer-bottom {
transform: translateY(0); transform: translateY(0);
} }
[data-fullscreen="true"] .viewer-go-next {
transform: translateX($s-40);
}
[data-fullscreen="true"] .viewer-go-prev {
transform: translateX(-$s-40);
}
[data-force-visible="true"] .viewer-go-next {
transform: translateX(0);
}
[data-force-visible="true"] .viewer-go-prev {
transform: translateX(0);
}

View file

@ -303,10 +303,20 @@
} }
/** FULLSCREEN */ /** FULLSCREEN */
[data-fullscreen="true"] .viewer-header::after {
content: " ";
position: absolute;
width: 100%;
height: $s-48;
left: 0;
top: $s-48;
}
[data-fullscreen="true"] .viewer-header { [data-fullscreen="true"] .viewer-header {
transform: translateY(-$s-48); transform: translateY(-$s-48);
} }
[data-force-visible="true"] .viewer-header { [data-force-visible="true"] .viewer-header,
[data-fullscreen="true"] .viewer-header:hover {
transform: translateY(0); transform: translateY(0);
} }

View file

@ -29,7 +29,6 @@
[app.main.ui.workspace.sidebar :refer [left-sidebar right-sidebar]] [app.main.ui.workspace.sidebar :refer [left-sidebar right-sidebar]]
[app.main.ui.workspace.sidebar.collapsable-button :refer [collapsed-button]] [app.main.ui.workspace.sidebar.collapsable-button :refer [collapsed-button]]
[app.main.ui.workspace.sidebar.history :refer [history-toolbox]] [app.main.ui.workspace.sidebar.history :refer [history-toolbox]]
[app.main.ui.workspace.top-toolbar :refer [top-toolbar]]
[app.main.ui.workspace.viewport :refer [viewport]] [app.main.ui.workspace.viewport :refer [viewport]]
[app.util.debug :as dbg] [app.util.debug :as dbg]
[app.util.dom :as dom] [app.util.dom :as dom]
@ -110,7 +109,6 @@
(when-not hide-ui? (when-not hide-ui?
[:* [:*
[:& top-toolbar {:layout layout}]
(if (:collapse-left-sidebar layout) (if (:collapse-left-sidebar layout)
[:& collapsed-button] [:& collapsed-button]
[:& left-sidebar {:layout layout [:& left-sidebar {:layout layout

View file

@ -274,6 +274,7 @@
(hooks/setup-active-frames base-objects hover-ids selected active-frames zoom transform vbox) (hooks/setup-active-frames base-objects hover-ids selected active-frames zoom transform vbox)
[:div.viewport {:style #js {"--zoom" zoom}} [:div.viewport {:style #js {"--zoom" zoom}}
[:& top-bar/top-bar {:layout layout}]
[:div.viewport-overlays [:div.viewport-overlays
;; The behaviour inside a foreign object is a bit different that in plain HTML so we wrap ;; The behaviour inside a foreign object is a bit different that in plain HTML so we wrap
;; inside a foreign object "dummy" so this awkward behaviour is take into account ;; inside a foreign object "dummy" so this awkward behaviour is take into account
@ -302,9 +303,7 @@
:vbox vbox :vbox vbox
:options options :options options
:layout layout :layout layout
:viewport-ref viewport-ref}]) :viewport-ref viewport-ref}])]
[:& top-bar/top-bar]]
[:svg.render-shapes [:svg.render-shapes
{:id "render" {:id "render"

View file

@ -13,6 +13,7 @@
[app.main.refs :as refs] [app.main.refs :as refs]
[app.main.store :as st] [app.main.store :as st]
[app.main.ui.context :as ctx] [app.main.ui.context :as ctx]
[app.main.ui.workspace.top-toolbar :refer [top-toolbar]]
[app.main.ui.workspace.viewport.grid-layout-editor :refer [grid-edition-actions]] [app.main.ui.workspace.viewport.grid-layout-editor :refer [grid-edition-actions]]
[app.main.ui.workspace.viewport.path-actions :refer [path-actions]] [app.main.ui.workspace.viewport.path-actions :refer [path-actions]]
[app.util.i18n :as i18n :refer [tr]] [app.util.i18n :as i18n :refer [tr]]
@ -36,7 +37,7 @@
(mf/defc top-bar (mf/defc top-bar
{::mf/wrap [mf/memo]} {::mf/wrap [mf/memo]}
[] [{:keys [layout]}]
(let [edition (mf/deref refs/selected-edition) (let [edition (mf/deref refs/selected-edition)
selected (mf/deref refs/selected-objects) selected (mf/deref refs/selected-objects)
drawing (mf/deref refs/workspace-drawing) drawing (mf/deref refs/workspace-drawing)
@ -50,6 +51,7 @@
(not= :curve (:tool drawing))) (not= :curve (:tool drawing)))
workspace-read-only? (mf/use-ctx ctx/workspace-read-only?) workspace-read-only? (mf/use-ctx ctx/workspace-read-only?)
hide-ui? (:hide-ui layout)
path-edition? (or (and single? editing? path-edition? (or (and single? editing?
(and (not (cfh/text-shape? shape)) (and (not (cfh/text-shape? shape))
@ -58,13 +60,17 @@
grid-edition? (and single? editing? (ctl/grid-layout? shape))] grid-edition? (and single? editing? (ctl/grid-layout? shape))]
(cond [:*
workspace-read-only? (when-not hide-ui?
[:& view-only-actions] [:& top-toolbar {:layout layout}])
path-edition? (cond
[:div.viewport-actions workspace-read-only?
[:& path-actions {:shape shape}]] [:& view-only-actions]
grid-edition? path-edition?
[:& grid-edition-actions {:shape shape}]))) [:div.viewport-actions
[:& path-actions {:shape shape}]]
grid-edition?
[:& grid-edition-actions {:shape shape}])]))