mirror of
https://github.com/penpot/penpot.git
synced 2025-01-24 23:49:45 -05:00
101 lines
3.3 KiB
Clojure
101 lines
3.3 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 common-tests.helpers.shapes
|
|
(:require
|
|
[app.common.colors :as clr]
|
|
[app.common.files.helpers :as cfh]
|
|
[app.common.types.color :as ctc]
|
|
[app.common.types.colors-list :as ctcl]
|
|
[app.common.types.file :as ctf]
|
|
[app.common.types.pages-list :as ctpl]
|
|
[app.common.types.shape :as cts]
|
|
[app.common.types.shape-tree :as ctst]
|
|
[app.common.types.typographies-list :as cttl]
|
|
[app.common.types.typography :as ctt]
|
|
[common-tests.helpers.files :as thf]
|
|
[common-tests.helpers.ids-map :as thi]))
|
|
|
|
(defn sample-shape
|
|
[label & {:keys [type] :as params}]
|
|
(let [params (cond-> params
|
|
label
|
|
(assoc :id (thi/new-id! label))
|
|
|
|
(nil? type)
|
|
(assoc :type :rect))]
|
|
|
|
(cts/setup-shape params)))
|
|
|
|
(defn add-sample-shape
|
|
[file label & {:keys [parent-label] :as params}]
|
|
(let [page (thf/current-page file)
|
|
shape (sample-shape label (dissoc params :parent-label))
|
|
parent-id (when parent-label
|
|
(thi/id parent-label))
|
|
parent (when parent-id
|
|
(ctst/get-shape page parent-id))
|
|
frame-id (if (cfh/frame-shape? parent)
|
|
(:id parent)
|
|
(:frame-id parent))]
|
|
(ctf/update-file-data
|
|
file
|
|
(fn [file-data]
|
|
(ctpl/update-page file-data
|
|
(:id page)
|
|
#(ctst/add-shape (:id shape)
|
|
shape
|
|
%
|
|
frame-id
|
|
parent-id
|
|
nil
|
|
true))))))
|
|
|
|
(defn get-shape
|
|
[file label & {:keys [page-label]}]
|
|
(let [page (if page-label
|
|
(thf/get-page file page-label)
|
|
(thf/current-page file))]
|
|
(ctst/get-shape page (thi/id label))))
|
|
|
|
(defn get-shape-by-id
|
|
[file id & {:keys [page-label]}]
|
|
(let [page (if page-label
|
|
(thf/get-page file page-label)
|
|
(thf/current-page file))]
|
|
(ctst/get-shape page id)))
|
|
|
|
(defn sample-color
|
|
[label & {:keys [] :as params}]
|
|
(ctc/make-color (assoc params :id (thi/new-id! label))))
|
|
|
|
(defn sample-fill-color
|
|
[& {:keys [fill-color fill-opacity] :as params}]
|
|
(let [params (cond-> params
|
|
(nil? fill-color)
|
|
(assoc :fill-color clr/black)
|
|
|
|
(nil? fill-opacity)
|
|
(assoc :fill-opacity 1))]
|
|
params))
|
|
|
|
(defn sample-fills-color
|
|
[& {:keys [] :as params}]
|
|
[(sample-fill-color params)])
|
|
|
|
(defn add-sample-library-color
|
|
[file label & {:keys [] :as params}]
|
|
(let [color (sample-color label params)]
|
|
(ctf/update-file-data file #(ctcl/add-color % color))))
|
|
|
|
(defn sample-typography
|
|
[label & {:keys [] :as params}]
|
|
(ctt/make-typography (assoc params :id (thi/new-id! label))))
|
|
|
|
(defn add-sample-typography
|
|
[file label & {:keys [] :as params}]
|
|
(let [typography (sample-typography label params)]
|
|
(ctf/update-file-data file #(cttl/add-typography % typography))))
|