Release notes *2.8.9*
docker run -it \
-v ~/wljs:"/home/wljs/WLJS Notebooks" \
-v ~/wljs/Licensing:/home/wljs/.WolframEngine/Licensing \
-e PUID=$(id -u) \
-e PGID=$(id -g) \
-p 8000:3000 \
--name wljs \
ghcr.io/wljsteam/wljs-notebook:mainbrew install --cask wljs-notebookSupport of Molecule framework
We added the missing representation of Molecule symbol
Molecule["NC(=O)C[C@H](C(=O)O)N"] Molecule[(*VB[*) {"N", "C", "O", "C", Atom["C", "HydrogenCount" -> 1], "C", "O", "O", "N"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Double"], Bond[{2, 4}, "Single"], Bond[{4, 5}, "Single"], Bond[{5, 6}, "Single"], Bond[{6, 7}, "Double"], Bond[{6, 8}, "Single"], Bond[{5, 9}, "Single"]}, {StereochemistryElements -> {<|"StereoType" -> "Tetrahedral", "ChiralCenter" -> 5, "Direction" -> "Counterclockwise"|>}} (*,*)(*"1:eJy1U11LwzAU3fzAjxfBF8GnDcxjYctW0/m2rvsQhoNW92zapFJoG0kTtv17k7a6KcKCMkhves89957zcNMOmR8fNxqN4lYFl60njGevQ85x/kZJILMM842C46bmXKkw4SwX45wsEy4kTqvC9U5hvKaRFDhMaXCnYBQSAiPqWDYKO1a/g2IrdCCyiNPrdtGgh2EHx0d6yIkK86QQ1civrKzd7LirXT0Kmi0TugoutLgqyBQ/tCr6pQpjkgjGNWM7cMZSUmW66cWfezRihAZN1QWgA+Bw6gLbVTeAA4BcfUo4CLd4IMMi4sm7KBE4Ul9FAmhUd2rwG9IHtldDtqeH1bw9bXvFZybizoHEn0zE4YHEFybivd/FkafPJz6t4e0W+lIt77n+oZgs8nRTos9c0h+7WWb6+fhsVT0j87U9U7WhYFnx16XVTV1k4rqktlpmnlyWk/95ujfxVJzqZ4vTgn4AqU8Hpg=="*)(*]VB*)] Example: check for patterns and highlight them
sulfurOxygenBond = MoleculePattern[{"S", "O"}, {Bond[{1, 2}, "Single"]}];
m = Molecule["4-methylbenzenesulfonic acid"] Molecule[(*VB[*) {"C", "C", "C", "C", "C", "S", "O", "O", "O", "C", "C", "H", "H", "H", "H", "H", "H", "H", "H"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Aromatic"], Bond[{3, 4}, "Aromatic"], Bond[{4, 5}, "Aromatic"], Bond[{5, 6}, "Single"], Bond[{6, 7}, "Double"], Bond[{6, 8}, "Double"], Bond[{6, 9}, "Single"], Bond[{5, 10}, "Aromatic"], Bond[{10, 11}, "Aromatic"], Bond[{11, 2}, "Aromatic"], Bond[{1, 12}, "Single"], Bond[{1, 13}, "Single"], Bond[{1, 14}, "Single"], Bond[{3, 15}, "Single"], Bond[{4, 16}, "Single"], Bond[{9, 17}, "Single"], Bond[{10, 18}, "Single"], Bond[{11, 19}, "Single"]}, {} (*,*)(*"1:eJy9U11LwzAUnV/48SL4Ivg0wTwWXGpo69u6dpswGDS6Z9MmlULbSJqw7T/5I03a6qYvKwOF9LY595x77sPpbcyj9KjX61U3uvh8NeaieB0KQco3RrEqCiLWGk4PDOdSl7HgpQxLusiEVCRvGldbjXDFEiVJnDN8p2F679pxSpHlIduxHhBEFkkGzHKg59qpPYip56WHZsixLrOsks3I71vdu97art3qSbJikbElPjfmuqFy8thv6Be6hDSTXBjGZuCU57S5GdFLNAtYwinDHxoD0AVwOPEB8vUbQA84vjk1jOMNjlVcJSJ7lzUCR/ppSMAZtUoD/kAcgIIWQoEZ1vJ2yHaaT7uYu39kPu9ibu9rDrEZ7wTmfOknrXwTmEjpnJ2ZD0bovMzXNfosFPsVo/pmkh7xZZP47gk71b2h5EW1b76MaNBp65ra73fbyecl/YedqhPzh5G8Yp8Q1/TL"*)(*]VB*)] MoleculePlot[m, sulfurOxygenBond] (*VB[*)(FrontEndRef["07561b8a-d909-45e8-b6a1-540829f8f480"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKG5ibmhkmWSTqplgaWOqamKZa6CaZJRrqmpoYWBhZplmkmVgYAAB39RTz"*)(*]VB*) 3D molecule plot
MoleculePlot3D[m, sulfurOxygenBond] (*VB[*)(FrontEndRef["71530581-9ce1-4559-9f8a-cdfbf6697ddd"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKmxuaGhuYWhjqWianGuqamJpa6lqmWSTqJqekJaWZmVmap6SkAAB2UhW/"*)(*]VB*) Access to properties of the notebook
You can read and write to the notebook fields using this pattern:
n = EvaluationNotebook[];
n["Properties"] {"Icon","Init","PublicFields","EvaluationContext","Cells","Self","Properties","Hash","AutorunScript","Controller","ExcalidrawImages","FocusedCell","MessangerChannel","ModalsChannel","Objects","Path","Symbols","TOC","WebSocketQ","Opened","Socket","CellsInitialized","Evaluator"} Both public and private fields are exposed
Read cells and get their content
n["Cells"][[4]]
%["Data"] RemoteCellObj["54680020-89cf-4be5-aaa7-057ed347804a"] %22%23%23%20Support%20of%20Molecule%20framework%5CnWe%20added%20the%20missing%20representation%20of%20%60Molecule%60%20symbol%22 Create, open, save and evaluate external notebooks
We completed the implementation of Notebook API to the point, where you can safely:
Import and evaluate
Import a WLN notebook from a file and then evaluate it (only initialization cells) and collect the last output cell:
pianoNotebook = NotebookOpen[FileNameJoin[{"attachments", "Piano.wln"}], Visible->False];
widget = NotebookEvaluateAsModule[pianoNotebook] rm4339092060234296039G%60PianoView widget[] (*VB[*)(FrontEndRef["d8295bd8-29e4-4177-903d-4efab547e2d1"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKp1gYWZompVjoGlmmmuiaGJqb61oaGKfomqSmJSaZmpinGqUYAgB+9RWC"*)(*]VB*) We can open that notebook by
NotebookOpen[pianoNotebook] Create a notebook
Let's make an empty notebook and then open it
doc = CreateDocument[{
TextCell["Hello World", "Section"],
Plot[x, {x,0,1}]
}, Visible->False];
doc // NotebookOpen; NextJS & MDX Export
We improved our integration with Next.js & React system. Now all assets are served statically within the library: no CDNs, everyhting is local. And Tailwind framework is no longer required!
Check it out:
Minor Bug Fixes
- The
TriangleandStadiumShapesymbol is missing its graphical representation. Tooltipwas not rendered insideGraphics.- The copying button was missing in the cell properties.
- There was a bug with printing slide cells.
- Automatic cache flushing occurs after an update.
Thank You All ❤️
Monumental effort people, you're democratizing Mathematica! Anonymous
This is a fantastic project! keep it up! Anonymous
✨ Monthly financial contribution to WLJS Notebook (€3.00) Jason Cunliffe
✨ Monthly financial contribution to WLJS Notebook (€2.00) Guest