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