From 84626ad31e21a4c32073753ecfadeaac388b131e Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Fri, 24 Jan 2025 12:05:51 +0000 Subject: [PATCH] build based on 0e4fb99 --- previews/PR284/.documenter-siteinfo.json | 2 +- previews/PR284/api.html | 46 +- previews/PR284/assets.html | 10 +- ...d47fefd316c026413-1659267463616279974.bin} | Bin 929 -> 929 bytes ...489fe6d949edb1f6a8d-930495308489976105.bin | 3 - ...a3f8460ff7683f625-16975558290121188210.bin | 3 - ...5f818cce0d80a67b27-2346781460665204682.bin | 30 + ...5b4426614fbcf1d4e-11920879493942044601.bin | 28 + ...b94b479ed2c8933b4e-2204761921051854046.bin | 28 - ...47b5243b997b76bbb-11000724587905297812.bin | Bin 355 -> 0 bytes ...6b389dd99fa721658-18129233411333846961.bin | Bin 0 -> 356 bytes ...0c76628c51559156d-9409438844702132886.bin} | Bin 7413 -> 7408 bytes ...ca2db00874b3d55a2a-4435352890866269362.bin | 3 + ...7048a5726bcc3ac579-8549047584763895820.bin | Bin 0 -> 26258 bytes ...5b46b0850f03c4f8ef-472181871944900172.bin} | Bin 10419 -> 10421 bytes ...71e3f96ce1aa31a9f-16338630755642574744.bin | 1 + ...3635b5bc4e2ab242f6-3958468718486432358.bin | 3 - ...bacfbbf55583e0c8c-16376165553044977742.bin | Bin 26254 -> 0 bytes ...7f26255c6fdb982613-6114851399440782797.bin | 1 + ...d590d401aef06fa40-7346526621191479971.bin} | 8 +- ...5177c432fb0f4b9c7a-8923411440325554110.bin | 3 + ...d6e97b2efa08cc33a-2031519132034312457.bin} | Bin 15037 -> 15043 bytes ...812c4e21f91b67189a-4916423456300348350.bin | 1 - ...0b74ad9e515a6e423-12493697634191524228.bin | 1 - ...429772a6dae4d8e4-10518461300793824474.bin} | 40 +- ...838b0263cacbea8b-17179096567009390036.bin} | 2 +- ...81f485f3ee0abd8fbc-6866705339020364139.bin | 1 - ...174b2b001b7fc07d0-1421259639411214755.bin} | 10 +- ...724ce2d300a9ba19-13092487703170321582.bin} | 16 +- ...4c2bd772afe542703-15555605541125634501.bin | 28 - ...455074027a7ed098e4-1777955047424290669.bin | 28 + ...7dd40596e84bce27e6-9282293912233142302.bin | 28 - ...cfddfd3711012442d-15895693070469526528.bin | 3 - ...c4519cb260e3d379af-7938262031378826689.bin | 3 + ...d8a33b75c79fdb1d2-4679252797102152797.bin} | Bin 4039 -> 4041 bytes ...ed7bf874ac56994715-1367463121024371072.bin | 1 - ...6aafefcf0835a11321-4723476190296637857.bin | 3 + ...60142738d1d344242-3547975538031132128.bin} | Bin 13660 -> 13662 bytes ...11b17a1d908a8cc14f-5887779426962804171.bin | 1 + ...6ebc60c681e372e7-11806048800550671457.bin} | 20 +- ...6ce59fbd9207751b1d-8715526139666757945.bin | 1 - ...4dde61e9eb7acbd900-3288475284615265131.bin | 1 + ...46f2f503ce2be08df-6080964714492454718.bin} | Bin 4245045 -> 4245050 bytes ...1a35a3edfe1b0a0c8-3240319140435154627.bin} | 18 +- ...a8132ce19a11fa7ea3-4224533828684303111.bin | 28 + ...bc2ae186499274242-14000935910591406460.bin | 1 + ...a602178229f6d91284-815705999021725944.bin} | Bin 9612 -> 9616 bytes ...5617ece5045510022-12309834359548800603.bin | 30 - previews/PR284/components.html | 14 +- previews/PR284/deployment.html | 6 +- previews/PR284/extending.html | 2 +- previews/PR284/index.html | 14 +- previews/PR284/interactions.html | 38 +- previews/PR284/javascript-libraries.html | 12 +- previews/PR284/layouting.html | 104 +- previews/PR284/plotting.html | 1784 ++++++++--------- previews/PR284/static.html | 6 +- previews/PR284/styling.html | 24 +- previews/PR284/widgets.html | 146 +- 59 files changed, 1292 insertions(+), 1292 deletions(-) rename previews/PR284/bonito/bin/{91fc0ea3028bc440965522bc8b90752b14945c7b-178512889865159500.bin => 00ae28c3757782bfa458c9fd47fefd316c026413-1659267463616279974.bin} (54%) delete mode 100644 previews/PR284/bonito/bin/0c7e4e9dad1a358bebfae489fe6d949edb1f6a8d-930495308489976105.bin delete mode 100644 previews/PR284/bonito/bin/1977b8ef43c982dc01e6115a3f8460ff7683f625-16975558290121188210.bin create mode 100644 previews/PR284/bonito/bin/1c46f56b3e830a509201d15f818cce0d80a67b27-2346781460665204682.bin create mode 100644 previews/PR284/bonito/bin/2485be765ae740365e5dd935b4426614fbcf1d4e-11920879493942044601.bin delete mode 100644 previews/PR284/bonito/bin/2e0a30bf57ca9c112704e3b94b479ed2c8933b4e-2204761921051854046.bin delete mode 100644 previews/PR284/bonito/bin/32b4d1b423b8fd434223fe447b5243b997b76bbb-11000724587905297812.bin create mode 100644 previews/PR284/bonito/bin/48487c1d0299946cc543e896b389dd99fa721658-18129233411333846961.bin rename previews/PR284/bonito/bin/{4772613d08d706bbca288627f58e69d303f9925f-6147285234699756140.bin => 4e7cf09dfa47d0e07d94a980c76628c51559156d-9409438844702132886.bin} (66%) create mode 100644 previews/PR284/bonito/bin/56debaa5f3c75560ef4a85ca2db00874b3d55a2a-4435352890866269362.bin create mode 100644 previews/PR284/bonito/bin/5d19a7f4b95ad4a028413c7048a5726bcc3ac579-8549047584763895820.bin rename previews/PR284/bonito/bin/{3343786be835f0603ab88d3069c05e9f845943d4-3388412027972118692.bin => 5d28fa8d93bdd23476debb5b46b0850f03c4f8ef-472181871944900172.bin} (57%) create mode 100644 previews/PR284/bonito/bin/5e7fbb7e2a9332791bb654271e3f96ce1aa31a9f-16338630755642574744.bin delete mode 100644 previews/PR284/bonito/bin/62cfe48d93ec53d73bdd3c3635b5bc4e2ab242f6-3958468718486432358.bin delete mode 100644 previews/PR284/bonito/bin/6a8eeaa9148731b0bde12adbacfbbf55583e0c8c-16376165553044977742.bin create mode 100644 previews/PR284/bonito/bin/7036f2d42be924fb009d407f26255c6fdb982613-6114851399440782797.bin rename previews/PR284/bonito/bin/{b8d8ee5d3843671abfe78f059cf7f2b70888bfe7-13778308647955231253.bin => 7cee487af32c6ada39c44c2d590d401aef06fa40-7346526621191479971.bin} (61%) create mode 100644 previews/PR284/bonito/bin/7e93e142a5f061f1ba6f095177c432fb0f4b9c7a-8923411440325554110.bin rename previews/PR284/bonito/bin/{566f6b475ad3463873ad81a8a79b81809e67539c-14656406489859869821.bin => 7edb9c86958c905c87d5e27d6e97b2efa08cc33a-2031519132034312457.bin} (71%) delete mode 100644 previews/PR284/bonito/bin/7f6d17d7351a760de7f6bc812c4e21f91b67189a-4916423456300348350.bin delete mode 100644 previews/PR284/bonito/bin/87ecda4e7bb4068a6aed8e30b74ad9e515a6e423-12493697634191524228.bin rename previews/PR284/bonito/bin/{b1e066aad2c3c8826316d5e7312c7b5b78e7256c-15329017957949374294.bin => 89b1b0ede9dc4778b4d59a1d429772a6dae4d8e4-10518461300793824474.bin} (64%) rename previews/PR284/bonito/bin/{a4ca0baa808cc361bca4ec94a4df549d46819ebb-13532826373234677458.bin => 8ca600e58c933d27969a33fe838b0263cacbea8b-17179096567009390036.bin} (89%) delete mode 100644 previews/PR284/bonito/bin/8d6b51df472579a9f98d8f81f485f3ee0abd8fbc-6866705339020364139.bin rename previews/PR284/bonito/bin/{714a45debf41fa009992f24960597da79f5920f4-17332353474814779635.bin => 8df22b07998d66fd53ce60f174b2b001b7fc07d0-1421259639411214755.bin} (64%) rename previews/PR284/bonito/bin/{11ad823260306f68f96fafa86ca742eb1fe00bd2-10202936464792663185.bin => 8e932c7e1a38f107ec3a3eeb724ce2d300a9ba19-13092487703170321582.bin} (80%) delete mode 100644 previews/PR284/bonito/bin/90157e0d144b0de6152f7924c2bd772afe542703-15555605541125634501.bin create mode 100644 previews/PR284/bonito/bin/98812a717ffb83497b2e90455074027a7ed098e4-1777955047424290669.bin delete mode 100644 previews/PR284/bonito/bin/9f6c2438ce1717b8513a5b7dd40596e84bce27e6-9282293912233142302.bin delete mode 100644 previews/PR284/bonito/bin/a09e981093a4b2c21d2ba89cfddfd3711012442d-15895693070469526528.bin create mode 100644 previews/PR284/bonito/bin/a14f9ef1a5d76d2c392d46c4519cb260e3d379af-7938262031378826689.bin rename previews/PR284/bonito/bin/{eacf68008dc15e7f7cac64e2f73a93bb0a4af7a7-8071463902613457548.bin => a63b9808e7fa74536fd5320d8a33b75c79fdb1d2-4679252797102152797.bin} (75%) delete mode 100644 previews/PR284/bonito/bin/ab06b61458c2efe6041fb8ed7bf874ac56994715-1367463121024371072.bin create mode 100644 previews/PR284/bonito/bin/b32a558d2ad502d7e6fd156aafefcf0835a11321-4723476190296637857.bin rename previews/PR284/bonito/bin/{c6989911e5cc63089e5441c8140ff7631e02c2f0-16529916379412182468.bin => b454a1a69e6e20e760be97960142738d1d344242-3547975538031132128.bin} (70%) create mode 100644 previews/PR284/bonito/bin/ba35ed45ce2ee27433117011b17a1d908a8cc14f-5887779426962804171.bin rename previews/PR284/bonito/bin/{fba38f363a94be685afcf03ee6b05d0001ef6304-9922682976868406047.bin => cfe24572b7d0f65aadbdb7396ebc60c681e372e7-11806048800550671457.bin} (61%) delete mode 100644 previews/PR284/bonito/bin/cffdbec3b199ba9785efa06ce59fbd9207751b1d-8715526139666757945.bin create mode 100644 previews/PR284/bonito/bin/d57810239c5f39a214927c4dde61e9eb7acbd900-3288475284615265131.bin rename previews/PR284/bonito/bin/{a1f538b68a870992e63c5cb55779634099b83560-5037502801579087653.bin => dc63bb0f7b482ce5555772046f2f503ce2be08df-6080964714492454718.bin} (99%) rename previews/PR284/bonito/bin/{c77a22e58f241fe04a0570170a3709db9a2df736-17553611015914509926.bin => e5c934e77b83cd7b8bb6e6d1a35a3edfe1b0a0c8-3240319140435154627.bin} (80%) create mode 100644 previews/PR284/bonito/bin/e824accc397138269df241a8132ce19a11fa7ea3-4224533828684303111.bin create mode 100644 previews/PR284/bonito/bin/ecdc156f4db6f65805f4553bc2ae186499274242-14000935910591406460.bin rename previews/PR284/bonito/bin/{d72c1eaf0c34d16c3eba299477b7055ff8347469-2076104331952838077.bin => ed22d7ce9b6e7e907cfccca602178229f6d91284-815705999021725944.bin} (88%) delete mode 100644 previews/PR284/bonito/bin/f3dcc50603bd624b0e1b3595617ece5045510022-12309834359548800603.bin diff --git a/previews/PR284/.documenter-siteinfo.json b/previews/PR284/.documenter-siteinfo.json index abb0002d..69ba0590 100644 --- a/previews/PR284/.documenter-siteinfo.json +++ b/previews/PR284/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.3","generation_timestamp":"2025-01-24T11:55:58","documenter_version":"1.8.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.3","generation_timestamp":"2025-01-24T12:05:40","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/previews/PR284/api.html b/previews/PR284/api.html index 6cf37694..1cff0546 100644 --- a/previews/PR284/api.html +++ b/previews/PR284/api.html @@ -11,7 +11,7 @@ App() do session::Session bound_global = bind_global(session, some_observable) return DOM.div(bound_global) -endsource
Bonito.AssetType

Represent an asset stored at an URL. We try to always have online & local files for assets

source
Bonito.CodeEditorMethod
CodeEditor(language::String; initial_source="", theme="chrome", editor_options...)

Defaults for editor_options:

(
+end
source
Bonito.AssetType

Represent an asset stored at an URL. We try to always have online & local files for assets

source
Bonito.CodeEditorMethod
CodeEditor(language::String; initial_source="", theme="chrome", editor_options...)

Defaults for editor_options:

(
     autoScrollEditorIntoView = true,
     copyWithEmptySelection = true,
     wrapBehavioursEnabled = true,
@@ -21,7 +21,7 @@
     fontSize = 16,
     wrap = 80,
     mergeUndoDeltas = "always"
-)
source
Bonito.DropdownType
Dropdown(options; index=1, option_to_string=string, style=Styles(), dom_attributes...)

A simple Dropdown, which can be styled via the style::Styles attribute.

Example

App() do
+)
source
Bonito.DropdownType
Dropdown(options; index=1, option_to_string=string, style=Styles(), dom_attributes...)

A simple Dropdown, which can be styled via the style::Styles attribute.

Example

