(ns pinkblackrose.core (:require [day8.re-frame.http-fx] [reagent.core :as r] [re-frame.core :as rf] [goog.events :as events] [goog.history.EventType :as HistoryEventType] [markdown.core :refer [md->html]] [pinkblackrose.ajax :as ajax] [pinkblackrose.events] [reitit.core :as reitit] [reitit.frontend.easy :as rfe] [clojure.string :as string]) (:import goog.History)) (defn nav-link [uri title page] [:a.navbar-item {:href uri :class (when (= page @(rf/subscribe [:page])) :is-active)} title]) (defn navbar [] (r/with-let [expanded? (r/atom false)] [:nav.navbar.is-info>div.container [:div.navbar-brand [:a.navbar-item {:href "/" :style {:font-weight :bold}} "pinkblackrose"] [:span.navbar-burger.burger {:data-target :nav-menu :on-click #(swap! expanded? not) :class (when @expanded? :is-active)} [:span][:span][:span]]] [:div#nav-menu.navbar-menu {:class (when @expanded? :is-active)} [:div.navbar-start [nav-link "#/" "Home" :home] [nav-link "#/about" "About" :about]]]])) (defn about-page [] [:section.section>div.container>div.content [:img {:src "/img/warning_clojure.png"}]]) (defn home-page [] [:section.section>div.container>div.content (when-let [docs @(rf/subscribe [:docs])] [:div {:dangerouslySetInnerHTML {:__html (md->html docs)}}])]) (defn page [] (if-let [page @(rf/subscribe [:page])] [:div [navbar] [page]])) (defn navigate! [match _] (rf/dispatch [:navigate match])) (def router (reitit/router [["/" {:name :home :view #'home-page :controllers [{:start (fn [_] (rf/dispatch [:page/init-home]))}]}] ["/about" {:name :about :view #'about-page}]])) (defn start-router! [] (rfe/start! router navigate! {})) ;; ------------------------- ;; Initialize app (defn ^:dev/after-load mount-components [] (rf/clear-subscription-cache!) (r/render [#'page] (.getElementById js/document "app"))) (defn init! [] (start-router!) (ajax/load-interceptors!) (mount-components))