🐛 Fix issues with non updated selected

This commit is contained in:
alonso.torres 2021-05-05 14:22:59 +02:00 committed by Andrey Antukh
parent be0d1c19fa
commit a91a57581f
16 changed files with 91 additions and 99 deletions

View file

@ -7,13 +7,14 @@
(ns app.main.refs
"A collection of derived refs."
(:require
[beicon.core :as rx]
[okulary.core :as l]
[app.common.data :as d]
[app.common.pages :as cp]
[app.common.uuid :as uuid]
[app.main.constants :as c]
[app.main.store :as st]))
[app.main.data.workspace.state-helpers :as wsh]
[app.main.store :as st]
[beicon.core :as rx]
[okulary.core :as l]))
;; ---- Global refs
@ -71,7 +72,7 @@
(l/derived :workspace-drawing st/state))
(def selected-shapes
(l/derived :selected workspace-local))
(l/derived wsh/lookup-selected st/state))
(defn make-selected-ref
[id]
@ -85,7 +86,6 @@
:edition
:edit-path
:tooltip
:selected
:panning
:picking-color?
:transform
@ -211,30 +211,28 @@
workspace-page-objects =))
(def selected-data
(l/derived #(let [selected (get-in % [:workspace-local :selected])
page-id (:current-page-id %)
objects (get-in % [:workspace-data :pages-index page-id :objects])]
(l/derived #(let [selected (wsh/lookup-selected %)
objects (wsh/lookup-page-objects %)]
(hash-map :selected selected
:page-id page-id
:objects objects))
st/state =))
(defn is-child-selected?
[id]
(letfn [(selector [{:keys [selected page-id objects]}]
(letfn [(selector [{:keys [selected objects]}]
(let [children (cp/get-children id objects)]
(some #(contains? selected %) children)))]
(l/derived selector selected-data =)))
(def selected-objects
(letfn [(selector [{:keys [selected page-id objects]}]
(letfn [(selector [{:keys [selected objects]}]
(->> selected
(map #(get objects %))
(filterv (comp not nil?))))]
(l/derived selector selected-data =)))
(def selected-shapes-with-children
(letfn [(selector [{:keys [selected page-id objects]}]
(letfn [(selector [{:keys [selected objects]}]
(let [children (->> selected
(mapcat #(cp/get-children % objects))
(filterv (comp not nil?)))]
@ -242,7 +240,7 @@
(l/derived selector selected-data =)))
(def selected-objects-with-children
(letfn [(selector [{:keys [selected page-id objects]}]
(letfn [(selector [{:keys [selected objects]}]
(let [children (->> selected
(mapcat #(cp/get-children % objects))
(filterv (comp not nil?)))