diff --git a/src/nextjournal/clerk/render.cljs b/src/nextjournal/clerk/render.cljs index 948425244..84bb0cd3d 100644 --- a/src/nextjournal/clerk/render.cljs +++ b/src/nextjournal/clerk/render.cljs @@ -428,21 +428,20 @@ [triangle expanded?]] [:span.group-hover:text-indigo-700 opening-paren]])) -(defn render-coll [xs {:as opts :keys [closing-paren path viewer !expanded-at] :or {path []}}] +(defn render-coll [xs {:as opts :keys [closing-parens path viewer !expanded-at] :or {path []}}] (let [expanded? (get @!expanded-at path) - {:keys [opening-paren]} viewer] + {:keys [opening-paren closing-paren]} viewer] [:span.inspected-value.whitespace-nowrap {:class (when expanded? "inline-flex")} [:span - (if (< 1 (count xs)) + (if (expandable? xs) [expand-button !expanded-at opening-paren path] [:span opening-paren]) (into [:<>] (comp (inspect-children opts) (interpose (if expanded? [:<> [:br] triangle-spacer nbsp (when (= 2 (count opening-paren)) nbsp)] " "))) xs) - [:span - (cond->> closing-paren (list? closing-paren) (into [:<>]))]]])) + (into [:span] (or closing-parens [closing-paren]))]])) (defn render-elision [{:as fetch-opts :keys [total offset unbounded?]} _] [view-context/consume :fetch-fn @@ -455,20 +454,6 @@ :on-click #(when (fn? fetch-fn) (fetch-fn fetch-opts))} (- total offset) (when unbounded? "+") (if (fn? fetch-fn) " moreā€¦" " more elided")])]) -(defn render-map [xs {:as opts :keys [closing-paren path viewer !expanded-at] :or {path []}}] - (let [expanded? (get @!expanded-at path)] - [:span.inspected-value.whitespace-nowrap - {:class (when expanded? "inline-flex")} - [:span - (if (expandable? xs) - [expand-button !expanded-at "{" path] - [:span "{"]) - (into [:<>] - (comp (inspect-children opts) - (interpose (if expanded? [:<> [:br] triangle-spacer nbsp #_(repeat (inc (count path)) nbsp)] " "))) - xs) - (cond->> closing-paren (list? closing-paren) (into [:<>]))]])) - (defn render-string [s {:as opts :keys [path !expanded-at] :or {path []}}] (let [expanded? (get @!expanded-at path)] @@ -480,16 +465,16 @@ (inspect-presented opts %))) (if (string? s) [s] s)))) -(defn render-quoted-string [s {:as opts :keys [closing-paren path viewer !expanded-at] :or {path []}}] - (let [{:keys [opening-paren]} viewer] +(defn render-quoted-string [s {:as opts :keys [closing-parens path viewer !expanded-at] :or {path []}}] + (let [{:keys [opening-paren closing-paren]} viewer] [:span.inspected-value.inline-flex [:span.cmt-string (if (some #(and (string? %) (str/includes? % "\n")) (if (string? s) [s] s)) [expand-button !expanded-at opening-paren path] [:span opening-paren])] - [:div - [:span.cmt-string (viewer/->value (render-string s opts)) (first closing-paren)] - (when (list? closing-paren) (into [:<>] (rest closing-paren)))]])) + (into [:div + [:span.cmt-string (viewer/->value (render-string s opts)) (first closing-paren)] + (rest closing-parens)])])) (defn render-number [num] [:span.cmt-number.inspected-value diff --git a/src/nextjournal/clerk/viewer.cljc b/src/nextjournal/clerk/viewer.cljc index 3a46108fb..1ab8ef402 100644 --- a/src/nextjournal/clerk/viewer.cljc +++ b/src/nextjournal/clerk/viewer.cljc @@ -810,7 +810,7 @@ {:pred sequential? :name `sequential-viewer :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "(" :closing-paren ")" :page-size 20}) (def map-viewer - {:pred map? :name `map-viewer :render-fn 'nextjournal.clerk.render/render-map :opening-paren "{" :closing-paren "}" :page-size 10}) + {:pred map? :name `map-viewer :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "{" :closing-paren "}" :page-size 10}) #?(:cljs (defn var->symbol [v] (if (instance? sci.lang.Var v) (sci.impl.vars/toSymbol v) (symbol v)))) @@ -1640,9 +1640,9 @@ (or (-> value last :nextjournal/viewer :closing-paren) ;; the last element can carry parens (and (= `map-entry-viewer (-> value last :nextjournal/viewer :name)) ;; the last element is a map entry whose value can carry parens (-> value last :nextjournal/value last :nextjournal/viewer :closing-paren))))] - (cond-> (if (or (not closing) defer-closing?) - node - (assoc-in node [:nextjournal/opts :closing-paren] (cons closing closing-parens))) + (cond-> (assoc-in node [:nextjournal/opts :closing-parens] (if (or (not closing) defer-closing?) + '() + (cons closing closing-parens))) non-leaf? (update :nextjournal/value (fn [xs] (into []