Skip to content

Commit 18da7b1

Browse files
committed
Further Scastie integration
1 parent 2b3c6b6 commit 18da7b1

File tree

2 files changed

+52
-51
lines changed

2 files changed

+52
-51
lines changed

scaladoc-js/resources/code-snippets.css

Lines changed: 17 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
--slider-diameter: calc(var(--slider-height) - 4px);
4747
}
4848

49-
.snippet-showhide p {
49+
.buttons p {
5050
margin-left: 4px;
5151
margin-bottom: 0;
5252
margin-top: 0;
@@ -211,7 +211,6 @@ input:checked + .slider:before {
211211
}
212212

213213
.snippet .scastie.embedded .editor-container .editor-wrapper {
214-
padding-top: 48px;
215214
height: unset;
216215
}
217216

@@ -238,37 +237,6 @@ input:checked + .slider:before {
238237
background-color: var(--code-bg);
239238
}
240239

241-
.snippet .scastie .app.light .embedded-menu > * {
242-
background-color: transparent;
243-
color: var(--active-fg);
244-
width: 64px;
245-
font-size: 1em;
246-
padding: 8px;
247-
position: unset;
248-
}
249-
250-
.snippet .scastie .app.light .embedded-menu li:hover {
251-
background-color: var(--active-bg);
252-
}
253-
254-
.snippet .scastie .embedded-menu {
255-
margin: 15px;
256-
display: block;
257-
}
258-
259-
.snippet .scastie .embedded-menu > li {
260-
display: unset;
261-
border: unset;
262-
transition-duration: 0.4s;
263-
}
264-
265-
:root.theme-dark .snippet .scastie .embedded-menu > .logo img {
266-
filter: unset;
267-
}
268-
:root .snippet .scastie .embedded-menu > .logo img {
269-
filter: invert(100%) hue-rotate(180deg);
270-
}
271-
272240

273241
.snippet .scastie .app.light .output-console pre {
274242
color: white;
@@ -299,43 +267,43 @@ input:checked + .slider:before {
299267
color: #b58900;
300268
}
301269

270+
.snippet .scastie .ansi-color-magenta {
271+
color: var(--red500);
272+
}
273+
302274
.snippet .fa-warning:before, .fa-exclamation-triangle:before {
303275
color: #b58900;
304276
}
305277

278+
@media(max-width: 836px) {
279+
.snippet .buttons {
280+
--icon-size: 16px;
281+
font-size: 0px;
282+
}
283+
284+
.snippet .buttons p {
285+
--icon-size: 16px;
286+
font-size: 0px;
287+
}
288+
}
289+
306290
@media(max-width: 576px) {
307291
.snippet-showhide {
308292
--slider-width: 32px;
309293
--slider-height: 16px;
310294
}
311-
312-
.snippet .buttons {
313-
--icon-size: 16px;
314-
font-size: 16px;
315-
}
316-
317295
}
318296

319297
@media(max-width: 360px) {
320298
.snippet-showhide {
321299
--slider-width: 32px;
322300
--slider-height: 16px;
323301
}
324-
325-
.snippet .buttons {
326-
--icon-size: 16px;
327-
font-size: 0px;
328-
}
329302
}
330303

331304
@media(max-width: 240px) {
332305
.snippet-showhide {
333306
--slider-width: 24px;
334307
--slider-height: 10px;
335308
}
336-
337-
.snippet .buttons {
338-
--icon-size: 16px;
339-
font-size: 0px;
340-
}
341309
}

scaladoc-js/src/code-snippets/CodeSnippets.scala

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,23 @@ class CodeSnippets:
129129
scastie.Embedded(snippet.querySelector("pre"), scastieConfig)
130130
runButton.setAttribute("opened", "opened")
131131
}
132-
snippet.querySelector(".scastie .embedded-menu .run-button") match {
132+
snippet.querySelector(".scastie .embedded-menu") match {
133133
case btn: html.Element =>
134134
btn.style = "display:none;"
135-
btn.click()
135+
case _ =>
136+
}
137+
snippet.querySelector(".scastie .embedded-menu .run-button") match {
138+
case btn: html.Element => btn.click()
136139
case _ =>
137140
}
138141
snippet.querySelector(".buttons .exit-button") match {
139142
case btn: html.Element => btn.parentElement.style = ""
140143
case _ =>
141144
}
145+
snippet.querySelector(".buttons .to-scastie-button") match {
146+
case btn: html.Element => btn.parentElement.style = ""
147+
case _ =>
148+
}
142149
)
143150

144151
div.appendChild(runButton)
@@ -167,16 +174,42 @@ class CodeSnippets:
167174
case btn: html.Element => btn.removeAttribute("opened")
168175
case _ =>
169176
}
177+
snippet.querySelector(".buttons .to-scastie-button") match {
178+
case btn: html.Element => btn.parentElement.style = "display:none;"
179+
case _ =>
180+
}
170181
div.style = "display:none;"
171182
)
172183

173184
div.appendChild(exitButton)
174185
div
175186
}
187+
def toScastieButton = {
188+
val div = document.createElement("div").asInstanceOf[html.Div]
189+
val toScastieButton = document.createElement("button").asInstanceOf[html.Element]
190+
val toScastieIcon = document.createElement("i").asInstanceOf[html.Image]
191+
192+
toScastieIcon.classList.add("fas")
193+
toScastieIcon.classList.add("fa-external-link-alt")
194+
toScastieButton.classList.add("to-scastie-button")
195+
div.style = "display:none;"
196+
toScastieButton.appendChild(toScastieIcon)
197+
198+
toScastieButton.addEventListener("click", _ =>
199+
snippet.querySelector(".embedded-menu li.logo") match {
200+
case toScastie: html.Element => toScastie.click()
201+
case _ =>
202+
}
203+
)
204+
205+
div.appendChild(toScastieButton)
206+
div
207+
}
176208
val buttonsSection = getButtonsSection(snippet)
177209
buttonsSection.foreach(s =>
178210
s.appendChild(copyButton)
179211
if !snippet.hasAttribute("hasContext") then {
212+
s.appendChild(toScastieButton)
180213
s.appendChild(runButton)
181214
s.appendChild(exitButton)
182215
}

0 commit comments

Comments
 (0)