Add grid layout options to context

This commit is contained in:
alonso.torres 2024-05-03 13:44:31 +02:00
parent 9243ba937d
commit fde0bcfd3e
4 changed files with 245 additions and 40 deletions

View file

@ -7,9 +7,11 @@
(ns app.plugins.utils
"RPC for plugins runtime."
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.spec :as us]
[app.common.uuid :as uuid]
[app.main.store :as st]
[app.util.object :as obj]
[cuerdas.core :as str]
[promesa.core :as p]))
@ -32,22 +34,34 @@
(fn [self]
(get-data self attr transform-fn))))
(defn get-state
([self attr]
(let [id (get-data self :id)
page-id (d/nilv (get-data self :page-id) (:current-page-id @st/state))]
(dm/get-in @st/state [:workspace-data :pages-index page-id :objects id attr])))
([self attr mapfn]
(-> (get-state self attr)
(mapfn))))
(defn from-js
"Converts the object back to js"
[obj]
(let [ret (js->clj obj {:keyword-fn (fn [k] (str/camel (name k)))})]
(reduce-kv
(fn [m k v]
(let [v (cond (map? v)
(from-js v)
([obj]
(from-js obj identity))
([obj vfn]
(let [ret (js->clj obj {:keyword-fn (fn [k] (str/camel (name k)))})]
(reduce-kv
(fn [m k v]
(let [k (keyword (str/kebab k))
v (cond (map? v)
(from-js v)
(and (string? v) (re-matches us/uuid-rx v))
(uuid/uuid v)
(and (string? v) (re-matches us/uuid-rx v))
(uuid/uuid v)
:else v)]
(assoc m (keyword (str/kebab k)) v)))
{}
ret)))
:else (vfn k v))]
(assoc m k v)))
{}
ret))))
(defn to-js
"Converts to javascript an camelize the keys"