App() do
     style = Styles(
         CSS("font-weight" => "500"),
         CSS(":hover", "background-color" => "silver"),
@@ -33,7 +33,7 @@
     end
     return dropdown
 end
-
source
Bonito.NoServerType

We don't serve files and include anything directly as raw bytes. Interpolating the same asset many times, will only upload the file to JS one time though.

source
Bonito.SessionType

A web session with a user

source
Bonito.StylableSliderMethod
StylableSlider(
+
source
Bonito.NoServerType

We don't serve files and include anything directly as raw bytes. Interpolating the same asset many times, will only upload the file to JS one time though.

source
Bonito.SessionType

A web session with a user

source
Bonito.StylableSliderMethod
StylableSlider(
     range::AbstractVector;
     value=first(range),
     slider_height=15,
@@ -71,10 +71,10 @@
         ),
     )
 end
-
source
Bonito.StylesType
Styles(css::CSS...)

Creates a Styles object, which represents a Set of CSS objects. You can insert the Styles object into a DOM node, and it will be rendered as a <style> node. If you assign it directly to DOM.div(style=Style(...)), the styling will be applied to the specific div. Note, that per Session, each unique css object in all Styles across the session will only be rendered once. This makes it easy to create Styling inside of components, while not worrying about creating lots of Style nodes on the page. There are a two more convenience constructors to make Styles a bit easier to use:

Styles(pairs::Pair...) = Styles(CSS(pairs...))
+
source
Bonito.StylesType
Styles(css::CSS...)

Creates a Styles object, which represents a Set of CSS objects. You can insert the Styles object into a DOM node, and it will be rendered as a <style> node. If you assign it directly to DOM.div(style=Style(...)), the styling will be applied to the specific div. Note, that per Session, each unique css object in all Styles across the session will only be rendered once. This makes it easy to create Styling inside of components, while not worrying about creating lots of Style nodes on the page. There are a two more convenience constructors to make Styles a bit easier to use:

Styles(pairs::Pair...) = Styles(CSS(pairs...))
 Styles(priority::Styles, defaults...) = merge(Styles(defaults...), priority)

For styling components, it's recommended, to always allow user to merge in customizations of a Style, like this:

function MyComponent(; style=Styles())
     return DOM.div(style=Styles(style, "color" => "red"))
-end

All Bonito components are stylable this way.

Info

Why not Hyperscript.Style? While the scoped styling via Hyperscript.Style is great, it makes it harder to create stylable components, since it doesn't allow the deduplication of CSS objects across the session. It's also significantly slower, since it's not as specialized on the deduplication and the camelcase keyword to css attribute conversion is pretty costly. That's also why CSS uses pairs of strings instead of keyword arguments.

source
Bonito.WebSocketConnectionMethod
handles a new websocket connection to a session
source
WidgetsBase.ButtonType
Button(name; style=Styles(), dom_attributes...)

A simple button, which can be styled a style::Styles.

Example

App() do
+end

All Bonito components are stylable this way.

Info

Why not Hyperscript.Style? While the scoped styling via Hyperscript.Style is great, it makes it harder to create stylable components, since it doesn't allow the deduplication of CSS objects across the session. It's also significantly slower, since it's not as specialized on the deduplication and the camelcase keyword to css attribute conversion is pretty costly. That's also why CSS uses pairs of strings instead of keyword arguments.

source
Bonito.WebSocketConnectionMethod
handles a new websocket connection to a session
source
WidgetsBase.ButtonType
Button(name; style=Styles(), dom_attributes...)

A simple button, which can be styled a style::Styles.

Example

App() do
     style = Styles(
         CSS("font-weight" => "500"),
         CSS(":hover", "background-color" => "silver"),
@@ -86,7 +86,7 @@
     end
     return button
 end
-
source
WidgetsBase.CheckboxType
Checkbox(default_value; style=Styles(), dom_attributes...)

A simple Checkbox, which can be styled via the style::Styles attribute.

source
WidgetsBase.NumberInputType
NumberInput(default_value; style=Styles(), dom_attributes...)

A simple NumberInput, which can be styled via the style::Styles attribute.

Example

App() do
+
source
WidgetsBase.CheckboxType
Checkbox(default_value; style=Styles(), dom_attributes...)

A simple Checkbox, which can be styled via the style::Styles attribute.

source
WidgetsBase.NumberInputType
NumberInput(default_value; style=Styles(), dom_attributes...)

A simple NumberInput, which can be styled via the style::Styles attribute.

Example

App() do
     style = Styles(
         CSS("font-weight" => "500"),
         CSS(":hover", "background-color" => "silver"),
@@ -98,7 +98,7 @@
     end
     return numberinput
 end
-
source
WidgetsBase.TextFieldType
TextField(default_text; style=Styles(), dom_attributes...)

A simple TextField, which can be styled via the style::Styles attribute.

Example

App() do
+
source
WidgetsBase.TextFieldType
TextField(default_text; style=Styles(), dom_attributes...)

A simple TextField, which can be styled via the style::Styles attribute.

Example

App() do
     style = Styles(
         CSS("font-weight" => "500"),
         CSS(":hover", "background-color" => "silver"),
@@ -110,7 +110,7 @@
     end
     return textfield
 end
-
source
Bonito.CardMethod
Card(
+
source
Bonito.CardMethod
Card(
     content;
     style::Styles=Styles(),
     backgroundcolor=RGBA(1, 1, 1, 0.2),
@@ -138,7 +138,7 @@
             )
         )
     end
-
source
Bonito.CenteredMethod
Centered(content; style=Styles(), grid_attributes...)

Creates an element where the content is centered via Grid.

source
Bonito.ColMethod
Col(elems...; grid_attributes...)

Places objects in a column, based on Grid.

source
Bonito.GridMethod
Grid(
+
source
Bonito.CenteredMethod
Centered(content; style=Styles(), grid_attributes...)

Creates an element where the content is centered via Grid.

source
Bonito.ColMethod
Col(elems...; grid_attributes...)

Places objects in a column, based on Grid.

source
Bonito.GridMethod
Grid(
     elems...;
     gap="10px",
     width="100%",
@@ -153,7 +153,7 @@
     align_items="legacy",
     style::Styles=Styles(),
     div_attributes...,
-)

A Grid is a container that lays out its children in a grid, based on the powerful css display: grid property.

source
Bonito.LabeledMethod
Labeled(object, label; label_style=Styles(), attributes...)

A Labeled container with a simople layout to put a label next to an object.

App() do
+)

A Grid is a container that lays out its children in a grid, based on the powerful css display: grid property.

source
Bonito.LabeledMethod
Labeled(object, label; label_style=Styles(), attributes...)

A Labeled container with a simople layout to put a label next to an object.

App() do
     label_style = Styles(
         "color" => "white",
         "padding" => "3px",
@@ -162,11 +162,11 @@
     slider = StylableSlider(1:10)
     Card(Labeled(slider, slider.value; label_style=label_style, width="auto"); backgroundcolor="gray")
 end
-
source
Bonito.PageMethod
Page(;
+
source
Bonito.PageMethod
Page(;
     offline=false, exportable=true,
     connection::Union{Nothing, FrontendConnection}=nothing,
     server_config...
-)

A Page can be used for resetting the Bonito state in a multi page display outputs, like it's the case for Pluto/IJulia/Documenter. For Documenter, the page needs to be set to exportable=true, offline=true, but doesn't need to, since Page defaults to the most common parameters for known Packages. Exportable has the effect of inlining all data & js dependencies, so that everything can be loaded in a single HTML object. offline=true will make the Page not even try to connect to a running Julia process, which makes sense for the kind of static export we do in Documenter. For convenience, one can also pass additional server configurations, which will directly get put into configure_server!(;server_config...). Have a look at the docs for configure_server! to see the parameters.

source
Bonito.RowMethod
Row(elems...; grid_attributes...)

Places objects in a row, based on Grid.

source
Bonito.configure_server!Method
configure_server!(;
+)

A Page can be used for resetting the Bonito state in a multi page display outputs, like it's the case for Pluto/IJulia/Documenter. For Documenter, the page needs to be set to exportable=true, offline=true, but doesn't need to, since Page defaults to the most common parameters for known Packages. Exportable has the effect of inlining all data & js dependencies, so that everything can be loaded in a single HTML object. offline=true will make the Page not even try to connect to a running Julia process, which makes sense for the kind of static export we do in Documenter. For convenience, one can also pass additional server configurations, which will directly get put into configure_server!(;server_config...). Have a look at the docs for configure_server! to see the parameters.

source
Bonito.RowMethod
Row(elems...; grid_attributes...)

Places objects in a row, based on Grid.

source
Bonito.configure_server!Method
configure_server!(;
         listen_url::String=SERVER_CONFIGURATION.listen_url[],
         listen_port::Integer=SERVER_CONFIGURATION.listen_port[],
         forwarded_port::Integer=listen_port,
@@ -192,8 +192,8 @@
     if listen_url is "0.0.0.0", this will default to http://$(Sockets.getipaddr()):forwarded_port
     so that the server is reachable inside the local network.
     If the server should be reachable from some external dns server,
-    this needs to be set here.
source
Bonito.evaljsMethod
evaljs(session::Session, jss::JSCode)

Evaluate a javascript script in session.

source
Bonito.evaljs_valueMethod
evaljs_value(session::Session, js::JSCode)

Evals js code and returns the jsonified value. Blocks until value is returned. May block indefinitely, when called with a session that doesn't have a connection to the browser.

source
Bonito.export_staticMethod
export_static(html_file::Union{IO, String}, app::App)
-export_static(folder::String, routes::Routes)

Exports the app defined by app with all its assets a single HTML file. Or exports all routes defined by routes to folder.

source
Bonito.interactive_serverFunction
interactive_server(f, paths, modules=[]; url="127.0.0.1", port=8081, all=true)

Revise base server that will serve a static side based on Bonito and will update on any code change!

Usage:

using Revise, Website
+    this needs to be set here.
source
Bonito.evaljsMethod
evaljs(session::Session, jss::JSCode)

Evaluate a javascript script in session.

source
Bonito.evaljs_valueMethod
evaljs_value(session::Session, js::JSCode)

Evals js code and returns the jsonified value. Blocks until value is returned. May block indefinitely, when called with a session that doesn't have a connection to the browser.

source
Bonito.export_staticMethod
export_static(html_file::Union{IO, String}, app::App)
+export_static(folder::String, routes::Routes)

Exports the app defined by app with all its assets a single HTML file. Or exports all routes defined by routes to folder.

source
Bonito.interactive_serverFunction
interactive_server(f, paths, modules=[]; url="127.0.0.1", port=8081, all=true)

Revise base server that will serve a static side based on Bonito and will update on any code change!

Usage:

using Revise, Website
 using Website.Bonito
 
 # Start the interactive server and develop your website!
@@ -210,25 +210,25 @@
 dir = joinpath(@__DIR__, "docs")
 # only delete the bonito generated files
 rm(joinpath(dir, "bonito"); recursive=true, force=true)
-Bonito.export_static(dir, routes)

For the complete code, visit the Makie website repository which is using Bonito: MakieOrg/Website

source
Bonito.linkjsMethod
linkjs(session::Session, a::Observable, b::Observable)

for an open session, link a and b on the javascript side. This will also Link the observables in Julia, but only as long as the session is active.

source
Bonito.onjsMethod
onjs(session::Session, obs::Observable, func::JSCode)

Register a javascript function with session, that get's called when obs gets a new value. If the observable gets updated from the JS side, the calling of func will be triggered entirely in javascript, without any communication with the Julia session.

source

Private Functions

Bonito.AbstractWebsocketConnectionType

Websocket based connection type

source
Bonito.CleanupPolicyType
abstract type CleanupPolicy end

You can create a custom cleanup policy by subclassing this type. Implementing the should_cleanup and allow_soft_close methods is required. You can also implement set_cleanup_time!if it makes sense for your policy.

function should_cleanup(policy::MyCleanupPolicy, session::Session)
+Bonito.export_static(dir, routes)

For the complete code, visit the Makie website repository which is using Bonito: MakieOrg/Website

source
Bonito.linkjsMethod
linkjs(session::Session, a::Observable, b::Observable)

for an open session, link a and b on the javascript side. This will also Link the observables in Julia, but only as long as the session is active.

source
Bonito.onjsMethod
onjs(session::Session, obs::Observable, func::JSCode)

Register a javascript function with session, that get's called when obs gets a new value. If the observable gets updated from the JS side, the calling of func will be triggered entirely in javascript, without any communication with the Julia session.

source

Private Functions

Bonito.AbstractWebsocketConnectionType

Websocket based connection type

source
Bonito.CleanupPolicyType
abstract type CleanupPolicy end

You can create a custom cleanup policy by subclassing this type. Implementing the should_cleanup and allow_soft_close methods is required. You can also implement set_cleanup_time!if it makes sense for your policy.

function should_cleanup(policy::MyCleanupPolicy, session::Session)
 
 function allow_soft_close(policy::MyCleanupPolicy)
 
-function set_cleanup_time!(policy::MyCleanupPolicy, time_in_hrs::Real)

This is quite low level, and you implementaiton should probably start by copying DefaultCleanupPolicy.

source
Bonito.DefaultCleanupPolicyType
mutable struct DefaultCleanupPolicy <: CleanupPolicy
+function set_cleanup_time!(policy::MyCleanupPolicy, time_in_hrs::Real)

This is quite low level, and you implementaiton should probably start by copying DefaultCleanupPolicy.

source
Bonito.DefaultCleanupPolicyType
mutable struct DefaultCleanupPolicy <: CleanupPolicy
     session_open_wait_time=30
     cleanup_time=0.0
-end

This is the default cleanup policy. It closes sessions after session_open_wait_time seconds (default 30) if the browser didn't connect back to the displayed session. It also closes sessions after cleanup_time hours (default 0) if the session closes cleanly, indicating that the browser may reconnect if a tab is later restored. It returns true for allowsoftclose(...) when cleanup_time is non-zero.

source
Bonito.DualWebsocketMethod
handles a new websocket connection to a session
source
Bonito.FrontendConnectionType

Inteface for FrontendConnection

struct MyConnection <: FrontendConnection
-end

Needs to have a constructor with 0 arguments:

MyConnection()

Needs to overload Base.write for sending binary data

Base.write(connection::MyConnection, bytes::AbstractVector{UInt8})

Needs to implement isopen to indicate status of connection

Base.isopen(c::MyConnection)

Setup connection will be called before rendering any dom with session. The return value will be inserted into the DOM of the rendered App and can be used to do the JS part of opening the connection.

Bonito.setup_connection(session::Session{IJuliaConnection})::Union{JSCode, Nothing}

One can overload use_parent_session, to turn on rendering dom objects inside sub-sessions while keeping one parent session managing the connection alive. This is handy for IJulia/Pluto, since the parent session just needs to be initialized one time and can stay active and globally store objects used multiple times across doms.

Bonito.use_parent_session(::Session{MyConnection}) = false/false
source
Bonito.JSCodeType

Javascript code that supports interpolation of Julia Objects. Construction of JSCode via string macro:

jsc = js"console.log($(some_julia_variable))"

This will decompose into:

jsc.source == [JSString("console.log("), some_julia_variable, JSString(""")]
source
Bonito.JSExceptionMethod

Creates a Julia exception from data passed to us by the frondend!

source
Bonito.JSStringType

The string part of JSCode.

source
Bonito.JSUpdateObservableType

Functor to update JS part when an observable changes. We make this a Functor, so we can clearly identify it and don't sent any updates, if the JS side requires to update an Observable (so we don't get an endless update cycle)

source
Bonito.TableType

A simple wrapper for types that conform to the Tables.jl Table interface, which gets rendered nicely!

source
Bonito.LabelMethod
Label(value; style=Styles(), attributes...)

A Label is a simple text element, with a bold font and a font size of 1rem.

source
Bonito.add_cached!Method
add_cached!(create_cached_object::Function, session::Session, message_cache::Dict{String, Any}, key::String)

Checks if key is already cached by the session or it's root session (we skip any child session between root -> this session). If not cached already, we call create_cached_object to create a serialized form of the object corresponding to key and cache it. We return nothing if already cached, or the serialized object if not cached. We also handle the part of adding things to the message_cache from the serialization context.

source
Bonito.dependency_pathMethod
dependency_path(paths...)

Path to serve downloaded dependencies

source
Bonito.export_standaloneMethod
export_standaloneexport_standalone(
+end

This is the default cleanup policy. It closes sessions after session_open_wait_time seconds (default 30) if the browser didn't connect back to the displayed session. It also closes sessions after cleanup_time hours (default 0) if the session closes cleanly, indicating that the browser may reconnect if a tab is later restored. It returns true for allowsoftclose(...) when cleanup_time is non-zero.

source
Bonito.DualWebsocketMethod
handles a new websocket connection to a session
source
Bonito.FrontendConnectionType

Inteface for FrontendConnection

struct MyConnection <: FrontendConnection
+end

Needs to have a constructor with 0 arguments:

MyConnection()

Needs to overload Base.write for sending binary data

Base.write(connection::MyConnection, bytes::AbstractVector{UInt8})

Needs to implement isopen to indicate status of connection

Base.isopen(c::MyConnection)

Setup connection will be called before rendering any dom with session. The return value will be inserted into the DOM of the rendered App and can be used to do the JS part of opening the connection.

Bonito.setup_connection(session::Session{IJuliaConnection})::Union{JSCode, Nothing}

One can overload use_parent_session, to turn on rendering dom objects inside sub-sessions while keeping one parent session managing the connection alive. This is handy for IJulia/Pluto, since the parent session just needs to be initialized one time and can stay active and globally store objects used multiple times across doms.

Bonito.use_parent_session(::Session{MyConnection}) = false/false
source
Bonito.JSCodeType

Javascript code that supports interpolation of Julia Objects. Construction of JSCode via string macro:

jsc = js"console.log($(some_julia_variable))"

This will decompose into:

jsc.source == [JSString("console.log("), some_julia_variable, JSString(""")]
source
Bonito.JSExceptionMethod

Creates a Julia exception from data passed to us by the frondend!

source
Bonito.JSStringType

The string part of JSCode.

source
Bonito.JSUpdateObservableType

Functor to update JS part when an observable changes. We make this a Functor, so we can clearly identify it and don't sent any updates, if the JS side requires to update an Observable (so we don't get an endless update cycle)

source
Bonito.TableType

A simple wrapper for types that conform to the Tables.jl Table interface, which gets rendered nicely!

source
Bonito.LabelMethod
Label(value; style=Styles(), attributes...)

A Label is a simple text element, with a bold font and a font size of 1rem.

source
Bonito.add_cached!Method
add_cached!(create_cached_object::Function, session::Session, message_cache::Dict{String, Any}, key::String)

Checks if key is already cached by the session or it's root session (we skip any child session between root -> this session). If not cached already, we call create_cached_object to create a serialized form of the object corresponding to key and cache it. We return nothing if already cached, or the serialized object if not cached. We also handle the part of adding things to the message_cache from the serialization context.

source
Bonito.dependency_pathMethod
dependency_path(paths...)

Path to serve downloaded dependencies

source
Bonito.export_standaloneMethod
export_standaloneexport_standalone(
     app::App, folder::String;
     clear_folder=false, write_index_html=true,
     absolute_urls=false, content_delivery_url="file://" * folder * "/",
-    single_html=false)

Exports the app defined by app::Application with all its assets to folder. Will write the main html out into folder/index.html. Overwrites all existing files! If this gets served behind a proxy, set absolute_urls=true and set content_delivery_url to your proxy url. If clear_folder=true all files in folder will get deleted before exporting again! single_html=true will write out a single html instead of writing out JS depencies as separate files.

source
Bonito.getextensionMethod
getextension(path)

Get the file extension of the path. The extension is defined to be the bit after the last dot, excluding any query string.

Examples

julia> Bonito.getextension("foo.bar.js")
+    single_html=false)

Exports the app defined by app::Application with all its assets to folder. Will write the main html out into folder/index.html. Overwrites all existing files! If this gets served behind a proxy, set absolute_urls=true and set content_delivery_url to your proxy url. If clear_folder=true all files in folder will get deleted before exporting again! single_html=true will write out a single html instead of writing out JS depencies as separate files.

source
Bonito.getextensionMethod
getextension(path)

Get the file extension of the path. The extension is defined to be the bit after the last dot, excluding any query string.

Examples

julia> Bonito.getextension("foo.bar.js")
 "js"
 julia> Bonito.getextension("https://my-cdn.net/foo.bar.css?version=1")
-"css"

Taken from WebIO.jl

source
Bonito.is_onlineMethod
is_online(path)

Determine whether or not the specified path is a local filesystem path (and not a remote resource that is hosted on, for example, a CDN).

source
Bonito.jsrenderMethod
jsrender([::Session], x::Any)

Internal render method to create a valid dom. Registers used observables with a session And makes sure the dom only contains valid elements. Overload jsrender(::YourType) To enable putting YourType into a dom element/div. You can also overload it to take a session as first argument, to register messages with the current web session (e.g. via onjs).

source
Bonito.on_document_loadMethod
on_document_load(session::Session, js::JSCode)

executes javascript after document is loaded

source
Bonito.onloadMethod
onload(session::Session, node::Node, func::JSCode)

calls javascript func with node, once node has been displayed.

source
Bonito.page_htmlMethod
page_html(session::Session, html_body)

Embeds the html_body in a standalone html document!

source
Bonito.process_messageMethod
process_message(session::Session, bytes::AbstractVector{UInt8})

Handles the incoming websocket messages from the frontend. Messages are expected to be gzip compressed and packed via MsgPack.

source
Bonito.record_statesMethod
record_states(session::Session, dom::Hyperscript.Node)

Records the states of all widgets in the dom. Any widget that implements the following interface will be found in the DOM and can be recorded:

# Implementing interface for Bonito.Slider!
+"css"

Taken from WebIO.jl

source
Bonito.is_onlineMethod
is_online(path)

Determine whether or not the specified path is a local filesystem path (and not a remote resource that is hosted on, for example, a CDN).

source
Bonito.jsrenderMethod
jsrender([::Session], x::Any)

Internal render method to create a valid dom. Registers used observables with a session And makes sure the dom only contains valid elements. Overload jsrender(::YourType) To enable putting YourType into a dom element/div. You can also overload it to take a session as first argument, to register messages with the current web session (e.g. via onjs).

source
Bonito.on_document_loadMethod
on_document_load(session::Session, js::JSCode)

executes javascript after document is loaded

source
Bonito.onloadMethod
onload(session::Session, node::Node, func::JSCode)

calls javascript func with node, once node has been displayed.

source
Bonito.page_htmlMethod
page_html(session::Session, html_body)

Embeds the html_body in a standalone html document!

source
Bonito.process_messageMethod
process_message(session::Session, bytes::AbstractVector{UInt8})

Handles the incoming websocket messages from the frontend. Messages are expected to be gzip compressed and packed via MsgPack.

source
Bonito.record_statesMethod
record_states(session::Session, dom::Hyperscript.Node)

Records the states of all widgets in the dom. Any widget that implements the following interface will be found in the DOM and can be recorded:

# Implementing interface for Bonito.Slider!
 is_widget(::Slider) = true
 value_range(slider::Slider) = 1:length(slider.values[])
-to_watch(slider::Slider) = slider.index # the observable that will trigger JS state change
Warn

This is experimental and might change in the future! It can also create really large HTML files, since it needs to record all combinations of widget states. It's also not well optimized yet and may create a lot of duplicated messages.

source
Bonito.register_asset_server!Method
register_asset_server!(condition::Function, ::Type{<: AbstractAssetServer})

Registers a new asset server type. condition is a function that should return nothing, if the asset server type shouldn't be used, and an initialized asset server object, if the conditions are right. E.g. The Bonito.NoServer be used inside an IJulia notebook so it's registered like this:

register_asset_server!(NoServer) do
+to_watch(slider::Slider) = slider.index # the observable that will trigger JS state change
Warn

This is experimental and might change in the future! It can also create really large HTML files, since it needs to record all combinations of widget states. It's also not well optimized yet and may create a lot of duplicated messages.

source
Bonito.register_asset_server!Method
register_asset_server!(condition::Function, ::Type{<: AbstractAssetServer})

Registers a new asset server type. condition is a function that should return nothing, if the asset server type shouldn't be used, and an initialized asset server object, if the conditions are right. E.g. The Bonito.NoServer be used inside an IJulia notebook so it's registered like this:

register_asset_server!(NoServer) do
     if isdefined(Main, :IJulia)
         return NoServer()
     end
@@ -239,7 +239,7 @@
 # which is the same as:
 force_asset_server!(YourAssetServer)
 ...
-force_asset_server!()
source
Bonito.register_connection!Method
register_connection!(condition::Function, ::Type{<: FrontendConnection})

Registers a new Connection type.

condition is a function that should return nothing, if the connection type shouldn't be used, and an initialized Connection, if the conditions are right. E.g. The IJulia connection should only be used inside an IJulia notebook so it's registered like this:

register_connection!(IJuliaConnection) do
+force_asset_server!()
source
Bonito.register_connection!Method
register_connection!(condition::Function, ::Type{<: FrontendConnection})

Registers a new Connection type.

condition is a function that should return nothing, if the connection type shouldn't be used, and an initialized Connection, if the conditions are right. E.g. The IJulia connection should only be used inside an IJulia notebook so it's registered like this:

register_connection!(IJuliaConnection) do
     if isdefined(Main, :IJulia)
         return IJuliaConnection()
     end
@@ -250,4 +250,4 @@
 # which is the same as:
 force_connection!(YourConnectionType)
 ...
-force_connection!()
source
Bonito.replace_expressionsMethod
replace_expressions(markdown, context)

Replaces all expressions inside markdown savely, by only supporting getindex/getfield expression that will index into context

source
Bonito.run_connection_loopMethod
runs the main connection loop for the websocket
source
Bonito.set_cleanup_policy!Method
set_cleanup_policy!(policy::CleanupPolicy)

You can set a custom cleanup policy by calling this function.

source
Bonito.set_cleanup_time!Method
set_cleanup_time!(time_in_hrs::Real)

Sets the time that sessions remain open after the browser tab is closed. This allows reconnecting to the same session. Only works for Websocket connection inside VSCode right now, and will display the same App again from first display. State that isn't stored in Observables inside that app is lost.

source
Bonito.setup_websocket_connection_jsMethod
returns the javascript snippet to setup the connection
source
Bonito.string_to_markdownFunction
string_to_markdown(session::Session, source::String; eval_julia_code=false)

Replaces all interpolation expressions inside markdown savely, by only supporting getindex/getfield expression that will index into context. You can eval Julia code blocks by setting eval_julia_code to a Module, into which the code gets evaluated!

source
Bonito.update_nocycle!Method

Update the value of an observable, without sending changes to the JS frontend. This will be used to update updates from the forntend.

source
Sockets.sendMethod
send(session::Session; attributes...)

Send values to the frontend via MsgPack for now

source
Bonito.HTTPServer.ServerType

HTTP server with websocket & http routes

source
Bonito.HTTPServer.ServerMethod

Server( dom, url::String, port::Int; verbose = -1 )

Creates an application that manages the global server state!

source
Base.waitMethod
wait(server::Server)

Wait on the server task, i.e. block execution by bringing the server event loop to the foreground.

source
Bonito.HTTPServer.browser_displayMethod
browser_display()

Forces Bonito.App to be displayed in a browser window that gets opened.

source
Bonito.HTTPServer.local_urlMethod
local_url(server::Server, url)

The local url to reach the server, on the server

source
Bonito.HTTPServer.online_urlMethod
online_url(server::Server, url)

The url to connect to the server from the internet. Needs to have server.proxy_url set to the IP or dns route of the server

source
Bonito.HTTPServer.tryrunMethod
tryrun(cmd::Cmd)

Try to run a command. Return true if cmd runs and is successful (exits with a code of 0). Return false otherwise.

source
+force_connection!()source
Bonito.replace_expressionsMethod
replace_expressions(markdown, context)

Replaces all expressions inside markdown savely, by only supporting getindex/getfield expression that will index into context

source
Bonito.run_connection_loopMethod
runs the main connection loop for the websocket
source
Bonito.set_cleanup_policy!Method
set_cleanup_policy!(policy::CleanupPolicy)

You can set a custom cleanup policy by calling this function.

source
Bonito.set_cleanup_time!Method
set_cleanup_time!(time_in_hrs::Real)

Sets the time that sessions remain open after the browser tab is closed. This allows reconnecting to the same session. Only works for Websocket connection inside VSCode right now, and will display the same App again from first display. State that isn't stored in Observables inside that app is lost.

source
Bonito.setup_websocket_connection_jsMethod
returns the javascript snippet to setup the connection
source
Bonito.string_to_markdownFunction
string_to_markdown(session::Session, source::String; eval_julia_code=false)

Replaces all interpolation expressions inside markdown savely, by only supporting getindex/getfield expression that will index into context. You can eval Julia code blocks by setting eval_julia_code to a Module, into which the code gets evaluated!

source
Bonito.update_nocycle!Method

Update the value of an observable, without sending changes to the JS frontend. This will be used to update updates from the forntend.

source
Sockets.sendMethod
send(session::Session; attributes...)

Send values to the frontend via MsgPack for now

source
Bonito.HTTPServer.ServerType

HTTP server with websocket & http routes

source
Bonito.HTTPServer.ServerMethod

Server( dom, url::String, port::Int; verbose = -1 )

Creates an application that manages the global server state!

source
Base.waitMethod
wait(server::Server)

Wait on the server task, i.e. block execution by bringing the server event loop to the foreground.

source
Bonito.HTTPServer.browser_displayMethod
browser_display()

Forces Bonito.App to be displayed in a browser window that gets opened.

source
Bonito.HTTPServer.local_urlMethod
local_url(server::Server, url)

The local url to reach the server, on the server

source
Bonito.HTTPServer.online_urlMethod
online_url(server::Server, url)

The url to connect to the server from the internet. Needs to have server.proxy_url set to the IP or dns route of the server

source
Bonito.HTTPServer.tryrunMethod
tryrun(cmd::Cmd)

Try to run a command. Return true if cmd runs and is successful (exits with a code of 0). Return false otherwise.

source
diff --git a/previews/PR284/assets.html b/previews/PR284/assets.html index 8196ca6e..bb27afe0 100644 --- a/previews/PR284/assets.html +++ b/previews/PR284/assets.html @@ -60,28 +60,28 @@ """) return dom end
-
+
- +
-
+
-
+ diff --git a/previews/PR284/bonito/bin/91fc0ea3028bc440965522bc8b90752b14945c7b-178512889865159500.bin b/previews/PR284/bonito/bin/00ae28c3757782bfa458c9fd47fefd316c026413-1659267463616279974.bin similarity index 54% rename from previews/PR284/bonito/bin/91fc0ea3028bc440965522bc8b90752b14945c7b-178512889865159500.bin rename to previews/PR284/bonito/bin/00ae28c3757782bfa458c9fd47fefd316c026413-1659267463616279974.bin index d901891512f2d7ea2c5a5b7dfc64c848943f9e48..b93fca48528a5c3c1f8e58a5a92bd8414b7ab457 100644 GIT binary patch delta 202 zcmZ3;zK~se(s7-v$v0I@lTwUQ(o9Ws&CQGqbxkadlXNXpj0|*B4b792lhV>s%uGxs zYD*ENZeu1pBT)(`Phr#%GO;kUw6HKSHZe9eGqEr;H8q}miE#}!;R#Hx*o2=m?E(OC C*fyyE delta 202 zcmZ3;zK~se(s7-v$v0IJlM_?TjLpn-ElrXQbxo4Z40J6_%@cJ~3=J#|j1rAgjgl-U zYD*ENZeu1pBT)(`Phr#%GBh+cH!?OcwlKCdGB7kWGBcfgiE#}!;R#Hx*o2=m?E(PR CdNl Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1okJj$2a151cc8-6473-4ac7-94d0-b32be42cb8bc1511e1511write somethingsubpayload f14090209095820733959h1511ٮ((node) => { - node['onchange'] = event => __lookup_interpolated('14090209095820733959').notify(event.srcElement.value); -})(document.querySelector('[data-jscall-id="2"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:109msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/1977b8ef43c982dc01e6115a3f8460ff7683f625-16975558290121188210.bin b/previews/PR284/bonito/bin/1977b8ef43c982dc01e6115a3f8460ff7683f625-16975558290121188210.bin deleted file mode 100644 index 0c168fc0..00000000 --- a/previews/PR284/bonito/bin/1977b8ef43c982dc01e6115a3f8460ff7683f625-16975558290121188210.bin +++ /dev/null @@ -1,3 +0,0 @@ -,j$6d9d8b51-353b-4167-9df8-e5075e45c559subpayloadkCj$6d9d8b51-353b-4167-9df8-e5075e45c5591507e1507Click mesubobsh1507payloadDŽfGreturn x=> document.querySelector('[data-jscall-id="1"]').innerText = x7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:69msg_type1Jk;j$6d9d8b51-353b-4167-9df8-e5075e45c5591508e1508£subpayloadf16759947036684133653h1508ٚ((node) => { - node['onclick'] = event=> __lookup_interpolated('16759947036684133653').notify(true); -})(document.querySelector('[data-jscall-id="1"]'));7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:65msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/1c46f56b3e830a509201d15f818cce0d80a67b27-2346781460665204682.bin b/previews/PR284/bonito/bin/1c46f56b3e830a509201d15f818cce0d80a67b27-2346781460665204682.bin new file mode 100644 index 00000000..5b98d12d --- /dev/null +++ b/previews/PR284/bonito/bin/1c46f56b3e830a509201d15f818cce0d80a67b27-2346781460665204682.bin @@ -0,0 +1,30 @@ +,j$98301587-af43-4949-b2c8-293b0c0f6b3bsubpayload1k,j$98301587-af43-4949-b2c8-293b0c0f6b3bsubpayloadkOj$98301587-af43-4949-b2c8-293b0c0f6b3b24e2425e2523e23subobsh24payloadf7758903423987130023h2311007618780848224713h25٨return (index) => { + const values = __lookup_interpolated('7758903423987130023').value + __lookup_interpolated('11007618780848224713').notify(values[index - 1]) +} +8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1k8j$98301587-af43-4949-b2c8-293b0c0f6b3b28e283subobsh28payloadfireturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k8j$98301587-af43-4949-b2c8-293b0c0f6b3b29e291subobsh29payloadfkreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k8j$98301587-af43-4949-b2c8-293b0c0f6b3b30e301subobsh30payloadǠfUreturn (val)=> { + document.querySelector('[data-jscall-id="3"]').innerText = val +}E/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/observables.jl:98msg_type1k,j$98301587-af43-4949-b2c8-293b0c0f6b3bsubpayloadf9389734737311007164h24o((node) => { + node['oninput'] = (event)=> { + const idx = event.srcElement.valueAsNumber; + console.log(idx, " ", __lookup_interpolated('9389734737311007164').value) + if (idx !== __lookup_interpolated('9389734737311007164').value) { + __lookup_interpolated('9389734737311007164').notify(idx) + } +} +})(document.querySelector('[data-jscall-id="2"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$98301587-af43-4949-b2c8-293b0c0f6b3bsubpayloadf48307326934707931911Mk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayload1id29msg_type02Mk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayload2id29msg_type03Mk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayload3id29msg_type0Bonito.fetch_binary('bonito/bin/5e7fbb7e2a9332791bb654271e3f96ce1aa31a9f-16338630755642574744.bin').then(binary => { + const statemap = __lookup_interpolated('4830732693470793191') + console.log(statemap) + const observables = Bonito.decode_binary(binary, false); + Bonito.onany(observables, (states) => { + console.log(states) + // messages to send for this state of that observable + const messages = statemap[states] + // not all states trigger events + // so some states won't have any messages recorded + if (messages){ + messages.forEach(Bonito.process_message) + } + }) +}) +7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/2485be765ae740365e5dd935b4426614fbcf1d4e-11920879493942044601.bin b/previews/PR284/bonito/bin/2485be765ae740365e5dd935b4426614fbcf1d4e-11920879493942044601.bin new file mode 100644 index 00000000..3fe5b742 --- /dev/null +++ b/previews/PR284/bonito/bin/2485be765ae740365e5dd935b4426614fbcf1d4e-11920879493942044601.bin @@ -0,0 +1,28 @@ +,j$64afb62b-f6db-462d-9403-9c5cab2d8293subpayload { + const values = __lookup_interpolated('5819728696396383523').value + __lookup_interpolated('2382138371259254161').notify(values[index - 1]) +} +8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1k:j$64afb62b-f6db-462d-9403-9c5cab2d8293281e2815subobsh281payloadfireturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1!k:j$64afb62b-f6db-462d-9403-9c5cab2d8293282e2821subobsh282payloadfkreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k,j$64afb62b-f6db-462d-9403-9c5cab2d8293subpayloadf6169627761023963991h277o((node) => { + node['oninput'] = (event)=> { + const idx = event.srcElement.valueAsNumber; + console.log(idx, " ", __lookup_interpolated('6169627761023963991').value) + if (idx !== __lookup_interpolated('6169627761023963991').value) { + __lookup_interpolated('6169627761023963991').notify(idx) + } +} +})(document.querySelector('[data-jscall-id="2"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$64afb62b-f6db-462d-9403-9c5cab2d8293subpayloadzf146097313323422481974Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload4id282msg_type01Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload1id282msg_type05Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload5id282msg_type02Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload2id282msg_type03Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload3id282msg_type0Bonito.fetch_binary('bonito/bin/d57810239c5f39a214927c4dde61e9eb7acbd900-3288475284615265131.bin').then(binary => { + const statemap = __lookup_interpolated('14609731332342248197') + console.log(statemap) + const observables = Bonito.decode_binary(binary, false); + Bonito.onany(observables, (states) => { + console.log(states) + // messages to send for this state of that observable + const messages = statemap[states] + // not all states trigger events + // so some states won't have any messages recorded + if (messages){ + messages.forEach(Bonito.process_message) + } + }) +}) +7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/2e0a30bf57ca9c112704e3b94b479ed2c8933b4e-2204761921051854046.bin b/previews/PR284/bonito/bin/2e0a30bf57ca9c112704e3b94b479ed2c8933b4e-2204761921051854046.bin deleted file mode 100644 index cdd14eb0..00000000 --- a/previews/PR284/bonito/bin/2e0a30bf57ca9c112704e3b94b479ed2c8933b4e-2204761921051854046.bin +++ /dev/null @@ -1,28 +0,0 @@ -,j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b5subpayload1k,j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b5subpayloadkOj$a9fdfa5b-af3b-4885-a117-a85fa3cea2b534e3433e3335e35subobsh34payloadf17453566569354052267h331370050523666819848h35٨return (index) => { - const values = __lookup_interpolated('17453566569354052267').value - __lookup_interpolated('1370050523666819848').notify(values[index - 1]) -} -8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1k8j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b538e383subobsh38payloadfireturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="5"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k8j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b539e391subobsh39payloadfkreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="5"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k,j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b5subpayloadf4120605929111369179h34o((node) => { - node['oninput'] = (event)=> { - const idx = event.srcElement.valueAsNumber; - console.log(idx, " ", __lookup_interpolated('4120605929111369179').value) - if (idx !== __lookup_interpolated('4120605929111369179').value) { - __lookup_interpolated('4120605929111369179').notify(idx) - } -} -})(document.querySelector('[data-jscall-id="5"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b5subpayloadf84579547313424235561Mk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayload1id39msg_type02Mk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayload2id39msg_type03Mk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayload3id39msg_type0Bonito.fetch_binary('bonito/bin/cffdbec3b199ba9785efa06ce59fbd9207751b1d-8715526139666757945.bin').then(binary => { - const statemap = __lookup_interpolated('8457954731342423556') - console.log(statemap) - const observables = Bonito.decode_binary(binary, false); - Bonito.onany(observables, (states) => { - console.log(states) - // messages to send for this state of that observable - const messages = statemap[states] - // not all states trigger events - // so some states won't have any messages recorded - if (messages){ - messages.forEach(Bonito.process_message) - } - }) -}) -7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/32b4d1b423b8fd434223fe447b5243b997b76bbb-11000724587905297812.bin b/previews/PR284/bonito/bin/32b4d1b423b8fd434223fe447b5243b997b76bbb-11000724587905297812.bin deleted file mode 100644 index af499544d00c2f71a51eb5d1b9a14dd56caa6d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6Dl$1G}-*(5PxF=9AlG%zhQW-v1?G-PFDEjVE|W-VbgW;iuvWHM!DGG&0H zb9G{avpFz0IW{#jHaRghIWjXhI5IUbk%XjeZ)9byY-w&~b1Q9Oa%*LBbD?m_gLocZOO5J3U&rduqaOG_ zpiE2I!2PGcAcG9*jK8_R%*%eGc6-1-089mHj^$@RM3eDZ7>fTt|ER~m7YOw~yhnGw z53Bb-Bt6F&FHQVEuae#rz`z7R3}dOL2?FpxSmHeBiVp%nG20J3l!FIAK&y@Rao+<# z7LH(`NHX?6GUT(1&*|Gg{{rGw7tHCum|`Y@Uu)GrvoSU{IW#dbF*P(b zG&3|fH90snfU`IhTZDDe2WpZ<&c-#OK0RjUA1qKHQ2?`4g4Gs?w5fT#=q;z?3Wv6pvVRUq5 za-n(0pcr~@LyfgX@INS>x%`oU_rH*y7YmT@_`im6T+-9e@xK;;Tn9Pj^uKz;O_1@G z^1n=p82`WD`M=0c`v8>p-M^S*;1yv-;=hi_`KuoH_P@6CwD-(w@V`h$6GM@r^S^e; zI{%2>{lD$Du!oZb1;DMva*0=U1i(vycH`S=1Hidu9e7f03czuNN2AlI0>JOIc}W_; z0>D`QQ`SU02f(v9GBYtZFf=eQI5IFXGcYhPH8_E$ZDDd}X>Np}bQGat6rpkyp==bs CWtYbQ literal 0 HcmV?d00001 diff --git a/previews/PR284/bonito/bin/4772613d08d706bbca288627f58e69d303f9925f-6147285234699756140.bin b/previews/PR284/bonito/bin/4e7cf09dfa47d0e07d94a980c76628c51559156d-9409438844702132886.bin similarity index 66% rename from previews/PR284/bonito/bin/4772613d08d706bbca288627f58e69d303f9925f-6147285234699756140.bin rename to previews/PR284/bonito/bin/4e7cf09dfa47d0e07d94a980c76628c51559156d-9409438844702132886.bin index ca0453c00d4bb9418b44fc43d624022c53f62765..e86d60348598eff4052335dbc8d1505efc12fffa 100644 GIT binary patch delta 1100 zcma))v1?R85XN~qqj!Q3y^H20K|-Eg@?>XsW_JdQK(JB}8zo)Pd-n+DPY?u?LIe@a z+62KWU=a{y(^^=apjcQ4XOSj_o!F$Y@41ny6CD2-c8hu!tfmYHv7XTF^~dZ7Atr}4>lUw~$iL93Ov zL?%;}F_wPRTBHI15h0Vck->@^_W_tMKkxgT)XBg+GoKv6e8I#UcK zY;%l-;%#rTE{^SdB8YHhUt7yC0g z4#vMuz7EE(CePBgx3(B document.querySelector('[data-jscall-id="3"]').innerText = x7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:69msg_type1Hk;j$4425b25d-87f0-4c09-a193-738c8783f71a1500e1500£subpayloadf8758112482959223271h1500ٙ((node) => { + node['onclick'] = event=> __lookup_interpolated('8758112482959223271').notify(true); +})(document.querySelector('[data-jscall-id="3"]'));7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:65msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/5d19a7f4b95ad4a028413c7048a5726bcc3ac579-8549047584763895820.bin b/previews/PR284/bonito/bin/5d19a7f4b95ad4a028413c7048a5726bcc3ac579-8549047584763895820.bin new file mode 100644 index 0000000000000000000000000000000000000000..f184d44cc518c7d992a0926af7ea1b764adfff49 GIT binary patch literal 26258 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 st()i4|EnPEee<6lv2! z{YPL1E|iRR@r)KNY}F(YLOUng)UF5@EnC!`9CvqdUCo>K|GjtKIrrS_556AkUe3jD z!(N9ssz}Nk8BTDSq6v!9G$9#FC5YmP+*B#a&U=J}tiZijd z375jxRXz zOFH;dw!!yTwYC2qg$KS=2vJNKVp38m2RlD zOi_gdl^jWl^&dhHW)kHC8}PAyK4L&RW3l8!_D*JWwhMOM27lg-Ij({8-vzHYu0bEV z8WvL_?Z)=pLHF0EribS?CsVWI+0@7fXZL^7%)?50f?-O8)W?%jht=VEXG$mC1UPgz zhz%UP4Po=(Z>YyS=xtn%4;`iAe;T9F%0k7N=ONCiBGU61p_Fk^thj`q)jg1IYIY3_ zEH$kq0*;pKwO#e=&F!Tx^s2*J^Fnk>7hMqK3940j;br^ugL6XP>iNQ!*#<-gpib=!eNbpB(;U*Jo^s@=(U9duy5vX$tjX?b= zcRTuGY<_*fP>^2B>pjshqGvtHrIH*dfN}+u;0U%Jxb&O~fK>{_QCtz~GNL#Lsi?|6 ziqtE8E^xfg4>{7>ej`3Ul{~0B!?m_g1HB!XFw%b|KhH?Nw{Rfe4E$J7UFqHnKKg4Ti}E*H!pl)4V3S$}D2QFm0==%wP8pdY5c6)%`r zs2`VrO$k#Db-4=^J77Bi{k^2ux87CyG}?}8x=qy-m9;c|K{cL~0`+i4g#!|UL&7w#ezV$@;o9HtfCTTiMXGKqEeJ0kxL7`$MB%^>6F~N77RTyib zBo$0a;!-LkfCJ9Xqa^9vWxZK(C+Np`gLaSQ|MDSt-m-mq>gLLa7j0BvdTGea(zU6f z*_V^?o8uGl;SFmmW3A#C4#tR-On{>V{?2Sp+_W``)>iBG(6sG?>GvV(TmKt6>Ra!q znvV|bC(VDVB8Lv(kZ(ayiU&jr+%R`B0K4m#sTCZtyJ9b(yGm>IO7-1X&OdC~VY=nP zn#Ra-X3LB+5Ws*COgQdZ^6Zu+*K;*wS%!w!$8Ea2@VC mXs#3(YQeHvL3wqJi#fIrptqVwD}CyCq4m}Bpf_;1KleWd0s_?l diff --git a/previews/PR284/bonito/bin/5e7fbb7e2a9332791bb654271e3f96ce1aa31a9f-16338630755642574744.bin b/previews/PR284/bonito/bin/5e7fbb7e2a9332791bb654271e3f96ce1aa31a9f-16338630755642574744.bin new file mode 100644 index 00000000..ba62ec59 --- /dev/null +++ b/previews/PR284/bonito/bin/5e7fbb7e2a9332791bb654271e3f96ce1aa31a9f-16338630755642574744.bin @@ -0,0 +1 @@ +,j$98301587-af43-4949-b2c8-293b0c0f6b3bsubh24 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/62cfe48d93ec53d73bdd3c3635b5bc4e2ab242f6-3958468718486432358.bin b/previews/PR284/bonito/bin/62cfe48d93ec53d73bdd3c3635b5bc4e2ab242f6-3958468718486432358.bin deleted file mode 100644 index c1737487..00000000 --- a/previews/PR284/bonito/bin/62cfe48d93ec53d73bdd3c3635b5bc4e2ab242f6-3958468718486432358.bin +++ /dev/null @@ -1,3 +0,0 @@ -,j$347b5283-6e9b-4d13-8afa-115306f5b182subpayloadkCj$347b5283-6e9b-4d13-8afa-115306f5b1821499e1499Click mesubobsh1499payloadDŽfGreturn x=> document.querySelector('[data-jscall-id="3"]').innerText = x7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:69msg_type1Jk;j$347b5283-6e9b-4d13-8afa-115306f5b1821500e1500£subpayloadf14310196823975207169h1500ٚ((node) => { - node['onclick'] = event=> __lookup_interpolated('14310196823975207169').notify(true); -})(document.querySelector('[data-jscall-id="3"]'));7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:65msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/6a8eeaa9148731b0bde12adbacfbbf55583e0c8c-16376165553044977742.bin b/previews/PR284/bonito/bin/6a8eeaa9148731b0bde12adbacfbbf55583e0c8c-16376165553044977742.bin deleted file mode 100644 index 2c8b10add5454efa5fa59061133f6c7ef0a30013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26254 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 P>HKWmMfbIE1nDmTCyCCt diff --git a/previews/PR284/bonito/bin/7036f2d42be924fb009d407f26255c6fdb982613-6114851399440782797.bin b/previews/PR284/bonito/bin/7036f2d42be924fb009d407f26255c6fdb982613-6114851399440782797.bin new file mode 100644 index 00000000..477848d5 --- /dev/null +++ b/previews/PR284/bonito/bin/7036f2d42be924fb009d407f26255c6fdb982613-6114851399440782797.bin @@ -0,0 +1 @@ +,j$3bd8551c-4b10-49d7-8eeb-2cc706b3db3esubh47h45h48 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/b8d8ee5d3843671abfe78f059cf7f2b70888bfe7-13778308647955231253.bin b/previews/PR284/bonito/bin/7cee487af32c6ada39c44c2d590d401aef06fa40-7346526621191479971.bin similarity index 61% rename from previews/PR284/bonito/bin/b8d8ee5d3843671abfe78f059cf7f2b70888bfe7-13778308647955231253.bin rename to previews/PR284/bonito/bin/7cee487af32c6ada39c44c2d590d401aef06fa40-7346526621191479971.bin index 6777e20d..1207efbb 100644 --- a/previews/PR284/bonito/bin/b8d8ee5d3843671abfe78f059cf7f2b70888bfe7-13778308647955231253.bin +++ b/previews/PR284/bonito/bin/7cee487af32c6ada39c44c2d590d401aef06fa40-7346526621191479971.bin @@ -1,7 +1,7 @@ -,j$4e6aef25-6b50-4bdc-9047-ff0f42b369absubpayloadkPj$4e6aef25-6b50-4bdc-9047-ff0f42b369ab1522 e1522abc1519e1519subpayloadf4442793897393941381h15198461518106257961709h1522(function onload(element) { +,j$0417be43-e0e3-4f53-a7a9-4dabb27101c2subpayloadkPj$0417be43-e0e3-4f53-a7a9-4dabb27101c21522 e1522abc1519e1519subpayloadf17973962876167038683h152252517797804995820h1519(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('4442793897393941381')).notify(element.selectedIndex + 1); + (__lookup_interpolated('52517797804995820')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -12,13 +12,13 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('4442793897393941381').on(set_option_index); + __lookup_interpolated('52517797804995820').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('8461518106257961709').on(set_options); + __lookup_interpolated('17973962876167038683').on(set_options); } )(document.querySelector('[data-jscall-id="4"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/7e93e142a5f061f1ba6f095177c432fb0f4b9c7a-8923411440325554110.bin b/previews/PR284/bonito/bin/7e93e142a5f061f1ba6f095177c432fb0f4b9c7a-8923411440325554110.bin new file mode 100644 index 00000000..a6f92aad --- /dev/null +++ b/previews/PR284/bonito/bin/7e93e142a5f061f1ba6f095177c432fb0f4b9c7a-8923411440325554110.bin @@ -0,0 +1,3 @@ +,j$85197b12-21b9-4976-9573-8104bcf112a1subpayloadkCj$85197b12-21b9-4976-9573-8104bcf112a11507e1507Click mesubobsh1507payloadDŽfGreturn x=> document.querySelector('[data-jscall-id="1"]').innerText = x7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:69msg_type1Hk;j$85197b12-21b9-4976-9573-8104bcf112a11508e1508£subpayloadf4973164793741932911h1508ٙ((node) => { + node['onclick'] = event=> __lookup_interpolated('4973164793741932911').notify(true); +})(document.querySelector('[data-jscall-id="1"]'));7/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:65msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/566f6b475ad3463873ad81a8a79b81809e67539c-14656406489859869821.bin b/previews/PR284/bonito/bin/7edb9c86958c905c87d5e27d6e97b2efa08cc33a-2031519132034312457.bin similarity index 71% rename from previews/PR284/bonito/bin/566f6b475ad3463873ad81a8a79b81809e67539c-14656406489859869821.bin rename to previews/PR284/bonito/bin/7edb9c86958c905c87d5e27d6e97b2efa08cc33a-2031519132034312457.bin index f34780988c7dab3ae0b2912998c642c7135de7ea..b379ceeeedec4c9cc3458e00429aed9c1d230239 100644 GIT binary patch delta 1917 zcma)-yK7WI6vnx`WV5bXWba1ILoi?jNjA)R%qxhdun~NKRSH2i*({QX5j29G<}WZi zm7*k&LIe@yE;eGNkTi;wkcc26f>>y2>FkZz>=aX6E}Zk7!#BSdbW3w7D6I^juTt8wVFUKXms%2v zXZ?jA#i+)vR{9nt%trgqC9(rrSp*9}q%|0nX!OUco5+}HVi1OWNCQc~Ixu-gxX0z0 zG>~<_%g3v|?Hmj&$60!{ub9LszgGI>g(6!P%l6X}Q%77(td4 zq4IzK`HiBS0c8>ph!NQ`k%y*vkB-dg1Pa}+@^~7kipTSIAQsQhYNXOtYr9joJ)Qza z;~5@2S~z(m$HQO|g)k^UF|(A~=6Fm8Sahj*eyotlkY|^t)Xr14UOrU|3H$(!r-7ax zQL8?-)ZUtoHo0~XlE_haHCECXKkw4Xcth6HbELa$0ffb|WE)WTx zm6o79EUQ=>0#HWftn7bQy@I{N*3&Y6nxu$acXk>2lJhaQ-`&ldD|4$)ZZz&(TW&PB zllLumuLDXTq7i;=?C(zrQlWc}57SV5-9jx`utAf-g0bl{Zl+RlC-_p-&EeL0Ff|%A zDFjBLH3DdhZi^oTD}a(`@r{W5Ky=rV<^$Z7>ajYUo^AP2!}vgYk-WF z6h$P3*obn65X44{#6~+I5y6NE=`1as+m!c;x6Ll!nVp^YnIHRU^~37q#`e^5*q!is zelu^fuOr!J9e_-o>_T2&M3XN7vd){$^~v!xzg9CtMx`AgDMTbgsO;OHwNgxP5A+?B zlLCj@k>5#HX1iDb4fOP=A_dICgxm@w&CKQ(jK3VLLl9SDrbu7}kV=)W;~W zN}e2f1FQ=M*wIoh10-Fb6(EB5U<#AneHES$UaG|$gwTabPsDUUA1kSV4yuWs;bd*E zaZdpCnPfmC!)N<=OaQgfpk?K>;4#+99jSmo9j#g5DRvH=_g#((3X|)$Pc3E^Iuq62 zh@nxrRX^9-*q%;KaDAkd)*kJ5qp6&Joc`XJ6;9buavFce{#6e-v2`9b$~1X0%37I{ zE)3Kitz_ze*t21>M1-0PPJGBIV(xOvA`#R3$g9Ltw{PhF(zTS$_h9qxYIE)7o&5go zm3(2R^kp$T>}W8a09Y9WO-iwxJ-jhbvY0+^O;kVNsi?khpC&Df@B)T2>&VK&b=nvt zVp-uje1^wSectM*zJ-%fy+T*RjJsa1N{=T0DI}{?Bbp^4mJ1XpZM{)N>3#SLkE*@K y(9Mh@`W8;b+$)q$Xp}XAwLnTH7J&(T(TAucnUF=SMK&?L%PFSs+bf|pJ@+4t5CG5s diff --git a/previews/PR284/bonito/bin/7f6d17d7351a760de7f6bc812c4e21f91b67189a-4916423456300348350.bin b/previews/PR284/bonito/bin/7f6d17d7351a760de7f6bc812c4e21f91b67189a-4916423456300348350.bin deleted file mode 100644 index 887c9b31..00000000 --- a/previews/PR284/bonito/bin/7f6d17d7351a760de7f6bc812c4e21f91b67189a-4916423456300348350.bin +++ /dev/null @@ -1 +0,0 @@ -,j$309d8d0d-6b1e-41cd-a92d-6040ae583036subh277 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/87ecda4e7bb4068a6aed8e30b74ad9e515a6e423-12493697634191524228.bin b/previews/PR284/bonito/bin/87ecda4e7bb4068a6aed8e30b74ad9e515a6e423-12493697634191524228.bin deleted file mode 100644 index ecd6080c..00000000 --- a/previews/PR284/bonito/bin/87ecda4e7bb4068a6aed8e30b74ad9e515a6e423-12493697634191524228.bin +++ /dev/null @@ -1 +0,0 @@ -,j$aff203df-facb-4e6a-8341-24cec75b0e92subh24 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/b1e066aad2c3c8826316d5e7312c7b5b78e7256c-15329017957949374294.bin b/previews/PR284/bonito/bin/89b1b0ede9dc4778b4d59a1d429772a6dae4d8e4-10518461300793824474.bin similarity index 64% rename from previews/PR284/bonito/bin/b1e066aad2c3c8826316d5e7312c7b5b78e7256c-15329017957949374294.bin rename to previews/PR284/bonito/bin/89b1b0ede9dc4778b4d59a1d429772a6dae4d8e4-10518461300793824474.bin index 64ee9fcc..e18d912e 100644 --- a/previews/PR284/bonito/bin/b1e066aad2c3c8826316d5e7312c7b5b78e7256c-15329017957949374294.bin +++ b/previews/PR284/bonito/bin/89b1b0ede9dc4778b4d59a1d429772a6dae4d8e4-10518461300793824474.bin @@ -1,23 +1,23 @@ -,j$5342af72-77d0-4b75-88c1-a12f981d14a1subpayloadk9j$5342af72-77d0-4b75-88c1-a12f981d14a1341e341subobsh341payloadef6974211987395400070space-evenlycenterendspace-betweenspace-aroundreturn (idx) => { +,j$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9subpayloadk9j$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9341e341subobsh341payloadef6974211987395400070space-evenlycenterendspace-betweenspace-aroundreturn (idx) => { const grids = [document.querySelector('[data-jscall-id="276"]'), document.querySelector('[data-jscall-id="277"]')] const val = __lookup_interpolated('6974211987395400070')[idx-1] grids.forEach(x=> x.style["justify-content"] = val) -}layouting.md:460msg_type1k9j$5342af72-77d0-4b75-88c1-a12f981d14a1344e344subobsh344payloadIf6512101515035149028stretchstartcenterendreturn (idx) => { +}layouting.md:460msg_type1k9j$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9344e344subobsh344payloadIf6512101515035149028stretchstartcenterendreturn (idx) => { const grids = [document.querySelector('[data-jscall-id="276"]'), document.querySelector('[data-jscall-id="277"]')] const val = __lookup_interpolated('6512101515035149028')[idx-1] grids.forEach(x=> x.style["justify-items"] = val) -}layouting.md:467msg_type1k9j$5342af72-77d0-4b75-88c1-a12f981d14a1347e347subobsh347payloadcf6974211987395400070space-evenlycenterendspace-betweenspace-aroundreturn (idx) => { +}layouting.md:467msg_type1k9j$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9347e347subobsh347payloadcf6974211987395400070space-evenlycenterendspace-betweenspace-aroundreturn (idx) => { const grids = [document.querySelector('[data-jscall-id="276"]'), document.querySelector('[data-jscall-id="278"]')] const val = __lookup_interpolated('6974211987395400070')[idx-1] grids.forEach(x=> x.style["align-content"] = val) -}layouting.md:474msg_type1k9j$5342af72-77d0-4b75-88c1-a12f981d14a1350e350subobsh350payloadGf6512101515035149028stretchstartcenterendreturn (idx) => { +}layouting.md:474msg_type1k9j$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9350e350subobsh350payloadGf6512101515035149028stretchstartcenterendreturn (idx) => { const grids = [document.querySelector('[data-jscall-id="276"]'), document.querySelector('[data-jscall-id="278"]')] const val = __lookup_interpolated('6512101515035149028')[idx-1] grids.forEach(x=> x.style["align-items"] = val) -}layouting.md:481msg_type1klj$5342af72-77d0-4b75-88c1-a12f981d14a13539e353space-evenlycenterendspace-betweenspace-aroundsubpayloadf9377366325174874675h34717619648381334090947h353(function onload(element) { +}layouting.md:481msg_type1klj$3a2527ab-0d06-41e9-bb41-28c77fb6b3d93539e353space-evenlycenterendspace-betweenspace-aroundsubpayloadf17538213506441469706h35311446001050082174531h347(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('9377366325174874675')).notify(element.selectedIndex + 1); + (__lookup_interpolated('11446001050082174531')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -28,19 +28,19 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('9377366325174874675').on(set_option_index); + __lookup_interpolated('11446001050082174531').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('17619648381334090947').on(set_options); + __lookup_interpolated('17538213506441469706').on(set_options); } -)(document.querySelector('[data-jscall-id="283"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2klj$5342af72-77d0-4b75-88c1-a12f981d14a13559e355space-evenlycenterendspace-betweenspace-aroundsubpayloadf14140314833137816660h3556950094015583928502h341(function onload(element) { +)(document.querySelector('[data-jscall-id="283"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2klj$3a2527ab-0d06-41e9-bb41-28c77fb6b3d93559e355space-evenlycenterendspace-betweenspace-aroundsubpayloadf14860643882720939893h34110118904762935434935h355(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('6950094015583928502')).notify(element.selectedIndex + 1); + (__lookup_interpolated('14860643882720939893')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -51,19 +51,19 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('6950094015583928502').on(set_option_index); + __lookup_interpolated('14860643882720939893').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('14140314833137816660').on(set_options); + __lookup_interpolated('10118904762935434935').on(set_options); } -)(document.querySelector('[data-jscall-id="289"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2kRj$5342af72-77d0-4b75-88c1-a12f981d14a1357e357stretchstartcenterendsubpayloadf17324382832762106444h35010095620544327081183h357(function onload(element) { +)(document.querySelector('[data-jscall-id="289"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2kRj$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9357e357stretchstartcenterendsubpayloadf12575160733934341600h35016738957911110243798h357(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('17324382832762106444')).notify(element.selectedIndex + 1); + (__lookup_interpolated('12575160733934341600')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -74,19 +74,19 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('17324382832762106444').on(set_option_index); + __lookup_interpolated('12575160733934341600').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('10095620544327081183').on(set_options); + __lookup_interpolated('16738957911110243798').on(set_options); } -)(document.querySelector('[data-jscall-id="295"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2kRj$5342af72-77d0-4b75-88c1-a12f981d14a1359e359stretchstartcenterendsubpayloadf5432760971909677943h34417656422528106460826h359(function onload(element) { +)(document.querySelector('[data-jscall-id="295"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2kRj$3a2527ab-0d06-41e9-bb41-28c77fb6b3d9359e359stretchstartcenterendsubpayloadf5684093424687240028h3594812252372995926963h344(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('5432760971909677943')).notify(element.selectedIndex + 1); + (__lookup_interpolated('4812252372995926963')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -97,13 +97,13 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('5432760971909677943').on(set_option_index); + __lookup_interpolated('4812252372995926963').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('17656422528106460826').on(set_options); + __lookup_interpolated('5684093424687240028').on(set_options); } )(document.querySelector('[data-jscall-id="300"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/a4ca0baa808cc361bca4ec94a4df549d46819ebb-13532826373234677458.bin b/previews/PR284/bonito/bin/8ca600e58c933d27969a33fe838b0263cacbea8b-17179096567009390036.bin similarity index 89% rename from previews/PR284/bonito/bin/a4ca0baa808cc361bca4ec94a4df549d46819ebb-13532826373234677458.bin rename to previews/PR284/bonito/bin/8ca600e58c933d27969a33fe838b0263cacbea8b-17179096567009390036.bin index 77d1363d..dce60549 100644 --- a/previews/PR284/bonito/bin/a4ca0baa808cc361bca4ec94a4df549d46819ebb-13532826373234677458.bin +++ b/previews/PR284/bonito/bin/8ca600e58c933d27969a33fe838b0263cacbea8b-17179096567009390036.bin @@ -1,4 +1,4 @@ -,j$ccab1a41-1b38-4f4c-961f-decc311b886asubpayloadk,j$ccab1a41-1b38-4f4c-961f-decc311b886asubpayload=f+( function (container){ +,j$026648ad-ab51-4ba4-8144-009df9b7d6ecsubpayloadk,j$026648ad-ab51-4ba4-8144-009df9b7d6ecsubpayload=f+( function (container){ import('https://cdn.esm.sh/v66/three@0.136/es2021/three.js').then(THREE=> { var renderer = new THREE.WebGLRenderer({antialias: true}); renderer.setSize(500, 500); diff --git a/previews/PR284/bonito/bin/8d6b51df472579a9f98d8f81f485f3ee0abd8fbc-6866705339020364139.bin b/previews/PR284/bonito/bin/8d6b51df472579a9f98d8f81f485f3ee0abd8fbc-6866705339020364139.bin deleted file mode 100644 index e8fd3f6c..00000000 --- a/previews/PR284/bonito/bin/8d6b51df472579a9f98d8f81f485f3ee0abd8fbc-6866705339020364139.bin +++ /dev/null @@ -1 +0,0 @@ -,j$63c5f5d9-d057-44b6-a8dd-37f80d144c14subh288 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/714a45debf41fa009992f24960597da79f5920f4-17332353474814779635.bin b/previews/PR284/bonito/bin/8df22b07998d66fd53ce60f174b2b001b7fc07d0-1421259639411214755.bin similarity index 64% rename from previews/PR284/bonito/bin/714a45debf41fa009992f24960597da79f5920f4-17332353474814779635.bin rename to previews/PR284/bonito/bin/8df22b07998d66fd53ce60f174b2b001b7fc07d0-1421259639411214755.bin index 958f6678..f8312b90 100644 --- a/previews/PR284/bonito/bin/714a45debf41fa009992f24960597da79f5920f4-17332353474814779635.bin +++ b/previews/PR284/bonito/bin/8df22b07998d66fd53ce60f174b2b001b7fc07d0-1421259639411214755.bin @@ -1,10 +1,10 @@ -,j$caf1834c-ea34-47ad-bc25-591b9ad372bdsubpayloadsk9j$caf1834c-ea34-47ad-bc25-591b9ad372bd322e322subobsh322payloadf10865314609589633331space-evenlycenterendspace-betweenspace-aroundspace-evenly٩return (idx) => { +,j$ce325543-7fda-4f27-84c3-57fa4983952dsubpayloadsk9j$ce325543-7fda-4f27-84c3-57fa4983952d322e322subobsh322payloadf10865314609589633331space-evenlycenterendspace-betweenspace-aroundspace-evenly٩return (idx) => { grid = document.querySelector('[data-jscall-id="240"]') grid.style["justify-content"] = __lookup_interpolated('10865314609589633331')[idx-1] -}layouting.md:393msg_type1kyj$caf1834c-ea34-47ad-bc25-591b9ad372bd325Fe325space-evenlycenterendspace-betweenspace-aroundspace-evenlysubpayloadf14296821903003102578h3226064898210160168251h325(function onload(element) { +}layouting.md:393msg_type1kyj$ce325543-7fda-4f27-84c3-57fa4983952d325Fe325space-evenlycenterendspace-betweenspace-aroundspace-evenlysubpayloadf17121953609247267361h32212863030640915237562h325(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('14296821903003102578')).notify(element.selectedIndex + 1); + (__lookup_interpolated('17121953609247267361')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -15,13 +15,13 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('14296821903003102578').on(set_option_index); + __lookup_interpolated('17121953609247267361').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('6064898210160168251').on(set_options); + __lookup_interpolated('12863030640915237562').on(set_options); } )(document.querySelector('[data-jscall-id="242"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/11ad823260306f68f96fafa86ca742eb1fe00bd2-10202936464792663185.bin b/previews/PR284/bonito/bin/8e932c7e1a38f107ec3a3eeb724ce2d300a9ba19-13092487703170321582.bin similarity index 80% rename from previews/PR284/bonito/bin/11ad823260306f68f96fafa86ca742eb1fe00bd2-10202936464792663185.bin rename to previews/PR284/bonito/bin/8e932c7e1a38f107ec3a3eeb724ce2d300a9ba19-13092487703170321582.bin index 05307fbd..3666392e 100644 --- a/previews/PR284/bonito/bin/11ad823260306f68f96fafa86ca742eb1fe00bd2-10202936464792663185.bin +++ b/previews/PR284/bonito/bin/8e932c7e1a38f107ec3a3eeb724ce2d300a9ba19-13092487703170321582.bin @@ -1,11 +1,11 @@ -,j$be5fe0ea-e85f-4cb5-810b-ca5e9e09b589subpayload kJj$be5fe0ea-e85f-4cb5-810b-ca5e9e09b5891531e1531 -1529e1529subpayload Xf5536683710360180040h152942667313549285119h1531 -((container)=> { +,j$6c817f3b-3c76-42df-af4b-ca1cec3e637fsubpayload kJj$6c817f3b-3c76-42df-af4b-ca1cec3e637f1531e1531 +1529e1529subpayload cf10760171516701482296h152913758945468555838544h1531 +((container)=> { const thumb = document.querySelector('[data-jscall-id="13"]'); const track_active = document.querySelector('[data-jscall-id="12"]'); const track = document.querySelector('[data-jscall-id="11"]'); let isDragging = false; - const nsteps_obs = __lookup_interpolated('42667313549285119') + const nsteps_obs = __lookup_interpolated('13758945468555838544') let last_index = -1; function set_thumb_index(index) { if (index === last_index) { @@ -19,7 +19,7 @@ thumb.style.left = (new_left - thumb_width) + 'px'; // Update the left position of the thumb track_active.style.width = new_left + 'px'; // Update the active track } - __lookup_interpolated('5536683710360180040').on(idx=> set_thumb_index(idx)); + __lookup_interpolated('10760171516701482296').on(idx=> set_thumb_index(idx)); function set_thumb(e) { const nsteps = nsteps_obs.value; const thumb_width = thumb.offsetWidth / 2; @@ -33,8 +33,8 @@ track_active.style.width = new_left + 'px'; // Update the active track const index = Math.round((new_left / width) * (nsteps - 1)); last_index = index; - if (index !== __lookup_interpolated('5536683710360180040').value) { - __lookup_interpolated('5536683710360180040').notify(index + 1); + if (index !== __lookup_interpolated('10760171516701482296').value) { + __lookup_interpolated('10760171516701482296').notify(index + 1); } } const set_thumb_throttled = Bonito.throttle_function(set_thumb, 100); @@ -57,6 +57,6 @@ set_thumb(e); } }, { signal: controller.signal }); - set_thumb_index(__lookup_interpolated('5536683710360180040').value) + set_thumb_index(__lookup_interpolated('10760171516701482296').value) } )(document.querySelector('[data-jscall-id="10"]'));;/home/runner/work/Bonito.jl/Bonito.jl/src/components.jl:338msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/90157e0d144b0de6152f7924c2bd772afe542703-15555605541125634501.bin b/previews/PR284/bonito/bin/90157e0d144b0de6152f7924c2bd772afe542703-15555605541125634501.bin deleted file mode 100644 index d8bb5758..00000000 --- a/previews/PR284/bonito/bin/90157e0d144b0de6152f7924c2bd772afe542703-15555605541125634501.bin +++ /dev/null @@ -1,28 +0,0 @@ -,j$63c5f5d9-d057-44b6-a8dd-37f80d144c14subpayload?k,j$63c5f5d9-d057-44b6-a8dd-37f80d144c14subpayloadkXj$63c5f5d9-d057-44b6-a8dd-37f80d144c14288e288287 e287289e289subobsh288payloadf9453024912890151970h2896437338829597692004h287٧return (index) => { - const values = __lookup_interpolated('6437338829597692004').value - __lookup_interpolated('9453024912890151970').notify(values[index - 1]) -} -8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1 k:j$63c5f5d9-d057-44b6-a8dd-37f80d144c14292e2925subobsh292payloadfjreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="13"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1"k:j$63c5f5d9-d057-44b6-a8dd-37f80d144c14293e2931subobsh293payloadflreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="13"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k,j$63c5f5d9-d057-44b6-a8dd-37f80d144c14subpayloadf9203356519538330076h288p((node) => { - node['oninput'] = (event)=> { - const idx = event.srcElement.valueAsNumber; - console.log(idx, " ", __lookup_interpolated('9203356519538330076').value) - if (idx !== __lookup_interpolated('9203356519538330076').value) { - __lookup_interpolated('9203356519538330076').notify(idx) - } -} -})(document.querySelector('[data-jscall-id="13"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$63c5f5d9-d057-44b6-a8dd-37f80d144c14subpayloadzf171021846175215365004Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload4id293msg_type01Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload1id293msg_type05Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload5id293msg_type02Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload2id293msg_type03Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload3id293msg_type0Bonito.fetch_binary('bonito/bin/8d6b51df472579a9f98d8f81f485f3ee0abd8fbc-6866705339020364139.bin').then(binary => { - const statemap = __lookup_interpolated('17102184617521536500') - console.log(statemap) - const observables = Bonito.decode_binary(binary, false); - Bonito.onany(observables, (states) => { - console.log(states) - // messages to send for this state of that observable - const messages = statemap[states] - // not all states trigger events - // so some states won't have any messages recorded - if (messages){ - messages.forEach(Bonito.process_message) - } - }) -}) -7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/98812a717ffb83497b2e90455074027a7ed098e4-1777955047424290669.bin b/previews/PR284/bonito/bin/98812a717ffb83497b2e90455074027a7ed098e4-1777955047424290669.bin new file mode 100644 index 00000000..37977c00 --- /dev/null +++ b/previews/PR284/bonito/bin/98812a717ffb83497b2e90455074027a7ed098e4-1777955047424290669.bin @@ -0,0 +1,28 @@ +,j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20subpayloadEk,j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20subpayloadkXj$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20288e288287 e287289e289subobsh288payloadf2086499076631920742h28911934554652001918291h287٨return (index) => { + const values = __lookup_interpolated('11934554652001918291').value + __lookup_interpolated('2086499076631920742').notify(values[index - 1]) +} +8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1 k:j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20292e2925subobsh292payloadfjreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="13"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1"k:j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20293e2931subobsh293payloadflreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="13"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k,j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20subpayloadf13885914983313506884h288s((node) => { + node['oninput'] = (event)=> { + const idx = event.srcElement.valueAsNumber; + console.log(idx, " ", __lookup_interpolated('13885914983313506884').value) + if (idx !== __lookup_interpolated('13885914983313506884').value) { + __lookup_interpolated('13885914983313506884').notify(idx) + } +} +})(document.querySelector('[data-jscall-id="13"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20subpayloadxf81821051977007426124Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload4id293msg_type01Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload1id293msg_type05Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload5id293msg_type02Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload2id293msg_type03Nk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayload3id293msg_type0Bonito.fetch_binary('bonito/bin/ba35ed45ce2ee27433117011b17a1d908a8cc14f-5887779426962804171.bin').then(binary => { + const statemap = __lookup_interpolated('8182105197700742612') + console.log(statemap) + const observables = Bonito.decode_binary(binary, false); + Bonito.onany(observables, (states) => { + console.log(states) + // messages to send for this state of that observable + const messages = statemap[states] + // not all states trigger events + // so some states won't have any messages recorded + if (messages){ + messages.forEach(Bonito.process_message) + } + }) +}) +7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$ab54bbbf-c098-4b8f-8d6a-eeed7062a538rootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/9f6c2438ce1717b8513a5b7dd40596e84bce27e6-9282293912233142302.bin b/previews/PR284/bonito/bin/9f6c2438ce1717b8513a5b7dd40596e84bce27e6-9282293912233142302.bin deleted file mode 100644 index b754364a..00000000 --- a/previews/PR284/bonito/bin/9f6c2438ce1717b8513a5b7dd40596e84bce27e6-9282293912233142302.bin +++ /dev/null @@ -1,28 +0,0 @@ -,j$309d8d0d-6b1e-41cd-a92d-6040ae583036subpayload>k,j$309d8d0d-6b1e-41cd-a92d-6040ae583036subpayloadkXj$309d8d0d-6b1e-41cd-a92d-6040ae583036278e278277e277276 e276subobsh277payloadf18316345104813628027h2763222539787401521055h278٨return (index) => { - const values = __lookup_interpolated('18316345104813628027').value - __lookup_interpolated('3222539787401521055').notify(values[index - 1]) -} -8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1k:j$309d8d0d-6b1e-41cd-a92d-6040ae583036281e2815subobsh281payloadfireturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1!k:j$309d8d0d-6b1e-41cd-a92d-6040ae583036282e2821subobsh282payloadfkreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k,j$309d8d0d-6b1e-41cd-a92d-6040ae583036subpayloadf4073839367348089463h277o((node) => { - node['oninput'] = (event)=> { - const idx = event.srcElement.valueAsNumber; - console.log(idx, " ", __lookup_interpolated('4073839367348089463').value) - if (idx !== __lookup_interpolated('4073839367348089463').value) { - __lookup_interpolated('4073839367348089463').notify(idx) - } -} -})(document.querySelector('[data-jscall-id="2"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$309d8d0d-6b1e-41cd-a92d-6040ae583036subpayloadxf91150140127842789434Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload4id282msg_type01Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload1id282msg_type05Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload5id282msg_type02Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload2id282msg_type03Nk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayload3id282msg_type0Bonito.fetch_binary('bonito/bin/7f6d17d7351a760de7f6bc812c4e21f91b67189a-4916423456300348350.bin').then(binary => { - const statemap = __lookup_interpolated('9115014012784278943') - console.log(statemap) - const observables = Bonito.decode_binary(binary, false); - Bonito.onany(observables, (states) => { - console.log(states) - // messages to send for this state of that observable - const messages = statemap[states] - // not all states trigger events - // so some states won't have any messages recorded - if (messages){ - messages.forEach(Bonito.process_message) - } - }) -}) -7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$52650ee2-fc67-4dfe-b9a0-3c7a003ba1cbrootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/a09e981093a4b2c21d2ba89cfddfd3711012442d-15895693070469526528.bin b/previews/PR284/bonito/bin/a09e981093a4b2c21d2ba89cfddfd3711012442d-15895693070469526528.bin deleted file mode 100644 index 099cab56..00000000 --- a/previews/PR284/bonito/bin/a09e981093a4b2c21d2ba89cfddfd3711012442d-15895693070469526528.bin +++ /dev/null @@ -1,3 +0,0 @@ -,j$1a3f2b8b-0294-4124-a089-bff1c6a65c5csub1931559942742559920@I -=q˿ -=p diff --git a/previews/PR284/bonito/bin/a14f9ef1a5d76d2c392d46c4519cb260e3d379af-7938262031378826689.bin b/previews/PR284/bonito/bin/a14f9ef1a5d76d2c392d46c4519cb260e3d379af-7938262031378826689.bin new file mode 100644 index 00000000..4147f785 --- /dev/null +++ b/previews/PR284/bonito/bin/a14f9ef1a5d76d2c392d46c4519cb260e3d379af-7938262031378826689.bin @@ -0,0 +1,3 @@ +,j$673d4a6b-325a-4a6f-9a78-2a33b604cd2asub1931559942742559920@I +=q˿ +=p diff --git a/previews/PR284/bonito/bin/eacf68008dc15e7f7cac64e2f73a93bb0a4af7a7-8071463902613457548.bin b/previews/PR284/bonito/bin/a63b9808e7fa74536fd5320d8a33b75c79fdb1d2-4679252797102152797.bin similarity index 75% rename from previews/PR284/bonito/bin/eacf68008dc15e7f7cac64e2f73a93bb0a4af7a7-8071463902613457548.bin rename to previews/PR284/bonito/bin/a63b9808e7fa74536fd5320d8a33b75c79fdb1d2-4679252797102152797.bin index 60720d790da29d86de1f9a9541f3aca7a2cc8e07..54243e4ee2b18832d5048361d050774f32b3115c 100644 GIT binary patch delta 458 zcmX>ue^Oq1(s7-v$v0I}O_I}$Eln(SQ!PwQbWJQQl64b}Q%!YEO^l4pj11C@l8w?P zYD*KPZe!LgCLuFpGgA|D3qxZABLf3-VqO^lASW-Ku@H8a0CdvY(IlL$5?lOOR-RxvjAUk?D2?tCZ! delta 456 zcmX>pe_URB(s7-v$v0I@EmI8BQqxj&4NXl`bxn*DQ* cH2}s*Qlf#bg{6T}l4-JOqPa=h Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1mkJj$6d29b5e0-a6b4-4b7f-846a-fb37d379ec7c1511e1511write somethingsubpayloadf2695011129357199117h1511٭((node) => { + node['onchange'] = event => __lookup_interpolated('2695011129357199117').notify(event.srcElement.value); +})(document.querySelector('[data-jscall-id="2"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:109msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/c6989911e5cc63089e5441c8140ff7631e02c2f0-16529916379412182468.bin b/previews/PR284/bonito/bin/b454a1a69e6e20e760be97960142738d1d344242-3547975538031132128.bin similarity index 70% rename from previews/PR284/bonito/bin/c6989911e5cc63089e5441c8140ff7631e02c2f0-16529916379412182468.bin rename to previews/PR284/bonito/bin/b454a1a69e6e20e760be97960142738d1d344242-3547975538031132128.bin index fb4fd8a15923689ff13a52c6f8c71597fec06e43..8efccdd8e1a4190a625e125e7a06fab47dc6e858 100644 GIT binary patch delta 1845 zcmbW2ziU)M5XX5rqXfOE_s&4jphc?Oy?6U#c6OF%u<%DAC<szbR`A}`yy=l?V zL{i8^-=AMdpus4qH?&IXO(_f`$s0}ns&XbQuiZ9hHI~*i% zB?U+npg9@N^ykGb!E}aNXwU*l5F=y=Ao7UWduM;2oGbfE?efv-*i&dP%q#~zCYw4` zh{7^2jgE$8+NHz2wCe~Jo(2 zDa<3RQ@9v=f;k+|ap7>xu~0boih-H-`FJmV;oyv14TiIET#cNc%I!lEjZg@J6M<5S zl*}2(9gbu);|>iO#T9dDl!w&b_P{@$+CHMPuhKDU+V7>YFl$W4QJ6KdxpF9{g;QVB zy5kg|4d(P{q8R66mKith%m4ri$u%OXe3m#mOx#Tu7%AN(Y7S_$$}!Pk%wkXJUrNJ; z;ZFKA6Z-C-m0x#D?E~zsXIm?)^XqRP*PlFGt~Yk0k4?Llxn+S;O1Jc+kqBIf!7?Gc zShKMwYR4J(>a%HjV*gS0CA)09>78pKd-WgpLqpDZt`Qu-wMyE0?RBZ&k9~5H37>qE zRekaX+qA{n*scG*m~iU_i7OJa?;+%p<@SIaoG01`R~pvs8dQC97p~YJ;(9W1kQUo> q$;71lrQA$wsfY=bs=xK~n`wI^*(?o5ts@t6kM7WwJ-W8<;msc|iunxy delta 1863 zcmbW2ziSjx5Xae^ISDbI?rK0((nJd{x0yHdekxoMM6neVyO`W%qZi|eQA7wB)1(n3 z_be@h6!!+zGCpOYC+^NQ^OU zBqIhS1Q>bnU=Km1#-Ij+N|PkXkrbI+F^9uJ*bd7F?c>QyQN=0yrq=hmNIG+@7Wie} z7$5h`wEg-h{^aP?UU}1baeTdI&S!Kufz}2TBc)Mr6r?i-3_mh%7&0cDtR+azrGQ)l z8`KuUvS|C0vr$Doe>&!bFP-~So|$&%8bjEIa(|OwvV}*Ad0)ZrCW)q`<3zIv9 ziBt(@Kp;mW2&Lg5a#t}byi=BQ?^M)tbQ1eBobYqS#VGJ|MY?dtm(atr-{M6_D4Ovm z^mKYEDhO#q2FaO2IwJuRNR^vJr>K~einKtfq(m@O5RwIZ?QJ|?-X1<#dikio)ZGuhCib5MRmL6A%6QglUEKQ%Orr~2 diff --git a/previews/PR284/bonito/bin/ba35ed45ce2ee27433117011b17a1d908a8cc14f-5887779426962804171.bin b/previews/PR284/bonito/bin/ba35ed45ce2ee27433117011b17a1d908a8cc14f-5887779426962804171.bin new file mode 100644 index 00000000..701f8f12 --- /dev/null +++ b/previews/PR284/bonito/bin/ba35ed45ce2ee27433117011b17a1d908a8cc14f-5887779426962804171.bin @@ -0,0 +1 @@ +,j$1691b2a9-e49e-4cb2-93f5-3abc9dfc5e20subh288 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/fba38f363a94be685afcf03ee6b05d0001ef6304-9922682976868406047.bin b/previews/PR284/bonito/bin/cfe24572b7d0f65aadbdb7396ebc60c681e372e7-11806048800550671457.bin similarity index 61% rename from previews/PR284/bonito/bin/fba38f363a94be685afcf03ee6b05d0001ef6304-9922682976868406047.bin rename to previews/PR284/bonito/bin/cfe24572b7d0f65aadbdb7396ebc60c681e372e7-11806048800550671457.bin index b9c739b9..14e81322 100644 --- a/previews/PR284/bonito/bin/fba38f363a94be685afcf03ee6b05d0001ef6304-9922682976868406047.bin +++ b/previews/PR284/bonito/bin/cfe24572b7d0f65aadbdb7396ebc60c681e372e7-11806048800550671457.bin @@ -1,15 +1,15 @@ -,j$89e90452-745b-491e-8e99-579c5441ad95subpayloadxk9j$89e90452-745b-491e-8e99-579c5441ad95329e329subobsh329payloadf6974211987395400070space-evenlycenterendspace-betweenspace-aroundټreturn (idx) => { +,j$ca92a1d1-7ea6-415e-92ea-794cc5031f71subpayloadxk9j$ca92a1d1-7ea6-415e-92ea-794cc5031f71329e329subobsh329payloadf6974211987395400070space-evenlycenterendspace-betweenspace-aroundټreturn (idx) => { grid = document.querySelector('[data-jscall-id="254"]') const val = __lookup_interpolated('6974211987395400070')[idx-1] grid.style["justify-content"] = val -}layouting.md:412msg_type1[k9j$89e90452-745b-491e-8e99-579c5441ad95332e332subobsh332payloadf6512101515035149028stretchstartcenterendٺreturn (idx) => { +}layouting.md:412msg_type1[k9j$ca92a1d1-7ea6-415e-92ea-794cc5031f71332e332subobsh332payloadf6512101515035149028stretchstartcenterendٺreturn (idx) => { grid = document.querySelector('[data-jscall-id="254"]') const val = __lookup_interpolated('6512101515035149028')[idx-1] grid.style["justify-items"] = val -}layouting.md:417msg_type1klj$89e90452-745b-491e-8e99-579c5441ad953359e335space-evenlycenterendspace-betweenspace-aroundsubpayloadf17638336841330475391h3353137277768951475197h329(function onload(element) { +}layouting.md:417msg_type1klj$ca92a1d1-7ea6-415e-92ea-794cc5031f713359e335space-evenlycenterendspace-betweenspace-aroundsubpayloadf2310505326777023355h33513332921068109569785h329(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('3137277768951475197')).notify(element.selectedIndex + 1); + (__lookup_interpolated('13332921068109569785')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -20,19 +20,19 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('3137277768951475197').on(set_option_index); + __lookup_interpolated('13332921068109569785').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('17638336841330475391').on(set_options); + __lookup_interpolated('2310505326777023355').on(set_options); } -)(document.querySelector('[data-jscall-id="256"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2kRj$89e90452-745b-491e-8e99-579c5441ad95337e337stretchstartcenterendsubpayloadf17898129094723029803h3375924664965960296451h332(function onload(element) { +)(document.querySelector('[data-jscall-id="256"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2kRj$ca92a1d1-7ea6-415e-92ea-794cc5031f71337e337stretchstartcenterendsubpayloadf16124976104125308002h33216877395706113031601h337(function onload(element) { function onchange(e) { if (element === e.srcElement) { - (__lookup_interpolated('5924664965960296451')).notify(element.selectedIndex + 1); + (__lookup_interpolated('16124976104125308002')).notify(element.selectedIndex + 1); } } element.addEventListener("change", onchange); @@ -43,13 +43,13 @@ } element.selectedIndex = index - 1; } - __lookup_interpolated('5924664965960296451').on(set_option_index); + __lookup_interpolated('16124976104125308002').on(set_option_index); function set_options(opts) { element.selectedIndex = 0; // https://stackoverflow.com/questions/3364493/how-do-i-clear-all-options-in-a-dropdown-box element.options.length = 0; opts.forEach((opt, i) => element.options.add(new Option(opts[i], i))); } - __lookup_interpolated('17898129094723029803').on(set_options); + __lookup_interpolated('16877395706113031601').on(set_options); } )(document.querySelector('[data-jscall-id="262"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:214msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/cffdbec3b199ba9785efa06ce59fbd9207751b1d-8715526139666757945.bin b/previews/PR284/bonito/bin/cffdbec3b199ba9785efa06ce59fbd9207751b1d-8715526139666757945.bin deleted file mode 100644 index e92d485a..00000000 --- a/previews/PR284/bonito/bin/cffdbec3b199ba9785efa06ce59fbd9207751b1d-8715526139666757945.bin +++ /dev/null @@ -1 +0,0 @@ -,j$a9fdfa5b-af3b-4885-a117-a85fa3cea2b5subh34 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/d57810239c5f39a214927c4dde61e9eb7acbd900-3288475284615265131.bin b/previews/PR284/bonito/bin/d57810239c5f39a214927c4dde61e9eb7acbd900-3288475284615265131.bin new file mode 100644 index 00000000..820bd71b --- /dev/null +++ b/previews/PR284/bonito/bin/d57810239c5f39a214927c4dde61e9eb7acbd900-3288475284615265131.bin @@ -0,0 +1 @@ +,j$64afb62b-f6db-462d-9403-9c5cab2d8293subh277 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/a1f538b68a870992e63c5cb55779634099b83560-5037502801579087653.bin b/previews/PR284/bonito/bin/dc63bb0f7b482ce5555772046f2f503ce2be08df-6080964714492454718.bin similarity index 99% rename from previews/PR284/bonito/bin/a1f538b68a870992e63c5cb55779634099b83560-5037502801579087653.bin rename to previews/PR284/bonito/bin/dc63bb0f7b482ce5555772046f2f503ce2be08df-6080964714492454718.bin index fc1a31712e37c1d5b3cc99f40d27d2a324510cae..3b1333bbaa8a6c60231647aa6ab6daaa92b019c9 100644 GIT binary patch delta 982 zcma))KXX+@7{-%p08tS2ULyB`1TY#=j_&_IfMyFn0E{0%a&u2WMR0Nx2MXsAnTHAr z$S|j(U|R0j}QH@ z@^rc{%OFeLFZ^KM7RJo?i@uSfuu{l!pzUBm&i{66xZMB!&d+n_PoJF|T>Wb-Z9Mz& zT0Xi@{;$NpW9g>MFUEG99PL}n3n0dc7V!o#L2M#66I+NkiLJz2#M{I+Vmt8;v4eP* zc#n9WXcHY`CoxHUK>)lR_7YRXK4L#{fcS`*CO#%UA!dkAiG##v#OK5z zq9DE?z9a-82}Nka5SDO+Cjt?P!^9EdDDf5XH8Fb+>2B9OUs$=cmW}ekMd7uR&O7Bq zaE~{gx-CrzYtmX1oDWiZX0C%!R@FCl zrq`f{2*u>bV;XUbuD@~865(y)-y zIW2<~-nyu*l{UI6m)%t#`6YeR+PT(rp4p4wn}f=H|=73u#^ODtaC5s0STJ z8ol}jQ)^3SwSm{|D`~UJ@P#;SOb{%dO!UCh5wxNMge!5UrZhl!n4 zqg@QzIH8p`-plM%_4mWH_i$DlO(LvyN@^=I^zwBKaRj9{CPbrit&xTiuV56_?4vZ< zQz8f8R1Q)_E41~-JUMk!{xh*ypM8`T$0wU&o;g_ESWn%_rj%c^PE%ji@%1Fz4JGUA W>*@S>yP?}^-$uIB2<~sBUtaO?m6eq+eZ&$D}G~fbMX4o=M>NI zQ8T7kTIQKdt86ZtHW{5yXM(&5a#@kfi`>0ug_+R@FD5f{H*RIJ3m>c8#`lRueg1d0-0XDPSNWy26v{}!17^62hHtyB(x-0MT+?1|v!kH&v)5%W$F0XO zYXT9NzzB~vL207kuEr{5qF1x7Gx{~-`lE{l*Ay3q39Fgl)(9?*HlZnb-Yc=TVx^Qv zi^iUJg_)^*W-OQHf+=Z*x2KdR4w;p9TXx61tEu<0D-@K59=kfxR+L7Bnrkmy2`R%+ zS`%IP;C{rJml1eR+M@$+DimRKY1L7A3d(B~np-P%5J>H>(YIB1aHMD@<6effN(Ryx z$wISPJN}$2V~U(<-^35bW4Vx_GI~2_S&=Kr%7d4oRiP3>OZyjRBe&){lAN*7V}vKL zfsa;;t?_04rRHX7a?MRucT`~R8yJihHe9lO=imQJwd|mcM%EpVSD-6BS$A{QtvgLb OsSP(@>HYnNyZZ;X@FcSU diff --git a/previews/PR284/bonito/bin/c77a22e58f241fe04a0570170a3709db9a2df736-17553611015914509926.bin b/previews/PR284/bonito/bin/e5c934e77b83cd7b8bb6e6d1a35a3edfe1b0a0c8-3240319140435154627.bin similarity index 80% rename from previews/PR284/bonito/bin/c77a22e58f241fe04a0570170a3709db9a2df736-17553611015914509926.bin rename to previews/PR284/bonito/bin/e5c934e77b83cd7b8bb6e6d1a35a3edfe1b0a0c8-3240319140435154627.bin index 2a339d07..93ac9d6c 100644 --- a/previews/PR284/bonito/bin/c77a22e58f241fe04a0570170a3709db9a2df736-17553611015914509926.bin +++ b/previews/PR284/bonito/bin/e5c934e77b83cd7b8bb6e6d1a35a3edfe1b0a0c8-3240319140435154627.bin @@ -1,13 +1,13 @@ -,j$79cb0f18-251c-461e-a3d0-016ac4d37ce2subpayloadk;j$79cb0f18-251c-461e-a3d0-016ac4d37ce21538e15381subobsh1538payloadǡfVreturn (val)=> { +,j$0dbf3c3b-3cbf-4f29-94f1-c25b201b2183subpayloadk;j$0dbf3c3b-3cbf-4f29-94f1-c25b201b21831538e15381subobsh1538payloadǡfVreturn (val)=> { document.querySelector('[data-jscall-id="21"]').innerText = val -}E/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/observables.jl:98msg_type1 kJj$79cb0f18-251c-461e-a3d0-016ac4d37ce21537e1537 -1535e1535subpayload cf17270912760325298535h153513101228817324520999h1537 -((container)=> { +}E/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/observables.jl:98msg_type1 kJj$0dbf3c3b-3cbf-4f29-94f1-c25b201b21831537e1537 +1535e1535subpayload af14076445129239082058h15359747801154916694856h1537 +((container)=> { const thumb = document.querySelector('[data-jscall-id="19"]'); const track_active = document.querySelector('[data-jscall-id="18"]'); const track = document.querySelector('[data-jscall-id="17"]'); let isDragging = false; - const nsteps_obs = __lookup_interpolated('13101228817324520999') + const nsteps_obs = __lookup_interpolated('9747801154916694856') let last_index = -1; function set_thumb_index(index) { if (index === last_index) { @@ -21,7 +21,7 @@ thumb.style.left = (new_left - thumb_width) + 'px'; // Update the left position of the thumb track_active.style.width = new_left + 'px'; // Update the active track } - __lookup_interpolated('17270912760325298535').on(idx=> set_thumb_index(idx)); + __lookup_interpolated('14076445129239082058').on(idx=> set_thumb_index(idx)); function set_thumb(e) { const nsteps = nsteps_obs.value; const thumb_width = thumb.offsetWidth / 2; @@ -35,8 +35,8 @@ track_active.style.width = new_left + 'px'; // Update the active track const index = Math.round((new_left / width) * (nsteps - 1)); last_index = index; - if (index !== __lookup_interpolated('17270912760325298535').value) { - __lookup_interpolated('17270912760325298535').notify(index + 1); + if (index !== __lookup_interpolated('14076445129239082058').value) { + __lookup_interpolated('14076445129239082058').notify(index + 1); } } const set_thumb_throttled = Bonito.throttle_function(set_thumb, 100); @@ -59,6 +59,6 @@ set_thumb(e); } }, { signal: controller.signal }); - set_thumb_index(__lookup_interpolated('17270912760325298535').value) + set_thumb_index(__lookup_interpolated('14076445129239082058').value) } )(document.querySelector('[data-jscall-id="16"]'));;/home/runner/work/Bonito.jl/Bonito.jl/src/components.jl:338msg_type2msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/e824accc397138269df241a8132ce19a11fa7ea3-4224533828684303111.bin b/previews/PR284/bonito/bin/e824accc397138269df241a8132ce19a11fa7ea3-4224533828684303111.bin new file mode 100644 index 00000000..84519edc --- /dev/null +++ b/previews/PR284/bonito/bin/e824accc397138269df241a8132ce19a11fa7ea3-4224533828684303111.bin @@ -0,0 +1,28 @@ +,j$ba85fc2c-379b-4791-8048-24372e4abc9dsubpayload1k,j$ba85fc2c-379b-4791-8048-24372e4abc9dsubpayloadkOj$ba85fc2c-379b-4791-8048-24372e4abc9d34e3433e3335e35subobsh34payloadf16430344672626601991h355633039734683340934h33٨return (index) => { + const values = __lookup_interpolated('5633039734683340934').value + __lookup_interpolated('16430344672626601991').notify(values[index - 1]) +} +8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1k8j$ba85fc2c-379b-4791-8048-24372e4abc9d38e383subobsh38payloadfireturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="5"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k8j$ba85fc2c-379b-4791-8048-24372e4abc9d39e391subobsh39payloadfkreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="5"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k,j$ba85fc2c-379b-4791-8048-24372e4abc9dsubpayloadf7817788487898860615h34o((node) => { + node['oninput'] = (event)=> { + const idx = event.srcElement.valueAsNumber; + console.log(idx, " ", __lookup_interpolated('7817788487898860615').value) + if (idx !== __lookup_interpolated('7817788487898860615').value) { + __lookup_interpolated('7817788487898860615').notify(idx) + } +} +})(document.querySelector('[data-jscall-id="5"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$ba85fc2c-379b-4791-8048-24372e4abc9dsubpayloadf159549804760753221611Mk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayload1id39msg_type02Mk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayload2id39msg_type03Mk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayload3id39msg_type0Bonito.fetch_binary('bonito/bin/ecdc156f4db6f65805f4553bc2ae186499274242-14000935910591406460.bin').then(binary => { + const statemap = __lookup_interpolated('15954980476075322161') + console.log(statemap) + const observables = Bonito.decode_binary(binary, false); + Bonito.onany(observables, (states) => { + console.log(states) + // messages to send for this state of that observable + const messages = statemap[states] + // not all states trigger events + // so some states won't have any messages recorded + if (messages){ + messages.forEach(Bonito.process_message) + } + }) +}) +7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$c6de757a-b45b-42fc-82ba-048e232766f5rootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/ecdc156f4db6f65805f4553bc2ae186499274242-14000935910591406460.bin b/previews/PR284/bonito/bin/ecdc156f4db6f65805f4553bc2ae186499274242-14000935910591406460.bin new file mode 100644 index 00000000..2be06a71 --- /dev/null +++ b/previews/PR284/bonito/bin/ecdc156f4db6f65805f4553bc2ae186499274242-14000935910591406460.bin @@ -0,0 +1 @@ +,j$ba85fc2c-379b-4791-8048-24372e4abc9dsubh34 \ No newline at end of file diff --git a/previews/PR284/bonito/bin/d72c1eaf0c34d16c3eba299477b7055ff8347469-2076104331952838077.bin b/previews/PR284/bonito/bin/ed22d7ce9b6e7e907cfccca602178229f6d91284-815705999021725944.bin similarity index 88% rename from previews/PR284/bonito/bin/d72c1eaf0c34d16c3eba299477b7055ff8347469-2076104331952838077.bin rename to previews/PR284/bonito/bin/ed22d7ce9b6e7e907cfccca602178229f6d91284-815705999021725944.bin index 13ebb851b23bfc95dd5fb25b69a9fc35fccc9bf8..3223235723ac9e7de4d8df10e8e39d9437cb6c4a 100644 GIT binary patch delta 538 zcmeD2p5U!L>9|hTOUQmOyA`Y-(g;c`akHv4PPRLlX-_ zb3-Fjb0b4@V-r&YQ%ehDu#~}MeFaBhEV7fE6;y<=7&v*CLOyYB@>OJFBueGvVx`~l zqS+(_bi?A}(xj&41&Nh8`H3kf7|*6nZroyMW^8Fl-}Cx~EEF*#qw5WB=?6>aPiA5~@p0BhiujsO4v delta 534 zcmbQ>-Q%r2>9|hTG&VCfH3Q2SP1aX%6vm=&a+T_N~=4O@#CI%)(K(7P+X<=w-ZUXkA;Vs63 b$!C=(2xCz&xlqLrtN1n*ZLH#7Rb~SKkNKV4 diff --git a/previews/PR284/bonito/bin/f3dcc50603bd624b0e1b3595617ece5045510022-12309834359548800603.bin b/previews/PR284/bonito/bin/f3dcc50603bd624b0e1b3595617ece5045510022-12309834359548800603.bin deleted file mode 100644 index 52667b23..00000000 --- a/previews/PR284/bonito/bin/f3dcc50603bd624b0e1b3595617ece5045510022-12309834359548800603.bin +++ /dev/null @@ -1,30 +0,0 @@ -,j$aff203df-facb-4e6a-8341-24cec75b0e92subpayload3k,j$aff203df-facb-4e6a-8341-24cec75b0e92subpayloadkOj$aff203df-facb-4e6a-8341-24cec75b0e9224e2425e2523e23subobsh24payloadf10045067152388033354h2516950832182359056794h23٩return (index) => { - const values = __lookup_interpolated('16950832182359056794').value - __lookup_interpolated('10045067152388033354').notify(values[index - 1]) -} -8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:272msg_type1k8j$aff203df-facb-4e6a-8341-24cec75b0e9228e283subobsh28payloadfireturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'max', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k8j$aff203df-facb-4e6a-8341-24cec75b0e9229e291subobsh29payloadfkreturn value=> Bonito.update_node_attribute(document.querySelector('[data-jscall-id="2"]'), 'value', value)Q/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/hyperscript_integration.jl:92msg_type1k8j$aff203df-facb-4e6a-8341-24cec75b0e9230e301subobsh30payloadǠfUreturn (val)=> { - document.querySelector('[data-jscall-id="3"]').innerText = val -}E/home/runner/work/Bonito.jl/Bonito.jl/src/rendering/observables.jl:98msg_type1k,j$aff203df-facb-4e6a-8341-24cec75b0e92subpayloadf2956209176850572336h24o((node) => { - node['oninput'] = (event)=> { - const idx = event.srcElement.valueAsNumber; - console.log(idx, " ", __lookup_interpolated('2956209176850572336').value) - if (idx !== __lookup_interpolated('2956209176850572336').value) { - __lookup_interpolated('2956209176850572336').notify(idx) - } -} -})(document.querySelector('[data-jscall-id="2"]'));8/home/runner/work/Bonito.jl/Bonito.jl/src/widgets.jl:287msg_type2msg_type9k,j$aff203df-facb-4e6a-8341-24cec75b0e92subpayloadf148412869360970541101Mk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayload1id29msg_type02Mk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayload2id29msg_type03Mk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayload3id29msg_type0Bonito.fetch_binary('bonito/bin/87ecda4e7bb4068a6aed8e30b74ad9e515a6e423-12493697634191524228.bin').then(binary => { - const statemap = __lookup_interpolated('14841286936097054110') - console.log(statemap) - const observables = Bonito.decode_binary(binary, false); - Bonito.onany(observables, (states) => { - console.log(states) - // messages to send for this state of that observable - const messages = statemap[states] - // not all states trigger events - // so some states won't have any messages recorded - if (messages){ - messages.forEach(Bonito.process_message) - } - }) -}) -7/home/runner/work/Bonito.jl/Bonito.jl/src/export.jl:144msg_type2Fk-j$e665bed6-0545-471e-ab2d-40fb0a377602rootpayloadmsg_type9msg_type9 \ No newline at end of file diff --git a/previews/PR284/components.html b/previews/PR284/components.html index 7695c6fc..cdb5ff66 100644 --- a/previews/PR284/components.html +++ b/previews/PR284/components.html @@ -18,18 +18,18 @@ App(()-> CurrentMonth())
-
+
- +
-
+
- +
hello world

Server

# Depending on your servers setup, you may need to listen on another port or URL
@@ -71,4 +71,4 @@
     "/contact" => App(contact_func, title="Contact"),
     "/support" => App(support_func, title="Support")
 )
-Bonito.export_static("html/folder", routes)

Please visit Static Sites for more details.

Anything else

Bonito overloads the display/show stack for the mime "text/html" so any other Software which is able to display html in Julia should work with Bonito. If a use case is not supported, please open an issue. One can also always directly call:

html_source = sprint(io-> show(io, MIME"text/html"(), example_app))

Do get the html source code as a string (or just write it to the io).

+Bonito.export_static("html/folder", routes)

Please visit Static Sites for more details.

Anything else

Bonito overloads the display/show stack for the mime "text/html" so any other Software which is able to display html in Julia should work with Bonito. If a use case is not supported, please open an issue. One can also always directly call:

html_source = sprint(io-> show(io, MIME"text/html"(), example_app))

Do get the html source code as a string (or just write it to the io).

diff --git a/previews/PR284/extending.html b/previews/PR284/extending.html index 196ef9cc..1632f836 100644 --- a/previews/PR284/extending.html +++ b/previews/PR284/extending.html @@ -117,4 +117,4 @@ ... end -Bonito.set_cleanup_policy!(MyCleanupPolicy())

You can also make use of cleanup policies including DefaultCleanupPolicy() if you manage your own websocket server as outlined in the previous section.

You can get further details to guide your implementation by looking at Bonito's own implementation in Bonito/src/connections/websocket.jl.

+Bonito.set_cleanup_policy!(MyCleanupPolicy())

You can also make use of cleanup policies including DefaultCleanupPolicy() if you manage your own websocket server as outlined in the previous section.

You can get further details to guide your implementation by looking at Bonito's own implementation in Bonito/src/connections/websocket.jl.

diff --git a/previews/PR284/index.html b/previews/PR284/index.html index 2c375085..4825df7c 100644 --- a/previews/PR284/index.html +++ b/previews/PR284/index.html @@ -3,24 +3,24 @@ app = App() do return DOM.div(DOM.h1("hello world"), js"""console.log('hello world')""") end
-
+
- +
-
+
- +

hello world

@@ -52,7 +52,7 @@

hello world

}) """ ) -end
+end
@@ -60,7 +60,7 @@

hello world

- +
-

Read more about wrapping libraries in Javascript.

Deploying

Bonito.jl wants to run everywhere, from Notebooks, IDEs, Electron, to being directly inserted into existing web pages.

Bonito-wales

Find out more about the different ways to serve your apps in Deployment.

+

Read more about wrapping libraries in Javascript.

Deploying

Bonito.jl wants to run everywhere, from Notebooks, IDEs, Electron, to being directly inserted into existing web pages.

Bonito-wales

Find out more about the different ways to serve your apps in Deployment.

diff --git a/previews/PR284/interactions.html b/previews/PR284/interactions.html index 5dd441fb..9c670bde 100644 --- a/previews/PR284/interactions.html +++ b/previews/PR284/interactions.html @@ -7,25 +7,25 @@ # Record states is an experimental feature to record all states generated in the Julia session and allow the slider to stay interactive in the statically hosted docs! return Bonito.record_states(session, DOM.div(s, value)) end
-
+
- +
-
+
@@ -49,26 +49,26 @@ end end return Bonito.record_states(session, DOM.div(s, value)) -end
+end
-
+
- +

hello from slider: 1

@@ -87,7 +87,7 @@

hello from slider: 1

D.Card(D.FlexCol(checkbox, s, menu)), D.Card(app) )) -end
+end
- +
true1

sin (generic function with 14 methods)

@@ -210,7 +210,7 @@

Menu:

sl_radii = D.Slider("radii", 0.1:0.1:60, value=10.0) svg = map(create_svg, sl_nsamples.value, sl_sample_step.value, sl_phase.value, sl_radii.value, color) return DOM.div(D.FlexRow(D.FlexCol(sl_nsamples, sl_sample_step, sl_phase, sl_radii), svg)) -end
+end
@@ -219,7 +219,7 @@

Menu:

@@ -267,13 +267,13 @@

-
+
- + @@ -422,7 +422,7 @@

update_svg(observables.map(x=> x.value)) """) return DOM.div(D.FlexRow(D.FlexCol(nsamples, sample_step, phase, radii), svg)) -end
+end
@@ -431,7 +431,7 @@

@@ -482,4 +482,4 @@

-

This works, because the Javascript side of Bonito, will still update the observables in Javascript (which are mirrored from Julia), and therefore keep working without a running Julia process. You can use js_observable.on(value=> ....) and Bonito.onany(array_of_js_observables, values=> ...) to create interactions, pretty similar to how you would work with Observables in Julia.

+

This works, because the Javascript side of Bonito, will still update the observables in Javascript (which are mirrored from Julia), and therefore keep working without a running Julia process. You can use js_observable.on(value=> ....) and Bonito.onany(array_of_js_observables, values=> ...) to create interactions, pretty similar to how you would work with Observables in Julia.

diff --git a/previews/PR284/javascript-libraries.html b/previews/PR284/javascript-libraries.html index 6d0add61..0192e128 100644 --- a/previews/PR284/javascript-libraries.html +++ b/previews/PR284/javascript-libraries.html @@ -32,18 +32,18 @@ App() do return LeafletMap((51.505, -0.09), 13) end
-
+
- +
-
+
@@ -52,11 +52,11 @@
- +
- +
-
+
- +
-
+
- +
-
+
- +
- +
-
+
-
+
-
+

Widgets in Layouts

There are a few helpers to e.g. put a label next to a widget:

Bonito.LabeledFunction
Labeled(object, label; label_style=Styles(), attributes...)

A Labeled container with a simople layout to put a label next to an object.

App() do
@@ -367,7 +367,7 @@ 

This is a card

slider = StylableSlider(1:10) Card(Labeled(slider, slider.value; label_style=label_style, width="auto"); backgroundcolor="gray") end -
source
+
source
- + a
@@ -659,7 +659,7 @@

This is a card

""") notify(eval_button.value) return DOM.div(editor, eval_button, output) -end
+end