mirror of
https://github.com/penpot/penpot.git
synced 2025-03-09 06:11:23 -05:00
♻️ Remove ?
char from shape attrs
This commit is contained in:
parent
405aa66357
commit
6e7595f48c
36 changed files with 203 additions and 168 deletions
|
@ -34,7 +34,7 @@ jobs:
|
|||
working_directory: "./frontend"
|
||||
command: |
|
||||
yarn install
|
||||
yarn run lint-scss
|
||||
yarn run lint:scss
|
||||
|
||||
- run:
|
||||
name: common lint
|
||||
|
|
|
@ -217,7 +217,7 @@
|
|||
:id group-id}
|
||||
{:add-container? true})
|
||||
|
||||
(:masked-group? group)
|
||||
(:masked-group group)
|
||||
(let [mask (first children)]
|
||||
(commit-change
|
||||
file
|
||||
|
@ -550,7 +550,7 @@
|
|||
:id component-id
|
||||
:skip-undelete? true})
|
||||
|
||||
(:masked-group? component)
|
||||
(:masked-group component)
|
||||
(let [mask (first children)]
|
||||
(commit-change
|
||||
file
|
||||
|
@ -606,7 +606,7 @@
|
|||
(gpt/point main-instance-x
|
||||
main-instance-y)
|
||||
true
|
||||
{:main-instance? true
|
||||
{:main-instance true
|
||||
:force-id main-instance-id})]
|
||||
(as-> file $
|
||||
(reduce #(commit-change %1
|
||||
|
@ -649,7 +649,7 @@
|
|||
(gpt/point x
|
||||
y)
|
||||
components-v2
|
||||
#_{:main-instance? true
|
||||
#_{:main-instance true
|
||||
:force-id main-instance-id})]
|
||||
|
||||
(as-> file $
|
||||
|
|
|
@ -6,4 +6,4 @@
|
|||
|
||||
(ns app.common.files.defaults)
|
||||
|
||||
(def version 22)
|
||||
(def version 23)
|
||||
|
|
|
@ -490,3 +490,30 @@
|
|||
(-> data
|
||||
(update :pages-index update-vals update-container)
|
||||
(update :components update-vals update-container))))
|
||||
|
||||
(defmethod migrate 23
|
||||
[data]
|
||||
(letfn [(update-object [object]
|
||||
(cond-> object
|
||||
(contains? object :main-instance?)
|
||||
(-> (assoc :main-instance (:main-instance? object))
|
||||
(dissoc :main-instance?))
|
||||
|
||||
(contains? object :component-root?)
|
||||
(-> (assoc :component-root (:component-root? object))
|
||||
(dissoc :component-root?))
|
||||
|
||||
(contains? object :remote-synced?)
|
||||
(-> (assoc :remote-synced (:remote-synced? object))
|
||||
(dissoc :remote-synced?))
|
||||
|
||||
(contains? object :masked-group?)
|
||||
(-> (assoc :masked-group (:masked-group? object))
|
||||
(dissoc :masked-group?))))
|
||||
|
||||
(update-container [container]
|
||||
(d/update-when container :objects update-vals update-object))]
|
||||
|
||||
(-> data
|
||||
(update :pages-index update-vals update-container)
|
||||
(update :components update-vals update-container))))
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
(empty? (:shapes shape))
|
||||
[(calculate-base-bounds shape)]
|
||||
|
||||
(:masked-group? shape)
|
||||
(:masked-group shape)
|
||||
[(calculate-base-bounds shape)]
|
||||
|
||||
(and (cph/frame-shape? shape) (not (:show-content shape)))
|
||||
|
@ -169,7 +169,7 @@
|
|||
(:show-content shape))
|
||||
|
||||
(or (not (cph/group-shape? shape))
|
||||
(not (:masked-group? shape)))))
|
||||
(not (:masked-group shape)))))
|
||||
(:id shape)
|
||||
(fn [result child]
|
||||
(conj result (calculate-base-bounds child)))
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
[:set-remote-synced
|
||||
[:map {:title "SetRemoteSyncedOperation"}
|
||||
[:type [:= :set-remote-synced]]
|
||||
[:remote-synced? [:maybe :boolean]]]]])
|
||||
[:remote-synced {:optional true} [:maybe :boolean]]]]])
|
||||
|
||||
(sm/def! ::change
|
||||
[:schema
|
||||
|
@ -434,7 +434,7 @@
|
|||
(= :bool (:type group))
|
||||
(gsh/update-bool-selrect group children objects)
|
||||
|
||||
(:masked-group? group)
|
||||
(:masked-group group)
|
||||
(set-mask-selrect group children)
|
||||
|
||||
:else
|
||||
|
@ -478,7 +478,7 @@
|
|||
(#{:group :frame} (:type parent))
|
||||
(not ignore-touched))
|
||||
(-> (update :touched cph/set-touched-group :shapes-group)
|
||||
(dissoc :remote-synced?)))))
|
||||
(dissoc :remote-synced)))))
|
||||
|
||||
(remove-from-old-parent [old-objects objects shape-id]
|
||||
(let [prev-parent-id (dm/get-in old-objects [shape-id :parent-id])]
|
||||
|
@ -497,7 +497,7 @@
|
|||
(d/update-in-when [pid :shapes] d/vec-without-nils)
|
||||
(cond-> component? (d/update-when pid #(-> %
|
||||
(update :touched cph/set-touched-group :shapes-group)
|
||||
(dissoc :remote-synced?)))))))))
|
||||
(dissoc :remote-synced)))))))))
|
||||
(update-parent-id [objects id]
|
||||
(-> objects
|
||||
(d/update-when id assoc :parent-id parent-id)))
|
||||
|
@ -679,7 +679,7 @@
|
|||
(and in-copy? group (not ignore) (not equal?)
|
||||
(not (and ignore-geometry is-geometry?)))
|
||||
(-> (update :touched cph/set-touched-group group)
|
||||
(dissoc :remote-synced?))
|
||||
(dissoc :remote-synced))
|
||||
|
||||
(nil? val)
|
||||
(dissoc attr)
|
||||
|
@ -697,11 +697,11 @@
|
|||
|
||||
(defmethod process-operation :set-remote-synced
|
||||
[_ shape op]
|
||||
(let [remote-synced? (:remote-synced? op)
|
||||
(let [remote-synced (:remote-synced op)
|
||||
in-copy? (ctk/in-component-copy? shape)]
|
||||
(if (or (not in-copy?) (not remote-synced?))
|
||||
(dissoc shape :remote-synced?)
|
||||
(assoc shape :remote-synced? true))))
|
||||
(if (or (not in-copy?) (not remote-synced))
|
||||
(dissoc shape :remote-synced)
|
||||
(assoc shape :remote-synced true))))
|
||||
|
||||
(defmethod process-operation :default
|
||||
[_ _ op]
|
||||
|
@ -732,16 +732,15 @@
|
|||
(get ctk/sync-attrs (:attr operation))))
|
||||
any-sync? (some need-sync? operations)]
|
||||
(when any-sync?
|
||||
(let [xform (comp (filter :main-instance?) ; Select shapes that are main component instances
|
||||
(let [xform (comp (filter :main-instance) ; Select shapes that are main component instances
|
||||
(map :component-id))]
|
||||
(into #{} xform shape-and-parents))))))
|
||||
|
||||
(defmethod components-changed :mov-objects
|
||||
[file-data {:keys [page-id _component-id parent-id shapes] :as change}]
|
||||
(when page-id
|
||||
(let [page (ctpl/get-page file-data page-id)
|
||||
|
||||
xform (comp (filter :main-instance?)
|
||||
(let [page (ctpl/get-page file-data page-id)
|
||||
xform (comp (filter :main-instance)
|
||||
(map :component-id))
|
||||
|
||||
check-shape
|
||||
|
@ -760,7 +759,7 @@
|
|||
(let [page (ctpl/get-page file-data page-id)
|
||||
shape-and-parents (map (partial ctn/get-shape page)
|
||||
(cons id (cph/get-parent-ids (:objects page) id)))
|
||||
xform (comp (filter :main-instance?)
|
||||
xform (comp (filter :main-instance)
|
||||
(map :component-id))]
|
||||
(into #{} xform shape-and-parents))))
|
||||
|
||||
|
|
|
@ -495,7 +495,7 @@
|
|||
(gsh/update-bool-selrect parent children objects)
|
||||
|
||||
(= (:type parent) :group)
|
||||
(if (:masked-group? parent)
|
||||
(if (:masked-group parent)
|
||||
(gsh/update-mask-selrect parent children)
|
||||
(gsh/update-group-selrect parent children)))]
|
||||
(if resized-parent
|
||||
|
@ -628,11 +628,11 @@
|
|||
:attr :component-file
|
||||
:val (:component-file shape)}
|
||||
{:type :set
|
||||
:attr :component-root?
|
||||
:val (:component-root? shape)}
|
||||
:attr :component-root
|
||||
:val (:component-root shape)}
|
||||
{:type :set
|
||||
:attr :main-instance?
|
||||
:val (:main-instance? shape)}
|
||||
:attr :main-instance
|
||||
:val (:main-instance shape)}
|
||||
{:type :set
|
||||
:attr :shape-ref
|
||||
:val (:shape-ref shape)}
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
(defn mask-shape?
|
||||
([shape]
|
||||
(and ^boolean (group-shape? shape)
|
||||
^boolean (:masked-group? shape)))
|
||||
^boolean (:masked-group shape)))
|
||||
([objects id]
|
||||
(mask-shape? (get objects id))))
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
(not= uuid/zero (:id shape)))
|
||||
(conj shape)
|
||||
|
||||
(:masked-group? shape)
|
||||
(:masked-group shape)
|
||||
(conj (get objects (->> shape :shapes first)))
|
||||
|
||||
(= :bool (:type shape))
|
||||
|
|
|
@ -28,6 +28,13 @@
|
|||
:line-height :text-display-group
|
||||
:text-align :text-display-group
|
||||
:strokes :stroke-group
|
||||
|
||||
;; DEPRECATED: FIXME: this attrs are deprecated for a long time but
|
||||
;; we still have tests that uses this attribute for synchronization
|
||||
:stroke-width :stroke-group
|
||||
:fill-color :fill-group
|
||||
:fill-opacity :fill-group
|
||||
|
||||
:rx :radius-group
|
||||
:ry :radius-group
|
||||
:r1 :radius-group
|
||||
|
@ -51,7 +58,7 @@
|
|||
:blend-mode :layer-effects-group
|
||||
:shadow :shadow-group
|
||||
:blur :blur-group
|
||||
:masked-group? :mask-group
|
||||
:masked-group :mask-group
|
||||
:constraints-h :constraints-group
|
||||
:constraints-v :constraints-group
|
||||
:fixed-scroll :constraints-group
|
||||
|
@ -89,7 +96,7 @@
|
|||
(defn instance-root?
|
||||
"Check if this shape is the head of a top instance."
|
||||
[shape]
|
||||
(some? (:component-root? shape)))
|
||||
(some? (:component-root shape)))
|
||||
|
||||
(defn instance-head?
|
||||
"Check if this shape is the head of a top instance or a subinstance."
|
||||
|
@ -116,9 +123,10 @@
|
|||
(= (:shape-ref shape-inst) (:shape-ref shape-main)))))
|
||||
|
||||
(defn main-instance?
|
||||
"Check if this shape is the root of the main instance of some component."
|
||||
"Check if this shape is the root of the main instance of some
|
||||
component."
|
||||
[shape]
|
||||
(some? (:main-instance? shape)))
|
||||
(some? (:main-instance shape)))
|
||||
|
||||
(defn in-component-copy?
|
||||
"Check if the shape is inside a component non-main instance."
|
||||
|
@ -156,7 +164,7 @@
|
|||
(dissoc shape
|
||||
:component-id
|
||||
:component-file
|
||||
:component-root?
|
||||
:remote-synced?
|
||||
:component-root
|
||||
:remote-synced
|
||||
:shape-ref
|
||||
:touched))
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
a main component have not any discriminating attribute."
|
||||
[objects shape]
|
||||
(let [component-shape (get-component-shape objects shape {:allow-main? true})]
|
||||
(:main-instance? component-shape)))
|
||||
(:main-instance component-shape)))
|
||||
|
||||
(defn in-any-component?
|
||||
"Check if the shape is part of any component (main or copy), wether it's
|
||||
|
@ -147,7 +147,7 @@
|
|||
|
||||
(cond-> new-shape
|
||||
true
|
||||
(dissoc :component-root?)
|
||||
(dissoc :component-root)
|
||||
|
||||
(nil? (:parent-id new-shape))
|
||||
(dissoc :component-id
|
||||
|
@ -166,13 +166,13 @@
|
|||
(nil? (:parent-id new-shape))
|
||||
(assoc :component-id (:id new-shape)
|
||||
:component-file file-id
|
||||
:component-root? true)
|
||||
:component-root true)
|
||||
|
||||
(and (nil? (:parent-id new-shape)) components-v2)
|
||||
(assoc :main-instance? true)
|
||||
(assoc :main-instance true)
|
||||
|
||||
(some? (:parent-id new-shape))
|
||||
(dissoc :component-root?)))
|
||||
(dissoc :component-root)))
|
||||
|
||||
[new-root-shape new-shapes updated-shapes]
|
||||
(ctst/clone-object shape nil objects update-new-shape update-original-shape)
|
||||
|
@ -235,10 +235,10 @@
|
|||
(dissoc :touched))
|
||||
|
||||
main-instance?
|
||||
(assoc :main-instance? true)
|
||||
(assoc :main-instance true)
|
||||
|
||||
(not main-instance?)
|
||||
(dissoc :main-instance?)
|
||||
(dissoc :main-instance)
|
||||
|
||||
(and (not main-instance?) (nil? (:shape-ref original-shape)))
|
||||
(assoc :shape-ref (:id original-shape))
|
||||
|
@ -246,14 +246,14 @@
|
|||
(nil? (:parent-id original-shape))
|
||||
(assoc :component-id (:id component)
|
||||
:component-file (:id library-data)
|
||||
:component-root? true
|
||||
:component-root true
|
||||
:name new-name)
|
||||
|
||||
(and (nil? (:parent-id original-shape)) main-instance? components-v2)
|
||||
(assoc :main-instance? true)
|
||||
(assoc :main-instance true)
|
||||
|
||||
(some? (:parent-id original-shape))
|
||||
(dissoc :component-root?))))
|
||||
(dissoc :component-root))))
|
||||
|
||||
[new-shape new-shapes _]
|
||||
(ctst/clone-object component-shape
|
||||
|
|
|
@ -346,7 +346,7 @@
|
|||
file-data
|
||||
position
|
||||
false
|
||||
{:main-instance? true
|
||||
{:main-instance true
|
||||
:force-frame-id uuid/zero
|
||||
:keep-ids? true})
|
||||
add-shapes
|
||||
|
@ -429,7 +429,7 @@
|
|||
library-data
|
||||
position
|
||||
(dm/get-in file-data [:options :components-v2])
|
||||
{:main-instance? true})
|
||||
{:main-instance true})
|
||||
|
||||
main-instance-shapes
|
||||
(map #(cond-> %
|
||||
|
@ -589,9 +589,9 @@
|
|||
(letfn [(show-shape [shape-id level objects]
|
||||
(let [shape (get objects shape-id)]
|
||||
(println (str/pad (str (str/repeat " " level)
|
||||
(when (:main-instance? shape) "{")
|
||||
(when (:main-instance shape) "{")
|
||||
(:name shape)
|
||||
(when (:main-instance? shape) "}")
|
||||
(when (:main-instance shape) "}")
|
||||
(when (seq (:touched shape)) "*")
|
||||
(when show-ids (str/format " <%s>" (:id shape))))
|
||||
{:length 20
|
||||
|
@ -602,7 +602,7 @@
|
|||
(println (str (str/repeat " " level)
|
||||
" "
|
||||
(str (:touched shape)))))
|
||||
(when (:remote-synced? shape)
|
||||
(when (:remote-synced shape)
|
||||
(println (str (str/repeat " " level)
|
||||
" (remote-synced)"))))
|
||||
(when (:shapes shape)
|
||||
|
@ -611,7 +611,7 @@
|
|||
|
||||
(show-component-info [shape objects]
|
||||
(if (nil? (:shape-ref shape))
|
||||
(if (:component-root? shape) " #" "")
|
||||
(if (:component-root shape) " #" "")
|
||||
(let [root-shape (ctn/get-component-shape objects shape)
|
||||
component-id (when root-shape (:component-id root-shape))
|
||||
component-file-id (when root-shape (:component-file root-shape))
|
||||
|
@ -626,7 +626,7 @@
|
|||
(get-ref-shape file-data component shape)))]
|
||||
|
||||
(str/format " %s--> %s%s%s"
|
||||
(cond (:component-root? shape) "#"
|
||||
(cond (:component-root shape) "#"
|
||||
(:component-id shape) "@"
|
||||
:else "-")
|
||||
|
||||
|
@ -634,7 +634,7 @@
|
|||
|
||||
(or (:name component-shape) "?")
|
||||
|
||||
(if (or (:component-root? shape)
|
||||
(if (or (:component-root shape)
|
||||
(nil? (:component-id shape))
|
||||
true)
|
||||
""
|
||||
|
|
|
@ -146,6 +146,8 @@
|
|||
[:component-id {:optional true} ::sm/uuid]
|
||||
[:component-file {:optional true} ::sm/uuid]
|
||||
[:component-root {:optional true} :boolean]
|
||||
[:main-instance {:optional true} :boolean]
|
||||
[:remote-synced {:optional true} :boolean]
|
||||
[:shape-ref {:optional true} ::sm/uuid]
|
||||
[:selrect {:optional true} ::selrect]
|
||||
[:points {:optional true} ::points]
|
||||
|
@ -153,7 +155,7 @@
|
|||
[:collapsed {:optional true} :boolean]
|
||||
[:locked {:optional true} :boolean]
|
||||
[:hidden {:optional true} :boolean]
|
||||
[:masked-group? {:optional true} :boolean]
|
||||
[:masked-group {:optional true} :boolean]
|
||||
[:fills {:optional true}
|
||||
[:vector {:gen/max 2} ::fill]]
|
||||
[:hide-fill-on-export {:optional true} :boolean]
|
||||
|
@ -457,7 +459,6 @@
|
|||
(defn- setup-image
|
||||
[{:keys [metadata] :as shape}]
|
||||
(-> shape
|
||||
(assoc :metadata metadata)
|
||||
(assoc :proportion (/ (:width metadata)
|
||||
(:height metadata)))
|
||||
(assoc :proportion-lock true)))
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
(update :shapes d/vec-without-nils)
|
||||
(cond-> (and (ctk/in-component-copy? parent) (not ignore-touched))
|
||||
(-> (update :touched cph/set-touched-group :shapes-group)
|
||||
(dissoc :remote-synced?)))))
|
||||
(dissoc :remote-synced)))))
|
||||
|
||||
update-objects
|
||||
(fn [objects parent-id]
|
||||
|
@ -86,7 +86,7 @@
|
|||
(cond-> parent
|
||||
(and (:shape-ref parent) (not ignore-touched))
|
||||
(-> (update :touched cph/set-touched-group :shapes-group)
|
||||
(dissoc :remote-synced?)))))
|
||||
(dissoc :remote-synced)))))
|
||||
|
||||
(delete-from-objects [objects]
|
||||
(if-let [target (get objects shape-id)]
|
||||
|
|
|
@ -12,18 +12,18 @@
|
|||
"defaults"
|
||||
],
|
||||
"scripts": {
|
||||
"compile-test": "clojure -M:dev:shadow-cljs compile test --config-merge '{:autorun false}'",
|
||||
"lint": "clj-kondo --parallel --lint src/",
|
||||
"lint-scss": "yarn run prettier -c resources/styles -c src/**/*.scss",
|
||||
"run-test": "node target/tests.js",
|
||||
"test": "yarn run compile-test && yarn run run-test",
|
||||
"watch-gulp": "gulp watch",
|
||||
"watch-main": "shadow-cljs watch main",
|
||||
"watch-test": "clojure -M:dev:shadow-cljs watch test",
|
||||
"test:compile": "clojure -M:dev:shadow-cljs compile test --config-merge '{:autorun false}'",
|
||||
"lint:clj": "clj-kondo --parallel --lint src/",
|
||||
"lint:scss": "yarn run prettier -c resources/styles -c src/**/*.scss",
|
||||
"test:run": "node target/tests.js",
|
||||
"test:watch": "clojure -M:dev:shadow-cljs watch test",
|
||||
"test": "yarn run test:compile && yarn run test:run",
|
||||
"gulp:watch": "gulp watch",
|
||||
"watch": "shadow-cljs watch main",
|
||||
"validate-translations": "node ./scripts/validate-translations.js",
|
||||
"find-unused-translations": "node ./scripts/find-unused-translations.js",
|
||||
"test-e2e": "cypress run",
|
||||
"test-e2e-gui": "cypress open"
|
||||
"test:e2e": "cypress run",
|
||||
"test:e2e-gui": "cypress open"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.13",
|
||||
|
|
|
@ -492,7 +492,7 @@
|
|||
(let [components-to-delete (->> page
|
||||
:objects
|
||||
vals
|
||||
(filter #(true? (:main-instance? %)))
|
||||
(filter #(true? (:main-instance %)))
|
||||
(map :component-id))
|
||||
|
||||
changes (reduce (fn [changes component-id]
|
||||
|
@ -632,7 +632,7 @@
|
|||
(rx/of (update-shape shape-id {:name name})))
|
||||
|
||||
;; Update the component in case if shape is a main instance
|
||||
(when (:main-instance? shape)
|
||||
(when (:main-instance shape)
|
||||
(when-let [component-id (:component-id shape)]
|
||||
(rx/of (dwl/rename-component component-id name)))))))))))
|
||||
|
||||
|
@ -743,7 +743,7 @@
|
|||
;; Unmask groups whose mask have moved outside
|
||||
(pcb/update-shapes groups-to-unmask
|
||||
(fn [shape]
|
||||
(assoc shape :masked-group? false)))
|
||||
(assoc shape :masked-group false)))
|
||||
|
||||
;; Detach shapes moved out of their component
|
||||
(pcb/update-shapes shapes-to-detach ctk/detach-shape)
|
||||
|
@ -751,12 +751,12 @@
|
|||
;; Make non root a component moved inside another one
|
||||
(pcb/update-shapes shapes-to-deroot
|
||||
(fn [shape]
|
||||
(assoc shape :component-root? nil)))
|
||||
(assoc shape :component-root nil)))
|
||||
|
||||
;; Make root a subcomponent moved outside its parent component
|
||||
(pcb/update-shapes shapes-to-reroot
|
||||
(fn [shape]
|
||||
(assoc shape :component-root? true)))
|
||||
(assoc shape :component-root true)))
|
||||
|
||||
;; Reset constraints depending on the new parent
|
||||
(pcb/update-shapes shapes-to-unconstraint
|
||||
|
@ -856,7 +856,7 @@
|
|||
;; removed, and it must be converted to a normal group.
|
||||
(let [obj (get objects id)
|
||||
parent (get objects (:parent-id obj))]
|
||||
(if (and (:masked-group? parent)
|
||||
(if (and (:masked-group parent)
|
||||
(= id (first (:shapes parent)))
|
||||
(not= (:id parent) parent-id))
|
||||
(conj group-ids (:id parent))
|
||||
|
@ -1801,10 +1801,9 @@
|
|||
(-> shape
|
||||
(assoc :frame-id frame-id :parent-id parent-id)
|
||||
(cond-> detach?
|
||||
(->
|
||||
;; this is used later, if the paste needs to create a new component from the detached shape
|
||||
(assoc :saved-component-root? (:component-root? shape))
|
||||
ctk/detach-shape))
|
||||
;; this is used later, if the paste needs to create a new component from the detached shape
|
||||
(-> (assoc :saved-component-root (:component-root shape))
|
||||
(ctk/detach-shape)))
|
||||
;; if is a text, remove references to external typographies
|
||||
(cond-> (= (:type shape) :text)
|
||||
(ctt/remove-external-typographies file-id)))))
|
||||
|
|
|
@ -292,7 +292,7 @@
|
|||
(pcb/update-shapes [(:id group)]
|
||||
(fn [group]
|
||||
(assoc group
|
||||
:masked-group? true
|
||||
:masked-group true
|
||||
:selrect (:selrect first-shape)
|
||||
:points (:points first-shape)
|
||||
:transform (:transform first-shape)
|
||||
|
@ -321,7 +321,7 @@
|
|||
(-> changes
|
||||
(pcb/update-shapes [(:id mask)]
|
||||
(fn [shape]
|
||||
(dissoc shape :masked-group?)))
|
||||
(dissoc shape :masked-group)))
|
||||
(pcb/resize-parents [(:id mask)])))
|
||||
(-> (pcb/empty-changes it page-id)
|
||||
(pcb/with-objects objects))
|
||||
|
|
|
@ -74,8 +74,8 @@
|
|||
[(assoc root
|
||||
:component-id new-id
|
||||
:component-file file-id
|
||||
:component-root? true
|
||||
:main-instance? true)]]))
|
||||
:component-root true
|
||||
:main-instance true)]]))
|
||||
|
||||
changes (-> changes
|
||||
(pcb/add-component (:id root-shape)
|
||||
|
@ -135,7 +135,7 @@
|
|||
|
||||
position (gpt/point (:x main-instance-shape) (:y main-instance-shape))
|
||||
|
||||
component-instance-extra-data (if components-v2 {:main-instance? true} {})
|
||||
component-instance-extra-data (if components-v2 {:main-instance true} {})
|
||||
|
||||
[new-instance-shape new-instance-shapes]
|
||||
(when (and (some? main-instance-page) (some? main-instance-shape))
|
||||
|
@ -204,7 +204,7 @@
|
|||
(let [shape (ctn/get-shape container shape-id)]
|
||||
(if (and (ctk/instance-head? shape) (not first))
|
||||
;; Subinstances are not detached, but converted in top instances
|
||||
(pcb/update-shapes changes [(:id shape)] #(assoc % :component-root? true))
|
||||
(pcb/update-shapes changes [(:id shape)] #(assoc % :component-root true))
|
||||
;; Otherwise, detach the shape and all children
|
||||
(let [children-ids (:shapes shape)]
|
||||
(reduce #(generate-detach-recursive %1 container %2 false)
|
||||
|
@ -499,7 +499,7 @@
|
|||
;; * IF THE INITIAL SHAPE IS THE SUBINSTANCE, the sync is done against
|
||||
;; the remote component. Therefore, IShape-2-2-1 is synched with
|
||||
;; Shape-1-1. Then the "touched" flags are reset, and the
|
||||
;; "remote-synced?" flag is set (it will be set until the shape is
|
||||
;; "remote-synced" flag is set (it will be set until the shape is
|
||||
;; touched again or it's synced forced normal or inverse with the
|
||||
;; near component).
|
||||
;;
|
||||
|
@ -509,19 +509,19 @@
|
|||
;; cleared. Then, the "touched" flags THAT ARE TRUE are copied to
|
||||
;; Shape-2-2-1. This may cause that Shape-2-2-1 is now touched respect
|
||||
;; to Shape-1-1, and so, some attributes are not copied in a subsequent
|
||||
;; normal sync. Or, if "remote-synced?" flag is set in IShape-2-2-1,
|
||||
;; all touched flags are cleared in Shape-2-2-1 and "remote-synced?"
|
||||
;; normal sync. Or, if "remote-synced" flag is set in IShape-2-2-1,
|
||||
;; all touched flags are cleared in Shape-2-2-1 and "remote-synced"
|
||||
;; is removed.
|
||||
;;
|
||||
;; * IN AN INVERSE SYNC INITIATED IN THE SUBINSTANCE, the update is done
|
||||
;; to the remote component. E.g. IShape-2-2-1 attributes are copied into
|
||||
;; Shape-1-1, and then touched cleared and "remote-synced?" flag set.
|
||||
;; Shape-1-1, and then touched cleared and "remote-synced" flag set.
|
||||
;;
|
||||
;; #### WARNING: there are two conditions that are invisible to user:
|
||||
;; - When the near shape (Shape-2-2-1) is touched respect the remote
|
||||
;; one (Shape-1-1), there is no asterisk displayed anywhere.
|
||||
;; - When the instance shape (IShape-2-2-1) is synced with the remote
|
||||
;; shape (remote-synced? = true), the user will see that this shape
|
||||
;; shape (remote-synced = true), the user will see that this shape
|
||||
;; is different than the one in the near component (Shape-2-2-1)
|
||||
;; but it's not touched.
|
||||
|
||||
|
@ -540,7 +540,7 @@
|
|||
shape-main (when component
|
||||
(ctf/get-ref-shape library component shape-inst))
|
||||
|
||||
initial-root? (:component-root? shape-inst)
|
||||
initial-root? (:component-root shape-inst)
|
||||
|
||||
root-inst shape-inst
|
||||
root-main (when component
|
||||
|
@ -673,7 +673,7 @@
|
|||
component (ctkl/get-component library (:component-id shape-inst))
|
||||
shape-main (ctf/get-ref-shape library component shape-inst)
|
||||
|
||||
initial-root? (:component-root? shape-inst)
|
||||
initial-root? (:component-root shape-inst)
|
||||
|
||||
root-inst shape-inst
|
||||
root-main (ctf/get-component-root library component)]
|
||||
|
@ -867,7 +867,7 @@
|
|||
(assoc :shape-ref (:id original-shape))
|
||||
|
||||
set-remote-synced?
|
||||
(assoc :remote-synced? true))))
|
||||
(assoc :remote-synced true))))
|
||||
|
||||
update-original-shape (fn [original-shape _new-shape]
|
||||
original-shape)
|
||||
|
@ -967,8 +967,8 @@
|
|||
:attr :component-file
|
||||
:val (:component-file shape')}
|
||||
{:type :set
|
||||
:attr :component-root?
|
||||
:val (:component-root? shape')}
|
||||
:attr :component-root
|
||||
:val (:component-root shape')}
|
||||
{:type :set
|
||||
:attr :shape-ref
|
||||
:val (:shape-ref shape')}
|
||||
|
@ -1087,7 +1087,7 @@
|
|||
reset-touched?
|
||||
nil
|
||||
copy-touched?
|
||||
(if (:remote-synced? origin-shape)
|
||||
(if (:remote-synced origin-shape)
|
||||
nil
|
||||
(set/union
|
||||
(:touched dest-shape)
|
||||
|
@ -1117,7 +1117,7 @@
|
|||
(log/info :msg (str "CHANGE-REMOTE-SYNCED? "
|
||||
(if (cph/page? container) "[P] " "[C] ")
|
||||
(:name shape))
|
||||
:remote-synced? remote-synced?)
|
||||
:remote-synced remote-synced?)
|
||||
(-> changes
|
||||
(update :redo-changes conj (make-change
|
||||
container
|
||||
|
@ -1125,14 +1125,14 @@
|
|||
:id (:id shape)
|
||||
:operations
|
||||
[{:type :set-remote-synced
|
||||
:remote-synced? remote-synced?}]}))
|
||||
:remote-synced remote-synced?}]}))
|
||||
(update :undo-changes d/preconj (make-change
|
||||
container
|
||||
{:type :mod-obj
|
||||
:id (:id shape)
|
||||
:operations
|
||||
[{:type :set-remote-synced
|
||||
:remote-synced? (:remote-synced? shape)}]}))))))
|
||||
:remote-synced (:remote-synced shape)}]}))))))
|
||||
|
||||
(defn- update-attrs
|
||||
"The main function that implements the attribute sync algorithm. Copy
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
[shape root transformed-shape transformed-root objects modif-tree]
|
||||
(let [root
|
||||
(cond
|
||||
(:component-root? shape)
|
||||
(:component-root shape)
|
||||
shape
|
||||
|
||||
(nil? root)
|
||||
|
@ -60,7 +60,7 @@
|
|||
|
||||
transformed-root
|
||||
(cond
|
||||
(:component-root? transformed-shape)
|
||||
(:component-root transformed-shape)
|
||||
transformed-shape
|
||||
|
||||
(nil? transformed-root)
|
||||
|
|
|
@ -422,8 +422,8 @@
|
|||
parent-id (or parent-id frame-id)
|
||||
name (:name obj)
|
||||
|
||||
is-component-root? (:saved-component-root? obj)
|
||||
is-component-main? (:main-instance? obj)
|
||||
is-component-root? (:saved-component-root obj)
|
||||
is-component-main? (:main-instance obj)
|
||||
regenerate-component
|
||||
(fn [changes shape]
|
||||
(let [components-v2 (dm/get-in library-data [:options :components-v2])
|
||||
|
@ -436,9 +436,9 @@
|
|||
:parent-id parent-id
|
||||
:frame-id frame-id)
|
||||
(dissoc :shapes
|
||||
:main-instance?
|
||||
:main-instance
|
||||
:shape-ref
|
||||
:use-for-thumbnail?)
|
||||
:use-for-thumbnail)
|
||||
(gsh/move delta)
|
||||
(d/update-when :interactions #(ctsi/remap-interactions % ids-map objects))
|
||||
|
||||
|
|
|
@ -197,7 +197,7 @@
|
|||
;; converted to a normal group.
|
||||
(let [obj (lookup id)
|
||||
parent (lookup (:parent-id obj))]
|
||||
(if (and (:masked-group? parent)
|
||||
(if (and (:masked-group parent)
|
||||
(= id (first (:shapes parent))))
|
||||
(conj group-ids (:id parent))
|
||||
group-ids)))
|
||||
|
@ -265,7 +265,7 @@
|
|||
(reduce (fn [components id]
|
||||
(let [shape (get objects id)]
|
||||
(if (and (= (:component-file shape) (:id file)) ;; Main instances should exist only in local file
|
||||
(:main-instance? shape)) ;; but check anyway
|
||||
(:main-instance shape)) ;; but check anyway
|
||||
(conj components (:component-id shape))
|
||||
components)))
|
||||
[]
|
||||
|
@ -289,7 +289,7 @@
|
|||
(pcb/resize-parents all-parents)
|
||||
(pcb/update-shapes groups-to-unmask
|
||||
(fn [shape]
|
||||
(assoc shape :masked-group? false)))
|
||||
(assoc shape :masked-group false)))
|
||||
(pcb/update-shapes (map :id interacting-shapes)
|
||||
(fn [shape]
|
||||
(d/update-when shape :interactions
|
||||
|
@ -310,7 +310,6 @@
|
|||
(let [[changes _all-parents] (real-delete-shapes-changes changes file page objects ids it components-v2)]
|
||||
changes))
|
||||
|
||||
|
||||
(defn- real-delete-shapes
|
||||
[file page objects ids it components-v2]
|
||||
(let [[changes all-parents] (real-delete-shapes-changes file page objects ids it components-v2)
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
:path i/curve
|
||||
:rect i/box
|
||||
:text i/text
|
||||
:group (if (:masked-group? shape)
|
||||
:group (if (:masked-group shape)
|
||||
i/mask
|
||||
i/folder)
|
||||
:bool (case (:bool-type shape)
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
;; TODO: GRID ICON
|
||||
|
||||
:else
|
||||
i/board-refactor)
|
||||
i/board-refactor)
|
||||
;; TODO -> THUMBNAIL ICON
|
||||
:image i/img-refactor
|
||||
:line i/path-refactor
|
||||
|
@ -37,7 +37,7 @@
|
|||
:path i/path-refactor
|
||||
:rect i/rectangle-refactor
|
||||
:text i/text-refactor
|
||||
:group (if (:masked-group? shape)
|
||||
:group (if (:masked-group shape)
|
||||
i/mask-refactor
|
||||
i/group-refactor)
|
||||
:bool (case (:bool-type shape)
|
||||
|
@ -60,4 +60,4 @@
|
|||
:text i/text-refactor
|
||||
:mask i/mask-refactor
|
||||
:group i/group-refactor
|
||||
nil)))
|
||||
nil)))
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
image? (= :image (:type shape))
|
||||
text? (= :text (:type shape))
|
||||
path? (= :path (:type shape))
|
||||
mask? (and group? (:masked-group? shape))
|
||||
mask? (and group? (:masked-group shape))
|
||||
bool? (= :bool (:type shape))
|
||||
center (gsh/shape->center shape)]
|
||||
(-> props
|
||||
|
@ -137,8 +137,8 @@
|
|||
(add! :typography-ref-file)
|
||||
(add! :component-file)
|
||||
(add! :component-id)
|
||||
(add! :component-root?)
|
||||
(add! :main-instance?)
|
||||
(add! :component-root)
|
||||
(add! :main-instance)
|
||||
(add! :shape-ref))))
|
||||
|
||||
(defn prefix-keys [m]
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
childs (unchecked-get props "childs")
|
||||
objects (unchecked-get props "objects")
|
||||
render-id (mf/use-ctx muc/render-id)
|
||||
masked-group? (:masked-group? shape)
|
||||
masked-group? (:masked-group shape)
|
||||
|
||||
[mask childs] (if masked-group?
|
||||
[(first childs) (rest childs)]
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
[:li {:ref item-ref
|
||||
:class (dom/classnames
|
||||
:component (not (nil? (:component-id item)))
|
||||
:masked (:masked-group? item)
|
||||
:masked (:masked-group item)
|
||||
:selected selected?)}
|
||||
|
||||
[:div.element-list-body {:class (dom/classnames :selected selected?
|
||||
|
|
|
@ -255,7 +255,7 @@
|
|||
has-frame? (->> shapes (d/seek cph/frame-shape?))
|
||||
has-group? (->> shapes (d/seek cph/group-shape?))
|
||||
has-bool? (->> shapes (d/seek cph/bool-shape?))
|
||||
has-mask? (->> shapes (d/seek :masked-group?))
|
||||
has-mask? (->> shapes (d/seek :masked-group))
|
||||
|
||||
is-group? (and single? has-group?)
|
||||
is-bool? (and single? has-bool?)
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
workspace-read-only? (mf/use-ctx ctx/workspace-read-only?)
|
||||
new-css-system (mf/use-ctx ctx/new-css-system)
|
||||
main-instance? (if components-v2
|
||||
(:main-instance? item)
|
||||
(:main-instance item)
|
||||
true)
|
||||
parent-board? (and (= :frame (:type item))
|
||||
(= uuid/zero (:parent-id item)))
|
||||
|
@ -165,7 +165,7 @@
|
|||
|
||||
ref (mf/use-ref)
|
||||
depth (+ recieved-depth 1)
|
||||
component-tree? (or component-child? (:component-root? item))]
|
||||
component-tree? (or component-child? (:component-root item))]
|
||||
|
||||
(mf/with-effect [selected? selected]
|
||||
(let [single? (= (count selected) 1)
|
||||
|
@ -185,7 +185,7 @@
|
|||
|
||||
#(when (some? subid)
|
||||
(rx/dispose! subid))))
|
||||
|
||||
|
||||
(if new-css-system
|
||||
[:*
|
||||
[:div {:on-context-menu on-context-menu
|
||||
|
@ -195,7 +195,7 @@
|
|||
:class (dom/classnames
|
||||
(css :layer-row) true
|
||||
(css :component) (not (nil? (:component-id item)))
|
||||
(css :masked) (:masked-group? item)
|
||||
(css :masked) (:masked-group item)
|
||||
(css :selected) selected?
|
||||
(css :type-frame) (= :frame (:type item))
|
||||
(css :type-bool) (= :bool (:type item))
|
||||
|
@ -289,7 +289,7 @@
|
|||
:ref dref
|
||||
:class (dom/classnames
|
||||
:component (not (nil? (:component-id item)))
|
||||
:masked (:masked-group? item)
|
||||
:masked (:masked-group item)
|
||||
:dnd-over (= (:over dprops) :center)
|
||||
:dnd-over-top (= (:over dprops) :top)
|
||||
:dnd-over-bot (= (:over dprops) :bot)
|
||||
|
@ -343,4 +343,4 @@
|
|||
:index index
|
||||
:objects objects
|
||||
:key (:id item)
|
||||
:sortable? sortable?}]))])])))
|
||||
:sortable? sortable?}]))])])))
|
||||
|
|
|
@ -202,10 +202,10 @@
|
|||
(some #{:group} filters)
|
||||
(and (= :group (:type shape))
|
||||
(not (contains? shape :component-id))
|
||||
(or (not (contains? shape :masked-group?)) (false? (:masked-group? shape)))))
|
||||
(or (not (contains? shape :masked-group)) (false? (:masked-group shape)))))
|
||||
(and
|
||||
(some #{:mask} filters)
|
||||
(true? (:masked-group? shape))))))))
|
||||
(true? (:masked-group shape))))))))
|
||||
|
||||
filtered-objects-total
|
||||
(mf/use-memo
|
||||
|
|
|
@ -22,12 +22,12 @@
|
|||
[cuerdas.core :as str]
|
||||
[rumext.v2 :as mf]))
|
||||
|
||||
(def component-attrs [:component-id :component-file :shape-ref :main-instance? :annotation])
|
||||
(def component-attrs [:component-id :component-file :shape-ref :main-instance :annotation])
|
||||
|
||||
|
||||
(mf/defc component-annotation
|
||||
[{:keys [id values shape component] :as props}]
|
||||
(let [main-instance? (:main-instance? values)
|
||||
(let [main-instance? (:main-instance values)
|
||||
component-id (:component-id values)
|
||||
annotation (:annotation component)
|
||||
editing? (mf/use-state false)
|
||||
|
@ -140,8 +140,6 @@
|
|||
(when (or @editing? creating?)
|
||||
[:div.counter (str @size "/300")])]])))
|
||||
|
||||
|
||||
|
||||
(mf/defc component-menu
|
||||
[{:keys [ids values shape] :as props}]
|
||||
(let [current-file-id (mf/use-ctx ctx/current-file-id)
|
||||
|
@ -160,9 +158,11 @@
|
|||
library-id (:component-file values)
|
||||
show? (some? component-id)
|
||||
main-instance? (if components-v2
|
||||
(:main-instance? values)
|
||||
(:main-instance values)
|
||||
true)
|
||||
main-component? (:main-instance? values)
|
||||
main-component? (:main-instance values)
|
||||
lacks-annotation? (nil? (:annotation values))
|
||||
|
||||
local-component? (= library-id current-file-id)
|
||||
workspace-data (deref refs/workspace-data)
|
||||
workspace-libraries (deref refs/workspace-libraries)
|
||||
|
@ -170,7 +170,6 @@
|
|||
(ctkl/get-component workspace-data component-id)
|
||||
(ctf/get-component workspace-libraries library-id component-id))
|
||||
is-dangling? (nil? component)
|
||||
lacks-annotation? (nil? (:annotation component))
|
||||
lib-exists? (and (not local-component?)
|
||||
(some? (get workspace-libraries library-id)))
|
||||
|
||||
|
|
|
@ -413,10 +413,10 @@
|
|||
:component-file component-file)
|
||||
|
||||
component-root?
|
||||
(assoc :component-root? component-root?)
|
||||
(assoc :component-root component-root?)
|
||||
|
||||
main-instance?
|
||||
(assoc :main-instance? main-instance?)
|
||||
(assoc :main-instance main-instance?)
|
||||
|
||||
(some? shape-ref)
|
||||
(assoc :shape-ref shape-ref))))
|
||||
|
@ -538,7 +538,7 @@
|
|||
(let [mask? (get-meta node :masked-group str->bool)]
|
||||
(cond-> props
|
||||
mask?
|
||||
(assoc :masked-group? true))))
|
||||
(assoc :masked-group true))))
|
||||
|
||||
(defn add-bool-data
|
||||
[props node]
|
||||
|
|
|
@ -239,7 +239,7 @@
|
|||
(when v
|
||||
(let [v (if (datetime? v) (format v :date) v)
|
||||
locale (obj/get locales locale)
|
||||
f (.date (.-formatLong locale) v)]
|
||||
f (.date (.-formatLong ^js locale) v)]
|
||||
(->> #js {:locale locale}
|
||||
(dateFnsFormat v f))))))
|
||||
|
||||
|
|
|
@ -206,7 +206,7 @@
|
|||
(dissoc :stroke-color-ref-id :stroke-color-ref-file)
|
||||
|
||||
(not= file-id (get-component-ref-file objects shape))
|
||||
(dissoc :component-id :component-file :shape-ref :component-root?)
|
||||
(dissoc :component-id :component-file :shape-ref :component-root)
|
||||
|
||||
(= :text (:type shape))
|
||||
(update :content detach-text)))
|
||||
|
|
|
@ -19,18 +19,18 @@
|
|||
[shape]
|
||||
(t/is (nil? (:shape-ref shape)))
|
||||
(t/is (some? (:component-id shape)))
|
||||
(t/is (= (:component-root? shape) true)))
|
||||
(t/is (= (:component-root shape) true)))
|
||||
|
||||
(defn is-main-instance-subroot
|
||||
[shape]
|
||||
(t/is (some? (:component-id shape))) ; shape-ref may or may be not nil
|
||||
(t/is (= (:component-root? shape) true)))
|
||||
(t/is (= (:component-root shape) true)))
|
||||
|
||||
(defn is-main-instance-child
|
||||
[shape]
|
||||
(t/is (nil? (:component-id shape))) ; shape-ref may or may be not nil
|
||||
(t/is (nil? (:component-file shape)))
|
||||
(t/is (nil? (:component-root? shape))))
|
||||
(t/is (nil? (:component-root shape))))
|
||||
|
||||
(defn is-main-instance-inner
|
||||
[shape]
|
||||
|
@ -42,20 +42,20 @@
|
|||
[shape]
|
||||
(t/is (some? (:shape-ref shape)))
|
||||
(t/is (some? (:component-id shape)))
|
||||
(t/is (= (:component-root? shape) true)))
|
||||
(t/is (= (:component-root shape) true)))
|
||||
|
||||
(defn is-instance-subroot
|
||||
[shape]
|
||||
(t/is (some? (:shape-ref shape)))
|
||||
(t/is (some? (:component-id shape)))
|
||||
(t/is (nil? (:component-root? shape))))
|
||||
(t/is (nil? (:component-root shape))))
|
||||
|
||||
(defn is-instance-child
|
||||
[shape]
|
||||
(t/is (some? (:shape-ref shape)))
|
||||
(t/is (nil? (:component-id shape)))
|
||||
(t/is (nil? (:component-file shape)))
|
||||
(t/is (nil? (:component-root? shape))))
|
||||
(t/is (nil? (:component-root shape))))
|
||||
|
||||
(defn is-instance-inner
|
||||
[shape]
|
||||
|
@ -68,8 +68,8 @@
|
|||
(t/is (nil? (:shape-ref shape)))
|
||||
(t/is (nil? (:component-id shape)))
|
||||
(t/is (nil? (:component-file shape)))
|
||||
(t/is (nil? (:component-root? shape)))
|
||||
(t/is (nil? (:remote-synced? shape)))
|
||||
(t/is (nil? (:component-root shape)))
|
||||
(t/is (nil? (:remote-synced shape)))
|
||||
(t/is (nil? (:touched shape))))
|
||||
|
||||
(defn is-from-file
|
||||
|
@ -109,7 +109,7 @@
|
|||
([state root-inst-id subinstance?]
|
||||
(let [page (thp/current-page state)
|
||||
root-inst (ctn/get-shape page root-inst-id)
|
||||
main-instance? (:main-instance? root-inst)
|
||||
main-instance? (:main-instance root-inst)
|
||||
|
||||
libs (wsh/get-libraries state)
|
||||
component (ctf/get-component libs (:component-id root-inst))
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
[frontend-tests.helpers.pages :as thp]
|
||||
[potok.core :as ptk]))
|
||||
|
||||
(t/use-fixtures :each
|
||||
{:before thp/reset-idmap!})
|
||||
;; (t/use-fixtures :each
|
||||
;; {:before thp/reset-idmap!})
|
||||
|
||||
; === Test touched ======================
|
||||
;; ; === Test touched ======================
|
||||
|
||||
(t/deftest test-touched
|
||||
(t/async done
|
||||
|
@ -77,7 +77,8 @@
|
|||
(t/is (= (:name c-shape1) "Rect 1"))
|
||||
(t/is (= (:touched c-shape1) nil))
|
||||
(t/is (= (:fill-color c-shape1) clr/white))
|
||||
(t/is (= (:fill-opacity c-shape1) 1)))))]
|
||||
(t/is (= (:fill-opacity c-shape1) 1))
|
||||
)))]
|
||||
|
||||
(ptk/emit!
|
||||
store
|
||||
|
@ -596,7 +597,6 @@
|
|||
(t/is (= (:touched shape2) nil))
|
||||
(t/is (= (:fill-color shape2) clr/test))
|
||||
(t/is (= (:fill-opacity shape2) 0.5))
|
||||
|
||||
(t/is (= (:name c-instance2) "Board"))
|
||||
(t/is (= (:touched c-instance2) nil))
|
||||
(t/is (= (:name c-instance1) "Rect 1"))
|
||||
|
@ -607,8 +607,7 @@
|
|||
(t/is (= (:fill-opacity c-shape1) 0))
|
||||
(t/is (= (:name c-shape2) "Rect 1"))
|
||||
(t/is (= (:touched c-shape2) #{:fill-group}))
|
||||
(t/is (= (:fill-color c-shape2) clr/test))
|
||||
(t/is (= (:fill-opacity c-shape2) 0.5)))))]
|
||||
)))]
|
||||
|
||||
(ptk/emit!
|
||||
store
|
||||
|
@ -1211,7 +1210,7 @@
|
|||
(dwl/reset-component (:id instance1))
|
||||
:the/end))))
|
||||
|
||||
;; ; === Test update component ======================
|
||||
;; === Test update component ======================
|
||||
|
||||
(t/deftest test-update-component
|
||||
(t/async done
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
(:require
|
||||
[app.common.files.builder :as fb]
|
||||
[app.common.uuid :as uuid]
|
||||
[app.common.types.shape :as cts]
|
||||
[app.util.snap-data :as sd]
|
||||
[cljs.pprint :refer [pprint]]
|
||||
[cljs.test :as t :include-macros true]))
|
||||
|
@ -180,17 +181,17 @@
|
|||
(fb/close-artboard))
|
||||
|
||||
shape-id (:last-id file)
|
||||
page (fb/get-current-page file)
|
||||
page (fb/get-current-page file)
|
||||
|
||||
;; frame-id (:last-id file)
|
||||
data (-> (sd/make-snap-data)
|
||||
(sd/add-page page))
|
||||
data (-> (sd/make-snap-data)
|
||||
(sd/add-page page))
|
||||
|
||||
file (-> file
|
||||
(fb/delete-object shape-id))
|
||||
file (-> file
|
||||
(fb/delete-object shape-id))
|
||||
|
||||
new-page (fb/get-current-page file)
|
||||
data (sd/update-page data page new-page)
|
||||
data (sd/update-page data page new-page)
|
||||
|
||||
result-x (sd/query data (:id page) uuid/zero :x [0 100])
|
||||
result-y (sd/query data (:id page) uuid/zero :y [0 100])]
|
||||
|
@ -332,18 +333,20 @@
|
|||
:height 100})
|
||||
(fb/close-artboard))
|
||||
|
||||
frame-id (:last-id file)
|
||||
page (fb/get-current-page file)
|
||||
data (-> (sd/make-snap-data) (sd/add-page page))
|
||||
frame-id (:last-id file)
|
||||
page (fb/get-current-page file)
|
||||
data (-> (sd/make-snap-data) (sd/add-page page))
|
||||
|
||||
frame (fb/lookup-shape file frame-id)
|
||||
frame (fb/lookup-shape file frame-id)
|
||||
new-frame (-> frame
|
||||
(assoc :x 200 :y 200))
|
||||
(dissoc :selrect :points)
|
||||
(assoc :x 200 :y 200)
|
||||
(cts/setup-shape))
|
||||
|
||||
file (fb/update-object file frame new-frame)
|
||||
new-page (fb/get-current-page file)
|
||||
file (fb/update-object file frame new-frame)
|
||||
new-page (fb/get-current-page file)
|
||||
|
||||
data (sd/update-page data page new-page)
|
||||
data (sd/update-page data page new-page)
|
||||
|
||||
result-zero-x-1 (sd/query data (:id page) uuid/zero :x [0 100])
|
||||
result-frame-x-1 (sd/query data (:id page) frame-id :x [0 100])
|
||||
|
@ -371,6 +374,7 @@
|
|||
|
||||
shape (fb/lookup-shape file shape-id)
|
||||
new-shape (-> shape
|
||||
(dissoc :selrect :points)
|
||||
(assoc :x 200 :y 200))
|
||||
|
||||
file (fb/update-object file shape new-shape)
|
||||
|
|
Loading…
Add table
Reference in a new issue