mirror of
https://github.com/penpot/penpot.git
synced 2025-02-25 16:25:56 -05:00
Merge pull request #2459 from penpot/hiru-refactor-types
♻️ Move internal.xxx namespaces to separated files
This commit is contained in:
commit
aaf645bad4
17 changed files with 298 additions and 224 deletions
|
@ -8,7 +8,7 @@
|
||||||
(:require
|
(:require
|
||||||
[app.common.spec :as us]
|
[app.common.spec :as us]
|
||||||
[app.common.types.color :as ctc]
|
[app.common.types.color :as ctc]
|
||||||
[app.common.types.file :as ctf]
|
[app.common.types.file.media-object :as ctfm]
|
||||||
[app.common.types.page :as ctp]
|
[app.common.types.page :as ctp]
|
||||||
[app.common.types.shape :as cts]
|
[app.common.types.shape :as cts]
|
||||||
[app.common.types.typography :as ctt]
|
[app.common.types.typography :as ctt]
|
||||||
|
@ -126,7 +126,7 @@
|
||||||
(s/keys :req-un [:internal.changes.add-recent-color/color]))
|
(s/keys :req-un [:internal.changes.add-recent-color/color]))
|
||||||
|
|
||||||
|
|
||||||
(s/def :internal.changes.add-media/object ::ctf/media-object)
|
(s/def :internal.changes.add-media/object ::ctfm/media-object)
|
||||||
(defmethod change-spec :add-media [_]
|
(defmethod change-spec :add-media [_]
|
||||||
(s/keys :req-un [:internal.changes.add-media/object]))
|
(s/keys :req-un [:internal.changes.add-media/object]))
|
||||||
|
|
||||||
|
|
|
@ -9,77 +9,77 @@
|
||||||
[app.common.data :as d]
|
[app.common.data :as d]
|
||||||
[app.common.spec :as us]
|
[app.common.spec :as us]
|
||||||
[app.common.text :as txt]
|
[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.spec.alpha :as s]))
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
;; TODO: waiting clojure 1.11 to rename this all :internal.stuff to a
|
|
||||||
;; more consistent name.
|
|
||||||
|
|
||||||
;; TODO: maybe define ::color-hex-string with proper hex color spec?
|
;; TODO: maybe define ::color-hex-string with proper hex color spec?
|
||||||
|
|
||||||
;; --- GRADIENTS
|
;; --- GRADIENTS
|
||||||
|
|
||||||
(s/def ::id uuid?)
|
(s/def ::id uuid?)
|
||||||
|
|
||||||
(s/def :internal.gradient.stop/color string?)
|
(s/def ::color-gradient/type #{:linear :radial})
|
||||||
(s/def :internal.gradient.stop/opacity ::us/safe-number)
|
(s/def ::color-gradient/start-x ::us/safe-number)
|
||||||
(s/def :internal.gradient.stop/offset ::us/safe-number)
|
(s/def ::color-gradient/start-y ::us/safe-number)
|
||||||
|
(s/def ::color-gradient/end-x ::us/safe-number)
|
||||||
|
(s/def ::color-gradient/end-y ::us/safe-number)
|
||||||
|
(s/def ::color-gradient/width ::us/safe-number)
|
||||||
|
|
||||||
(s/def :internal.gradient/type #{:linear :radial})
|
(s/def ::color-gradient-stop/color string?)
|
||||||
(s/def :internal.gradient/start-x ::us/safe-number)
|
(s/def ::color-gradient-stop/opacity ::us/safe-number)
|
||||||
(s/def :internal.gradient/start-y ::us/safe-number)
|
(s/def ::color-gradient-stop/offset ::us/safe-number)
|
||||||
(s/def :internal.gradient/end-x ::us/safe-number)
|
|
||||||
(s/def :internal.gradient/end-y ::us/safe-number)
|
|
||||||
(s/def :internal.gradient/width ::us/safe-number)
|
|
||||||
|
|
||||||
(s/def :internal.gradient/stop
|
(s/def ::color-gradient/stop
|
||||||
(s/keys :req-un [:internal.gradient.stop/color
|
(s/keys :req-un [::color-gradient-stop/color
|
||||||
:internal.gradient.stop/opacity
|
::color-gradient-stop/opacity
|
||||||
:internal.gradient.stop/offset]))
|
::color-gradient-stop/offset]))
|
||||||
|
|
||||||
(s/def :internal.gradient/stops
|
(s/def ::color-gradient/stops
|
||||||
(s/coll-of :internal.gradient/stop :kind vector?))
|
(s/coll-of ::color-gradient/stop :kind vector?))
|
||||||
|
|
||||||
(s/def ::gradient
|
(s/def ::gradient
|
||||||
(s/keys :req-un [:internal.gradient/type
|
(s/keys :req-un [::color-gradient/type
|
||||||
:internal.gradient/start-x
|
::color-gradient/start-x
|
||||||
:internal.gradient/start-y
|
::color-gradient/start-y
|
||||||
:internal.gradient/end-x
|
::color-gradient/end-x
|
||||||
:internal.gradient/end-y
|
::color-gradient/end-y
|
||||||
:internal.gradient/width
|
::color-gradient/width
|
||||||
:internal.gradient/stops]))
|
::color-gradient/stops]))
|
||||||
|
|
||||||
;; --- COLORS
|
;; --- COLORS
|
||||||
|
|
||||||
(s/def :internal.color/name string?)
|
(s/def ::color-generic/name string?)
|
||||||
(s/def :internal.color/path (s/nilable string?))
|
(s/def ::color-generic/path (s/nilable string?))
|
||||||
(s/def :internal.color/value (s/nilable string?))
|
(s/def ::color-generic/value (s/nilable string?))
|
||||||
(s/def :internal.color/color (s/nilable string?))
|
(s/def ::color-generic/color (s/nilable string?))
|
||||||
(s/def :internal.color/opacity (s/nilable ::us/safe-number))
|
(s/def ::color-generic/opacity (s/nilable ::us/safe-number))
|
||||||
(s/def :internal.color/gradient (s/nilable ::gradient))
|
(s/def ::color-generic/gradient (s/nilable ::gradient))
|
||||||
(s/def :internal.color/ref-id uuid?)
|
(s/def ::color-generic/ref-id uuid?)
|
||||||
(s/def :internal.color/ref-file uuid?)
|
(s/def ::color-generic/ref-file uuid?)
|
||||||
|
|
||||||
(s/def ::shape-color
|
(s/def ::shape-color
|
||||||
(s/keys :req-un [:us/color
|
(s/keys :req-un [:us/color
|
||||||
:internal.color/opacity]
|
::color-generic/opacity]
|
||||||
:opt-un [:internal.color/gradient
|
:opt-un [::color-generic/gradient
|
||||||
:internal.color/ref-id
|
::color-generic/ref-id
|
||||||
:internal.color/ref-file]))
|
::color-generic/ref-file]))
|
||||||
|
|
||||||
(s/def ::color
|
(s/def ::color
|
||||||
(s/keys :opt-un [::id
|
(s/keys :opt-un [::id
|
||||||
:internal.color/name
|
::color-generic/name
|
||||||
:internal.color/path
|
::color-generic/path
|
||||||
:internal.color/value
|
::color-generic/value
|
||||||
:internal.color/color
|
::color-generic/color
|
||||||
:internal.color/opacity
|
::color-generic/opacity
|
||||||
:internal.color/gradient]))
|
::color-generic/gradient]))
|
||||||
|
|
||||||
(s/def ::recent-color
|
(s/def ::recent-color
|
||||||
(s/keys :opt-un [:internal.color/value
|
(s/keys :opt-un [::color-generic/value
|
||||||
:internal.color/color
|
::color-generic/color
|
||||||
:internal.color/opacity
|
::color-generic/opacity
|
||||||
:internal.color/gradient]))
|
::color-generic/gradient]))
|
||||||
|
|
||||||
;; --- Helpers for color in different parts of a shape
|
;; --- Helpers for color in different parts of a shape
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,12 @@
|
||||||
[app.common.geom.shapes :as gsh]
|
[app.common.geom.shapes :as gsh]
|
||||||
[app.common.pages.common :refer [file-version]]
|
[app.common.pages.common :refer [file-version]]
|
||||||
[app.common.pages.helpers :as cph]
|
[app.common.pages.helpers :as cph]
|
||||||
[app.common.spec :as us]
|
|
||||||
[app.common.types.color :as ctc]
|
[app.common.types.color :as ctc]
|
||||||
[app.common.types.colors-list :as ctcl]
|
[app.common.types.colors-list :as ctcl]
|
||||||
[app.common.types.component :as ctk]
|
[app.common.types.component :as ctk]
|
||||||
[app.common.types.components-list :as ctkl]
|
[app.common.types.components-list :as ctkl]
|
||||||
[app.common.types.container :as ctn]
|
[app.common.types.container :as ctn]
|
||||||
|
[app.common.types.file.media-object :as ctfm]
|
||||||
[app.common.types.page :as ctp]
|
[app.common.types.page :as ctp]
|
||||||
[app.common.types.pages-list :as ctpl]
|
[app.common.types.pages-list :as ctpl]
|
||||||
[app.common.types.shape-tree :as ctst]
|
[app.common.types.shape-tree :as ctst]
|
||||||
|
@ -28,24 +28,6 @@
|
||||||
|
|
||||||
;; Specs
|
;; Specs
|
||||||
|
|
||||||
(s/def :internal.media-object/name string?)
|
|
||||||
(s/def :internal.media-object/width ::us/safe-integer)
|
|
||||||
(s/def :internal.media-object/height ::us/safe-integer)
|
|
||||||
(s/def :internal.media-object/mtype string?)
|
|
||||||
|
|
||||||
;; NOTE: This is marked as nilable for backward compatibility, but
|
|
||||||
;; right now is just exists or not exists. We can thin in a gradual
|
|
||||||
;; migration and then mark it as not nilable.
|
|
||||||
(s/def :internal.media-object/path (s/nilable string?))
|
|
||||||
|
|
||||||
(s/def ::media-object
|
|
||||||
(s/keys :req-un [::id
|
|
||||||
::name
|
|
||||||
:internal.media-object/width
|
|
||||||
:internal.media-object/height
|
|
||||||
:internal.media-object/mtype]
|
|
||||||
:opt-un [:internal.media-object/path]))
|
|
||||||
|
|
||||||
(s/def ::colors
|
(s/def ::colors
|
||||||
(s/map-of uuid? ::ctc/color))
|
(s/map-of uuid? ::ctc/color))
|
||||||
|
|
||||||
|
@ -59,7 +41,7 @@
|
||||||
(s/coll-of uuid? :kind vector?))
|
(s/coll-of uuid? :kind vector?))
|
||||||
|
|
||||||
(s/def ::media
|
(s/def ::media
|
||||||
(s/map-of uuid? ::media-object))
|
(s/map-of uuid? ::ctfm/media-object))
|
||||||
|
|
||||||
(s/def ::pages-index
|
(s/def ::pages-index
|
||||||
(s/map-of uuid? ::ctp/page))
|
(s/map-of uuid? ::ctp/page))
|
||||||
|
|
30
common/src/app/common/types/file/media_object.cljc
Normal file
30
common/src/app/common/types/file/media_object.cljc
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns app.common.types.file.media-object
|
||||||
|
(:require
|
||||||
|
[app.common.spec :as us]
|
||||||
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
|
(s/def ::id uuid?)
|
||||||
|
(s/def ::name string?)
|
||||||
|
(s/def ::width ::us/safe-integer)
|
||||||
|
(s/def ::height ::us/safe-integer)
|
||||||
|
(s/def ::mtype string?)
|
||||||
|
|
||||||
|
;; NOTE: This is marked as nilable for backward compatibility, but
|
||||||
|
;; right now is just exists or not exists. We can thin in a gradual
|
||||||
|
;; migration and then mark it as not nilable.
|
||||||
|
(s/def ::path (s/nilable string?))
|
||||||
|
|
||||||
|
(s/def ::media-object
|
||||||
|
(s/keys :req-un [::id
|
||||||
|
::name
|
||||||
|
::width
|
||||||
|
::height
|
||||||
|
::mtype]
|
||||||
|
:opt-un [::path]))
|
||||||
|
|
|
@ -7,85 +7,24 @@
|
||||||
(ns app.common.types.page
|
(ns app.common.types.page
|
||||||
(:require
|
(:require
|
||||||
[app.common.data :as d]
|
[app.common.data :as d]
|
||||||
[app.common.spec :as us]
|
[app.common.types.page.flow :as ctpf]
|
||||||
|
[app.common.types.page.grid :as ctpg]
|
||||||
|
[app.common.types.page.guide :as ctpu]
|
||||||
[app.common.types.shape :as cts]
|
[app.common.types.shape :as cts]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[clojure.spec.alpha :as s]))
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
;; --- Grid options
|
;; --- Background color
|
||||||
|
|
||||||
(s/def :internal.grid.color/color string?)
|
|
||||||
(s/def :internal.grid.color/opacity ::us/safe-number)
|
|
||||||
|
|
||||||
(s/def :internal.grid/size (s/nilable ::us/safe-integer))
|
|
||||||
(s/def :internal.grid/item-length (s/nilable ::us/safe-number))
|
|
||||||
|
|
||||||
(s/def :internal.grid/color (s/keys :req-un [:internal.grid.color/color
|
|
||||||
:internal.grid.color/opacity]))
|
|
||||||
(s/def :internal.grid/type #{:stretch :left :center :right})
|
|
||||||
(s/def :internal.grid/gutter (s/nilable ::us/safe-integer))
|
|
||||||
(s/def :internal.grid/margin (s/nilable ::us/safe-integer))
|
|
||||||
|
|
||||||
(s/def :internal.grid/square
|
|
||||||
(s/keys :req-un [:internal.grid/size
|
|
||||||
:internal.grid/color]))
|
|
||||||
|
|
||||||
(s/def :internal.grid/column
|
|
||||||
(s/keys :req-un [:internal.grid/color]
|
|
||||||
:opt-un [:internal.grid/size
|
|
||||||
:internal.grid/type
|
|
||||||
:internal.grid/item-length
|
|
||||||
:internal.grid/margin
|
|
||||||
:internal.grid/gutter]))
|
|
||||||
|
|
||||||
(s/def :internal.grid/row :internal.grid/column)
|
|
||||||
|
|
||||||
(s/def ::saved-grids
|
|
||||||
(s/keys :opt-un [:internal.grid/square
|
|
||||||
:internal.grid/row
|
|
||||||
:internal.grid/column]))
|
|
||||||
|
|
||||||
;; --- Background options
|
|
||||||
|
|
||||||
(s/def ::background string?)
|
(s/def ::background string?)
|
||||||
|
|
||||||
;; --- Flow options
|
;; --- Page options
|
||||||
|
|
||||||
(s/def :internal.flow/id uuid?)
|
|
||||||
(s/def :internal.flow/name string?)
|
|
||||||
(s/def :internal.flow/starting-frame uuid?)
|
|
||||||
|
|
||||||
(s/def ::flow
|
|
||||||
(s/keys :req-un [:internal.flow/id
|
|
||||||
:internal.flow/name
|
|
||||||
:internal.flow/starting-frame]))
|
|
||||||
|
|
||||||
(s/def ::flows
|
|
||||||
(s/coll-of ::flow :kind vector?))
|
|
||||||
|
|
||||||
;; --- Guides
|
|
||||||
|
|
||||||
(s/def :internal.guides/id uuid?)
|
|
||||||
(s/def :internal.guides/axis #{:x :y})
|
|
||||||
(s/def :internal.guides/position ::us/safe-number)
|
|
||||||
(s/def :internal.guides/frame-id (s/nilable uuid?))
|
|
||||||
|
|
||||||
(s/def ::guide
|
|
||||||
(s/keys :req-un [:internal.guides/id
|
|
||||||
:internal.guides/axis
|
|
||||||
:internal.guides/position]
|
|
||||||
:opt-un [:internal.guides/frame-id]))
|
|
||||||
|
|
||||||
(s/def ::guides
|
|
||||||
(s/map-of uuid? ::guide))
|
|
||||||
|
|
||||||
;; --- Page Options
|
|
||||||
|
|
||||||
(s/def ::options
|
(s/def ::options
|
||||||
(s/keys :opt-un [::background
|
(s/keys :opt-un [::background
|
||||||
::saved-grids
|
::ctpg/saved-grids
|
||||||
::flows
|
::ctpf/flows
|
||||||
::guides]))
|
::ctpu/guides]))
|
||||||
|
|
||||||
;; --- Page
|
;; --- Page
|
||||||
|
|
||||||
|
|
24
common/src/app/common/types/page/flow.cljc
Normal file
24
common/src/app/common/types/page/flow.cljc
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns app.common.types.page.flow
|
||||||
|
(:require
|
||||||
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
|
;; --- Interaction Flows
|
||||||
|
|
||||||
|
(s/def ::id uuid?)
|
||||||
|
(s/def ::name string?)
|
||||||
|
(s/def ::starting-frame uuid?)
|
||||||
|
|
||||||
|
(s/def ::flow
|
||||||
|
(s/keys :req-un [::id
|
||||||
|
::name
|
||||||
|
::starting-frame]))
|
||||||
|
|
||||||
|
(s/def ::flows
|
||||||
|
(s/coll-of ::flow :kind vector?))
|
||||||
|
|
46
common/src/app/common/types/page/grid.cljc
Normal file
46
common/src/app/common/types/page/grid.cljc
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns app.common.types.page.grid
|
||||||
|
(:require
|
||||||
|
[app.common.spec :as us]
|
||||||
|
[app.common.types.page.grid.color :as-alias grid-color]
|
||||||
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
|
;; --- Board grids
|
||||||
|
|
||||||
|
|
||||||
|
(s/def ::grid-color/color string?)
|
||||||
|
(s/def ::grid-color/opacity ::us/safe-number)
|
||||||
|
|
||||||
|
(s/def ::size (s/nilable ::us/safe-integer))
|
||||||
|
(s/def ::item-length (s/nilable ::us/safe-number))
|
||||||
|
|
||||||
|
(s/def ::color (s/keys :req-un [::grid-color/color
|
||||||
|
::grid-color/opacity]))
|
||||||
|
(s/def ::type #{:stretch :left :center :right})
|
||||||
|
(s/def ::gutter (s/nilable ::us/safe-integer))
|
||||||
|
(s/def ::margin (s/nilable ::us/safe-integer))
|
||||||
|
|
||||||
|
(s/def ::square
|
||||||
|
(s/keys :req-un [::size
|
||||||
|
::color]))
|
||||||
|
|
||||||
|
(s/def ::column
|
||||||
|
(s/keys :req-un [::color]
|
||||||
|
:opt-un [::size
|
||||||
|
::type
|
||||||
|
::item-length
|
||||||
|
::margin
|
||||||
|
::gutter]))
|
||||||
|
|
||||||
|
(s/def ::row ::column)
|
||||||
|
|
||||||
|
(s/def ::saved-grids
|
||||||
|
(s/keys :opt-un [::square
|
||||||
|
::row
|
||||||
|
::column]))
|
||||||
|
|
27
common/src/app/common/types/page/guide.cljc
Normal file
27
common/src/app/common/types/page/guide.cljc
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns app.common.types.page.guide
|
||||||
|
(:require
|
||||||
|
[app.common.spec :as us]
|
||||||
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
|
;; --- Page guides
|
||||||
|
|
||||||
|
(s/def ::id uuid?)
|
||||||
|
(s/def ::axis #{:x :y})
|
||||||
|
(s/def ::position ::us/safe-number)
|
||||||
|
(s/def ::frame-id (s/nilable uuid?))
|
||||||
|
|
||||||
|
(s/def ::guide
|
||||||
|
(s/keys :req-un [::id
|
||||||
|
::axis
|
||||||
|
::position]
|
||||||
|
:opt-un [::frame-id]))
|
||||||
|
|
||||||
|
(s/def ::guides
|
||||||
|
(s/map-of uuid? ::guide))
|
||||||
|
|
|
@ -19,8 +19,10 @@
|
||||||
[app.common.types.shape.export :as ctse]
|
[app.common.types.shape.export :as ctse]
|
||||||
[app.common.types.shape.interactions :as ctsi]
|
[app.common.types.shape.interactions :as ctsi]
|
||||||
[app.common.types.shape.layout :as ctsl]
|
[app.common.types.shape.layout :as ctsl]
|
||||||
|
[app.common.types.shape.path :as ctsp]
|
||||||
[app.common.types.shape.radius :as ctsr]
|
[app.common.types.shape.radius :as ctsr]
|
||||||
[app.common.types.shape.shadow :as ctss]
|
[app.common.types.shape.shadow :as ctss]
|
||||||
|
[app.common.types.shape.text :as ctsx]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[clojure.set :as set]
|
[clojure.set :as set]
|
||||||
[clojure.spec.alpha :as s]))
|
[clojure.spec.alpha :as s]))
|
||||||
|
@ -229,74 +231,6 @@
|
||||||
::opacity
|
::opacity
|
||||||
::blend-mode])))
|
::blend-mode])))
|
||||||
|
|
||||||
(s/def :internal.shape.text/type #{"root" "paragraph-set" "paragraph"})
|
|
||||||
(s/def :internal.shape.text/children
|
|
||||||
(s/coll-of :internal.shape.text/content
|
|
||||||
:kind vector?
|
|
||||||
:min-count 1))
|
|
||||||
|
|
||||||
(s/def :internal.shape.text/text string?)
|
|
||||||
(s/def :internal.shape.text/key string?)
|
|
||||||
|
|
||||||
(s/def :internal.shape.text/content
|
|
||||||
(s/nilable
|
|
||||||
(s/or :text-container
|
|
||||||
(s/keys :req-un [:internal.shape.text/type]
|
|
||||||
:opt-un [:internal.shape.text/key
|
|
||||||
:internal.shape.text/children])
|
|
||||||
:text-content
|
|
||||||
(s/keys :req-un [:internal.shape.text/text]))))
|
|
||||||
|
|
||||||
(s/def :internal.shape.text/position-data
|
|
||||||
(s/coll-of :internal.shape.text/position-data-element
|
|
||||||
:kind vector?
|
|
||||||
:min-count 1))
|
|
||||||
|
|
||||||
(s/def :internal.shape.text/position-data-element
|
|
||||||
(s/keys :req-un [:internal.shape.text.position-data/x
|
|
||||||
:internal.shape.text.position-data/y
|
|
||||||
:internal.shape.text.position-data/width
|
|
||||||
:internal.shape.text.position-data/height]
|
|
||||||
:opt-un [:internal.shape.text.position-data/fill-color
|
|
||||||
:internal.shape.text.position-data/fill-opacity
|
|
||||||
:internal.shape.text.position-data/font-family
|
|
||||||
:internal.shape.text.position-data/font-size
|
|
||||||
:internal.shape.text.position-data/font-style
|
|
||||||
:internal.shape.text.position-data/font-weight
|
|
||||||
:internal.shape.text.position-data/rtl
|
|
||||||
:internal.shape.text.position-data/text
|
|
||||||
:internal.shape.text.position-data/text-decoration
|
|
||||||
:internal.shape.text.position-data/text-transform]))
|
|
||||||
|
|
||||||
(s/def :internal.shape.text.position-data/x ::us/safe-number)
|
|
||||||
(s/def :internal.shape.text.position-data/y ::us/safe-number)
|
|
||||||
(s/def :internal.shape.text.position-data/width ::us/safe-number)
|
|
||||||
(s/def :internal.shape.text.position-data/height ::us/safe-number)
|
|
||||||
|
|
||||||
(s/def :internal.shape.text.position-data/fill-color ::fill-color)
|
|
||||||
(s/def :internal.shape.text.position-data/fill-opacity ::fill-opacity)
|
|
||||||
(s/def :internal.shape.text.position-data/fill-color-gradient ::fill-color-gradient)
|
|
||||||
|
|
||||||
(s/def :internal.shape.text.position-data/font-family string?)
|
|
||||||
(s/def :internal.shape.text.position-data/font-size string?)
|
|
||||||
(s/def :internal.shape.text.position-data/font-style string?)
|
|
||||||
(s/def :internal.shape.text.position-data/font-weight string?)
|
|
||||||
(s/def :internal.shape.text.position-data/rtl boolean?)
|
|
||||||
(s/def :internal.shape.text.position-data/text string?)
|
|
||||||
(s/def :internal.shape.text.position-data/text-decoration string?)
|
|
||||||
(s/def :internal.shape.text.position-data/text-transform string?)
|
|
||||||
|
|
||||||
(s/def :internal.shape.path/command keyword?)
|
|
||||||
(s/def :internal.shape.path/params
|
|
||||||
(s/nilable (s/map-of keyword? any?)))
|
|
||||||
|
|
||||||
(s/def :internal.shape.path/command-item
|
|
||||||
(s/keys :req-un [:internal.shape.path/command]
|
|
||||||
:opt-un [:internal.shape.path/params]))
|
|
||||||
|
|
||||||
(s/def :internal.shape.path/content
|
|
||||||
(s/coll-of :internal.shape.path/command-item :kind vector?))
|
|
||||||
|
|
||||||
(defmulti shape-spec :type)
|
(defmulti shape-spec :type)
|
||||||
|
|
||||||
(defmethod shape-spec :default [_]
|
(defmethod shape-spec :default [_]
|
||||||
|
@ -304,12 +238,12 @@
|
||||||
|
|
||||||
(defmethod shape-spec :text [_]
|
(defmethod shape-spec :text [_]
|
||||||
(s/and ::shape-attrs
|
(s/and ::shape-attrs
|
||||||
(s/keys :opt-un [:internal.shape.text/content
|
(s/keys :opt-un [::ctsx/content
|
||||||
:internal.shape.text/position-data])))
|
::ctsx/position-data])))
|
||||||
|
|
||||||
(defmethod shape-spec :path [_]
|
(defmethod shape-spec :path [_]
|
||||||
(s/and ::shape-attrs
|
(s/and ::shape-attrs
|
||||||
(s/keys :opt-un [:internal.shape.path/content])))
|
(s/keys :opt-un [::ctsp/content])))
|
||||||
|
|
||||||
(defmethod shape-spec :frame [_]
|
(defmethod shape-spec :frame [_]
|
||||||
(s/and ::shape-attrs
|
(s/and ::shape-attrs
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) UXBOX Labs SL
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.types.shape.blur
|
(ns app.common.types.shape.blur
|
||||||
(:require
|
(:require
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) UXBOX Labs SL
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.types.shape.export
|
(ns app.common.types.shape.export
|
||||||
(:require
|
(:require
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) UXBOX Labs SL
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.types.shape.interactions
|
(ns app.common.types.shape.interactions
|
||||||
(:require
|
(:require
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) UXBOX Labs SL
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.types.shape.layout
|
(ns app.common.types.shape.layout
|
||||||
(:require
|
(:require
|
||||||
|
|
20
common/src/app/common/types/shape/path.cljc
Normal file
20
common/src/app/common/types/shape/path.cljc
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns app.common.types.shape.path
|
||||||
|
(:require
|
||||||
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
|
(s/def ::command keyword?)
|
||||||
|
(s/def ::params (s/nilable (s/map-of keyword? any?)))
|
||||||
|
|
||||||
|
(s/def ::command-item
|
||||||
|
(s/keys :req-un [::command]
|
||||||
|
:opt-un [::params]))
|
||||||
|
|
||||||
|
(s/def ::content
|
||||||
|
(s/coll-of ::command-item :kind vector?))
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) UXBOX Labs SL
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.types.shape.radius
|
(ns app.common.types.shape.radius
|
||||||
(:require
|
(:require
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) UXBOX Labs SL
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.types.shape.shadow
|
(ns app.common.types.shape.shadow
|
||||||
(:require
|
(:require
|
||||||
|
@ -21,7 +21,6 @@
|
||||||
(s/def ::spread ::us/safe-number)
|
(s/def ::spread ::us/safe-number)
|
||||||
(s/def ::hidden boolean?)
|
(s/def ::hidden boolean?)
|
||||||
|
|
||||||
|
|
||||||
(s/def ::color string?)
|
(s/def ::color string?)
|
||||||
(s/def ::opacity ::us/safe-number)
|
(s/def ::opacity ::us/safe-number)
|
||||||
(s/def ::gradient (s/nilable ::ctc/gradient))
|
(s/def ::gradient (s/nilable ::ctc/gradient))
|
||||||
|
@ -36,14 +35,14 @@
|
||||||
::id]))
|
::id]))
|
||||||
|
|
||||||
(s/def ::shadow-props
|
(s/def ::shadow-props
|
||||||
(s/keys :req-un [:internal.shadow/id
|
(s/keys :req-un [::id
|
||||||
:internal.shadow/style
|
::style
|
||||||
:shadow/color
|
::color
|
||||||
:internal.shadow/offset-x
|
::offset-x
|
||||||
:internal.shadow/offset-y
|
::offset-y
|
||||||
:internal.shadow/blur
|
::blur
|
||||||
:internal.shadow/spread
|
::spread
|
||||||
:internal.shadow/hidden]))
|
::hidden]))
|
||||||
|
|
||||||
(s/def ::shadow
|
(s/def ::shadow
|
||||||
(s/coll-of ::shadow-props :kind vector?))
|
(s/coll-of ::shadow-props :kind vector?))
|
||||||
|
|
73
common/src/app/common/types/shape/text.cljc
Normal file
73
common/src/app/common/types/shape/text.cljc
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns app.common.types.shape.text
|
||||||
|
(:require
|
||||||
|
[app.common.spec :as us]
|
||||||
|
[app.common.types.color :as ctc]
|
||||||
|
[app.common.types.shape.text.position-data :as-alias position-data]
|
||||||
|
[clojure.spec.alpha :as s]))
|
||||||
|
|
||||||
|
(s/def ::type #{"root" "paragraph-set" "paragraph"})
|
||||||
|
(s/def ::text string?)
|
||||||
|
(s/def ::key string?)
|
||||||
|
(s/def ::fill-color string?)
|
||||||
|
(s/def ::fill-opacity ::us/safe-number)
|
||||||
|
(s/def ::fill-color-gradient (s/nilable ::ctc/gradient))
|
||||||
|
|
||||||
|
(s/def ::content
|
||||||
|
(s/nilable
|
||||||
|
(s/or :text-container
|
||||||
|
(s/keys :req-un [::type]
|
||||||
|
:opt-un [::key
|
||||||
|
::children])
|
||||||
|
:text-content
|
||||||
|
(s/keys :req-un [::text]))))
|
||||||
|
|
||||||
|
(s/def ::children
|
||||||
|
(s/coll-of ::content
|
||||||
|
:kind vector?
|
||||||
|
:min-count 1))
|
||||||
|
|
||||||
|
(s/def ::position-data
|
||||||
|
(s/coll-of ::position-data-element
|
||||||
|
:kind vector?
|
||||||
|
:min-count 1))
|
||||||
|
|
||||||
|
(s/def ::position-data-element
|
||||||
|
(s/keys :req-un [::position-data/x
|
||||||
|
::position-data/y
|
||||||
|
::position-data/width
|
||||||
|
::position-data/height]
|
||||||
|
:opt-un [::position-data/fill-color
|
||||||
|
::position-data/fill-opacity
|
||||||
|
::position-data/font-family
|
||||||
|
::position-data/font-size
|
||||||
|
::position-data/font-style
|
||||||
|
::position-data/font-weight
|
||||||
|
::position-data/rtl
|
||||||
|
::position-data/text
|
||||||
|
::position-data/text-decoration
|
||||||
|
::position-data/text-transform]))
|
||||||
|
|
||||||
|
(s/def ::position-data/x ::us/safe-number)
|
||||||
|
(s/def ::position-data/y ::us/safe-number)
|
||||||
|
(s/def ::position-data/width ::us/safe-number)
|
||||||
|
(s/def ::position-data/height ::us/safe-number)
|
||||||
|
|
||||||
|
(s/def ::position-data/fill-color ::fill-color)
|
||||||
|
(s/def ::position-data/fill-opacity ::fill-opacity)
|
||||||
|
(s/def ::position-data/fill-color-gradient ::fill-color-gradient)
|
||||||
|
|
||||||
|
(s/def ::position-data/font-family string?)
|
||||||
|
(s/def ::position-data/font-size string?)
|
||||||
|
(s/def ::position-data/font-style string?)
|
||||||
|
(s/def ::position-data/font-weight string?)
|
||||||
|
(s/def ::position-data/rtl boolean?)
|
||||||
|
(s/def ::position-data/text string?)
|
||||||
|
(s/def ::position-data/text-decoration string?)
|
||||||
|
(s/def ::position-data/text-transform string?)
|
||||||
|
|
Loading…
Add table
Reference in a new issue