mirror of
https://github.com/penpot/penpot.git
synced 2025-02-06 06:18:32 -05:00
50 lines
1.6 KiB
Clojure
50 lines
1.6 KiB
Clojure
(ns uxbox.ui.workspace.base
|
|
(:require [beicon.core :as rx]
|
|
[cats.labs.lens :as l]
|
|
[uxbox.rstore :as rs]
|
|
[uxbox.state :as s]
|
|
[uxbox.data.projects :as dp]
|
|
[uxbox.util.lens :as ul]))
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Lenses
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(def ^:static project-state
|
|
(as-> (ul/dep-in [:projects-by-id] [:workspace :project]) $
|
|
(l/focus-atom $ s/state)))
|
|
|
|
(def ^:static page-state
|
|
(as-> (ul/dep-in [:pages-by-id] [:workspace :page]) $
|
|
(l/focus-atom $ s/state)))
|
|
|
|
(def ^:static pages-state
|
|
(as-> (ul/getter #(let [pid (get-in % [:workspace :project])]
|
|
(dp/project-pages % pid))) $
|
|
(l/focus-atom $ s/state)))
|
|
|
|
(def ^:static workspace-state
|
|
(as-> (l/in [:workspace]) $
|
|
(l/focus-atom $ s/state)))
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Streams
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(defonce scroll-bus (rx/bus))
|
|
(defonce top-scroll-s (rx/dedupe (rx/map :top scroll-bus)))
|
|
(defonce left-scroll-s (rx/dedupe (rx/map :left scroll-bus)))
|
|
|
|
(defonce top-scroll (rx/to-atom top-scroll-s))
|
|
(defonce left-scroll (rx/to-atom left-scroll-s))
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Constants
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(def viewport-height 3000)
|
|
(def viewport-width 3000)
|
|
|
|
(def document-start-x 50)
|
|
(def document-start-y 50)
|
|
|