diff --git a/common/src/app/common/attrs.cljc b/common/src/app/common/attrs.cljc index ca27f3eb5..d414628be 100644 --- a/common/src/app/common/attrs.cljc +++ b/common/src/app/common/attrs.cljc @@ -6,8 +6,8 @@ (ns app.common.attrs (:require - [app.common.geom.shapes :as gsh] - [app.common.math :as mth])) + [app.common.geom.shapes :as gsh] + [app.common.math :as mth])) (defn- get-attr [obj attr] diff --git a/common/src/app/common/data.cljc b/common/src/app/common/data.cljc index 406883986..d814b1439 100644 --- a/common/src/app/common/data.cljc +++ b/common/src/app/common/data.cljc @@ -14,10 +14,10 @@ (:require-macros [app.common.data])) (:require - #?(:cljs [cljs.reader :as r] - :clj [clojure.edn :as r]) #?(:cljs [cljs.core :as c] :clj [clojure.core :as c]) + #?(:cljs [cljs.reader :as r] + :clj [clojure.edn :as r]) #?(:cljs [goog.array :as garray]) [app.common.math :as mth] [clojure.set :as set] @@ -589,8 +589,8 @@ (defn num-string? [v] ;; https://stackoverflow.com/questions/175739/built-in-way-in-javascript-to-check-if-a-string-is-a-valid-number #?(:cljs (and (string? v) - (not (js/isNaN v)) - (not (js/isNaN (parse-double v)))) + (not (js/isNaN v)) + (not (js/isNaN (parse-double v)))) :clj (not= (parse-double v :nan) :nan))) @@ -846,26 +846,26 @@ (def ^:const trail-zeros-regex-2 #"(\.\d*[^0])0+$") #?(:cljs -(defn format-precision - "Creates a number with predetermined precision and then removes the trailing 0. + (defn format-precision + "Creates a number with predetermined precision and then removes the trailing 0. Examples: 12.0123, 0 => 12 12.0123, 1 => 12 12.0123, 2 => 12.01" - [num precision] + [num precision] - (if (number? num) - (try - (let [num-str (mth/to-fixed num precision) - ;; Remove all trailing zeros after the comma 100.00000 - num-str (str/replace num-str trail-zeros-regex-1 "")] - ;; Remove trailing zeros after a decimal number: 0.001|00| - (if-let [m (re-find trail-zeros-regex-2 num-str)] - (str/replace num-str (first m) (second m)) - num-str)) - (catch :default _ - (str num))) - (str num)))) + (if (number? num) + (try + (let [num-str (mth/to-fixed num precision) + ;; Remove all trailing zeros after the comma 100.00000 + num-str (str/replace num-str trail-zeros-regex-1 "")] + ;; Remove trailing zeros after a decimal number: 0.001|00| + (if-let [m (re-find trail-zeros-regex-2 num-str)] + (str/replace num-str (first m) (second m)) + num-str)) + (catch :default _ + (str num))) + (str num)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Util protocols diff --git a/common/src/app/common/data/macros.cljc b/common/src/app/common/data/macros.cljc index 0bb74e204..7740ef362 100644 --- a/common/src/app/common/data/macros.cljc +++ b/common/src/app/common/data/macros.cljc @@ -24,7 +24,7 @@ keys in contrast to clojure.core/select-keys" [target keys] (assert (vector? keys) "keys expected to be a vector") - `{ ~@(mapcat (fn [key] [key (list `c/get target key)]) keys) ~@[] }) + `{~@(mapcat (fn [key] [key (list `c/get target key)]) keys) ~@[]}) (defmacro get-in "A macro version of `get-in`. Useful when the keys vector is known at diff --git a/common/src/app/common/exceptions.cljc b/common/src/app/common/exceptions.cljc index a5b9e47c6..b01914ca5 100644 --- a/common/src/app/common/exceptions.cljc +++ b/common/src/app/common/exceptions.cljc @@ -83,113 +83,112 @@ (sm/humanize-explain (::sm/explain data) opts))) #?(:clj -(defn format-throwable - [^Throwable cause & {:keys [summary? detail? header? data? explain? chain? data-level data-length trace-length] - :or {summary? true - detail? true - header? true - data? true - explain? true - chain? true - data-length 8 - data-level 5}}] + (defn format-throwable + [^Throwable cause & {:keys [summary? detail? header? data? explain? chain? data-level data-length trace-length] + :or {summary? true + detail? true + header? true + data? true + explain? true + chain? true + data-length 8 + data-level 5}}] - (letfn [(print-trace-element [^StackTraceElement e] - (let [class (.getClassName e) - method (.getMethodName e)] - (let [match (re-matches #"^([A-Za-z0-9_.-]+)\$(\w+)__\d+$" (str class))] - (if (and match (= "invoke" method)) - (apply printf "%s/%s" (rest match)) - (printf "%s.%s" class method)))) - (printf "(%s:%d)" (or (.getFileName e) "") (.getLineNumber e))) + (letfn [(print-trace-element [^StackTraceElement e] + (let [class (.getClassName e) + method (.getMethodName e)] + (let [match (re-matches #"^([A-Za-z0-9_.-]+)\$(\w+)__\d+$" (str class))] + (if (and match (= "invoke" method)) + (apply printf "%s/%s" (rest match)) + (printf "%s.%s" class method)))) + (printf "(%s:%d)" (or (.getFileName e) "") (.getLineNumber e))) - (print-explain [explain] - (print " xp: ") - (let [[line & lines] (str/lines explain)] - (print line) - (newline) - (doseq [line lines] - (println " " line)))) + (print-explain [explain] + (print " xp: ") + (let [[line & lines] (str/lines explain)] + (print line) + (newline) + (doseq [line lines] + (println " " line)))) - (print-data [data] - (when (seq data) - (print " dt: ") - (let [[line & lines] (str/lines (pp/pprint-str data :level data-level :length data-length))] - (print line) - (newline) - (doseq [line lines] - (println " " line))))) + (print-data [data] + (when (seq data) + (print " dt: ") + (let [[line & lines] (str/lines (pp/pprint-str data :level data-level :length data-length))] + (print line) + (newline) + (doseq [line lines] + (println " " line))))) - (print-trace-title [^Throwable cause] - (print " → ") - (printf "%s: %s" (.getName (class cause)) - (-> (ex-message cause) - (str/lines) - (first) - (str/prune 130))) + (print-trace-title [^Throwable cause] + (print " → ") + (printf "%s: %s" (.getName (class cause)) + (-> (ex-message cause) + (str/lines) + (first) + (str/prune 130))) - (when-let [^StackTraceElement e (first (.getStackTrace ^Throwable cause))] - (printf " (%s:%d)" (or (.getFileName e) "") (.getLineNumber e))) + (when-let [^StackTraceElement e (first (.getStackTrace ^Throwable cause))] + (printf " (%s:%d)" (or (.getFileName e) "") (.getLineNumber e))) - (newline)) + (newline)) - (print-summary [^Throwable cause] - (let [causes (loop [cause (ex-cause cause) - result []] - (if cause - (recur (ex-cause cause) - (conj result cause)) - result))] - (when header? - (println "SUMMARY:")) - (print-trace-title cause) - (doseq [cause causes] - (print-trace-title cause)))) + (print-summary [^Throwable cause] + (let [causes (loop [cause (ex-cause cause) + result []] + (if cause + (recur (ex-cause cause) + (conj result cause)) + result))] + (when header? + (println "SUMMARY:")) + (print-trace-title cause) + (doseq [cause causes] + (print-trace-title cause)))) - (print-trace [^Throwable cause] - (print-trace-title cause) - (let [st (.getStackTrace cause)] - (print " at: ") - (if-let [e (first st)] - (print-trace-element e) - (print "[empty stack trace]")) - (newline) + (print-trace [^Throwable cause] + (print-trace-title cause) + (let [st (.getStackTrace cause)] + (print " at: ") + (if-let [e (first st)] + (print-trace-element e) + (print "[empty stack trace]")) + (newline) - (doseq [e (if (nil? trace-length) (rest st) (take (dec trace-length) (rest st)))] - (print " ") - (print-trace-element e) - (newline)))) + (doseq [e (if (nil? trace-length) (rest st) (take (dec trace-length) (rest st)))] + (print " ") + (print-trace-element e) + (newline)))) - (print-detail [^Throwable cause] - (print-trace cause) - (when-let [data (ex-data cause)] - (when data? - (print-data (dissoc data ::s/problems ::s/spec ::s/value ::sm/explain))) - (when explain? - (if-let [explain (explain data {:length data-length :level data-level})] - (print-explain explain))))) + (print-detail [^Throwable cause] + (print-trace cause) + (when-let [data (ex-data cause)] + (when data? + (print-data (dissoc data ::s/problems ::s/spec ::s/value ::sm/explain))) + (when explain? + (if-let [explain (explain data {:length data-length :level data-level})] + (print-explain explain))))) - (print-all [^Throwable cause] - (when summary? - (print-summary cause)) + (print-all [^Throwable cause] + (when summary? + (print-summary cause)) - (when detail? - (when header? - (println "DETAIL:")) + (when detail? + (when header? + (println "DETAIL:")) - (print-detail cause) - (when chain? - (loop [cause cause] - (when-let [cause (ex-cause cause)] - (newline) - (print-detail cause) - (recur cause)))))) - ] + (print-detail cause) + (when chain? + (loop [cause cause] + (when-let [cause (ex-cause cause)] + (newline) + (print-detail cause) + (recur cause))))))] - (with-out-str - (print-all cause))))) + (with-out-str + (print-all cause))))) #?(:clj -(defn print-throwable - [cause & {:as opts}] - (println (format-throwable cause opts)))) + (defn print-throwable + [cause & {:as opts}] + (println (format-throwable cause opts)))) diff --git a/common/src/app/common/files/changes.cljc b/common/src/app/common/files/changes.cljc index b2a33b9d3..ccad7630a 100644 --- a/common/src/app/common/files/changes.cljc +++ b/common/src/app/common/files/changes.cljc @@ -814,8 +814,8 @@ (defn- parents-frames "Go trough the parents and get all of them that are a frame." [id objects] - (->> (cfh/get-parents-with-self objects id) - (filter cfh/frame-shape?))) + (->> (cfh/get-parents-with-self objects id) + (filter cfh/frame-shape?))) (defmulti frames-changed (fn [_ change] (:type change))) diff --git a/common/src/app/common/files/changes_builder.cljc b/common/src/app/common/files/changes_builder.cljc index 6668f91af..fa35400bc 100644 --- a/common/src/app/common/files/changes_builder.cljc +++ b/common/src/app/common/files/changes_builder.cljc @@ -58,8 +58,8 @@ (defn set-undo-group [changes undo-group] (cond-> changes - (some? undo-group) - (assoc :undo-group undo-group))) + (some? undo-group) + (assoc :undo-group undo-group))) (defn with-page [changes page] @@ -166,12 +166,12 @@ new-changes (if (< index (count redo-changes)) (->> (subvec (:redo-changes changes) index) (map #(-> % - (assoc :page-id uuid/zero) - (dissoc :component-id)))) + (assoc :page-id uuid/zero) + (dissoc :component-id)))) []) new-file-data (cfc/process-changes file-data new-changes)] (vary-meta changes assoc ::file-data new-file-data - ::applied-changes-count (count redo-changes))) + ::applied-changes-count (count redo-changes))) changes)) ;; Page changes @@ -224,9 +224,9 @@ :option option-key :value option-val}) (update :undo-changes conj {:type :set-option - :page-id page-id - :option option-key - :value old-val}) + :page-id page-id + :option option-key + :value old-val}) (apply-changes-local)))) (defn update-page-option @@ -243,9 +243,9 @@ :option option-key :value new-val}) (update :undo-changes conj {:type :set-option - :page-id page-id - :option option-key - :value old-val}) + :page-id page-id + :option option-key + :value old-val}) (apply-changes-local)))) ;; Shape tree changes @@ -292,7 +292,7 @@ (-> changes (update :redo-changes conj add-change) (cond-> - (and (ctk/in-component-copy? parent) (not ignore-touched)) + (and (ctk/in-component-copy? parent) (not ignore-touched)) (update :undo-changes conj restore-touched-change)) (update :undo-changes conj del-change) (apply-changes-local))))) @@ -333,13 +333,13 @@ mk-undo-change (fn [undo-changes shape] (let [prev-sibling (cfh/get-prev-sibling objects (:id shape))] - (conj undo-changes - {:type :mov-objects - :page-id (::page-id (meta changes)) - :parent-id (:parent-id shape) - :shapes [(:id shape)] - :after-shape prev-sibling - :index 0}))) ; index is used in case there is no after-shape (moving bottom shapes) + (conj undo-changes + {:type :mov-objects + :page-id (::page-id (meta changes)) + :parent-id (:parent-id shape) + :shapes [(:id shape)] + :after-shape prev-sibling + :index 0}))) ; index is used in case there is no after-shape (moving bottom shapes) restore-touched-change {:type :mod-obj @@ -351,7 +351,7 @@ (-> changes (update :redo-changes conj set-parent-change) (cond-> - (ctk/in-component-copy? parent) + (ctk/in-component-copy? parent) (update :undo-changes conj restore-touched-change)) (update :undo-changes #(reduce mk-undo-change % shapes)) (apply-changes-local))))) @@ -501,10 +501,10 @@ objects (lookup-objects changes) xform (comp - (mapcat #(cons % (cfh/get-parent-ids objects %))) - (map (d/getf objects)) - (filter #(contains? #{:group :bool} (:type %))) - (distinct)) + (mapcat #(cons % (cfh/get-parent-ids objects %))) + (map (d/getf objects)) + (filter #(contains? #{:group :bool} (:type %))) + (distinct)) all-parents (sequence xform ids) generate-operation @@ -661,59 +661,59 @@ ([changes id path name new-shapes updated-shapes main-instance-id main-instance-page] (add-component changes id path name new-shapes updated-shapes main-instance-id main-instance-page nil)) ([changes id path name new-shapes updated-shapes main-instance-id main-instance-page annotation] - (assert-page-id! changes) - (assert-objects! changes) - (let [page-id (::page-id (meta changes)) - objects (lookup-objects changes) - lookupf (d/getf objects) + (assert-page-id! changes) + (assert-objects! changes) + (let [page-id (::page-id (meta changes)) + objects (lookup-objects changes) + lookupf (d/getf objects) - mk-change (fn [shape] - {:type :mod-obj - :page-id page-id - :id (:id shape) - :operations [{:type :set - :attr :component-id - :val (:component-id shape)} - {:type :set - :attr :component-file - :val (:component-file shape)} - {:type :set - :attr :component-root - :val (:component-root shape)} - {:type :set - :attr :main-instance - :val (:main-instance shape)} - {:type :set - :attr :shape-ref - :val (:shape-ref shape)} - {:type :set - :attr :touched - :val (:touched shape)}]}) ] - (-> changes - (update :redo-changes - (fn [redo-changes] - (-> redo-changes - (conj (cond-> {:type :add-component - :id id - :path path - :name name - :main-instance-id main-instance-id - :main-instance-page main-instance-page - :annotation annotation} - (some? new-shapes) ;; this will be null in components-v2 - (assoc :shapes (vec new-shapes)))) - (into (map mk-change) updated-shapes)))) - (update :undo-changes - (fn [undo-changes] - (-> undo-changes - (conj {:type :del-component - :id id - :skip-undelete? true}) - (into (comp (map :id) - (map lookupf) - (map mk-change)) - updated-shapes)))) - (apply-changes-local))))) + mk-change (fn [shape] + {:type :mod-obj + :page-id page-id + :id (:id shape) + :operations [{:type :set + :attr :component-id + :val (:component-id shape)} + {:type :set + :attr :component-file + :val (:component-file shape)} + {:type :set + :attr :component-root + :val (:component-root shape)} + {:type :set + :attr :main-instance + :val (:main-instance shape)} + {:type :set + :attr :shape-ref + :val (:shape-ref shape)} + {:type :set + :attr :touched + :val (:touched shape)}]})] + (-> changes + (update :redo-changes + (fn [redo-changes] + (-> redo-changes + (conj (cond-> {:type :add-component + :id id + :path path + :name name + :main-instance-id main-instance-id + :main-instance-page main-instance-page + :annotation annotation} + (some? new-shapes) ;; this will be null in components-v2 + (assoc :shapes (vec new-shapes)))) + (into (map mk-change) updated-shapes)))) + (update :undo-changes + (fn [undo-changes] + (-> undo-changes + (conj {:type :del-component + :id id + :skip-undelete? true}) + (into (comp (map :id) + (map lookupf) + (map mk-change)) + updated-shapes)))) + (apply-changes-local))))) (defn update-component [changes id update-fn] @@ -748,7 +748,7 @@ (update :redo-changes conj {:type :del-component :id id}) (update :undo-changes conj {:type :restore-component - :id id}))) + :id id}))) (defn restore-component ([changes id] @@ -760,7 +760,7 @@ :id id :page-id page-id}) (update :undo-changes conj {:type :del-component - :id id})))) + :id id})))) (defn ignore-remote [changes] diff --git a/common/src/app/common/files/helpers.cljc b/common/src/app/common/files/helpers.cljc index 6142b728d..701575583 100644 --- a/common/src/app/common/files/helpers.cljc +++ b/common/src/app/common/files/helpers.cljc @@ -603,7 +603,7 @@ (defn last-path "Returns the last item of the path." [path] - (last (split-path path))) + (last (split-path path))) (defn compact-name "Append the first item of the path and the name." diff --git a/common/src/app/common/files/migrations.cljc b/common/src/app/common/files/migrations.cljc index f26a689f4..86145dc97 100644 --- a/common/src/app/common/files/migrations.cljc +++ b/common/src/app/common/files/migrations.cljc @@ -621,13 +621,13 @@ (defmethod migrate 33 [data] (letfn [(update-object [object] - ; Ensure all root objects are well formed shapes. - (if (= (:id object) uuid/zero) - (-> object - (assoc :parent-id uuid/zero - :frame-id uuid/zero) - (cts/setup-shape)) - object)) + ;; Ensure all root objects are well formed shapes. + (if (= (:id object) uuid/zero) + (-> object + (assoc :parent-id uuid/zero + :frame-id uuid/zero) + (cts/setup-shape)) + object)) (update-container [container] (update container :objects update-vals update-object))] diff --git a/common/src/app/common/files/repair.cljc b/common/src/app/common/files/repair.cljc index 28c7a3441..4034a15ab 100644 --- a/common/src/app/common/files/repair.cljc +++ b/common/src/app/common/files/repair.cljc @@ -400,10 +400,10 @@ ; Convert the shape in a frame. (log/debug :hint " -> set :type :frame") (assoc shape :type :frame - :fills [] - :hide-in-viewer true - :rx 0 - :ry 0))] + :fills [] + :hide-in-viewer true + :rx 0 + :ry 0))] (log/dbg :hint "repairing shape :instance-head-not-frame" :id (:id shape) :name (:name shape) :page-id page-id) (-> (pcb/empty-changes nil page-id) diff --git a/common/src/app/common/geom/align.cljc b/common/src/app/common/geom/align.cljc index 382f81a2d..92cdd28a9 100644 --- a/common/src/app/common/geom/align.cljc +++ b/common/src/app/common/geom/align.cljc @@ -46,8 +46,8 @@ :y (:y wrapper-rect)}) :vtop (let [top (:y rect)] - {:x (:x wrapper-rect) - :y top}) + {:x (:x wrapper-rect) + :y top}) :vcenter (let [center (+ (:y rect) (/ (:height rect) 2))] {:x (:x wrapper-rect) diff --git a/common/src/app/common/geom/matrix.cljc b/common/src/app/common/geom/matrix.cljc index a784b1942..6a7e5fc2e 100644 --- a/common/src/app/common/geom/matrix.cljc +++ b/common/src/app/common/geom/matrix.cljc @@ -6,9 +6,9 @@ (ns app.common.geom.matrix (:require + #?(:clj [app.common.fressian :as fres]) #?(:cljs [cljs.pprint :as pp] :clj [clojure.pprint :as pp]) - #?(:clj [app.common.fressian :as fres]) [app.common.data :as d] [app.common.data.macros :as dm] [app.common.geom.point :as gpt] @@ -100,7 +100,7 @@ (sg/small-double) (sg/small-double) (sg/small-double) - (sg/small-double) ) + (sg/small-double)) (sg/fmap #(apply pos->Matrix %))) ::oapi/type "string" ::oapi/format "matrix" @@ -248,8 +248,8 @@ ([pt] (dm/assert! (gpt/point? pt)) (pos->Matrix 1 0 0 1 - (- (dm/get-prop pt :x)) - (- (dm/get-prop pt :y)))) + (- (dm/get-prop pt :x)) + (- (dm/get-prop pt :y)))) ([x y] (pos->Matrix 1 0 0 1 (- x) (- y)))) diff --git a/common/src/app/common/geom/point.cljc b/common/src/app/common/geom/point.cljc index bbb63ec2a..fbe7e8e41 100644 --- a/common/src/app/common/geom/point.cljc +++ b/common/src/app/common/geom/point.cljc @@ -7,11 +7,11 @@ (ns app.common.geom.point (:refer-clojure :exclude [divide min max abs]) (:require - #?(:cljs [cljs.pprint :as pp] - :clj [clojure.pprint :as pp]) + #?(:clj [app.common.fressian :as fres]) #?(:cljs [cljs.core :as c] :clj [clojure.core :as c]) - #?(:clj [app.common.fressian :as fres]) + #?(:cljs [cljs.pprint :as pp] + :clj [clojure.pprint :as pp]) [app.common.data :as d] [app.common.data.macros :as dm] [app.common.exceptions :as ex] diff --git a/common/src/app/common/geom/rect.cljc b/common/src/app/common/geom/rect.cljc index 5fa77b8d3..445eb06cc 100644 --- a/common/src/app/common/geom/rect.cljc +++ b/common/src/app/common/geom/rect.cljc @@ -363,9 +363,9 @@ (cond-> bounds (> target-height height) (-> (assoc :height target-height) - (update :y - (/ (- target-height height ) 2))) + (update :y - (/ (- target-height height) 2))) (< target-height height) (-> (assoc :width target-width) - (update :x - (/ (- target-width width ) 2))))) + (update :x - (/ (- target-width width) 2))))) bounds)) diff --git a/common/src/app/common/geom/shapes/flex_layout/bounds.cljc b/common/src/app/common/geom/shapes/flex_layout/bounds.cljc index 4bf564565..56defa9cc 100644 --- a/common/src/app/common/geom/shapes/flex_layout/bounds.cljc +++ b/common/src/app/common/geom/shapes/flex_layout/bounds.cljc @@ -171,9 +171,9 @@ layout-gap-row 0) - col-pad (if (or(and row? space-evenly?) - (and row? space-around?) - (and col? content-evenly?)) + col-pad (if (or (and row? space-evenly?) + (and row? space-around?) + (and col? content-evenly?)) layout-gap-col 0) diff --git a/common/src/app/common/geom/shapes/grid_layout/areas.cljc b/common/src/app/common/geom/shapes/grid_layout/areas.cljc index 569c52470..cb37d63d3 100644 --- a/common/src/app/common/geom/shapes/grid_layout/areas.cljc +++ b/common/src/app/common/geom/shapes/grid_layout/areas.cljc @@ -30,7 +30,7 @@ (<= (+ b-y b-height) (+ a-y a-height)))) (defn intersects? - [[a-x a-y a-width a-height ] + [[a-x a-y a-width a-height] [b-x b-y b-width b-height]] (not (or (<= (+ b-x b-width) a-x) (<= (+ b-y b-height) a-y) @@ -76,11 +76,9 @@ y2 (min ra-y rb-y) height (- y2 y1) rb-x (+ b-x b-width) - width (- a-width (- rb-x a-x)) - ] + width (- a-width (- rb-x a-x))] (when (and (> width 0) (> height 0)) - (make-area rb-x y1 width height))) - ) + (make-area rb-x y1 width height)))) (defn difference [area-a area-b] @@ -92,4 +90,4 @@ (into [] (keep #(% area-a area-b)) [top-rect left-rect right-rect bottom-rect]))) - + diff --git a/common/src/app/common/geom/shapes/grid_layout/bounds.cljc b/common/src/app/common/geom/shapes/grid_layout/bounds.cljc index 6f1b0d3f2..e5b9cf011 100644 --- a/common/src/app/common/geom/shapes/grid_layout/bounds.cljc +++ b/common/src/app/common/geom/shapes/grid_layout/bounds.cljc @@ -30,13 +30,13 @@ (let [parent-id (:id parent) parent-bounds @(get bounds parent-id) - + {pad-top :p1 pad-right :p2 pad-bottom :p3 pad-left :p4} layout-padding pad-top (or pad-top 0) pad-right (or pad-right 0) pad-bottom (or pad-bottom 0) pad-left (or pad-left 0) - + layout-points (layout-content-points bounds parent layout-data)] (if (d/not-empty? layout-points) diff --git a/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc b/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc index c13b37588..aab585845 100644 --- a/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc +++ b/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc @@ -82,7 +82,7 @@ (let [[size max-size] (case type :percent - (let [value (/ (* total-value value) 100) ] + (let [value (/ (* total-value value) 100)] [value value]) :fixed @@ -190,7 +190,7 @@ ;; Apply assign-fr to the track-list track-list (reduce - (fn [track-list [idx assignment] ] + (fn [track-list [idx assignment]] (-> track-list (update-in [idx :size] max assignment))) track-list diff --git a/common/src/app/common/geom/shapes/grid_layout/params.cljc b/common/src/app/common/geom/shapes/grid_layout/params.cljc index 7c0dafc4e..16fcfd426 100644 --- a/common/src/app/common/geom/shapes/grid_layout/params.cljc +++ b/common/src/app/common/geom/shapes/grid_layout/params.cljc @@ -54,13 +54,13 @@ current-range nil] (if pending (let [[next-shape rect :as next-shape+rects] (first pending)] - + (if (or (not current-range) (overlaps-range? axis current-range rect)) ;; Add shape to current row (let [current-track (conj current-track (:id next-shape)) current-range (join-range axis current-range rect)] (recur (next pending) result index current-track current-range)) - + ;; New row (recur (next pending) (conj result {:index index diff --git a/common/src/app/common/geom/shapes/intersect.cljc b/common/src/app/common/geom/shapes/intersect.cljc index 66bca8785..6601315ca 100644 --- a/common/src/app/common/geom/shapes/intersect.cljc +++ b/common/src/app/common/geom/shapes/intersect.cljc @@ -176,7 +176,7 @@ [shape rect include-content?] (when (d/not-empty? (:content shape)) - (let [ ;; If paths are too complex the intersection is too expensive + (let [;; If paths are too complex the intersection is too expensive ;; we fallback to check its bounding box otherwise the performance penalty ;; is too big ;; TODO: Look for ways to optimize this operation @@ -190,10 +190,10 @@ start-point (-> shape :content (first) :params (gpt/point))] (or (intersects-lines? rect-lines path-lines) - (if include-content? - (or (is-point-inside-nonzero? (first rect-points) path-lines) - (is-point-inside-nonzero? start-point rect-lines)) - false))))) + (if include-content? + (or (is-point-inside-nonzero? (first rect-points) path-lines) + (is-point-inside-nonzero? start-point rect-lines)) + false))))) (defn is-point-inside-ellipse? "checks if a point is inside an ellipse" diff --git a/common/src/app/common/geom/shapes/min_size_layout.cljc b/common/src/app/common/geom/shapes/min_size_layout.cljc index d9ae9627a..ec88b62fc 100644 --- a/common/src/app/common/geom/shapes/min_size_layout.cljc +++ b/common/src/app/common/geom/shapes/min_size_layout.cljc @@ -25,8 +25,8 @@ (and strict? (ctl/fill-width? child) (ctl/flex-layout? child)) (let [children (cfh/get-immediate-children objects (dm/get-prop child :id) {:remove-hidden true})] - (max (ctl/child-min-width child) - (gpo/width-points (fb/layout-content-bounds bounds child children objects)))) + (max (ctl/child-min-width child) + (gpo/width-points (fb/layout-content-bounds bounds child children objects)))) (and (ctl/fill-width? child) (ctl/grid-layout? child)) diff --git a/common/src/app/common/geom/shapes/path.cljc b/common/src/app/common/geom/shapes/path.cljc index 604861f3e..018beaeb3 100644 --- a/common/src/app/common/geom/shapes/path.cljc +++ b/common/src/app/common/geom/shapes/path.cljc @@ -477,8 +477,7 @@ result) last-start (if (= :move-to command) point - last-start) - ] + last-start)] (recur (first pending) (rest pending) result @@ -523,7 +522,7 @@ "Point on line" [position from-p to-p] - (let [e1 (gpt/to-vec from-p to-p ) + (let [e1 (gpt/to-vec from-p to-p) e2 (gpt/to-vec from-p position) len2 (+ (mth/sq (:x e1)) (mth/sq (:y e1))) @@ -730,7 +729,7 @@ ray-t (get-line-tval ray-line curve-v)] (and (> ray-t 0) (> (mth/abs (- curve-tg-angle 180)) 0.01) - (> (mth/abs (- curve-tg-angle 0)) 0.01)) )))] + (> (mth/abs (- curve-tg-angle 0)) 0.01)))))] (->> curve-ts (mapv #(vector (curve-values curve %) (curve-windup curve %)))))) diff --git a/common/src/app/common/geom/shapes/pixel_precision.cljc b/common/src/app/common/geom/shapes/pixel_precision.cljc index 984f40e75..c65b36f9b 100644 --- a/common/src/app/common/geom/shapes/pixel_precision.cljc +++ b/common/src/app/common/geom/shapes/pixel_precision.cljc @@ -74,7 +74,7 @@ points (if has-resize? (-> (:points shape) - (gco/transform-points (ctm/modifiers->transform modifiers)) ) + (gco/transform-points (ctm/modifiers->transform modifiers))) points)] [modifiers points])] (position-pixel-precision modifiers shape points precision ignore-axis))) diff --git a/common/src/app/common/geom/shapes/strokes.cljc b/common/src/app/common/geom/shapes/strokes.cljc index e155dde7b..272e5e12b 100644 --- a/common/src/app/common/geom/shapes/strokes.cljc +++ b/common/src/app/common/geom/shapes/strokes.cljc @@ -6,6 +6,6 @@ (defn update-strokes-width [shape scale] - (update shape :strokes - (fn [strokes] - (mapv #(update-stroke-width % scale) strokes)))) + (update shape :strokes + (fn [strokes] + (mapv #(update-stroke-width % scale) strokes)))) diff --git a/common/src/app/common/geom/shapes/transforms.cljc b/common/src/app/common/geom/shapes/transforms.cljc index 7d4822f48..6adf456cd 100644 --- a/common/src/app/common/geom/shapes/transforms.cljc +++ b/common/src/app/common/geom/shapes/transforms.cljc @@ -61,8 +61,8 @@ dy (dm/get-prop delta :y)] (if (d/num? dx dy) (mapv #(-> % - (update :x + dx) - (update :y + dy)) + (update :x + dx) + (update :y + dy)) position-data) position-data)))) @@ -162,8 +162,8 @@ (-> (gmt/matrix) (gmt/translate center) (cond-> - flip-x (gmt/scale (gpt/point -1 1)) - flip-y (gmt/scale (gpt/point 1 -1))) + flip-x (gmt/scale (gpt/point -1 1)) + flip-y (gmt/scale (gpt/point 1 -1))) (gmt/multiply (:transform-inverse shape (gmt/matrix))) (gmt/translate (gpt/negate center))))) @@ -207,24 +207,24 @@ mb7 (/ (- x2 x1) det) mb8 (/ (- (* x1 y1) (* x2 y1)) det)] - (gmt/matrix (+ (* ma0 mb0) - (* ma1 mb3) - (* ma2 mb6)) - (+ (* ma3 mb0) - (* ma4 mb3) - (* ma5 mb6)) - (+ (* ma0 mb1) - (* ma1 mb4) - (* ma2 mb7)) - (+ (* ma3 mb1) - (* ma4 mb4) - (* ma5 mb7)) - (+ (* ma0 mb2) - (* ma1 mb5) - (* ma2 mb8)) - (+ (* ma3 mb2) - (* ma4 mb5) - (* ma5 mb8))))))) + (gmt/matrix (+ (* ma0 mb0) + (* ma1 mb3) + (* ma2 mb6)) + (+ (* ma3 mb0) + (* ma4 mb3) + (* ma5 mb6)) + (+ (* ma0 mb1) + (* ma1 mb4) + (* ma2 mb7)) + (+ (* ma3 mb1) + (* ma4 mb4) + (* ma5 mb7)) + (+ (* ma0 mb2) + (* ma1 mb5) + (* ma2 mb8)) + (+ (* ma3 mb2) + (* ma4 mb5) + (* ma5 mb8))))))) (defn calculate-selrect [points center] diff --git a/common/src/app/common/logging.cljc b/common/src/app/common/logging.cljc index 89a929d0b..fe7a0e8f5 100644 --- a/common/src/app/common/logging.cljc +++ b/common/src/app/common/logging.cljc @@ -239,7 +239,7 @@ #?(:clj (defn slf4j-log-handler {:no-doc true} - [_ _ _ {:keys [::logger ::level ::trace ::message] }] + [_ _ _ {:keys [::logger ::level ::trace ::message]}] (when-let [logger (enabled? logger level)] (let [message (cond-> @message (some? trace) @@ -312,8 +312,8 @@ (let [cljs? (:ns &env)] `(do (~(if cljs? - `(partial console-log-handler nil nil nil) - `(partial slf4j-log-handler nil nil nil)) + `(partial console-log-handler nil nil nil) + `(partial slf4j-log-handler nil nil nil)) {::logger ~(str *ns*) ::level ~level ::message (delay ~message)}) diff --git a/common/src/app/common/perf.cljc b/common/src/app/common/perf.cljc index 46ee65c87..8723ffc54 100644 --- a/common/src/app/common/perf.cljc +++ b/common/src/app/common/perf.cljc @@ -44,11 +44,11 @@ "Determine a scale factor and unit for displaying a time." [measurement] (cond - (> measurement 60) [(/ 60) "min"] - (< measurement 1e-6) [1e9 "ns"] - (< measurement 1e-3) [1e6 "µs"] - (< measurement 1) [1e3 "ms"] - :else [1 "sec"])) + (> measurement 60) [(/ 60) "min"] + (< measurement 1e-6) [1e9 "ns"] + (< measurement 1e-3) [1e6 "µs"] + (< measurement 1) [1e3 "ms"] + :else [1 "sec"])) (defn format-time [value] diff --git a/common/src/app/common/record.cljc b/common/src/app/common/record.cljc index 97c25cc4a..f9d10df0c 100644 --- a/common/src/app/common/record.cljc +++ b/common/src/app/common/record.cljc @@ -51,52 +51,52 @@ ['cljs.core/IRecord 'cljs.core/ICloneable `(~'-clone [~this-sym] - (new ~tagname ~@(generate-field-access this-sym val-sym fields))) + (new ~tagname ~@(generate-field-access this-sym val-sym fields))) 'cljs.core/IHash `(~'-hash [~this-sym] - (caching-hash ~this-sym - (fn [coll#] - (bit-xor - ~(hash (str tagname)) - (cljs.core/hash-unordered-coll coll#))) - (. ~this-sym ~'-$hash))) + (caching-hash ~this-sym + (fn [coll#] + (bit-xor + ~(hash (str tagname)) + (cljs.core/hash-unordered-coll coll#))) + (. ~this-sym ~'-$hash))) 'cljs.core/IEquiv `(~'-equiv [~this-sym ~othr-sym] - (or (identical? ~this-sym ~othr-sym) - (and (some? ~othr-sym) - (identical? (.-constructor ~this-sym) - (.-constructor ~othr-sym)) - ~@(map (fn [field] - `(= (.. ~this-sym ~(property-symbol field)) - (.. ~(with-meta othr-sym {:tag tagname}) ~(property-symbol field)))) - base-fields) + (or (identical? ~this-sym ~othr-sym) + (and (some? ~othr-sym) + (identical? (.-constructor ~this-sym) + (.-constructor ~othr-sym)) + ~@(map (fn [field] + `(= (.. ~this-sym ~(property-symbol field)) + (.. ~(with-meta othr-sym {:tag tagname}) ~(property-symbol field)))) + base-fields) - (= (. ~this-sym ~'-$extmap) - (. ~(with-meta othr-sym {:tag tagname}) ~'-$extmap))))) + (= (. ~this-sym ~'-$extmap) + (. ~(with-meta othr-sym {:tag tagname}) ~'-$extmap))))) `ICustomRecordEquiv `(~'-equiv-with-exceptions [~this-sym ~othr-sym ~'exceptions] - (or (identical? ~this-sym ~othr-sym) - (and (some? ~othr-sym) - (identical? (.-constructor ~this-sym) - (.-constructor ~othr-sym)) - (and ~@(->> base-fields - (map (fn [field] - `(= (.. ~this-sym ~(property-symbol field)) - (.. ~(with-meta othr-sym {:tag tagname}) ~(property-symbol field)))))) - (== (count (. ~this-sym ~'-$extmap)) - (count (. ~othr-sym ~'-$extmap)))) + (or (identical? ~this-sym ~othr-sym) + (and (some? ~othr-sym) + (identical? (.-constructor ~this-sym) + (.-constructor ~othr-sym)) + (and ~@(->> base-fields + (map (fn [field] + `(= (.. ~this-sym ~(property-symbol field)) + (.. ~(with-meta othr-sym {:tag tagname}) ~(property-symbol field)))))) + (== (count (. ~this-sym ~'-$extmap)) + (count (. ~othr-sym ~'-$extmap)))) - (reduce-kv (fn [~'_ ~'k ~'v] - (if (contains? ~'exceptions ~'k) - true - (if (= (get (. ~this-sym ~'-$extmap) ~'k ::not-exists) ~'v) - true - (reduced false)))) - true - (. ~othr-sym ~'-$extmap))))) + (reduce-kv (fn [~'_ ~'k ~'v] + (if (contains? ~'exceptions ~'k) + true + (if (= (get (. ~this-sym ~'-$extmap) ~'k ::not-exists) ~'v) + true + (reduced false)))) + true + (. ~othr-sym ~'-$extmap))))) 'cljs.core/IMeta @@ -104,98 +104,98 @@ 'cljs.core/IWithMeta `(~'-with-meta [~this-sym ~val-sym] - (new ~tagname ~@(->> (replace {'$meta val-sym} fields) - (generate-field-access this-sym val-sym)))) + (new ~tagname ~@(->> (replace {'$meta val-sym} fields) + (generate-field-access this-sym val-sym)))) 'cljs.core/ILookup `(~'-lookup [~this-sym k#] - (cljs.core/-lookup ~this-sym k# nil)) + (cljs.core/-lookup ~this-sym k# nil)) `(~'-lookup [~this-sym ~key-sym else#] - (case ~key-sym - ~@(mapcat (fn [f] [(keyword f) `(. ~this-sym ~(property-symbol f))]) - base-fields) - (cljs.core/get (. ~this-sym ~'-$extmap) ~key-sym else#))) + (case ~key-sym + ~@(mapcat (fn [f] [(keyword f) `(. ~this-sym ~(property-symbol f))]) + base-fields) + (cljs.core/get (. ~this-sym ~'-$extmap) ~key-sym else#))) 'cljs.core/ICounted `(~'-count [~this-sym] - (+ ~(count base-fields) (count (. ~this-sym ~'-$extmap)))) + (+ ~(count base-fields) (count (. ~this-sym ~'-$extmap)))) 'cljs.core/ICollection `(~'-conj [~this-sym ~val-sym] - (if (vector? ~val-sym) - (cljs.core/-assoc ~this-sym (cljs.core/-nth ~val-sym 0) (cljs.core/-nth ~val-sym 1)) - (reduce cljs.core/-conj ~this-sym ~val-sym))) + (if (vector? ~val-sym) + (cljs.core/-assoc ~this-sym (cljs.core/-nth ~val-sym 0) (cljs.core/-nth ~val-sym 1)) + (reduce cljs.core/-conj ~this-sym ~val-sym))) 'cljs.core/IAssociative `(~'-contains-key? [~this-sym ~key-sym] - ~(if (seq base-fields) - `(case ~key-sym - (~@(map keyword base-fields)) true - (contains? (. ~this-sym ~'-$extmap) ~key-sym)) - `(contains? (. ~this-sym ~'-$extmap) ~key-sym))) + ~(if (seq base-fields) + `(case ~key-sym + (~@(map keyword base-fields)) true + (contains? (. ~this-sym ~'-$extmap) ~key-sym)) + `(contains? (. ~this-sym ~'-$extmap) ~key-sym))) `(~'-assoc [~this-sym ~key-sym ~val-sym] - (case ~key-sym - ~@(mapcat (fn [fld] - [(keyword fld) `(new ~tagname ~@(->> (replace {fld val-sym '$hash nil} fields) - (generate-field-access this-sym val-sym)))]) - base-fields) - (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) - (generate-field-access this-sym val-sym)) - (assoc (. ~this-sym ~'-$extmap) ~key-sym ~val-sym) nil))) + (case ~key-sym + ~@(mapcat (fn [fld] + [(keyword fld) `(new ~tagname ~@(->> (replace {fld val-sym '$hash nil} fields) + (generate-field-access this-sym val-sym)))]) + base-fields) + (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) + (generate-field-access this-sym val-sym)) + (assoc (. ~this-sym ~'-$extmap) ~key-sym ~val-sym) nil))) 'cljs.core/ITransientAssociative `(~'-assoc! [~this-sym ~key-sym ~val-sym] - (let [key# (if (keyword? ~key-sym) - (.-fqn ~(with-meta key-sym {:tag `cljs.core/Keyword})) - ~key-sym)] - (case ~key-sym - ~@(mapcat - (fn [f] - [(keyword f) `(set! (. ~this-sym ~(property-symbol f)) ~val-sym)]) - base-fields) + (let [key# (if (keyword? ~key-sym) + (.-fqn ~(with-meta key-sym {:tag `cljs.core/Keyword})) + ~key-sym)] + (case ~key-sym + ~@(mapcat + (fn [f] + [(keyword f) `(set! (. ~this-sym ~(property-symbol f)) ~val-sym)]) + base-fields) - (set! (. ~this-sym ~'-$extmap) (cljs.core/assoc (. ~this-sym ~'-$extmap) ~key-sym ~val-sym))) + (set! (. ~this-sym ~'-$extmap) (cljs.core/assoc (. ~this-sym ~'-$extmap) ~key-sym ~val-sym))) - ~this-sym)) + ~this-sym)) 'cljs.core/IMap `(~'-dissoc [~this-sym ~key-sym] - (case ~key-sym - (~@(map keyword base-fields)) - (cljs.core/-assoc ~this-sym ~key-sym nil) + (case ~key-sym + (~@(map keyword base-fields)) + (cljs.core/-assoc ~this-sym ~key-sym nil) - (let [extmap1# (. ~this-sym ~'-$extmap) - extmap2# (dissoc extmap1# ~key-sym)] - (if (identical? extmap1# extmap2#) - ~this-sym - (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) - (generate-field-access this-sym val-sym)) - (not-empty extmap2#) - nil))))) + (let [extmap1# (. ~this-sym ~'-$extmap) + extmap2# (dissoc extmap1# ~key-sym)] + (if (identical? extmap1# extmap2#) + ~this-sym + (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) + (generate-field-access this-sym val-sym)) + (not-empty extmap2#) + nil))))) 'cljs.core/ISeqable `(~'-seq [~this-sym] - (seq (concat [~@(map (fn [f] - `(cljs.core/MapEntry. - ~(keyword f) - (. ~this-sym ~(property-symbol f)) - nil)) - base-fields)] - (. ~this-sym ~'-$extmap)))) + (seq (concat [~@(map (fn [f] + `(cljs.core/MapEntry. + ~(keyword f) + (. ~this-sym ~(property-symbol f)) + nil)) + base-fields)] + (. ~this-sym ~'-$extmap)))) 'cljs.core/IIterable `(~'-iterator [~this-sym] - (cljs.core/RecordIter. 0 ~this-sym ~(count base-fields) - [~@(map keyword base-fields)] - (if (. ~this-sym ~'-$extmap) - (cljs.core/-iterator (. ~this-sym ~'-$extmap)) - (cljs.core/nil-iter)))) + (cljs.core/RecordIter. 0 ~this-sym ~(count base-fields) + [~@(map keyword base-fields)] + (if (. ~this-sym ~'-$extmap) + (cljs.core/-iterator (. ~this-sym ~'-$extmap)) + (cljs.core/nil-iter)))) 'cljs.core/IKVReduce `(~'-kv-reduce [~this-sym f# init#] - (reduce (fn [ret# [~key-sym v#]] (f# ret# ~key-sym v#)) init# ~this-sym))]))) + (reduce (fn [ret# [~key-sym v#]] (f# ret# ~key-sym v#)) init# ~this-sym))]))) #?(:clj (defn emit-impl-jvm @@ -208,144 +208,143 @@ ['clojure.lang.IRecord 'clojure.lang.IPersistentMap `(~'equiv [~this-sym ~val-sym] - (and (some? ~val-sym) - (instance? ~tagname ~val-sym) - ~@(map (fn [field] - `(= (.. ~this-sym ~(property-symbol field)) - (.. ~(with-meta val-sym {:tag tagname}) ~(property-symbol field)))) - base-fields) - (= (. ~this-sym ~'-$extmap) - (. ~(with-meta val-sym {:tag tagname}) ~'-$extmap)))) + (and (some? ~val-sym) + (instance? ~tagname ~val-sym) + ~@(map (fn [field] + `(= (.. ~this-sym ~(property-symbol field)) + (.. ~(with-meta val-sym {:tag tagname}) ~(property-symbol field)))) + base-fields) + (= (. ~this-sym ~'-$extmap) + (. ~(with-meta val-sym {:tag tagname}) ~'-$extmap)))) `(~'entryAt [~this-sym ~key-sym] - (let [v# (.valAt ~this-sym ~key-sym ::not-found)] - (when (not= v# ::not-found) - (clojure.lang.MapEntry. ~key-sym v#)))) + (let [v# (.valAt ~this-sym ~key-sym ::not-found)] + (when (not= v# ::not-found) + (clojure.lang.MapEntry. ~key-sym v#)))) `(~'valAt [~this-sym ~key-sym] - (.valAt ~this-sym ~key-sym nil)) + (.valAt ~this-sym ~key-sym nil)) `(~'valAt [~this-sym ~key-sym ~'not-found] - (case ~key-sym - ~@(mapcat (fn [f] [(keyword f) `(. ~this-sym ~(property-symbol f))]) base-fields) - (clojure.core/get (. ~this-sym ~'-$extmap) ~key-sym ~'not-found))) + (case ~key-sym + ~@(mapcat (fn [f] [(keyword f) `(. ~this-sym ~(property-symbol f))]) base-fields) + (clojure.core/get (. ~this-sym ~'-$extmap) ~key-sym ~'not-found))) `(~'count [~this-sym] - (+ ~(count base-fields) (count (. ~this-sym ~'-$extmap)))) + (+ ~(count base-fields) (count (. ~this-sym ~'-$extmap)))) `(~'empty [~this-sym] - (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) - (generate-field-access this-sym nil)) - nil nil)) + (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) + (generate-field-access this-sym nil)) + nil nil)) `(~'cons [~this-sym ~val-sym] - (if (instance? java.util.Map$Entry ~val-sym) - (let [^Map$Entry e# ~val-sym] - (.assoc ~this-sym (.getKey e#) (.getValue e#))) - (if (instance? clojure.lang.IPersistentVector ~val-sym) - (if (= 2 (count ~val-sym)) - (.assoc ~this-sym (nth ~val-sym 0) (nth ~val-sym 1)) - (throw (IllegalArgumentException. - "Vector arg to map conj must be a pair"))) - (reduce (fn [^clojure.lang.IPersistentMap m# - ^java.util.Map$Entry e#] - (.assoc m# (.getKey e#) (.getValue e#))) - ~this-sym - ~val-sym)))) + (if (instance? java.util.Map$Entry ~val-sym) + (let [^Map$Entry e# ~val-sym] + (.assoc ~this-sym (.getKey e#) (.getValue e#))) + (if (instance? clojure.lang.IPersistentVector ~val-sym) + (if (= 2 (count ~val-sym)) + (.assoc ~this-sym (nth ~val-sym 0) (nth ~val-sym 1)) + (throw (IllegalArgumentException. + "Vector arg to map conj must be a pair"))) + (reduce (fn [^clojure.lang.IPersistentMap m# + ^java.util.Map$Entry e#] + (.assoc m# (.getKey e#) (.getValue e#))) + ~this-sym + ~val-sym)))) `(~'assoc [~this-sym ~key-sym ~val-sym] - (case ~key-sym - ~@(mapcat (fn [fld] - [(keyword fld) `(new ~tagname ~@(->> (replace {fld val-sym '$hash nil} fields) - (generate-field-access this-sym val-sym)))]) - base-fields) - (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) - (generate-field-access this-sym val-sym)) - (assoc (. ~this-sym ~'-$extmap) ~key-sym ~val-sym) - nil))) + (case ~key-sym + ~@(mapcat (fn [fld] + [(keyword fld) `(new ~tagname ~@(->> (replace {fld val-sym '$hash nil} fields) + (generate-field-access this-sym val-sym)))]) + base-fields) + (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) + (generate-field-access this-sym val-sym)) + (assoc (. ~this-sym ~'-$extmap) ~key-sym ~val-sym) + nil))) `(~'without [~this-sym ~key-sym] - (case ~key-sym - (~@(map keyword base-fields)) - (.assoc ~this-sym ~key-sym nil) + (case ~key-sym + (~@(map keyword base-fields)) + (.assoc ~this-sym ~key-sym nil) - (if-let [extmap1# (. ~this-sym ~'-$extmap)] - (let [extmap2# (.without ^clojure.lang.IPersistentMap extmap1# ~key-sym)] - (if (identical? extmap1# extmap2#) - ~this-sym - (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) - (generate-field-access this-sym val-sym)) - (not-empty extmap2#) - nil))) - ~this-sym))) + (if-let [extmap1# (. ~this-sym ~'-$extmap)] + (let [extmap2# (.without ^clojure.lang.IPersistentMap extmap1# ~key-sym)] + (if (identical? extmap1# extmap2#) + ~this-sym + (new ~tagname ~@(->> (remove #{'$extmap '$hash} fields) + (generate-field-access this-sym val-sym)) + (not-empty extmap2#) + nil))) + ~this-sym))) `(~'seq [~this-sym] - (seq (concat [~@(map (fn [f] - `(clojure.lang.MapEntry/create - ~(keyword f) - (. ~this-sym ~(property-symbol f)))) - base-fields)] - (. ~this-sym ~'-$extmap)))) + (seq (concat [~@(map (fn [f] + `(clojure.lang.MapEntry/create + ~(keyword f) + (. ~this-sym ~(property-symbol f)))) + base-fields)] + (. ~this-sym ~'-$extmap)))) `(~'iterator [~this-sym] - (clojure.lang.SeqIterator. (.seq ~this-sym))) + (clojure.lang.SeqIterator. (.seq ~this-sym))) 'clojure.lang.IFn `(~'invoke [~this-sym ~key-sym] - (.valAt ~this-sym ~key-sym)) + (.valAt ~this-sym ~key-sym)) `(~'invoke [~this-sym ~key-sym ~'not-found] - (.valAt ~this-sym ~key-sym ~'not-found)) + (.valAt ~this-sym ~key-sym ~'not-found)) 'java.util.Map `(~'size [~this-sym] - (clojure.core/count ~this-sym)) + (clojure.core/count ~this-sym)) `(~'containsKey [~this-sym ~key-sym] - ~(if (seq base-fields) - `(case ~key-sym - (~@(map keyword base-fields)) true - (contains? (. ~this-sym ~'-$extmap) ~key-sym)) - `(contains? (. ~this-sym ~'-$extmap) ~key-sym))) + ~(if (seq base-fields) + `(case ~key-sym + (~@(map keyword base-fields)) true + (contains? (. ~this-sym ~'-$extmap) ~key-sym)) + `(contains? (. ~this-sym ~'-$extmap) ~key-sym))) `(~'isEmpty [~this-sym] - (zero? (count ~this-sym))) + (zero? (count ~this-sym))) `(~'keySet [~this-sym] - (throw (UnsupportedOperationException. "not implemented"))) + (throw (UnsupportedOperationException. "not implemented"))) `(~'entrySet [~this-sym] - (throw (UnsupportedOperationException. "not implemented"))) + (throw (UnsupportedOperationException. "not implemented"))) `(~'get [~this-sym ~key-sym] - (.valAt ~this-sym ~key-sym)) + (.valAt ~this-sym ~key-sym)) `(~'containsValue [~this-sym ~val-sym] - (throw (UnsupportedOperationException. "not implemented"))) + (throw (UnsupportedOperationException. "not implemented"))) `(~'values [~this-sym] - (map val (.seq ~this-sym))) + (map val (.seq ~this-sym))) 'java.lang.Object `(~'equals [~this-sym other#] - (.equiv ~this-sym other#)) + (.equiv ~this-sym other#)) `(~'hashCode [~this-sym] - (clojure.lang.APersistentMap/mapHash ~this-sym)) + (clojure.lang.APersistentMap/mapHash ~this-sym)) 'clojure.lang.IHashEq `(~'hasheq [~this-sym] - (clojure.core/hash-unordered-coll ~this-sym)) + (clojure.core/hash-unordered-coll ~this-sym)) 'clojure.lang.IObj `(~'meta [~this-sym] - (. ~this-sym ~'-$meta)) + (. ~this-sym ~'-$meta)) `(~'withMeta [~this-sym ~val-sym] - (new ~tagname ~@(->> (replace {'$meta val-sym} fields) - (generate-field-access this-sym val-sym)))) - ]))) + (new ~tagname ~@(->> (replace {'$meta val-sym} fields) + (generate-field-access this-sym val-sym))))]))) (defmacro defrecord [rsym fields & impls] @@ -367,14 +366,14 @@ ~@(when (:ns &env) ['cljs.core/IPrintWithWriter `(~'-pr-writer [~'this writer# opts#] - (let [pr-pair# (fn [keyval#] - (cljs.core/pr-sequential-writer writer# (~'js* "cljs.core.pr_writer") - "" " " "" opts# keyval#))] - (cljs.core/pr-sequential-writer - writer# pr-pair# ~(str ident "{") ", " "}" opts# - (concat [~@(for [f fields'] - `(vector ~(keyword f) (. ~'this ~(property-symbol f))))] - (. ~'this ~'-$extmap)))))])) + (let [pr-pair# (fn [keyval#] + (cljs.core/pr-sequential-writer writer# (~'js* "cljs.core.pr_writer") + "" " " "" opts# keyval#))] + (cljs.core/pr-sequential-writer + writer# pr-pair# ~(str ident "{") ", " "}" opts# + (concat [~@(for [f fields'] + `(vector ~(keyword f) (. ~'this ~(property-symbol f))))] + (. ~'this ~'-$extmap)))))])) ~@(when-not (:ns &env) [`(defmethod print-method ~rsym [o# ^java.io.Writer w#] diff --git a/common/src/app/common/schema.cljc b/common/src/app/common/schema.cljc index 8fc44587f..7fed63b77 100644 --- a/common/src/app/common/schema.cljc +++ b/common/src/app/common/schema.cljc @@ -122,9 +122,7 @@ :encoders (mt/-string-encoders)} {:name :collections :decoders coders - :encoders coders} - - ))) + :encoders coders}))) (defn validator [s] @@ -304,7 +302,7 @@ options (into {:type :validation :code :data-validation ::explain explain} - options) + options) hint (get options :hint "schema validation error")] (throw (ex-info hint options))))))) diff --git a/common/src/app/common/schema/desc_js_like.cljc b/common/src/app/common/schema/desc_js_like.cljc index 58ff05d0a..28f19e196 100644 --- a/common/src/app/common/schema/desc_js_like.cljc +++ b/common/src/app/common/schema/desc_js_like.cljc @@ -169,15 +169,14 @@ (map (fn [[k _ s]] (str (pad " " level) (str/camel k) (when (contains? optional k) "?") - ": " s ))) + ": " s))) (str/join ",\n")) header (cond-> (if (zero? level) (str "type " title) (str title)) closed? (str "!") - (some? title) (str " ") - )] + (some? title) (str " "))] (str header "{\n" entries "\n" (pad "}" level)))))) diff --git a/common/src/app/common/schema/generators.cljc b/common/src/app/common/schema/generators.cljc index 5e8da881d..f1aa8c90f 100644 --- a/common/src/app/common/schema/generators.cljc +++ b/common/src/app/common/schema/generators.cljc @@ -74,17 +74,17 @@ (defn word-string [] (->> (tg/such-that #(re-matches #"\w+" %) - tg/string-alphanumeric - 50) + tg/string-alphanumeric + 50) (tg/such-that (complement str/blank?)))) (defn uri [] (tg/let [scheme (tg/elements ["http" "https"]) - domain (as-> (word-string) $ - (tg/such-that (fn [x] (> (count x) 5)) $ 100) - (tg/fmap str/lower $)) - ext (tg/elements ["net" "com" "org" "app" "io"])] + domain (as-> (word-string) $ + (tg/such-that (fn [x] (> (count x) 5)) $ 100) + (tg/fmap str/lower $)) + ext (tg/elements ["net" "com" "org" "app" "io"])] (u/uri (str scheme "://" domain "." ext)))) (defn uuid @@ -102,11 +102,11 @@ ([dest elements] (->> (apply tg/tuple (repeat (count elements) tg/boolean)) (tg/fmap (fn [bools] - (into dest - (comp - (c/filter first) - (c/map second)) - (c/map list bools elements))))))) + (into dest + (comp + (c/filter first) + (c/map second)) + (c/map list bools elements))))))) (defn set [g] diff --git a/common/src/app/common/svg.cljc b/common/src/app/common/svg.cljc index bc4f79f19..878d56109 100644 --- a/common/src/app/common/svg.cljc +++ b/common/src/app/common/svg.cljc @@ -6,9 +6,9 @@ (ns app.common.svg (:require - #?(:cljs ["./svg/optimizer.js" :as svgo]) #?(:clj [clojure.xml :as xml] :cljs [tubax.core :as tubax]) + #?(:cljs ["./svg/optimizer.js" :as svgo]) [app.common.data :as d] [app.common.data.macros :as dm] [app.common.geom.matrix :as gmt] @@ -115,8 +115,7 @@ :tspan :use :view - :vkern - }) + :vkern}) ;; https://www.w3.org/TR/SVG11/attindex.html (def svg-attr-list @@ -680,7 +679,7 @@ ;; Removed this warning because slows a lot rendering with big svgs #_(let [filtered-props (->> attrs (remove known-property?) (map first))] (when (seq filtered-props) - (.warn js/console "Unknown properties: " (str/join ", " filtered-props )))) + (.warn js/console "Unknown properties: " (str/join ", " filtered-props)))) (into {} (comp (filter known-property?) @@ -740,7 +739,7 @@ node-defs (->> rec-result (map first) (reduce merge current-node-defs))] - [ node-defs node ]))) + [node-defs node]))) (defn find-attr-references [attrs] (->> attrs @@ -1048,7 +1047,7 @@ (conj {:href (or (:href attrs) (:xlink:href attrs)) :width (d/parse-integer (:width attrs) 0) :height (d/parse-integer (:height attrs) 0)})))] - (reduce-nodes redfn [] svg-data ))) + (reduce-nodes redfn [] svg-data))) #?(:clj (defn- secure-parser-factory diff --git a/common/src/app/common/svg/path/bool.cljc b/common/src/app/common/svg/path/bool.cljc index 10f8fdffe..11fe314a8 100644 --- a/common/src/app/common/svg/path/bool.cljc +++ b/common/src/app/common/svg/path/bool.cljc @@ -292,8 +292,8 @@ (let [;; We need to reverse the second path when making a difference/intersection/exclude ;; and both shapes are in the same direction should-reverse? (and (not= :union bool-type) - (= (ups/clockwise? content-b) - (ups/clockwise? content-a))) + (= (ups/clockwise? content-b) + (ups/clockwise? content-a))) content-a (-> content-a (close-paths) diff --git a/common/src/app/common/svg/path/command.cljc b/common/src/app/common/svg/path/command.cljc index 7dd91e2a5..b048d8524 100644 --- a/common/src/app/common/svg/path/command.cljc +++ b/common/src/app/common/svg/path/command.cljc @@ -159,8 +159,8 @@ point->handlers (content->handlers content) handlers (->> point - (point->handlers ) - (filter (fn [[ci cp]] (and (not= index ci) (not= prefix cp)) )))] + (point->handlers) + (filter (fn [[ci cp]] (and (not= index ci) (not= prefix cp)))))] (cond (= (count handlers) 1) diff --git a/common/src/app/common/svg/path/legacy_parser1.cljs b/common/src/app/common/svg/path/legacy_parser1.cljs index 70acc5824..7f7dc0d81 100644 --- a/common/src/app/common/svg/path/legacy_parser1.cljs +++ b/common/src/app/common/svg/path/legacy_parser1.cljs @@ -107,8 +107,7 @@ [:c2x :number] [:c2y :number] [:x :number] - [:y :number]]) - ] + [:y :number]])] (for [params param-list] {:command :curve-to :relative relative @@ -228,7 +227,7 @@ (d/update-in-when [:params :y] + (:y prev-pos)) (cond-> - (= :line-to-horizontal (:command command)) + (= :line-to-horizontal (:command command)) (d/update-in-when [:params :value] + (:x prev-pos)) (= :line-to-vertical (:command command)) diff --git a/common/src/app/common/svg/path/legacy_parser2.cljc b/common/src/app/common/svg/path/legacy_parser2.cljc index fab3f8102..cbd7a4999 100644 --- a/common/src/app/common/svg/path/legacy_parser2.cljc +++ b/common/src/app/common/svg/path/legacy_parser2.cljc @@ -132,8 +132,7 @@ [:c2x :number] [:c2y :number] [:x :number] - [:y :number]]) - ] + [:y :number]])] (for [params param-list] {:command :curve-to :relative relative @@ -254,8 +253,7 @@ dtheta (unit-vector-angle v1x v1y v2x v2y) dtheta (if (and (= fs 0) (> dtheta 0)) (- dtheta (* mth/PI 2)) dtheta) - dtheta (if (and (= fs 1) (< dtheta 0)) (+ dtheta (* mth/PI 2)) dtheta) - ] + dtheta (if (and (= fs 1) (< dtheta 0)) (+ dtheta (* mth/PI 2)) dtheta)] [cx cy theta1 dtheta])) @@ -302,8 +300,7 @@ (and (zero? rx) (zero? ry))) [] - (let [ - rx (mth/abs rx) + (let [rx (mth/abs rx) ry (mth/abs ry) lambda (+ (/ (* x1p x1p) (* rx rx)) (/ (* y1p y1p) (* ry ry))) @@ -380,7 +377,7 @@ (d/update-in-when [:params :y] + (:y prev-pos)) (cond-> - (= :line-to-horizontal (:command command)) + (= :line-to-horizontal (:command command)) (d/update-in-when [:params :value] + (:x prev-pos)) (= :line-to-vertical (:command command)) diff --git a/common/src/app/common/text.cljc b/common/src/app/common/text.cljc index d95500f7d..35e220ab5 100644 --- a/common/src/app/common/text.cljc +++ b/common/src/app/common/text.cljc @@ -273,29 +273,29 @@ "Given a root node of a text content extracts the texts with its associated styles" [node] (letfn - [(rec-style-text-map [acc node style] - (let [node-style (merge style (select-keys node text-attrs)) - head (or (-> acc first) [{} ""]) - [head-style head-text] head + [(rec-style-text-map [acc node style] + (let [node-style (merge style (select-keys node text-attrs)) + head (or (-> acc first) [{} ""]) + [head-style head-text] head - new-acc - (cond - (:children node) - (reduce #(rec-style-text-map %1 %2 node-style) acc (:children node)) + new-acc + (cond + (:children node) + (reduce #(rec-style-text-map %1 %2 node-style) acc (:children node)) - (not= head-style node-style) - (cons [node-style (:text node "")] acc) + (not= head-style node-style) + (cons [node-style (:text node "")] acc) - :else - (cons [node-style (dm/str head-text "" (:text node))] (rest acc))) + :else + (cons [node-style (dm/str head-text "" (:text node))] (rest acc))) ;; We add an end-of-line when finish a paragraph - new-acc - (if (= (:type node) "paragraph") - (let [[hs ht] (first new-acc)] - (cons [hs (dm/str ht "\n")] (rest new-acc))) - new-acc)] - new-acc))] + new-acc + (if (= (:type node) "paragraph") + (let [[hs ht] (first new-acc)] + (cons [hs (dm/str ht "\n")] (rest new-acc))) + new-acc)] + new-acc))] (-> (rec-style-text-map [] node {}) reverse))) diff --git a/common/src/app/common/transit.cljc b/common/src/app/common/transit.cljc index 057a1593d..93ab8d4b2 100644 --- a/common/src/app/common/transit.cljc +++ b/common/src/app/common/transit.cljc @@ -6,14 +6,14 @@ (ns app.common.transit (:require + #?(:clj [datoteka.fs :as fs]) + #?(:cljs ["luxon" :as lxn]) [app.common.data :as d] [app.common.uri :as uri] [cognitect.transit :as t] [lambdaisland.uri :as luri] [linked.core :as lk] - [linked.set :as lks] - #?(:clj [datoteka.fs :as fs]) - #?(:cljs ["luxon" :as lxn])) + [linked.set :as lks]) #?(:clj (:import java.io.ByteArrayInputStream diff --git a/common/src/app/common/types/color.cljc b/common/src/app/common/types/color.cljc index 035f0dfae..00823c631 100644 --- a/common/src/app/common/types/color.cljc +++ b/common/src/app/common/types/color.cljc @@ -6,14 +6,14 @@ (ns app.common.types.color (:require - [app.common.data :as d] - [app.common.schema :as sm] - [app.common.schema.openapi :as-alias oapi] - [app.common.text :as txt] - [app.common.types.color.generic :as-alias color-generic] - [app.common.types.color.gradient :as-alias color-gradient] - [app.common.types.color.gradient.stop :as-alias color-gradient-stop] - [clojure.test.check.generators :as tgen])) + [app.common.data :as d] + [app.common.schema :as sm] + [app.common.schema.openapi :as-alias oapi] + [app.common.text :as txt] + [app.common.types.color.generic :as-alias color-generic] + [app.common.types.color.gradient :as-alias color-gradient] + [app.common.types.color.gradient.stop :as-alias color-gradient-stop] + [clojure.test.check.generators :as tgen])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SCHEMAS diff --git a/common/src/app/common/types/components_list.cljc b/common/src/app/common/types/components_list.cljc index 916450e43..1eefe3021 100644 --- a/common/src/app/common/types/components_list.cljc +++ b/common/src/app/common/types/components_list.cljc @@ -87,10 +87,10 @@ (get-component file-data component-id false)) ([file-data component-id include-deleted?] - (let [component (get-in file-data [:components component-id])] - (when (or include-deleted? - (not (:deleted component))) - component)))) + (let [component (get-in file-data [:components component-id])] + (when (or include-deleted? + (not (:deleted component))) + component)))) (defn get-deleted-component [file-data component-id] diff --git a/common/src/app/common/types/file.cljc b/common/src/app/common/types/file.cljc index a0fce3c93..9cefc0c79 100644 --- a/common/src/app/common/types/file.cljc +++ b/common/src/app/common/types/file.cljc @@ -270,7 +270,7 @@ (ctkl/update-component component-id #(dissoc % :objects)) (ctkl/mark-component-undeleted component-id) (cond-> update-page? - (ctkl/update-component component-id #(assoc % :main-instance-page page-id)))))) + (ctkl/update-component component-id #(assoc % :main-instance-page page-id)))))) (defn purge-component "Remove permanently a component." diff --git a/common/src/app/common/types/modifiers.cljc b/common/src/app/common/types/modifiers.cljc index 4a61effb5..5b2b2fe5d 100644 --- a/common/src/app/common/types/modifiers.cljc +++ b/common/src/app/common/types/modifiers.cljc @@ -42,27 +42,27 @@ ;; * change-properties (defrecord Modifiers - [last-order ;; Last `order` attribute in the geometry list - geometry-parent - geometry-child - structure-parent - structure-child]) + [last-order ;; Last `order` attribute in the geometry list + geometry-parent + geometry-child + structure-parent + structure-child]) (defrecord GeometricOperation - [order ;; Need the order to keep consistent between geometry-parent and geometry-child - type - vector - origin - transform - transform-inverse - rotation - center]) + [order ;; Need the order to keep consistent between geometry-parent and geometry-child + type + vector + origin + transform + transform-inverse + rotation + center]) (defrecord StructureOperation - [type - property - value - index]) + [type + property + value + index]) ;; Record constructors @@ -599,8 +599,8 @@ "Transforms a matrix by the translation modifier" [matrix modifier] (-> (dm/get-prop modifier :vector) - (gmt/translate-matrix) - (gmt/multiply! matrix))) + (gmt/translate-matrix) + (gmt/multiply! matrix))) (defn transform-resize! @@ -656,8 +656,7 @@ [modifiers] (let [modifiers (concat (dm/get-prop modifiers :geometry-parent) (dm/get-prop modifiers :geometry-child)) - modifiers (sort-by #(dm/get-prop % :order) modifiers) - ] + modifiers (sort-by #(dm/get-prop % :order) modifiers)] (modifiers->transform1 modifiers))) (defn modifiers->transform-old diff --git a/common/src/app/common/types/shape.cljc b/common/src/app/common/types/shape.cljc index ea39f91f0..fb6df4067 100644 --- a/common/src/app/common/types/shape.cljc +++ b/common/src/app/common/types/shape.cljc @@ -194,8 +194,7 @@ [:vector {:gen/max 1} ::ctss/shadow]] [:blur {:optional true} ::ctsb/blur] [:grow-type {:optional true} - [::sm/one-of #{:auto-width :auto-height :fixed}]] - ]) + [::sm/one-of #{:auto-width :auto-height :fixed}]]]) (sm/define! ::group-attrs [:map {:title "GroupAttrs"} @@ -351,8 +350,8 @@ (defn has-images? [{:keys [fills strokes]}] (or - (some :fill-image fills) - (some :stroke-image strokes))) + (some :fill-image fills) + (some :stroke-image strokes))) ;; --- Initialization diff --git a/common/src/app/common/types/shape/interactions.cljc b/common/src/app/common/types/shape/interactions.cljc index 99290303d..215ab1aa5 100644 --- a/common/src/app/common/types/shape/interactions.cljc +++ b/common/src/app/common/types/shape/interactions.cljc @@ -270,7 +270,7 @@ (defn has-destination [interaction] (#{:navigate :open-overlay :toggle-overlay :close-overlay} - (:action-type interaction))) + (:action-type interaction))) (defn destination? [interaction] diff --git a/common/src/app/common/types/shape/layout.cljc b/common/src/app/common/types/shape/layout.cljc index 745cd941e..43e446978 100644 --- a/common/src/app/common/types/shape/layout.cljc +++ b/common/src/app/common/types/shape/layout.cljc @@ -1054,7 +1054,7 @@ (->> (cells-seq parent :sort? true) (reduce (fn [[parent auto?] cell] - + (let [[cell auto?] (cond (and (empty? (:shapes cell)) @@ -1067,7 +1067,7 @@ (not= (:column-span cell) 1)) (= :auto (:position cell))) [(assoc cell :position :manual) false] - + (empty? (:shapes cell)) [cell false] @@ -1129,9 +1129,7 @@ (defn assign-cells [parent objects] (prn ">assign-cells") - (let [ - - parent (assign-cell-positions parent objects) + (let [parent (assign-cell-positions parent objects) shape-has-cell? (into #{} (mapcat (comp :shapes second)) (:layout-grid-cells parent)) diff --git a/common/src/app/common/types/typography.cljc b/common/src/app/common/types/typography.cljc index 8602f3573..4fe5c9565 100644 --- a/common/src/app/common/types/typography.cljc +++ b/common/src/app/common/types/typography.cljc @@ -6,8 +6,8 @@ (ns app.common.types.typography (:require - [app.common.schema :as sm] - [app.common.text :as txt])) + [app.common.schema :as sm] + [app.common.text :as txt])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SCHEMA @@ -44,8 +44,8 @@ :content ;; Check if any node in the content has a reference for the library (txt/node-seq - #(and (some? (:typography-ref-id %)) - (= (:typography-ref-file %) library-id)))))) + #(and (some? (:typography-ref-id %)) + (= (:typography-ref-file %) library-id)))))) (defn uses-library-typography? "Check if the shape uses the given library typography." @@ -55,8 +55,8 @@ :content ;; Check if any node in the content has a reference for the library (txt/node-seq - #(and (= (:typography-ref-id %) typography-id) - (= (:typography-ref-file %) library-id)))))) + #(and (= (:typography-ref-id %) typography-id) + (= (:typography-ref-file %) library-id)))))) (defn remap-typographies "Change the shape so that any use of the given typography now points to diff --git a/common/src/app/common/uuid.cljc b/common/src/app/common/uuid.cljc index a474e9bb8..b205c6453 100644 --- a/common/src/app/common/uuid.cljc +++ b/common/src/app/common/uuid.cljc @@ -8,10 +8,10 @@ (ns app.common.uuid (:refer-clojure :exclude [next uuid zero? short]) (:require - [app.common.data.macros :as dm] #?(:clj [clojure.core :as c]) #?(:cljs [app.common.uuid-impl :as impl]) - #?(:cljs [cljs.core :as c])) + #?(:cljs [cljs.core :as c]) + [app.common.data.macros :as dm]) #?(:clj (:import app.common.UUIDv8 java.util.UUID diff --git a/common/test/common_tests/colors_test.cljc b/common/test/common_tests/colors_test.cljc index a37e481fe..74a3ef946 100644 --- a/common/test/common_tests/colors_test.cljc +++ b/common/test/common_tests/colors_test.cljc @@ -6,10 +6,10 @@ (ns common-tests.colors-test (:require - [app.common.data :as d] + #?(:cljs [goog.color :as gcolors]) [app.common.colors :as colors] - [clojure.test :as t] - #?(:cljs [goog.color :as gcolors]))) + [app.common.data :as d] + [clojure.test :as t])) (t/deftest valid-hex-color (t/is (false? (colors/valid-hex-color? nil))) @@ -18,16 +18,14 @@ (t/is (false? (colors/valid-hex-color? "#qqqqqq"))) (t/is (true? (colors/valid-hex-color? "#aaa"))) (t/is (false? (colors/valid-hex-color? "#aaaa"))) - (t/is (true? (colors/valid-hex-color? "#fabada"))) - ) + (t/is (true? (colors/valid-hex-color? "#fabada")))) (t/deftest valid-rgb-color (t/is (false? (colors/valid-rgb-color? nil))) (t/is (false? (colors/valid-rgb-color? ""))) (t/is (false? (colors/valid-rgb-color? "()"))) (t/is (true? (colors/valid-rgb-color? "(255, 30, 30)"))) - (t/is (true? (colors/valid-rgb-color? "rgb(255, 30, 30)"))) - ) + (t/is (true? (colors/valid-rgb-color? "rgb(255, 30, 30)")))) (t/deftest rgb-to-str (t/is (= "rgb(1,2,3)" (colors/rgb->str [1 2 3]))) @@ -37,16 +35,14 @@ ;; (prn (colors/rgb->hsv [1 2 3])) ;; (prn (gcolors/rgbToHsv 1 2 3)) (t/is (= [210.0 0.6666666666666666 3.0] (colors/rgb->hsv [1.0 2.0 3.0]))) - #?(:cljs (t/is (= (colors/rgb->hsv [1 2 3]) (vec (gcolors/rgbToHsv 1 2 3))))) - ) + #?(:cljs (t/is (= (colors/rgb->hsv [1 2 3]) (vec (gcolors/rgbToHsv 1 2 3)))))) (t/deftest hsv-to-rgb (t/is (= [1 2 3] (colors/hsv->rgb [210 0.6666666666666666 3]))) #?(:cljs (t/is (= (colors/hsv->rgb [210 0.6666666666666666 3]) - (vec (gcolors/hsvToRgb 210 0.6666666666666666 3))))) - ) + (vec (gcolors/hsvToRgb 210 0.6666666666666666 3)))))) (t/deftest rgb-to-hex (t/is (= "#010203" (colors/rgb->hex [1 2 3])))) @@ -68,9 +64,7 @@ (t/is (= [1 2 3] (colors/hsl->rgb [210.0 0.5 0.00784313725490196]))) (t/is (= [210.0 0.5 0.00784313725490196] (colors/rgb->hsl [1 2 3]))) #?(:cljs (t/is (= (colors/hsl->rgb [210 0.5 0.00784313725490196]) - (vec (gcolors/hslToRgb 210 0.5 0.00784313725490196))))) - - ) + (vec (gcolors/hslToRgb 210 0.5 0.00784313725490196)))))) (t/deftest expand-hex (t/is (= "aaaaaa" (colors/expand-hex "a"))) @@ -93,8 +87,5 @@ (t/is (true? (colors/color-string? "magenta"))) (t/is (false? (colors/color-string? nil))) (t/is (false? (colors/color-string? ""))) - (t/is (false? (colors/color-string? "kkkkkk"))) - - - ) + (t/is (false? (colors/color-string? "kkkkkk")))) diff --git a/common/test/common_tests/data_test.cljc b/common/test/common_tests/data_test.cljc index 10a3f830f..686ae8980 100644 --- a/common/test/common_tests/data_test.cljc +++ b/common/test/common_tests/data_test.cljc @@ -30,8 +30,7 @@ (d/remove-at-index [5 1 2 3 4] 0))) (t/is (= [1 2 3 4] - (d/remove-at-index [1 5 2 3 4] 1))) - ) + (d/remove-at-index [1 5 2 3 4] 1)))) (t/deftest with-next (t/is (= [[0 1] [1 2] [2 3] [3 4] [4 nil]] diff --git a/common/test/common_tests/files_migrations_test.cljc b/common/test/common_tests/files_migrations_test.cljc index 6e4ee7add..3ae1d5fd0 100644 --- a/common/test/common_tests/files_migrations_test.cljc +++ b/common/test/common_tests/files_migrations_test.cljc @@ -71,14 +71,14 @@ :version 7} expect (-> data - (update-in [:pages-index page-id :objects] dissoc - (uuid/custom 1 2) - (uuid/custom 1 3) - (uuid/custom 1 4)) - (update-in [:pages-index page-id :objects (uuid/custom 1 1) :shapes] - (fn [shapes] - (let [id (uuid/custom 1 2)] - (into [] (remove #(= id %)) shapes))))) + (update-in [:pages-index page-id :objects] dissoc + (uuid/custom 1 2) + (uuid/custom 1 3) + (uuid/custom 1 4)) + (update-in [:pages-index page-id :objects (uuid/custom 1 1) :shapes] + (fn [shapes] + (let [id (uuid/custom 1 2)] + (into [] (remove #(= id %)) shapes))))) res (cpm/migrate-data data 8)] @@ -86,5 +86,4 @@ ;; (pprint expect) (t/is (= (dissoc expect :version) - (dissoc res :version))) - )) + (dissoc res :version))))) diff --git a/common/test/common_tests/geom_point_test.cljc b/common/test/common_tests/geom_point_test.cljc index 9be0bc153..0490e1d02 100644 --- a/common/test/common_tests/geom_point_test.cljc +++ b/common/test/common_tests/geom_point_test.cljc @@ -6,8 +6,8 @@ (ns common-tests.geom-point-test (:require - [app.common.math :as mth] [app.common.geom.point :as gpt] + [app.common.math :as mth] [clojure.test :as t])) (t/deftest add-points @@ -62,8 +62,7 @@ (t/is (gpt/close? rs p1))) (let [rs (gpt/min p2 p1)] - (t/is (gpt/close? rs p1))) - )) + (t/is (gpt/close? rs p1))))) (t/deftest max-point (let [p1 (gpt/point 1 2) @@ -85,8 +84,7 @@ (t/is (gpt/close? rs p2))) (let [rs (gpt/max p2 p1)] - (t/is (gpt/close? rs p2))) - )) + (t/is (gpt/close? rs p2))))) (t/deftest inverse-point (let [p1 (gpt/point 1 2) @@ -154,8 +152,7 @@ p2 (gpt/point 1 5) rs (gpt/angle-sign p1 p2)] (t/is (number? rs)) - (t/is (mth/close? -1 rs))) - ) + (t/is (mth/close? -1 rs)))) (t/deftest update-angle (let [p1 (gpt/point 1 3) @@ -184,8 +181,7 @@ (let [p1 (gpt/point -1 -3) rs (gpt/quadrant p1)] (t/is (number? rs)) - (t/is (mth/close? 3 rs))) - ) + (t/is (mth/close? 3 rs)))) (t/deftest round-point (let [p1 (gpt/point 1.34567 3.34567) @@ -198,8 +194,7 @@ rs (gpt/round p1 2)] (t/is (gpt/point? rs)) (t/is (mth/close? 1.35 (:x rs))) - (t/is (mth/close? 3.35 (:y rs)))) - ) + (t/is (mth/close? 3.35 (:y rs))))) (t/deftest halft-round-point (let [p1 (gpt/point 1.34567 3.34567) diff --git a/common/test/common_tests/geom_shapes_test.cljc b/common/test/common_tests/geom_shapes_test.cljc index 4e4ea3829..14ecc3fab 100644 --- a/common/test/common_tests/geom_shapes_test.cljc +++ b/common/test/common_tests/geom_shapes_test.cljc @@ -41,9 +41,9 @@ (t/deftest transform-shapes (t/testing "Shape without modifiers should stay the same" (t/are [type] - (let [shape-before (create-test-shape type) - shape-after (gsh/transform-shape shape-before)] - (= shape-before shape-after)) + (let [shape-before (create-test-shape type) + shape-after (gsh/transform-shape shape-before)] + (= shape-before shape-after)) :rect :path)) @@ -65,49 +65,48 @@ (get-in shape-after [:selrect :width]))) (t/is (close? (get-in shape-before [:selrect :height]) - (get-in shape-after [:selrect :height]))) - ))) + (get-in shape-after [:selrect :height])))))) (t/testing "Transform with empty translation" (t/are [type] - (let [modifiers {:displacement (gmt/matrix)} - shape-before (create-test-shape type {:modifiers modifiers}) - shape-after (gsh/transform-shape shape-before)] - (t/are [prop] - (t/is (close? (get-in shape-before [:selrect prop]) - (get-in shape-after [:selrect prop]))) - :x :y :width :height :x1 :y1 :x2 :y2)) + (let [modifiers {:displacement (gmt/matrix)} + shape-before (create-test-shape type {:modifiers modifiers}) + shape-after (gsh/transform-shape shape-before)] + (t/are [prop] + (t/is (close? (get-in shape-before [:selrect prop]) + (get-in shape-after [:selrect prop]))) + :x :y :width :height :x1 :y1 :x2 :y2)) :rect :path)) (t/testing "Transform shape with resize modifiers" (t/are [type] - (let [modifiers (ctm/resize-modifiers (gpt/point 2 2) (gpt/point 0 0)) - shape-before (create-test-shape type {:modifiers modifiers}) - shape-after (gsh/transform-shape shape-before)] - (t/is (not= shape-before shape-after)) + (let [modifiers (ctm/resize-modifiers (gpt/point 2 2) (gpt/point 0 0)) + shape-before (create-test-shape type {:modifiers modifiers}) + shape-after (gsh/transform-shape shape-before)] + (t/is (not= shape-before shape-after)) - (t/is (close? (get-in shape-before [:selrect :x]) - (get-in shape-after [:selrect :x]))) + (t/is (close? (get-in shape-before [:selrect :x]) + (get-in shape-after [:selrect :x]))) - (t/is (close? (get-in shape-before [:selrect :y]) - (get-in shape-after [:selrect :y]))) + (t/is (close? (get-in shape-before [:selrect :y]) + (get-in shape-after [:selrect :y]))) - (t/is (close? (* 2 (get-in shape-before [:selrect :width])) - (get-in shape-after [:selrect :width]))) + (t/is (close? (* 2 (get-in shape-before [:selrect :width])) + (get-in shape-after [:selrect :width]))) - (t/is (close? (* 2 (get-in shape-before [:selrect :height])) - (get-in shape-after [:selrect :height])))) + (t/is (close? (* 2 (get-in shape-before [:selrect :height])) + (get-in shape-after [:selrect :height])))) :rect :path)) (t/testing "Transform with empty resize" (t/are [type] - (let [modifiers (ctm/resize-modifiers (gpt/point 1 1) (gpt/point 0 0)) - shape-before (create-test-shape type {:modifiers modifiers}) - shape-after (gsh/transform-shape shape-before)] - (t/are [prop] - (t/is (close? (get-in shape-before [:selrect prop]) - (get-in shape-after [:selrect prop]))) - :x :y :width :height :x1 :y1 :x2 :y2)) + (let [modifiers (ctm/resize-modifiers (gpt/point 1 1) (gpt/point 0 0)) + shape-before (create-test-shape type {:modifiers modifiers}) + shape-after (gsh/transform-shape shape-before)] + (t/are [prop] + (t/is (close? (get-in shape-before [:selrect prop]) + (get-in shape-after [:selrect prop]))) + :x :y :width :height :x1 :y1 :x2 :y2)) :rect :path)) (t/testing "Transform with resize=0" @@ -118,54 +117,52 @@ (t/is (close? (get-in shape-before [:selrect :width]) (get-in shape-after [:selrect :width]))) (t/is (close? (get-in shape-before [:selrect :height]) - (get-in shape-after [:selrect :height]))))) + (get-in shape-after [:selrect :height]))))) (t/testing "Transform shape with rotation modifiers" (t/are [type] - (let [shape-before (create-test-shape type) - modifiers (ctm/rotation-modifiers shape-before (gsh/shape->center shape-before) 30) - shape-before (assoc shape-before :modifiers modifiers) - shape-after (gsh/transform-shape shape-before)] + (let [shape-before (create-test-shape type) + modifiers (ctm/rotation-modifiers shape-before (gsh/shape->center shape-before) 30) + shape-before (assoc shape-before :modifiers modifiers) + shape-after (gsh/transform-shape shape-before)] - (t/is (close? (get-in shape-before [:selrect :x]) - (get-in shape-after [:selrect :x]))) + (t/is (close? (get-in shape-before [:selrect :x]) + (get-in shape-after [:selrect :x]))) - (t/is (close? (get-in shape-before [:selrect :y]) - (get-in shape-after [:selrect :y]))) + (t/is (close? (get-in shape-before [:selrect :y]) + (get-in shape-after [:selrect :y]))) - (t/is (= (count (:points shape-before)) (count (:points shape-after)))) + (t/is (= (count (:points shape-before)) (count (:points shape-after)))) - (for [idx (range 0 (count (:point shape-before)))] - (do (t/is (not (close? (get-in shape-before [:points idx :x]) - (get-in shape-after [:points idx :x])))) - (t/is (not (close? (get-in shape-before [:points idx :y]) - (get-in shape-after [:points idx :y]))))))) + (for [idx (range 0 (count (:point shape-before)))] + (do (t/is (not (close? (get-in shape-before [:points idx :x]) + (get-in shape-after [:points idx :x])))) + (t/is (not (close? (get-in shape-before [:points idx :y]) + (get-in shape-after [:points idx :y]))))))) :rect :path)) (t/testing "Transform shape with rotation = 0 should leave equal selrect" (t/are [type] - (let [shape-before (create-test-shape type) - modifiers (ctm/rotation-modifiers shape-before (gsh/shape->center shape-before) 0) - shape-after (gsh/transform-shape (assoc shape-before :modifiers modifiers))] - (t/are [prop] - (t/is (close? (get-in shape-before [:selrect prop]) - (get-in shape-after [:selrect prop]))) - :x :y :width :height :x1 :y1 :x2 :y2)) + (let [shape-before (create-test-shape type) + modifiers (ctm/rotation-modifiers shape-before (gsh/shape->center shape-before) 0) + shape-after (gsh/transform-shape (assoc shape-before :modifiers modifiers))] + (t/are [prop] + (t/is (close? (get-in shape-before [:selrect prop]) + (get-in shape-after [:selrect prop]))) + :x :y :width :height :x1 :y1 :x2 :y2)) :rect :path)) (t/testing "Transform shape with invalid selrect fails gracefully" (t/are [type selrect] - (let [modifiers (ctm/move-modifiers 0 0) - shape-before (create-test-shape type {:selrect selrect}) - shape-after (gsh/transform-shape shape-before modifiers)] + (let [modifiers (ctm/move-modifiers 0 0) + shape-before (create-test-shape type {:selrect selrect}) + shape-after (gsh/transform-shape shape-before modifiers)] - (t/is (grc/close-rect? (:selrect shape-before) - (:selrect shape-after)))) + (t/is (grc/close-rect? (:selrect shape-before) + (:selrect shape-after)))) :rect (grc/make-rect 0 0 ##Inf ##Inf) - :path (grc/make-rect 0 0 ##Inf ##Inf) - )) - ) + :path (grc/make-rect 0 0 ##Inf ##Inf)))) (t/deftest points-to-selrect (let [points [(gpt/point 0.5 0.5) @@ -185,8 +182,8 @@ (t/deftest points-transform-matrix (t/testing "Transform matrix" (t/are [selrect points expected] - (let [result (gsht/transform-points-matrix selrect points)] - (t/is (gmt/close? expected result))) + (let [result (gsht/transform-points-matrix selrect points)] + (t/is (gmt/close? expected result))) ;; No transformation (grc/make-rect 0 0 10 10) @@ -197,7 +194,7 @@ ;; Displacement (grc/make-rect 0 0 10 10) (-> (grc/make-rect 20 20 10 10) - (grc/rect->points )) + (grc/rect->points)) (gmt/matrix 1 0 0 1 20 20) ;; Resize @@ -234,5 +231,4 @@ (t/is (true? (gsin/fast-has-point? shape point1))) (t/is (true? (gsin/slow-has-point? shape point1))) (t/is (false? (gsin/fast-has-point? shape point2))) - (t/is (false? (gsin/fast-has-point? shape point2))) - )) + (t/is (false? (gsin/fast-has-point? shape point2))))) diff --git a/common/test/common_tests/geom_test.cljc b/common/test/common_tests/geom_test.cljc index 36d99267d..b0d336475 100644 --- a/common/test/common_tests/geom_test.cljc +++ b/common/test/common_tests/geom_test.cljc @@ -6,10 +6,10 @@ (ns common-tests.geom-test (:require - [clojure.test :as t] - [app.common.math :as mth] + [app.common.geom.matrix :as gmt] [app.common.geom.point :as gpt] - [app.common.geom.matrix :as gmt])) + [app.common.math :as mth] + [clojure.test :as t])) (t/deftest point-constructors-test (t/testing "Create point with both coordinates" diff --git a/common/test/common_tests/helpers/components.cljc b/common/test/common_tests/helpers/components.cljc index ce49b355d..f842d2dc2 100644 --- a/common/test/common_tests/helpers/components.cljc +++ b/common/test/common_tests/helpers/components.cljc @@ -6,11 +6,11 @@ (ns common-tests.helpers.components (:require - [clojure.test :as t] [app.common.files.helpers :as cfh] [app.common.types.component :as ctk] [app.common.types.container :as ctn] - [app.common.types.file :as ctf])) + [app.common.types.file :as ctf] + [clojure.test :as t])) ;; ---- Helpers to manage libraries and synchronization @@ -99,7 +99,7 @@ main-shape (ctn/get-shape component (:shape-ref shape))] - (t/is (some? main-shape))))] + (t/is (some? main-shape))))] ;; Validate that the instance tree is well constructed (check-instance-root (first shapes-inst)) @@ -135,7 +135,7 @@ main-shape (ctn/get-shape component (:shape-ref shape))] - (t/is (some? main-shape))))] + (t/is (some? main-shape))))] ;; Validate that the instance tree is well constructed (check-instance-root (first shapes-inst)) diff --git a/common/test/common_tests/helpers/files.cljc b/common/test/common_tests/helpers/files.cljc index 3da07f3a7..3f27d7021 100644 --- a/common/test/common_tests/helpers/files.cljc +++ b/common/test/common_tests/helpers/files.cljc @@ -45,111 +45,111 @@ (defn sample-shape [file label type page-id props] (ctf/update-file-data - file - (fn [file-data] - (let [frame-id (get props :frame-id uuid/zero) - parent-id (get props :parent-id uuid/zero) - shape (cts/setup-shape - (-> {:type type - :width 1 - :height 1} - (merge props)))] + file + (fn [file-data] + (let [frame-id (get props :frame-id uuid/zero) + parent-id (get props :parent-id uuid/zero) + shape (cts/setup-shape + (-> {:type type + :width 1 + :height 1} + (merge props)))] - (swap! idmap assoc label (:id shape)) - (ctpl/update-page file-data - page-id - #(ctst/add-shape (:id shape) - shape - % - frame-id - parent-id - 0 - true)))))) + (swap! idmap assoc label (:id shape)) + (ctpl/update-page file-data + page-id + #(ctst/add-shape (:id shape) + shape + % + frame-id + parent-id + 0 + true)))))) (defn sample-component [file label page-id shape-id] (ctf/update-file-data - file - (fn [file-data] - (let [page (ctpl/get-page file-data page-id) + file + (fn [file-data] + (let [page (ctpl/get-page file-data page-id) - [component-shape component-shapes updated-shapes] - (ctn/make-component-shape (ctn/get-shape page shape-id) - (:objects page) - (:id file) - true)] + [component-shape component-shapes updated-shapes] + (ctn/make-component-shape (ctn/get-shape page shape-id) + (:objects page) + (:id file) + true)] - (swap! idmap assoc label (:id component-shape)) - (-> file-data - (ctpl/update-page page-id - #(reduce (fn [page shape] (ctst/set-shape page shape)) - % - updated-shapes)) - (ctkl/add-component {:id (:id component-shape) - :name (:name component-shape) - :path "" - :main-instance-id shape-id - :main-instance-page page-id - :shapes component-shapes})))))) + (swap! idmap assoc label (:id component-shape)) + (-> file-data + (ctpl/update-page page-id + #(reduce (fn [page shape] (ctst/set-shape page shape)) + % + updated-shapes)) + (ctkl/add-component {:id (:id component-shape) + :name (:name component-shape) + :path "" + :main-instance-id shape-id + :main-instance-page page-id + :shapes component-shapes})))))) (defn sample-instance [file label page-id library component-id] (ctf/update-file-data - file - (fn [file-data] - (let [[instance-shape instance-shapes] - (ctn/make-component-instance (ctpl/get-page file-data page-id) - (ctkl/get-component (:data library) component-id) - (:data library) - (gpt/point 0 0) - true)] + file + (fn [file-data] + (let [[instance-shape instance-shapes] + (ctn/make-component-instance (ctpl/get-page file-data page-id) + (ctkl/get-component (:data library) component-id) + (:data library) + (gpt/point 0 0) + true)] - (swap! idmap assoc label (:id instance-shape)) - (-> file-data - (ctpl/update-page page-id - #(reduce (fn [page shape] - (ctst/add-shape (:id shape) - shape - page - uuid/zero - (:parent-id shape) - 0 - true)) - % - instance-shapes))))))) + (swap! idmap assoc label (:id instance-shape)) + (-> file-data + (ctpl/update-page page-id + #(reduce (fn [page shape] + (ctst/add-shape (:id shape) + shape + page + uuid/zero + (:parent-id shape) + 0 + true)) + % + instance-shapes))))))) (defn sample-color [file label props] (ctf/update-file-data - file - (fn [file-data] - (let [id (uuid/next) - props (merge {:id id - :name "Color 1" - :color "#000000" - :opacity 1} - props)] - (swap! idmap assoc label id) - (ctcl/add-color file-data props))))) + file + (fn [file-data] + (let [id (uuid/next) + props (merge {:id id + :name "Color 1" + :color "#000000" + :opacity 1} + props)] + (swap! idmap assoc label id) + (ctcl/add-color file-data props))))) (defn sample-typography [file label props] (ctf/update-file-data - file - (fn [file-data] - (let [id (uuid/next) - props (merge {:id id - :name "Typography 1" - :font-id "sourcesanspro" - :font-family "sourcesanspro" - :font-size "14" - :font-style "normal" - :font-variant-id "regular" - :font-weight "400" - :line-height "1.2" - :letter-spacing "0" - :text-transform "none"} - props)] - (swap! idmap assoc label id) - (ctyl/add-typography file-data props))))) + file + (fn [file-data] + (let [id (uuid/next) + props (merge {:id id + :name "Typography 1" + :font-id "sourcesanspro" + :font-family "sourcesanspro" + :font-size "14" + :font-style "normal" + :font-variant-id "regular" + :font-weight "400" + :line-height "1.2" + :letter-spacing "0" + :text-transform "none"} + props)] + (swap! idmap assoc label id) + (ctyl/add-typography file-data props))))) diff --git a/common/test/common_tests/pages_helpers_test.cljc b/common/test/common_tests/pages_helpers_test.cljc index 76eed5d7d..a15f677bb 100644 --- a/common/test/common_tests/pages_helpers_test.cljc +++ b/common/test/common_tests/pages_helpers_test.cljc @@ -6,9 +6,9 @@ (ns common-tests.pages-helpers-test (:require - [clojure.test :as t] + [app.common.files.helpers :as cfh] [clojure.pprint :refer [pprint]] - [app.common.files.helpers :as cfh])) + [clojure.test :as t])) (t/deftest parse-path-name (t/is (= ["foo" "bar"] (cfh/parse-path-name "foo/bar"))) diff --git a/common/test/common_tests/pages_test.cljc b/common/test/common_tests/pages_test.cljc index 88a969e0b..146242c26 100644 --- a/common/test/common_tests/pages_test.cljc +++ b/common/test/common_tests/pages_test.cljc @@ -82,8 +82,7 @@ :option [:values :test2] :value nil}] res (ch/process-changes data chgs)] - (t/is (= [:test1] (keys (get-in res [:pages-index page-id :options :values])))))) - )) + (t/is (= [:test1] (keys (get-in res [:pages-index page-id :options :values])))))))) (t/deftest process-change-add-obj (let [file-id (uuid/custom 2 2) @@ -137,8 +136,7 @@ (t/is (not (nil? (get objects id-a)))) (t/is (not (nil? (get objects id-b)))) (t/is (not (nil? (get objects id-c)))) - (t/is (= [id-b id-c id-a] (get-in objects [uuid/zero :shapes])))))) - )) + (t/is (= [id-b id-c id-a] (get-in objects [uuid/zero :shapes])))))))) (t/deftest process-change-mod-obj (let [file-id (uuid/custom 2 2) @@ -164,9 +162,7 @@ :attr :name :val "foobar"}]} res (ch/process-changes data [chg])] - (t/is (= res data)))) - - )) + (t/is (= res data)))))) ;; (t/deftest process-change-del-obj diff --git a/common/test/common_tests/record_test.cljc b/common/test/common_tests/record_test.cljc index 809924cf4..64532078b 100644 --- a/common/test/common_tests/record_test.cljc +++ b/common/test/common_tests/record_test.cljc @@ -50,6 +50,5 @@ (t/is (= 10 (dm/get-prop u :a))) (t/is (= 20 (dm/get-prop u :b))) (t/is (= 124 (:c u))) - (t/is (not= u o))))) - )) + (t/is (not= u o))))))) diff --git a/common/test/common_tests/svg_path_test.cljc b/common/test/common_tests/svg_path_test.cljc index 19140f91e..c9e9adcc8 100644 --- a/common/test/common_tests/svg_path_test.cljc +++ b/common/test/common_tests/svg_path_test.cljc @@ -6,13 +6,13 @@ (ns common-tests.svg-path-test (:require + #?(:cljs [app.common.svg.path.legacy-parser2 :as svg.path.legacy1]) [app.common.data :as d] - [app.common.pprint :as pp] [app.common.math :as mth] + [app.common.pprint :as pp] [app.common.svg.path :as svg.path] [app.common.svg.path.legacy-parser2 :as svg.path.legacy2] - [clojure.test :as t] - #?(:cljs [app.common.svg.path.legacy-parser2 :as svg.path.legacy1]))) + [clojure.test :as t])) (t/deftest parse-test-1 (let [data (str "m -994.563 4564.1423 149.3086 -52.8821 30.1828 " @@ -25,7 +25,7 @@ (update entry :params #(into (sorted-map) %))))) result2 (->> (svg.path.legacy2/parse data) (mapv (fn [entry] - (update entry :params #(into (sorted-map) %))))) + (update entry :params #(into (sorted-map) %))))) result3 #?(:cljs (->> (svg.path.legacy1/parse data) (mapv (fn [entry] @@ -113,7 +113,7 @@ (update entry :params #(into (sorted-map) %))))) result2 (->> (svg.path.legacy2/parse data) (mapv (fn [entry] - (update entry :params #(into (sorted-map) %)))))] + (update entry :params #(into (sorted-map) %)))))] (t/is (= 165 (count result1) @@ -144,7 +144,7 @@ (update entry :params #(into (sorted-map) %))))) result2 (->> (svg.path.legacy2/parse data) (mapv (fn [entry] - (update entry :params #(into (sorted-map) %)))))] + (update entry :params #(into (sorted-map) %)))))] (t/is (= 6 (count result1) @@ -223,7 +223,7 @@ (update entry :params #(into (sorted-map) %))))) result2 (->> (svg.path.legacy2/parse data) (mapv (fn [entry] - (update entry :params #(into (sorted-map) %)))))] + (update entry :params #(into (sorted-map) %)))))] (t/is (= 41 (count result1) @@ -242,8 +242,7 @@ (doseq [[k v] (:params item1)] (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001)) - (t/is (mth/close? v (get-in item3 [:params k]) 0.000000001)) - ))))) + (t/is (mth/close? v (get-in item3 [:params k]) 0.000000001))))))) (t/deftest parse-test-5 (let [data (str "M363 826" @@ -268,15 +267,14 @@ "8.5 8.676 8.5 21.5 0 12.825-8.675 21.325-8.676 8.5-21.5 8.5Zm120 0Q747 886 " "738.5 877.325q-8.5-8.676-8.5-21.5 0-12.825 8.675-21.325 8.676-8.5 21.5-8.5 " "12.825 0 21.325 8.675 8.5 8.676 8.5 21.5 0 12.825-8.675 21.325-8.676 8.5-21.5 " - "8.5Z" - ) + "8.5Z") result1 (->> (svg.path/parse data) (mapv (fn [entry] (update entry :params #(into (sorted-map) %))))) result2 (->> (svg.path.legacy2/parse data) (mapv (fn [entry] - (update entry :params #(into (sorted-map) %)))))] + (update entry :params #(into (sorted-map) %)))))] (t/is (= 76 (count result1) @@ -287,15 +285,13 @@ (dotimes [i (count result1)] (let [item1 (nth result1 i) - item2 (nth result2 i) - ] + item2 (nth result2 i)] (t/is (= (:command item1) (:command item2))) (doseq [[k v] (:params item1)] - (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001)) - ))))) + (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001))))))) (t/deftest parse-test-6 (let [data (str "M3.078 3.548v16.9a.5.5 0 0 0 1 0v-16.9a.5.5 0 0 0-1 0ZM18.422 11.5" @@ -314,7 +310,7 @@ (update entry :params #(into (sorted-map) %))))) result2 (->> (svg.path.legacy2/parse data) (mapv (fn [entry] - (update entry :params #(into (sorted-map) %)))))] + (update entry :params #(into (sorted-map) %)))))] (t/is (= 47 (count result1) @@ -325,15 +321,13 @@ (dotimes [i (count result1)] (let [item1 (nth result1 i) - item2 (nth result2 i) - ] + item2 (nth result2 i)] (t/is (= (:command item1) (:command item2))) (doseq [[k v] (:params item1)] - (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001)) - ))) + (t/is (mth/close? v (get-in item2 [:params k]) 0.000000001))))) #?(:cljs (let [result3 (svg.path.legacy1/parse data)] @@ -346,7 +340,7 @@ item3 (nth result2 i)] (t/is (= (:command item1) - (:command item3))) + (:command item3))) (t/is (= (:params item1) (:params item3))))))))) @@ -414,9 +408,7 @@ (dotimes [i (count result2)] (t/is (mth/close? (nth result2 i) (nth expected2 i) - 0.000000000001))))) - - )) + 0.000000000001))))))) (t/deftest arc-to-bezier-2 (let [expected1 [3.0779999999999994, @@ -486,9 +478,7 @@ (dotimes [i (count result2)] (t/is (mth/close? (nth result2 i) (nth expected2 i) - 0.000000000001))))) - - )) + 0.000000000001))))))) @@ -553,8 +543,7 @@ (t/is (= (nth result 2) (nth expected 2))) (t/is (= (nth result 3) - (nth expected 3))) - )) + (nth expected 3))))) ;; FOR POSSIBLE FUTURE TEST CASES ;; (str "M259.958 89.134c-6.88-.354-10.484-1.241-12.44-3.064-1.871-1.743-6.937-3.098-15.793-4.226-7.171-.913-17.179-2.279-22.24-3.034-5.06-.755-15.252-2.016-22.648-2.8-18.685-1.985-35.63-4.223-38.572-5.096-3.655-1.084-3.016-3.548.708-2.726 1.751.387 13.376 1.701 25.833 2.922 12.456 1.22 29.018 3.114 36.803 4.208 29.94 4.206 29.433 4.204 34.267.136 3.787-3.186 5.669-3.669 14.303-3.669 14.338 0 17.18 1.681 12.182 7.205-2.053 2.268-1.994 2.719.707 5.42 3.828 3.827 3.74 5.846-.238 5.5-1.752-.153-7.544-.502-12.872-.776zm7.563-3.194c0-.778-1.751-1.352-3.892-1.274l-3.893.141 3.539 1.133c1.946.624 3.698 1.197 3.893 1.275.194.077.354-.496.354-1.275zm-15.899-8.493c1.43-2.29 1.414-2.83-.084-2.83-2.05 0-5.25 2.76-5.25 4.529 0 2.226 3.599 1.08 5.334-1.699zm8.114 0c2.486-2.746 2.473-2.83-.438-2.83-1.65 0-3.683 1.273-4.516 2.83-1.175 2.196-1.077 2.831.438 2.831 1.075 0 3.107-1.274 4.516-2.83zm7.814.674c2.858-3.444.476-4.085-3.033-.816-2.451 2.284-2.677 2.973-.975 2.973 1.22 0 3.023-.97 4.008-2.157zm-49.571-4.509c-1.168-.43-3.294-1.802-4.725-3.051-2.112-1.843-9.304-2.595-38.219-3.994-46.474-2.25-63-4.077-60.27-6.665.324-.308 9.507.261 20.406 1.264 10.9 1.003 31.16 2.258 45.024 2.789l25.207.964 4.625-3.527c4.313-3.29 5.41-3.474 16.24-2.732 6.389.438 11.981 1.388 12.428 2.111.447.723-.517 2.73-2.141 4.46l-2.954 3.144c1.607 1.697 3.308 3.289 5.049 4.845 3.248 2.189-5.438 1.289-8.678 1.284-5.428-.061-10.825-.463-11.992-.892zm12.74-3.242c-1.123-.694-2.36-.943-2.75-.554-.389.39.21 1.275 1.334 1.97 1.122.693 2.36.942 2.749.553.389-.39-.21-1.275-1.334-1.97zm-5.663 0a1.42 1.42 0 00-1.415-1.416 1.42 1.42 0 00-1.416 1.416 1.42 1.42 0 001.416 1.415 1.42 1.42 0 001.415-1.415zm-8.464-6.404c.984-1.187 1.35-2.598.813-3.135-1.181-1.18-5.408 1.297-6.184 3.624-.806 2.42 3.265 2.048 5.37-.49zm6.863.258c.867-1.045 1.163-2.313.658-2.819-1.063-1.062-4.719 1.631-4.719 3.476 0 1.864 2.274 1.496 4.061-.657zm8.792-.36c1.637-1.972 1.448-2.197-1.486-1.77-1.848.27-3.622 1.287-3.943 2.26-.838 2.547 3.212 2.181 5.429-.49zm32.443-4.11c-6.156-2.228-67.1-6.138-119.124-7.642-39.208-1.134-72.072-.928-94.618.593-6.617.446-19.681 1.16-29.03 1.587-15.798.72-17.183.573-19.588-2.085-4.498-4.97-2.544-7.857 6.39-9.44 4.394-.778 9.164-2.436 10.6-3.685 5.44-4.729 20.332-14.06 31.14-19.509C65.717 11.88 78.955 7.79 103.837 3.08 121.686-.3 125.552-.642 129.318.82c2.44.948 12.4 1.948 22.132 2.221 15.37.432 20.004 1.18 35.294 5.698 22.36 6.606 39.732 15.1 56.55 27.653 7.307 5.452 14.086 9.913 15.066 9.913.98 0 2.148.956 2.596 2.124.55 1.432 2.798 2.123 6.914 2.123 6.213 0 12.4 3.046 12.38 6.096-.012 1.75-6.502 5.353-9.118 5.063-.818-.09-3.717-.972-6.442-1.958zm-16.986-7.436c0-1.575-33.326-18.118-43.173-21.43-23.008-7.739-54.084-12.922-77.136-12.866-16.863.041-37.877 3.628-52.465 8.956-18.062 6.596-26.563 10.384-29.181 13.002-1.205 1.205-5.306 3.769-9.112 5.698-7.754 3.929-8.841 5.482-3.029 4.325 13.494-2.685 66.794-3.773 110.913-2.264 38.005 1.3 96.812 4.435 102.122 5.443.584.111 1.061-.277 1.061-.864zm-236.39-3.18c0-.78-1.592-1.416-3.539-1.416-1.946 0-3.538.637-3.538 1.415 0 .779 1.592 1.416 3.538 1.416 1.947 0 3.54-.637 3.54-1.416zm7.078-1.416c0-.779-.956-1.416-2.124-1.416-1.167 0-2.123.637-2.123 1.416 0 .778.956 1.415 2.123 1.415 1.168 0 2.124-.637 2.124-1.415zm11.734-4.437c3.278-1.661 6.278-3.483 6.667-4.048 1.366-1.98 20.645-11.231 32.557-15.622 11.862-4.372 36.546-9.865 44.327-9.865 3.485 0 3.867-.404 3.012-3.185-.538-1.752-1.177-3.41-1.42-3.685-.907-1.026-36.72 7.16-45.065 10.302-17.226 6.484-47.566 24.27-47.566 27.886 0 1.786.845 1.585 7.488-1.783zm206.254-5.577c-12.298-10.518-53.842-27.166-70.896-28.41-5.526-.404-6.3-.097-6.695 2.655-.33 2.307.402 3.275 2.831 3.742 32.436 6.237 52.205 12.315 66.975 20.594 11.904 6.673 14.477 7.141 7.785 1.419zM150.1 11.04c-1.949-3.64-7.568-4.078-6.886-.538.256 1.329 2.054 2.817 3.997 3.309 4.498 1.137 4.816.832 2.888-2.771zm6.756.94c-.248-1.752-1.026-3.185-1.727-3.185-.7 0-1.493 1.433-1.76 3.185-.328 2.152.232 3.185 1.727 3.185 1.485 0 2.064-1.047 1.76-3.185zm-30.178-2.458c0-2.303-.908-3.694-2.627-4.025-3.6-.694-5.23 1.301-4.22 5.166 1.216 4.647 6.847 3.709 6.847-1.14zm12.544 2.104c-.448-1.168-1.224-2.132-1.725-2.142-.5-.013-2.343-.404-4.095-.873-2.569-.689-3.185-.274-3.185 2.142 0 2.476.854 2.996 4.91 2.996 3.783 0 4.723-.487 4.095-2.123z") diff --git a/common/test/common_tests/text_test.cljc b/common/test/common_tests/text_test.cljc index 3c9fb6935..1e346b8ac 100644 --- a/common/test/common_tests/text_test.cljc +++ b/common/test/common_tests/text_test.cljc @@ -8,8 +8,8 @@ (:require [app.common.data :as d] [app.common.text :as txt] - [clojure.test :as t :include-macros true] - [clojure.pprint :refer [pprint]])) + [clojure.pprint :refer [pprint]] + [clojure.test :as t :include-macros true])) (t/deftest test-basic-conversion-roundtrip (let [text "qwqw 🠒" diff --git a/common/test/common_tests/types_file_test.cljc b/common/test/common_tests/types_file_test.cljc index 5bb1abb79..bc76f87da 100644 --- a/common/test/common_tests/types_file_test.cljc +++ b/common/test/common_tests/types_file_test.cljc @@ -28,51 +28,51 @@ (t/use-fixtures :each thf/reset-idmap!) #_(t/deftest test-absorb-components - (let [library-id (uuid/custom 1 1) - library-page-id (uuid/custom 2 2) - file-id (uuid/custom 3 3) - file-page-id (uuid/custom 4 4) + (let [library-id (uuid/custom 1 1) + library-page-id (uuid/custom 2 2) + file-id (uuid/custom 3 3) + file-page-id (uuid/custom 4 4) - library (-> (thf/sample-file library-id library-page-id {:is-shared true}) - (thf/sample-shape :group1 - :group - library-page-id - {:name "Group1"}) - (thf/sample-shape :shape1 - :rect - library-page-id - {:name "Rect1" - :parent-id (thf/id :group1)}) - (thf/sample-component :component1 - library-page-id - (thf/id :group1))) + library (-> (thf/sample-file library-id library-page-id {:is-shared true}) + (thf/sample-shape :group1 + :group + library-page-id + {:name "Group1"}) + (thf/sample-shape :shape1 + :rect + library-page-id + {:name "Rect1" + :parent-id (thf/id :group1)}) + (thf/sample-component :component1 + library-page-id + (thf/id :group1))) - file (-> (thf/sample-file file-id file-page-id) - (thf/sample-instance :instance1 - file-page-id - library - (thf/id :component1))) + file (-> (thf/sample-file file-id file-page-id) + (thf/sample-instance :instance1 + file-page-id + library + (thf/id :component1))) - absorbed-file (ctf/update-file-data - file - #(ctf/absorb-assets % (:data library))) + absorbed-file (ctf/update-file-data + file + #(ctf/absorb-assets % (:data library))) - pages (ctpl/pages-seq (ctf/file-data absorbed-file)) - components (ctkl/components-seq (ctf/file-data absorbed-file)) - shapes-1 (ctn/shapes-seq (first pages)) - shapes-2 (ctn/shapes-seq (second pages)) + pages (ctpl/pages-seq (ctf/file-data absorbed-file)) + components (ctkl/components-seq (ctf/file-data absorbed-file)) + shapes-1 (ctn/shapes-seq (first pages)) + shapes-2 (ctn/shapes-seq (second pages)) - [[p-group p-shape] [c-group1 c-shape1] component1] - (thk/resolve-instance-and-main - (first pages) - (:id (second shapes-1)) - {file-id absorbed-file}) + [[p-group p-shape] [c-group1 c-shape1] component1] + (thk/resolve-instance-and-main + (first pages) + (:id (second shapes-1)) + {file-id absorbed-file}) - [[lp-group lp-shape] [c-group2 c-shape2] component2] - (thk/resolve-instance-and-main - (second pages) - (:id (second shapes-2)) - {file-id absorbed-file})] + [[lp-group lp-shape] [c-group2 c-shape2] component2] + (thk/resolve-instance-and-main + (second pages) + (:id (second shapes-2)) + {file-id absorbed-file})] ;; Uncomment to debug @@ -100,20 +100,20 @@ ;; {file-id absorbed-file} ;; false) - (t/is (= (count pages) 2)) - (t/is (= (:name (first pages)) "Page 1")) - (t/is (= (:name (second pages)) "Library backup")) + (t/is (= (count pages) 2)) + (t/is (= (:name (first pages)) "Page 1")) + (t/is (= (:name (second pages)) "Library backup")) - (t/is (= (count components) 1)) + (t/is (= (count components) 1)) - (t/is (= (:name p-group) "Group1")) - (t/is (ctk/instance-of? p-group file-id (:id component1))) - (t/is (not (:main-instance? p-group))) - (t/is (not (ctk/main-instance-of? (:id p-group) file-page-id component1))) - (t/is (ctk/is-main-of? c-group1 p-group)) + (t/is (= (:name p-group) "Group1")) + (t/is (ctk/instance-of? p-group file-id (:id component1))) + (t/is (not (:main-instance? p-group))) + (t/is (not (ctk/main-instance-of? (:id p-group) file-page-id component1))) + (t/is (ctk/is-main-of? c-group1 p-group)) - (t/is (= (:name p-shape) "Rect1")) - (t/is (ctk/is-main-of? c-shape1 p-shape)))) + (t/is (= (:name p-shape) "Rect1")) + (t/is (ctk/is-main-of? c-shape1 p-shape)))) (t/deftest test-absorb-colors @@ -137,8 +137,8 @@ :fill-color-ref-file library-id}]})) absorbed-file (ctf/update-file-data - file - #(ctf/absorb-assets % (:data library))) + file + #(ctf/absorb-assets % (:data library))) colors (ctcl/colors-seq (ctf/file-data absorbed-file)) page (ctpl/get-page (ctf/file-data absorbed-file) file-page-id) @@ -187,11 +187,10 @@ :text-decoration "none" :letter-spacing "0" :fills [{:fill-color "#000000" - :fill-opacity 1}]}] - }]}]}})) + :fill-opacity 1}]}]}]}]}})) absorbed-file (ctf/update-file-data - file - #(ctf/absorb-assets % (:data library))) + file + #(ctf/absorb-assets % (:data library))) typographies (ctyl/typographies-seq (ctf/file-data absorbed-file)) page (ctpl/get-page (ctf/file-data absorbed-file) file-page-id) diff --git a/common/test/common_tests/types_modifiers_test.cljc b/common/test/common_tests/types_modifiers_test.cljc index 24d6e47a9..740d49628 100644 --- a/common/test/common_tests/types_modifiers_test.cljc +++ b/common/test/common_tests/types_modifiers_test.cljc @@ -6,10 +6,10 @@ (ns common-tests.types-modifiers-test (:require - [clojure.test :as t] [app.common.geom.matrix :as gmt] [app.common.geom.point :as gpt] - [app.common.types.modifiers :as ctm])) + [app.common.types.modifiers :as ctm] + [clojure.test :as t])) (t/deftest test-modifiers->transform (let [modifiers diff --git a/common/test/common_tests/types_shape_interactions_test.cljc b/common/test/common_tests/types_shape_interactions_test.cljc index 289ca7544..5a699278d 100644 --- a/common/test/common_tests/types_shape_interactions_test.cljc +++ b/common/test/common_tests/types_shape_interactions_test.cljc @@ -6,11 +6,11 @@ (ns common-tests.types-shape-interactions-test (:require - [app.common.math :as mth] [app.common.exceptions :as ex] [app.common.geom.point :as gpt] [app.common.geom.rect :as grc] [app.common.geom.shapes :as gsh] + [app.common.math :as mth] [app.common.types.shape :as cts] [app.common.types.shape.interactions :as ctsi] [app.common.uuid :as uuid] @@ -48,8 +48,7 @@ new-interaction (ctsi/set-event-type interaction :after-delay frame)] (t/is (= :after-delay (:event-type new-interaction))) - (t/is (= 300 (:delay new-interaction))))) - )) + (t/is (= 300 (:delay new-interaction))))))) (t/deftest set-action-type diff --git a/common/test/common_tests/types_test.cljc b/common/test/common_tests/types_test.cljc index d0c217c4c..e5326250d 100644 --- a/common/test/common_tests/types_test.cljc +++ b/common/test/common_tests/types_test.cljc @@ -6,13 +6,13 @@ (ns common-tests.types-test (:require - [clojure.test :as t] [app.common.schema :as sm] [app.common.schema.generators :as sg] [app.common.transit :as transit] - [app.common.types.shape :as cts] + [app.common.types.file :as ctf] [app.common.types.page :as ctp] - [app.common.types.file :as ctf])) + [app.common.types.shape :as cts] + [clojure.test :as t])) (t/deftest transit-encode-decode-with-shape (sg/check!