mirror of
https://github.com/penpot/penpot.git
synced 2025-05-23 18:06:12 +02:00
Merge remote-tracking branch 'origin/staging' into develop
This commit is contained in:
commit
45f9d5bb81
10 changed files with 62 additions and 27 deletions
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
### :sparkles: New features
|
### :sparkles: New features
|
||||||
|
|
||||||
|
- Open feedback in a new window [Taiga #2901](https://tree.taiga.io/project/penpot/us/2901)
|
||||||
- Improve usage of file menu [Taiga #2853](https://tree.taiga.io/project/penpot/us/2853)
|
- Improve usage of file menu [Taiga #2853](https://tree.taiga.io/project/penpot/us/2853)
|
||||||
- Rotation to snap to 15º intervals with shift [Taiga #2437](https://tree.taiga.io/project/penpot/issue/2437)
|
- Rotation to snap to 15º intervals with shift [Taiga #2437](https://tree.taiga.io/project/penpot/issue/2437)
|
||||||
- Support border radius and stroke properties for images [Taiga #497](https://tree.taiga.io/project/penpot/us/497)
|
- Support border radius and stroke properties for images [Taiga #497](https://tree.taiga.io/project/penpot/us/497)
|
||||||
|
|
|
@ -38,14 +38,17 @@
|
||||||
|
|
||||||
(defmethod ig/init-key ::handler
|
(defmethod ig/init-key ::handler
|
||||||
[_ {:keys [pool sprops version] :as cfg}]
|
[_ {:keys [pool sprops version] :as cfg}]
|
||||||
(fn [_]
|
(fn [{:keys [send?] :or {send? true}}]
|
||||||
;; Sleep randomly between 0 to 10s
|
;; Sleep randomly between 0 to 10s
|
||||||
(thread-sleep (rand-int 10000))
|
(when send?
|
||||||
|
(thread-sleep (rand-int 10000)))
|
||||||
|
|
||||||
(let [instance-id (:instance-id sprops)]
|
(let [instance-id (:instance-id sprops)
|
||||||
(-> (get-stats pool version)
|
stats (-> (get-stats pool version)
|
||||||
(assoc :instance-id instance-id)
|
(assoc :instance-id instance-id))]
|
||||||
(send! cfg)))))
|
(when send?
|
||||||
|
(send! stats cfg))
|
||||||
|
stats)))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; IMPL
|
;; IMPL
|
||||||
|
@ -137,12 +140,28 @@
|
||||||
(->> [sql:team-averages]
|
(->> [sql:team-averages]
|
||||||
(db/exec-one! conn)))
|
(db/exec-one! conn)))
|
||||||
|
|
||||||
|
(defn- retrieve-enabled-auth-providers
|
||||||
|
[conn]
|
||||||
|
(let [sql (str "select auth_backend as backend, count(*) as total "
|
||||||
|
" from profile group by 1")
|
||||||
|
rows (db/exec! conn [sql])]
|
||||||
|
(->> rows
|
||||||
|
(map (fn [{:keys [backend total]}]
|
||||||
|
(let [backend (or backend "penpot")]
|
||||||
|
[(keyword (str "auth-backend-" backend))
|
||||||
|
total])))
|
||||||
|
(into {}))))
|
||||||
|
|
||||||
(defn- retrieve-jvm-stats
|
(defn- retrieve-jvm-stats
|
||||||
[]
|
[]
|
||||||
(let [^Runtime runtime (Runtime/getRuntime)]
|
(let [^Runtime runtime (Runtime/getRuntime)]
|
||||||
{:jvm-heap-current (.totalMemory runtime)
|
{:jvm-heap-current (.totalMemory runtime)
|
||||||
:jvm-heap-max (.maxMemory runtime)
|
:jvm-heap-max (.maxMemory runtime)
|
||||||
:jvm-cpus (.availableProcessors runtime)}))
|
:jvm-cpus (.availableProcessors runtime)
|
||||||
|
:os-arch (System/getProperty "os.arch")
|
||||||
|
:os-name (System/getProperty "os.name")
|
||||||
|
:os-version (System/getProperty "os.version")
|
||||||
|
:user-tz (System/getProperty "user.timezone")}))
|
||||||
|
|
||||||
(defn get-stats
|
(defn get-stats
|
||||||
[conn version]
|
[conn version]
|
||||||
|
@ -161,6 +180,7 @@
|
||||||
:total-touched-files (retrieve-num-touched-files conn)}
|
:total-touched-files (retrieve-num-touched-files conn)}
|
||||||
(d/merge
|
(d/merge
|
||||||
(retrieve-team-averages conn)
|
(retrieve-team-averages conn)
|
||||||
(retrieve-jvm-stats))
|
(retrieve-jvm-stats)
|
||||||
|
(retrieve-enabled-auth-providers conn))
|
||||||
(d/without-nils))))
|
(d/without-nils))))
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ $height-palette-max: 80px;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
background-color: $color-canvas;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"header header header header"
|
"header header header header"
|
||||||
|
|
|
@ -727,9 +727,13 @@
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ state _]
|
(watch [_ state _]
|
||||||
(let [selected (wsh/lookup-selected state)
|
(let [selected (wsh/lookup-selected state)
|
||||||
hover-guides (get-in state [:workspace-guides :hover])]
|
hover-guides (get-in state [:workspace-guides :hover])
|
||||||
|
options-mode (get-in state [:workspace-local :options-mode])]
|
||||||
(cond
|
(cond
|
||||||
(d/not-empty? selected)
|
(and (= options-mode :prototype) (d/not-empty? selected))
|
||||||
|
(rx/of (dwi/remove-interactions selected))
|
||||||
|
|
||||||
|
(and (= options-mode :design) (d/not-empty? selected))
|
||||||
(rx/of (dwc/delete-shapes selected)
|
(rx/of (dwc/delete-shapes selected)
|
||||||
(dws/deselect-all))
|
(dws/deselect-all))
|
||||||
|
|
||||||
|
|
|
@ -171,6 +171,15 @@
|
||||||
(update shape :interactions
|
(update shape :interactions
|
||||||
csi/remove-interaction index)))))))
|
csi/remove-interaction index)))))))
|
||||||
|
|
||||||
|
(defn remove-interactions
|
||||||
|
[ids]
|
||||||
|
(ptk/reify ::remove-interactions
|
||||||
|
ptk/WatchEvent
|
||||||
|
(watch [_ _ _]
|
||||||
|
(rx/of (dch/update-shapes ids
|
||||||
|
(fn [shape]
|
||||||
|
(assoc shape :interactions [])))))))
|
||||||
|
|
||||||
(defn update-interaction
|
(defn update-interaction
|
||||||
[shape index update-fn]
|
[shape index update-fn]
|
||||||
(ptk/reify ::update-interaction
|
(ptk/reify ::update-interaction
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
(mf/deps vport)
|
(mf/deps vport)
|
||||||
(fn [resize-type size]
|
(fn [resize-type size]
|
||||||
(when vport
|
(when (and vport (not= size vport))
|
||||||
(st/emit! (dw/update-viewport-size resize-type size)))))
|
(st/emit! (dw/update-viewport-size resize-type size)))))
|
||||||
|
|
||||||
node-ref (use-resize-observer on-resize)]
|
node-ref (use-resize-observer on-resize)]
|
||||||
|
|
|
@ -252,8 +252,7 @@
|
||||||
[:span (tr "workspace.header.menu.option.preferences")] [:span i/arrow-slide]]
|
[:span (tr "workspace.header.menu.option.preferences")] [:span i/arrow-slide]]
|
||||||
(when (contains? @cf/flags :user-feedback)
|
(when (contains? @cf/flags :user-feedback)
|
||||||
[:*
|
[:*
|
||||||
[:li.feedback {:on-click (st/emitf (rt/nav :settings-feedback))
|
[:li.feedback {:on-click (st/emitf (rt/nav-new-window* {:rname :settings-feedback}))}
|
||||||
:on-pointer-enter (st/emitf (rt/nav :settings-feedback))}
|
|
||||||
[:span (tr "labels.give-feedback")]]])]]
|
[:span (tr "labels.give-feedback")]]])]]
|
||||||
|
|
||||||
[:& dropdown {:show (= @show-sub-menu? :file)
|
[:& dropdown {:show (= @show-sub-menu? :file)
|
||||||
|
|
|
@ -209,6 +209,7 @@
|
||||||
{:keys [on-pointer-down on-lost-pointer-capture on-mouse-move parent-ref size]}
|
{:keys [on-pointer-down on-lost-pointer-capture on-mouse-move parent-ref size]}
|
||||||
(use-resize-hook :sitemap 200 38 400 :y false nil)
|
(use-resize-hook :sitemap 200 38 400 :y false nil)
|
||||||
|
|
||||||
|
size (if @show-pages? size 38)
|
||||||
toggle-pages
|
toggle-pages
|
||||||
(mf/use-callback #(reset! show-pages? not))]
|
(mf/use-callback #(reset! show-pages? not))]
|
||||||
|
|
||||||
|
@ -217,12 +218,13 @@
|
||||||
[:div.tool-window-bar
|
[:div.tool-window-bar
|
||||||
[:span (tr "workspace.sidebar.sitemap")]
|
[:span (tr "workspace.sidebar.sitemap")]
|
||||||
[:div.add-page {:on-click create} i/close]
|
[:div.add-page {:on-click create} i/close]
|
||||||
[:div.collapse-pages {:on-click toggle-pages} i/arrow-slide]]
|
[:div.collapse-pages {:on-click toggle-pages
|
||||||
|
:style {:transform (when (not @show-pages?) "rotate(-90deg)")}} i/arrow-slide]]
|
||||||
|
|
||||||
|
[:div.tool-window-content
|
||||||
|
[:& pages-list {:file file :key (:id file)}]]
|
||||||
|
|
||||||
(when @show-pages?
|
(when @show-pages?
|
||||||
[:div.tool-window-content
|
|
||||||
[:& pages-list {:file file :key (:id file)}]])
|
|
||||||
|
|
||||||
[:div.resize-area {:on-pointer-down on-pointer-down
|
[:div.resize-area {:on-pointer-down on-pointer-down
|
||||||
:on-lost-pointer-capture on-lost-pointer-capture
|
:on-lost-pointer-capture on-lost-pointer-capture
|
||||||
:on-mouse-move on-mouse-move}]]))
|
:on-mouse-move on-mouse-move}])]))
|
||||||
|
|
|
@ -196,13 +196,13 @@
|
||||||
|
|
||||||
(if (= axis :x)
|
(if (= axis :x)
|
||||||
{:rect-x (- pos (/ guide-pill-width 2))
|
{:rect-x (- pos (/ guide-pill-width 2))
|
||||||
:rect-y (+ (:y vbox) rules-pos (- (/ guide-pill-width 2)) (/ 2 zoom))
|
:rect-y (+ (:y vbox) rules-pos (- (/ guide-pill-width 2)) (/ 3 zoom))
|
||||||
:rect-width guide-pill-width
|
:rect-width guide-pill-width
|
||||||
:rect-height guide-pill-height
|
:rect-height guide-pill-height
|
||||||
:text-x pos
|
:text-x pos
|
||||||
:text-y (+ (:y vbox) rules-pos (- (/ 3 zoom)))}
|
:text-y (+ (:y vbox) rules-pos (- (/ 3 zoom)))}
|
||||||
|
|
||||||
{:rect-x (+ (:x vbox) rules-pos (- (/ guide-pill-height 2)) (- (/ 5 zoom)))
|
{:rect-x (+ (:x vbox) rules-pos (- (/ guide-pill-height 2)) (- (/ 4 zoom)))
|
||||||
:rect-y (- pos (/ guide-pill-width 2))
|
:rect-y (- pos (/ guide-pill-width 2))
|
||||||
:rect-width guide-pill-height
|
:rect-width guide-pill-height
|
||||||
:rect-height guide-pill-width
|
:rect-height guide-pill-width
|
||||||
|
@ -363,8 +363,8 @@
|
||||||
:text-anchor "middle"
|
:text-anchor "middle"
|
||||||
:dominant-baseline "middle"
|
:dominant-baseline "middle"
|
||||||
:transform (when (= axis :y) (str "rotate(-90 " text-x "," text-y ")"))
|
:transform (when (= axis :y) (str "rotate(-90 " text-x "," text-y ")"))
|
||||||
:style {:font-size (/ 13 zoom)
|
:style {:font-size (/ rules/font-size zoom)
|
||||||
:font-family "sourcesanspro"
|
:font-family rules/font-family
|
||||||
:fill colors/black}}
|
:fill colors/black}}
|
||||||
(str (mth/round pos))]]))])))
|
(str (mth/round pos))]]))])))
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,8 @@
|
||||||
(def over-number-size 50)
|
(def over-number-size 50)
|
||||||
(def over-number-opacity 0.7)
|
(def over-number-opacity 0.7)
|
||||||
|
|
||||||
(def font-size 13)
|
(def font-size 12)
|
||||||
(def font-family "sourcesanspro")
|
(def font-family "worksans")
|
||||||
|
|
||||||
;; ----------------
|
;; ----------------
|
||||||
;; RULES
|
;; RULES
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue