File tree Expand file tree Collapse file tree 1 file changed +12
-14
lines changed Expand file tree Collapse file tree 1 file changed +12
-14
lines changed Original file line number Diff line number Diff line change 92
92
; ; ## 🚦Async/await works cherry
93
93
94
94
; ; Here we dynamically import a module, await its value and then pull out the
95
- ; ; default function, which we expose as a global function. Because s-expressions
96
- ; ; serialized to the client currently don't preserve metadata in clerk, and
97
- ; ; async functions need `^:async`, we use a plain string.
95
+ ; ; default function, which we expose as a global function.
98
96
99
-
100
- (clerk/eval-cljs-str
101
- " (defn emoji-picker
97
+ (clerk/eval-cljs
98
+ '(defn emoji-picker
102
99
{:async true }
103
100
[]
104
- (js/await (js/import \ " https://cdn.skypack.dev/emoji-picker-element\ " ))
101
+ (js/await (js/import " https://cdn.skypack.dev/emoji-picker-element" ))
105
102
(nextjournal.clerk.viewer/html [:div
106
- [:p \ " My cool emoji picker:\ " ]
107
- [:emoji-picker]]))" )
103
+ [:p " My cool emoji picker:" ]
104
+ [:emoji-picker ]])))
108
105
109
106
; ; In the next block we call it:
110
107
111
108
(clerk/with-viewer
112
109
'(fn [_]
113
110
[nextjournal.clerk.render/render-promise
114
- (emoji-picker )]) nil )
111
+ (emoji-picker )])
112
+ nil )
115
113
116
114
; ; ## 🧩 Macros
117
115
118
- (clerk/eval-cljs-str
119
- " (defn clicks []
120
- (reagent.core/with-let [!s (reagent.core/atom 0)]
116
+ (clerk/eval-cljs
117
+ ' (defn clicks []
118
+ (reagent.core/with-let [!s (reagent.core/atom 0 )]
121
119
[:button.bg-teal-500.hover:bg-teal-700.text-white.font-bold.py-2.px-4.rounded.rounded-full.font-sans
122
120
{:on-click (fn [] (swap! !s inc))}
123
- \ " Clicks: \ " @!s]))" )
121
+ " Clicks: " @!s])))
124
122
125
123
(clerk/with-viewer '(fn [_] (this-as this [clicks])) nil )
126
124
You can’t perform that action at this time.
0 commit comments