Browse Source

Merge remote-tracking branch 'origin2/master' into fix/priority-style-issues

# Conflicts:
#	resources/css/common.css
charlie 5 years ago
parent
commit
e599aa977e

+ 1 - 0
shadow-cljs.edn

@@ -16,6 +16,7 @@
    :release {:asset-path "https://asset.logseq.com/static/js"}
    :compiler-options {:infer-externs :auto
                       :output-feature-set :es6
+                      :source-map true
                       :externs ["datascript/externs.js"
                                 "externs.js"]}
    :closure-defines {goog.debug.LOGGING_ENABLED true

+ 30 - 10
src/main/frontend/components/block.cljs

@@ -39,7 +39,8 @@
             [frontend.date :as date]
             [frontend.security :as security]
             [reitit.frontend.easy :as rfe]
-            [frontend.commands :as commands]))
+            [frontend.commands :as commands]
+            [lambdaisland.glogi :as log]))
 
 (defn safe-read-string
   [s]
@@ -996,9 +997,19 @@
 (defn- pre-block-cp
   [config content format]
   (let [ast (mldoc/->edn content (mldoc/default-config format))
-        ast (map first ast)]
-    [:div.pre-block.bg-base-2.p-2
-     (markup-elements-cp (assoc config :block/format format) ast)]))
+        ast (map first ast)
+        slide? (:slide? config)
+        only-title? (and (= 1 (count ast))
+                         (= "Properties" (ffirst ast))
+                         (let [m (second (first ast))]
+                           (= (keys m) [:title])))
+        block-cp [:div.pre-block.bg-base-2.p-2
+                  (markup-elements-cp (assoc config :block/format format) ast)]]
+    (if slide?
+      [:div [:h1 (:page-name config)]
+       (when-not only-title?
+         block-cp)]
+      block-cp)))
 
 (rum/defc properties-cp
   [block]
@@ -1111,7 +1122,8 @@
 
       (when (and (seq properties)
                  (let [hidden? (text/properties-hidden? properties)]
-                   (not hidden?)))
+                   (not hidden?))
+                 (not (:slide? config)))
         (properties-cp block))
 
       (when (and (not pre-block?) (seq body))
@@ -1536,7 +1548,13 @@
            title]
           (cond
             (and (seq result) view-f)
-            (let [result (sci/call-fn view-f result)]
+            (let [result (try
+                           (sci/call-fn view-f result)
+                           (catch js/Error error
+                             (log/error :custom-view-failed {:error error
+                                                             :result result})
+                             [:div "Custom view failed: "
+                              (str error)]))]
               (util/hiccup-keywordize result))
 
             (and (seq result)
@@ -1646,10 +1664,12 @@
 
           :else
           (let [language (if (contains? #{"edn" "clj" "cljc" "cljs" "clojure"} language) "text/x-clojure" language)]
-            [:div
-             (lazy-editor/editor config (str (dc/squuid)) attr code pos_meta)
-             (when (and (= language "text/x-clojure") (contains? (set options) ":results"))
-               (sci/eval-result code))])))
+            (if (:slide? config)
+              (highlight/highlight (str (medley/random-uuid)) {:data-lang language} code)
+              [:div
+               (lazy-editor/editor config (str (dc/squuid)) attr code pos_meta)
+               (when (and (= language "text/x-clojure") (contains? (set options) ":results"))
+                 (sci/eval-result code))]))))
       ["Quote" l]
       (->elem
        :blockquote

+ 2 - 1
src/main/frontend/components/right_sidebar.cljs

@@ -151,7 +151,8 @@
           sections (block/build-slide-sections blocks {:id "slide-reveal-js"
                                                        :start-level 2
                                                        :slide? true
-                                                       :sidebar? true})]
+                                                       :sidebar? true
+                                                       :page-name page-name})]
       [[:a {:href (str "/page/" (util/url-encode page-name))}
         (util/capitalize-all page-name)]
        [:div.ml-2.slide.mt-2

+ 5 - 1
src/main/frontend/db.cljs

@@ -537,7 +537,11 @@
                             (sort-blocks))]
         (if-let [result-transform (:result-transform q)]
           (if-let [f (sci/eval-string (pr-str result-transform))]
-            (sci/call-fn f result)
+            (try
+              (sci/call-fn f result)
+              (catch js/Error e
+                (log/error :sci/call-error e)
+                result))
             result)
           (group-by-page result)))
       result)))

+ 26 - 24
src/main/frontend/extensions/code.cljs

