From afcf73e0aa265256a4ec82f450ddcc453b557deb Mon Sep 17 00:00:00 2001 From: Fons van der Plas Date: Tue, 18 Jul 2023 17:44:35 +0200 Subject: [PATCH] for benedikt --- light dark mode auto.jl | 112 +++++++++++ visitor ID.jl | 398 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 510 insertions(+) create mode 100644 light dark mode auto.jl create mode 100644 visitor ID.jl diff --git a/light dark mode auto.jl b/light dark mode auto.jl new file mode 100644 index 00000000..5104bc0c --- /dev/null +++ b/light dark mode auto.jl @@ -0,0 +1,112 @@ +### A Pluto.jl notebook ### +# v0.19.27 + +using Markdown +using InteractiveUtils + +# ╔═╡ 0fbcbe4e-2580-11ee-1d34-71bbfcec921e +using HypertextLiteral + +# ╔═╡ 71ff15f4-a183-4222-bba0-8785668af3fb +md""" +# Switching images depending on light/dark mode + +Switch your screen between light and dark mode and watch this content automatically update! + +One nice way to use this in Julia is to generate two plots in two color themes, and use this to make sure that the right one is displayed to the reader. +""" + +# ╔═╡ 36d3abc9-aadd-4fa5-b8bf-9f35349c461a +md""" +# Test images +""" + +# ╔═╡ d1bdbaaa-91fb-424e-8356-141aedfa0764 +big(x) = @htl """ +$x +""" + +# ╔═╡ 1a25bc4a-dbdf-4cb4-ae78-c1eca48ee7e1 +dark_plot = big("🌚") + +# ╔═╡ 176b2f2e-d648-4af7-9d5b-cafc2304166a +light_plot = big("🌝") + +# ╔═╡ 75b365ee-bc3d-42e8-9b16-44d165584f89 +md""" +# How it works +""" + +# ╔═╡ 526aa50e-14c8-4264-b886-eabbff48e308 +lightdark(light, dark) = @htl """ + +$light +$dark +""" + +# ╔═╡ 2161b66e-73bf-41aa-b692-238eccfab347 +lightdark(light_plot, dark_plot) + +# ╔═╡ f59cd504-2385-4e21-8150-9bc8bb443438 +lightdark(md"You are in **light** mode!", md"You are in **dark** mode!") + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" + +[compat] +HypertextLiteral = "~0.9.4" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.8.3" +manifest_format = "2.0" +project_hash = "fc304fba520d81fb78ea25b98f5762b4591b1182" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.4" + +[[deps.Tricks]] +git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.7" +""" + +# ╔═╡ Cell order: +# ╟─71ff15f4-a183-4222-bba0-8785668af3fb +# ╠═2161b66e-73bf-41aa-b692-238eccfab347 +# ╠═f59cd504-2385-4e21-8150-9bc8bb443438 +# ╟─36d3abc9-aadd-4fa5-b8bf-9f35349c461a +# ╠═d1bdbaaa-91fb-424e-8356-141aedfa0764 +# ╠═1a25bc4a-dbdf-4cb4-ae78-c1eca48ee7e1 +# ╠═176b2f2e-d648-4af7-9d5b-cafc2304166a +# ╟─75b365ee-bc3d-42e8-9b16-44d165584f89 +# ╠═0fbcbe4e-2580-11ee-1d34-71bbfcec921e +# ╠═526aa50e-14c8-4264-b886-eabbff48e308 +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 diff --git a/visitor ID.jl b/visitor ID.jl new file mode 100644 index 00000000..6a0e38d7 --- /dev/null +++ b/visitor ID.jl @@ -0,0 +1,398 @@ +### A Pluto.jl notebook ### +# v0.19.27 + +using Markdown +using InteractiveUtils + +# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). +macro bind(def, element) + quote + local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end + local el = $(esc(element)) + global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) + el + end +end + +# ╔═╡ 0b11540a-86c4-49e5-824e-eca859aa1360 +using HypertextLiteral + +# ╔═╡ 083a2d2d-e7de-499a-9033-d3d22e079da1 +using PlutoUI + +# ╔═╡ ab892501-3123-49ed-913a-b8b65ea9584d +md""" +# A widget that displays its IO context + +(Just for demonstration in this notebook) +""" + +# ╔═╡ 9b724da6-2570-11ee-0484-79123d8c9391 +begin + struct ShowTheIOContext + end + + function Base.show(io::IO, m::MIME"text/html", s::ShowTheIOContext) + show(io, m, @htl """ +
+ $(( + @htl """ +
$(key)
+
$(get(io,key,nothing))
+ """ + for key in keys(io))) +
+ """) + end + + ShowTheIOContext +end + +# ╔═╡ 3353cba5-dab2-4054-859e-b99761d2b05b +ShowTheIOContext() + +# ╔═╡ d6c2c3df-ae01-4a47-8d2b-ebe441b384de +PlutoUI.WithIOContext(ShowTheIOContext(), :hello_👋 => :benedikt_🐹) + +# ╔═╡ 24d70071-4845-4c6f-a149-66e1b56f6e0b + + +# ╔═╡ cf8fcf1d-c9c4-4099-8cd5-91f6327b5dd6 +md""" +# ID logic +""" + +# ╔═╡ c778dd2d-3322-48bb-968a-4e17ea6fe2f4 +user_id_provider() = @htl """ + +""" + +# ╔═╡ c3140784-9664-46d4-9706-3e123815d28c +@bind myname user_id_provider() + +# ╔═╡ f49ceceb-57aa-4f62-be42-d0e604d292d4 +md""" +Now we have a unique visitor ID: + +Refresh the page, and it will be different. +""" + +# ╔═╡ 5c09e69d-f4b6-467d-b8fe-690cf76e48d4 +myname + +# ╔═╡ 08e6522f-ea4a-4302-87ad-c39239748939 + + +# ╔═╡ 3629690b-3607-4fad-967d-6e146a3eb593 +md""" +This function can be wrapped around anything, to display it with the visitor ID passed in through IO context: +""" + +# ╔═╡ 91539994-8abe-43b3-be3c-c1638101a0b6 +WithID(x) = if myname === missing + Text("Loading...") +else + PlutoUI.WithIOContext( + x, :super_cool_id => myname + ) +end + +# ╔═╡ ab08ecee-6051-4d23-9a88-b200fc72373a +"hello world" |> WithID + +# ╔═╡ 4b0318d0-95f5-4995-a239-bee758036cbf +ShowTheIOContext() |> WithID + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" + +[compat] +HypertextLiteral = "~0.9.4" +PlutoUI = "~0.7.52" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.8.3" +manifest_format = "2.0" +project_hash = "7f5c841ed6b186ea1c7ab70376c32277655f6efd" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.0" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "0.5.2+0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.4" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.3" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "7.84.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.10.2+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.0+0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.2.1" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.20+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "4b2e829ee66d4218e0cef22c0a64ee37cf258c29" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.7.1" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.8.0" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.52" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "9673d39decc5feece56ef3940e5dafba15ba0f81" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.1.2" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.0" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.Tricks]] +git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.7" + +[[deps.URIs]] +git-tree-sha1 = "074f993b0ca030848b897beff716d93aca60f06a" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.4.2" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.12+3" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.1.1+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.48.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ Cell order: +# ╠═0b11540a-86c4-49e5-824e-eca859aa1360 +# ╟─ab892501-3123-49ed-913a-b8b65ea9584d +# ╠═3353cba5-dab2-4054-859e-b99761d2b05b +# ╠═d6c2c3df-ae01-4a47-8d2b-ebe441b384de +# ╠═9b724da6-2570-11ee-0484-79123d8c9391 +# ╟─24d70071-4845-4c6f-a149-66e1b56f6e0b +# ╟─cf8fcf1d-c9c4-4099-8cd5-91f6327b5dd6 +# ╠═c778dd2d-3322-48bb-968a-4e17ea6fe2f4 +# ╠═c3140784-9664-46d4-9706-3e123815d28c +# ╟─f49ceceb-57aa-4f62-be42-d0e604d292d4 +# ╠═5c09e69d-f4b6-467d-b8fe-690cf76e48d4 +# ╟─08e6522f-ea4a-4302-87ad-c39239748939 +# ╟─3629690b-3607-4fad-967d-6e146a3eb593 +# ╠═083a2d2d-e7de-499a-9033-d3d22e079da1 +# ╠═91539994-8abe-43b3-be3c-c1638101a0b6 +# ╠═ab08ecee-6051-4d23-9a88-b200fc72373a +# ╠═4b0318d0-95f5-4995-a239-bee758036cbf +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002