diff --git a/frontend/src/app/main/ui/workspace/viewport/interactions.cljs b/frontend/src/app/main/ui/workspace/viewport/interactions.cljs index daac5372e8..af6b1e58aa 100644 --- a/frontend/src/app/main/ui/workspace/viewport/interactions.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/interactions.cljs @@ -33,6 +33,10 @@ :move-overlay-index]) refs/workspace-local =)) +(def ^:private outgoing-link-color "var(--color-accent-tertiary)") +(def ^:private incoming-link-color "var(--color-accent-quaternary)") +(def ^:private neutral-link-color "var(--df-secondary)") + (defn- on-pointer-down [event index {:keys [id] :as shape}] (dom/stop-propagation event) @@ -139,7 +143,7 @@ (mf/defc interaction-path - [{:keys [index level orig-shape dest-shape dest-point selected? action-type zoom] :as props}] + [{:keys [index level orig-shape dest-shape dest-point selected selected? action-type zoom] :as props}] (let [[orig-pos orig-x orig-y dest-pos dest-x dest-y] (cond dest-shape @@ -160,11 +164,17 @@ path ["M" orig-x orig-y "C" (+ orig-x orig-dx) orig-y (+ dest-x dest-dx) dest-y dest-x dest-y] pdata (str/join " " path) - arrow-dir (if (= dest-pos :left) :right :left)] + arrow-dir (if (= dest-pos :left) :right :left) + incoming? (and (some? dest-shape) + (contains? selected (:id dest-shape))) + stroke-color (cond + selected? outgoing-link-color + incoming? incoming-link-color + :else neutral-link-color)] (if-not selected? [:g {:on-pointer-down #(on-pointer-down % index orig-shape)} - [:path {:stroke "var(--df-secondary)" + [:path {:stroke stroke-color :fill "none" :pointer-events "visible" :stroke-width (/ 2 zoom) @@ -173,13 +183,13 @@ [:& interaction-marker {:index index :x dest-x :y dest-y - :stroke "var(--df-secondary)" + :stroke stroke-color :action-type action-type :arrow-dir arrow-dir :zoom zoom}])] [:g {:on-pointer-down #(on-pointer-down % index orig-shape)} - [:path {:stroke "var(--color-accent-tertiary)" + [:path {:stroke stroke-color :fill "none" :pointer-events "visible" :stroke-width (/ 2 zoom) @@ -188,17 +198,17 @@ (when dest-shape [:& outline {:zoom zoom :shape dest-shape - :color "var(--color-accent-tertiary)"}]) + :color stroke-color}]) [:& interaction-marker {:index index :x orig-x :y orig-y - :stroke "var(--color-accent-tertiary)" + :stroke stroke-color :zoom zoom}] [:& interaction-marker {:index index :x dest-x :y dest-y - :stroke "var(--color-accent-tertiary)" + :stroke stroke-color :action-type action-type :arrow-dir arrow-dir :zoom zoom}]])))