mirror of
https://github.com/penpot/penpot.git
synced 2026-05-14 04:24:01 +00:00
* ✨ Improve libraries loading on workspace * ✨ Add improvements to CSS --------- Co-authored-by: Eva Marco <evamarcod@gmail.com>
86 lines
2.5 KiB
Clojure
86 lines
2.5 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns app.main.data.workspace.common
|
|
(:require
|
|
[app.common.logging :as log]
|
|
[app.main.data.profile :as du]
|
|
[app.main.data.workspace.layout :as dwl]
|
|
[beicon.v2.core :as rx]
|
|
[potok.v2.core :as ptk]))
|
|
|
|
;; Change this to :info :debug or :trace to debug this module
|
|
(log/set-level! :warn)
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; HELPERS
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(defn initialized?
|
|
"Check if the state is properly initialized in a workspace. This means
|
|
it has the `:current-page-id` and `:current-file-id` properly set."
|
|
[state]
|
|
(and (uuid? (:current-file-id state))
|
|
(uuid? (:current-page-id state))))
|
|
|
|
(defn interrupt?
|
|
[e]
|
|
(= e :interrupt))
|
|
|
|
(defn set-workspace-visited
|
|
[]
|
|
(ptk/reify ::set-workspace-visited
|
|
ptk/WatchEvent
|
|
(watch [_ state _]
|
|
(let [profile (:profile state)
|
|
props (get profile :props)]
|
|
(when (not (:workspace-visited props))
|
|
(rx/of (du/update-profile-props {:workspace-visited true})))))))
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Toolbar
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(defn hide-toolbar
|
|
[]
|
|
(ptk/reify ::hide-toolbar
|
|
ptk/UpdateEvent
|
|
(update [_ state]
|
|
(assoc-in state [:workspace-local :hide-toolbar] true))))
|
|
|
|
(defn show-toolbar
|
|
[]
|
|
(ptk/reify ::show-toolbar
|
|
ptk/UpdateEvent
|
|
(update [_ state]
|
|
(assoc-in state [:workspace-local :hide-toolbar] false))))
|
|
|
|
(defn toggle-toolbar-visibility
|
|
[]
|
|
(ptk/reify ::toggle-toolbar-visibility
|
|
ptk/UpdateEvent
|
|
(update [_ state]
|
|
(update-in state [:workspace-local :hide-toolbar] not))))
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Read only
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(defn set-workspace-read-only
|
|
[read-only?]
|
|
(ptk/reify ::set-workspace-read-only
|
|
ptk/UpdateEvent
|
|
(update [_ state]
|
|
(update state :workspace-global assoc :read-only? read-only?))
|
|
|
|
ptk/WatchEvent
|
|
(watch [_ _ _]
|
|
(if read-only?
|
|
(rx/of :interrupt
|
|
(dwl/remove-layout-flag :colorpalette)
|
|
(dwl/remove-layout-flag :textpalette))
|
|
(rx/empty)))))
|