@@ -91,30 +91,32 @@
         lisp? (or clojure?
                   (contains? #{"scheme" "racket" "lisp"} mode))
         textarea (gdom/getElement id)
-        editor (from-textarea textarea
-                              #js {:mode mode
-                                   :matchBrackets lisp?
-                                   :autoCloseBrackets true
-                                   :lineNumbers true
-                                   :extraKeys #js {"Esc" (fn [cm]
-                                                           (let [save! #(save-file-or-block-when-blur-or-esc! cm textarea config state)]
-                                                             (if-let [block-id (:block/uuid config)]
-                                                               (let [block (db/pull [:block/uuid block-id])
-                                                                     value (.getValue cm)
-                                                                     textarea-value (gobj/get textarea "value")
-                                                                     changed? (not= value textarea-value)]
-                                                                 (if changed?
-                                                                   (save!)
-                                                                   (editor-handler/edit-block! block :max (:block/format block) block-id)))
-                                                               (save!))))}})]
-    (let [element (.getWrapperElement editor)]
-      (.on editor "blur" (fn []
-                           (save-file-or-block-when-blur-or-esc! editor textarea config state)))
-      (.addEventListener element "click"
-                         (fn [e]
-                           (util/stop e)))
-      (.save editor)
-      (.refresh editor))
+        editor (when textarea
+                 (from-textarea textarea
+                                #js {:mode mode
+                                     :matchBrackets lisp?
+                                     :autoCloseBrackets true
+                                     :lineNumbers true
+                                     :extraKeys #js {"Esc" (fn [cm]
+                                                             (let [save! #(save-file-or-block-when-blur-or-esc! cm textarea config state)]
+                                                               (if-let [block-id (:block/uuid config)]
+                                                                 (let [block (db/pull [:block/uuid block-id])
+                                                                       value (.getValue cm)
+                                                                       textarea-value (gobj/get textarea "value")
+                                                                       changed? (not= value textarea-value)]
+                                                                   (if changed?
+                                                                     (save!)
+                                                                     (editor-handler/edit-block! block :max (:block/format block) block-id)))
+                                                                 (save!))))}}))]
+    (when editor
+      (let [element (.getWrapperElement editor)]
+        (.on editor "blur" (fn []
+                             (save-file-or-block-when-blur-or-esc! editor textarea config state)))
+        (.addEventListener element "click"
+                           (fn [e]
+                             (util/stop e)))
+        (.save editor)
+        (.refresh editor)))
     editor))
 
 (defn- load-and-render!

+ 1 - 9
src/main/frontend/extensions/sci.cljs

@@ -11,15 +11,7 @@
 
 (defn call-fn
   [f & args]
-  (try
-    (apply f args)
-    (catch js/Error e
-      (println "Call fn: failed: " {:args args})
-      (js/console.error e)))
-  ;; (-> (apply f (bean/->js args))
-  ;;     (->js)
-  ;;     (bean/->clj))
-)
+  (apply f args))
 
 (defn eval-result
   [code]

+ 5 - 1
src/main/frontend/handler/editor.cljs

@@ -1353,7 +1353,11 @@
         (when (and block value db-content-without-heading
                    (not= (string/trim db-content-without-heading)
                          (string/trim value)))
-          (save-block-aux! block value (:block/format block)))))))
+          (let [cur-pos (util/get-input-pos elem)]
+            (save-block-aux! block value (:block/format block))
+            ;; Restore the cursor after saving the block
+            (when (and elem cur-pos)
+              (util/set-caret-pos! elem cur-pos))))))))
 
 (defn on-up-down
   [state e up?]

+ 6 - 3
src/main/frontend/idb.cljs

@@ -31,15 +31,18 @@
 
 (defn remove-item!
   [key]
-  (.removeItem localforage-instance key))
+  (when key
+    (.removeItem localforage-instance key)))
 
 (defn set-item!
   [key value]
-  (.setItem localforage-instance key value))
+  (when key
+    (.setItem localforage-instance key value)))
 
 (defn get-item
   [key]
-  (.getItem localforage-instance key))
+  (when key
+    (.getItem localforage-instance key)))
 
 (defn get-keys
   []

+ 6 - 1
src/main/frontend/state.cljs

@@ -549,7 +549,12 @@
                           expires-at (->> (t/plus (t/now) (t/minutes 40))
                                           (tf/unparse formatter))]
                       (merge repo {:token token :expires_at expires-at}))
-                    (do (log/error :token/cannot-set-token {:repo-m repo :token-m m}) repo))))
+                    (do
+                      (when (and
+                             (:url repo)
+                             (string/starts-with? (:url repo) "https://"))
+                        (log/error :token/cannot-set-token {:repo-m repo :token-m m}))
+                      repo))))
               repos (mapv set-token-f repos)]
           (swap! state assoc-in [:me :repos] repos))))))
 

+ 2 - 2
src/main/frontend/text.cljs

@@ -124,8 +124,8 @@
           (string/starts-with? content' (string/lower-case properties-text)))
          (and (contains-properties? content)
               ;; not changed
-              (= (:block/properties (db/entity [:block/uuid (:block/uuid block)]))
-                 properties)))
+              (= (seq (:block/properties (db/entity [:block/uuid (:block/uuid block)])))
+                 (seq properties))))
       content
       (-> (remove-properties! content)
           (rejoin-properties properties)))))

+ 2 - 1
src/main/frontend/tools/html_export.cljs

@@ -40,7 +40,8 @@
                                                                 (merge
                                                                  config
                                                                  {:id "slide"
-                                                                  :start-level 2})
+                                                                  :start-level 2
+                                                                  :page-name page-name})
                                                                 build-block)]
                        (slide/slide-content false "" sections))
                      [:div.page