           (.attr "opacity" (fn [node]
                              (project-label-opacity (distance-for-node node))))
           (.attr "font-weight" (fn [node]
-                                 (if (= node selected-node) "bold" "normal")))
+                                 (if (identical? node selected-node) "bold" "normal")))
           (.text #(:title %))))
     (.classed detail-button "invisible" (or (nil? selected-node)
                                             (= projection :zoom-out)))

(defn zoom-and-select-on-tap! [manager current-state animation-observable]
  (let [taps (tap-observable manager)
        partitions (-> taps
            (suppress-while-animating animation-observable)
            (.map #(closest-node @current-state %))
            (.partition #(< (:distance %) (/ hitbox-size 2))))
        node-taps (aget partitions 0)
        space-taps (.map (aget partitions 1) #(:pos %))]
        (.subscribe node-taps
                    (fn [{:keys [node]}]
                        (select-and-zoom-to-node! current-state node)))
        (.subscribe space-taps
                    #(if (= (:projection @current-state) :zoom-out)
                       (zoom-in-to-pos! current-state
                                        (zoom-out->world-pos @current-state %))))))

;; Exported function to do magic



(def background-color "#EDF0F2")
(def link-color "#C9CBCB")
(def selected-link-color "#a7b6c2")
(def node-color "#777A7A")
(def node-label-color node-color)
(def selected-node-color "#FE9F51")
