diff --git a/Project.toml b/Project.toml index 2ff760f..be3097e 100644 --- a/Project.toml +++ b/Project.toml @@ -9,6 +9,7 @@ Observables = "510215fc-4207-5dde-b226-833fc4488ee2" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" AssetRegistry = "bf4720bc-e11a-5d0c-854e-bdca1663c893" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +Mux = "a975b10e-0019-58db-a62f-e48ff68538c9" Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b" Widgets = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" @@ -25,7 +26,6 @@ Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" JSExpr = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" -Mux = "a975b10e-0019-58db-a62f-e48ff68538c9" Blink = "ad839575-38b3-5650-b840-f874b8c74a25" NBInclude = "0db19996-df87-5ea3-a455-e3a50d440464" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -42,4 +42,4 @@ WebSockets = "1.5.0" Requires = "0.4.4, 0.5, 1.0.0" [targets] -test = ["Blink", "Conda", "DataStructures", "Dates", "IJulia", "JSExpr", "Mux", "NBInclude", "Test"] +test = ["Blink", "Conda", "DataStructures", "Dates", "IJulia", "JSExpr", "NBInclude", "Test"] diff --git a/src/WebIO.jl b/src/WebIO.jl index 35fd244..3b49b2d 100644 --- a/src/WebIO.jl +++ b/src/WebIO.jl @@ -9,6 +9,8 @@ import Widgets: node, AbstractWidget using Logging using UUIDs using Base64 +using Mux +using WebSockets include("../deps/bundlepaths.jl") @@ -94,35 +96,16 @@ function prefetch_provider_file(basename) (file = filepath, code = code) end -provider_mux = prefetch_provider_file("mux.jl") -provider_blink = prefetch_provider_file("blink.jl") +include("providers/mux.jl") +include("providers/generic_http.jl") + provider_ijulia = prefetch_provider_file("ijulia.jl") -provider_generic_http = prefetch_provider_file("generic_http.jl") function __init__() push!(Observables.addhandler_callbacks, WebIO.setup_comm) - @require Mux="a975b10e-0019-58db-a62f-e48ff68538c9" begin - include_string(@__MODULE__, provider_mux.code, provider_mux.file) - end - @require Blink="ad839575-38b3-5650-b840-f874b8c74a25" begin - # The latest version of Blink defines their own WebIO integration - # (after https://github.com/JunoLab/Blink.jl/pull/201). - if isdefined(Blink.AtomShell, :initwebio!) - return - end - Base.depwarn( - "Please upgrade Blink for a smoother integration with WebIO.", - :webio_blink_upgrade, - ) - include_string(@__MODULE__, provider_blink.code, provider_blink.file) - end @require IJulia="7073ff75-c697-5162-941a-fcdaad2a7d2a" begin include_string(@__MODULE__, provider_ijulia.code, provider_ijulia.file) end - @require WebSockets="104b5d7c-a370-577a-8038-80a2059c5097" begin - include_string(@__MODULE__, provider_generic_http.code, provider_generic_http.file) - end - end end # module diff --git a/src/providers/blink.jl b/src/providers/blink.jl deleted file mode 100644 index a8e49d0..0000000 --- a/src/providers/blink.jl +++ /dev/null @@ -1,46 +0,0 @@ -# This is deprecated and will be removed soon. -# WebIO+Blink integration is now implemented in Blink.jl. -# https://github.com/JunoLab/Blink.jl/pull/201 - -using .AssetRegistry -using .Base64: stringmime - -using .Sockets - -struct BlinkConnection <: WebIO.AbstractConnection - page::Blink.Page -end - -Blink.body!(p::Blink.Page, x::AbstractWidget) = Blink.body!(p, Widgets.render(x)) -function Blink.body!(p::Blink.Page, x::Union{Node, Scope}) - wait(p) - - bs = AssetRegistry.register(BLINK_BUNDLE_PATH) - Blink.loadjs!(p, bs) - - conn = BlinkConnection(p) - Blink.handle(p, "webio") do msg - WebIO.dispatch(conn, msg) - end - - Blink.body!(p, stringmime(MIME"text/html"(), x)) -end - -Blink.body!(p::Blink.Window, x::AbstractWidget) = Blink.body!(p, Widgets.render(x)) -function Blink.body!(p::Blink.Window, x::Union{Node, Scope}) - Blink.body!(p.content, x) -end - -function Sockets.send(b::BlinkConnection, data) - Blink.msg(b.page, Dict(:type=>"webio", :data=>data)) -end - -Base.isopen(b::BlinkConnection) = Blink.active(b.page) - -function WebIO.register_renderable(T::Type, ::Val{:blink}) - eval(:(Blink.body!(p::Union{Blink.Window, Blink.Page}, x::$T) = - Blink.body!(p, WebIO.render(x)))) -end - -WebIO.setup_provider(::Val{:blink}) = nothing # blink setup has no side-effects -WebIO.setup(:blink)