mirror of
https://github.com/penpot/penpot.git
synced 2025-05-24 13:16:12 +02:00
✨ New apis for plugins
This commit is contained in:
parent
d6de1fdbdf
commit
3ca5b13e27
7 changed files with 613 additions and 92 deletions
|
@ -29,11 +29,30 @@
|
|||
(assert (uuid? id) "Page not valid uuid")
|
||||
(dm/get-in (locate-file file-id) [:data :pages-index id]))
|
||||
|
||||
(defn locate-objects
|
||||
[file-id page-id]
|
||||
(:objects (locate-page file-id page-id)))
|
||||
|
||||
(defn locate-shape
|
||||
[file-id page-id id]
|
||||
(assert (uuid? id) "Shape not valid uuid")
|
||||
(dm/get-in (locate-page file-id page-id) [:objects id]))
|
||||
|
||||
(defn locate-library-color
|
||||
[file-id id]
|
||||
(assert (uuid? id) "Color not valid uuid")
|
||||
(dm/get-in (locate-file file-id) [:data :colors id]))
|
||||
|
||||
(defn locate-library-typography
|
||||
[file-id id]
|
||||
(assert (uuid? id) "Typography not valid uuid")
|
||||
(dm/get-in (locate-file file-id) [:data :typographies id]))
|
||||
|
||||
(defn locate-library-component
|
||||
[file-id id]
|
||||
(assert (uuid? id) "Component not valid uuid")
|
||||
(dm/get-in (locate-file file-id) [:data :components id]))
|
||||
|
||||
(defn proxy->file
|
||||
[proxy]
|
||||
(let [id (obj/get proxy "$id")]
|
||||
|
@ -52,6 +71,24 @@
|
|||
id (obj/get proxy "$id")]
|
||||
(locate-shape file-id page-id id)))
|
||||
|
||||
(defn proxy->library-color
|
||||
[proxy]
|
||||
(let [file-id (obj/get proxy "$file")
|
||||
id (obj/get proxy "$id")]
|
||||
(locate-library-color file-id id)))
|
||||
|
||||
(defn proxy->library-typography
|
||||
[proxy]
|
||||
(let [file-id (obj/get proxy "$file")
|
||||
id (obj/get proxy "$id")]
|
||||
(locate-library-color file-id id)))
|
||||
|
||||
(defn proxy->library-component
|
||||
[proxy]
|
||||
(let [file-id (obj/get proxy "$file")
|
||||
id (obj/get proxy "$id")]
|
||||
(locate-library-color file-id id)))
|
||||
|
||||
(defn get-data
|
||||
([self attr]
|
||||
(-> (obj/get self "_data")
|
||||
|
@ -81,37 +118,45 @@
|
|||
|
||||
(defn from-js
|
||||
"Converts the object back to js"
|
||||
([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)
|
||||
[obj]
|
||||
(when (some? obj)
|
||||
(let [process-node
|
||||
(fn process-node [node]
|
||||
(reduce-kv
|
||||
(fn [m k v]
|
||||
(let [k (keyword (str/kebab k))
|
||||
v (cond (map? v)
|
||||
(process-node v)
|
||||
|
||||
(and (string? v) (re-matches us/uuid-rx v))
|
||||
(uuid/uuid v)
|
||||
(vector? v)
|
||||
(mapv process-node v)
|
||||
|
||||
:else (vfn k v))]
|
||||
(assoc m k v)))
|
||||
{}
|
||||
ret))))
|
||||
(and (string? v) (re-matches us/uuid-rx v))
|
||||
(uuid/uuid v)
|
||||
|
||||
(= k :type)
|
||||
(keyword v)
|
||||
|
||||
:else v)]
|
||||
(assoc m k v)))
|
||||
{}
|
||||
node))]
|
||||
(process-node (js->clj obj)))))
|
||||
|
||||
(defn to-js
|
||||
"Converts to javascript an camelize the keys"
|
||||
[obj]
|
||||
(let [result
|
||||
(reduce-kv
|
||||
(fn [m k v]
|
||||
(let [v (cond (object? v) (to-js v)
|
||||
(uuid? v) (dm/str v)
|
||||
:else v)]
|
||||
(assoc m (str/camel (name k)) v)))
|
||||
{}
|
||||
obj)]
|
||||
(clj->js result)))
|
||||
(when (some? obj)
|
||||
(let [result
|
||||
(reduce-kv
|
||||
(fn [m k v]
|
||||
(let [v (cond (object? v) (to-js v)
|
||||
(uuid? v) (dm/str v)
|
||||
:else v)]
|
||||
(assoc m (str/camel (name k)) v)))
|
||||
{}
|
||||
obj)]
|
||||
(clj->js result))))
|
||||
|
||||
(defn array-to-js
|
||||
[value]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue