jerryi / wolfram-js-frontend Goto Github PK
View Code? Open in Web Editor NEWJavascript frontend for freeware Wolfram Engine
Home Page: https://jerryi.github.io/wljs-docs/
License: GNU General Public License v3.0
Javascript frontend for freeware Wolfram Engine
Home Page: https://jerryi.github.io/wljs-docs/
License: GNU General Public License v3.0
Is the code currently built in such a way that one could develop a notebook that has different coding languages (python, wolfram language, javascript) in different cells ? Mathematica already does this but it does not have syntax highlighting and short documentation when hovering over functions in other languages.
This question has already been asked for jupyterlab here : jupyterlab/jupyterlab#2815. The author here: jupyterlab/jupyterlab#2815 (comment) claims to have made an implementation that does that but I did not test it. There is also another claim on the same thread here jupyterlab/jupyterlab#2815 (comment).
This is an ambitious task I am just exploring the potential of the project at this moment.
Hello,
I'm a macOS user and after I cloned this repository and run the example code,
wolframscript -f Scripts/run.wls
I got the error message:
>> LPM >> extracting...
>> LPM >> copying... from /Users/blahblah/wolfram-js-frontend/___temp/JerryI-wl-wsp-74ceeb2/ to /Users/blahblah/wolfram-js-frontend/wl_packages/JerryI_WSP
LPM >> finished!
>> LPM >> fetching a zip archive from the master branch...
>> LPM >> extracting...
>> LPM >> copying... from /Users/blahblah/wolfram-js-frontend/___temp/JerryI-wl-misc-e2185c6/ to /Users/blahblah/wolfram-js-frontend/wl_packages/JerryI_Misc
LPM >> finished!
/Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/Source/Unix/socket_listener.c:6:10: fatal error: 'uv.h' file not found
#include <uv.h>
^~~~~~
1 error generated.
CreateLibrary::cmperr: Compile error: /Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/Source/Unix/socket_listener.c:6:10: fatal error: 'uv.h' file not found
LibraryFunction::noopen: Cannot open /Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/LibraryResources/MacOSX-ARM64/socket_listener.dylib.
LibraryFunction::noopen: Cannot open /Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/LibraryResources/MacOSX-ARM64/socket_listener.dylib.
LibraryFunction::noopen: Cannot open /Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/LibraryResources/MacOSX-ARM64/socket_listener.dylib.
General::stop: Further output of LibraryFunction::noopen will be suppressed during this calculation.
/Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/Source/Unix/socket_listener.c:6:10: fatal error: 'uv.h' file not found
#include <uv.h>
^~~~~~
1 error generated.
CreateLibrary::cmperr: Compile error: /Users/blahblah/wolfram-js-frontend/wl_packages/KirillBelov_CSocketListener/Source/Unix/socket_listener.c:6:10: fatal error: 'uv.h' file not found
Global`NotebookStoreKernelSymbol::shdw: Symbol NotebookStoreKernelSymbol appears in multiple contexts {Global`, JerryI`WolframJSFrontend`Notebook`}; definitions in context Global` may shadow or be shadowed by other definitions.
Checking missing packages...
# the package wljs-editor is missing
fetching the data...
url: https://github.com/JerryI/wljs-editor/zipball/master
And I have already installed libuv using brew:
Warning: libuv 1.46.0 is already installed and up-to-date.
To reinstall 1.46.0, run:
brew reinstall libuv
Is there a way to point to libuv library manually during compilation by mathematica CreateLibrary
?
Every time a notebook with a graph is ran, the error above appears.
Wolfram Engine 13.3.
Git commit 122a577.
Also, I know this is not the appropriate place to post this, but I just wanted to thank you for making this project! I'm just an occasional user of Mathematica and I couldn't reconcile the beauty of the language with the painful official notebook UI, let alone the pricing. Thanks to your projects I can now iterate faster on my models with all the proper graphing, autocomplete and math rendering of a proper Wolfram notebook app. I can't thank you enough for this! If only you could re-implement the entire interpreter too to get rid of the bloat there, but I suppose most power users need too much of Wolfram even a perfect re-implementation without some of STD will be useless.
Consider to recreate a typical WL package structure.
modules
folderBeginPackage
Needs[WolframJSFrontned]; StartFrontend[host, port...]
Getting errors like this:
...
Kenrel is not ready yet to attach notebook id
sh: /Applications/Wolfram: No such file or directory
sh: line 0: exec: /Applications/Wolfram: cannot execute: No such file or directory
...
$InstallationDirectory contains spaces: /Applications/Wolfram Desktop 13.3.1.app/Contents
If I understood the code correctly, Ploty seems to take a uniform set of points which it then gives to ListLinePloty. Why not call the actual Plot function and extract the points from there using something like:
Plot[Sin[x], {x, -1, 1}] // Cases[#, Line[x_] :> x, All] &
So something like:
ploty[f_, range_, op : OptionsPattern[Plot]] := Plot[f, range, op] // Cases[#, Line[x_] :> x, All] & // ListLinePloty[#, op] &
StandardForm
https://www.wolfram.com/language/elementary-introduction/3rd-ed/07-colors-and-styles.html
Style["hello", 20, #] & /@ {Red, Orange, Blue, Purple}
Sometimes when running certain cells, probably related to plotting/canvas, the sidebar expands into this mess.
I'm unable to consistently reproduce it, but it happens often enough on its own, seemingly correlated with evaluation of certain graphics cells.
fedora:fedora/39/x86_64/kinoite 39.20231221.0
UX wise it currently is one of the most important annoying bugs...
Is it possible to do in place evaluation in the notebook cell ? (for example in an expression 4+2+6, select 4+2, then use ctrl+shift+enter and the 4+2 evaluates to 6 without evaluating the entire cell).
Someone already tried doing this with code mirror 6 here: https://observablehq.com/@tophtucker/eval-in-place (or google in place evaluation codemirror).
I like in place evaluation as it allows checking the definition or full definition of a function by using Definition or FullDefinition with in place evaluation which allows me to check the entire function definition while remaining in the same notebook cell (rather than creating a new cell that I then have to delete or searching for the function in the notebook).
In place evaluation can also be used to track a variable x during the evaluation by using Dynamic and placing the variable in a comment like (* Dynamic[x] *) then select Dynamic[x] and ctrl+shift+ enter then evaluate the notebook cell to see x changing inside the comment. Example:
(* Dynamic[x] *) x = 0; Do[x++; Pause[1], 4]
Wolfram Engine can officially ship as a Docker image, which is preferable in many environments.
It would probably be trivial to create a Docker image for this repo that depends on Wolfram Engine, making it much easier to deploy.
https://reference.wolfram.com/language/ref/Audio.html
ListPlay[RandomReal[1, {5000}]]
An raw simplified expression.
When I run
wolframscript -f Scripts/run.wls
I get
Staring HTTP server...
Staring WS/HTTP server...
SetOptions::optnf: Cache is not a known option for WSPEngine.
ws://127.0.0.1:28540 is used for WebSockets 2
ws://127.0.0.1:60366 is used for WebSockets 1
Open http://127.0.0.1:38888 in your browser
/usr/local/Wolfram/WolframEngine/12.3/SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel
Started
-- Link read --
>> InputNamePacket[In[1]:= ]
SessionSubmit::stspec: OptionValue[WatchDog] cannot be interpreted as a ScheduledTask specification.
Timeout
Started
/usr/local/Wolfram/WolframEngine/12.3/SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel
Started
-- Link read --
>> InputNamePacket[In[1]:= ]
SessionSubmit::stspec: OptionValue[WatchDog] cannot be interpreted as a ScheduledTask specification.
Timeout
Started
/usr/local/Wolfram/WolframEngine/12.3/SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel
Started
-- Link read --
>> InputNamePacket[In[1]:= ]
SessionSubmit::stspec: OptionValue[WatchDog] cannot be interpreted as a ScheduledTask specification.
General::stop: Further output of SessionSubmit::stspec will be suppressed during this calculation.
Timeout
Started
/usr/local/Wolfram/WolframEngine/12.3/SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel
Started
-- Link read --
>> InputNamePacket[In[1]:= ]
Timeout
Started
/usr/local/Wolfram/WolframEngine/12.3/SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel
Started
-- Link read --
>> InputNamePacket[In[1]:= ]
When I try to go to http://127.0.0.1:38888
I get
Since it's impossible to support all version of mathematica, assign a minimal version will be easier. And it's possible if someone could low the version if they could do that in the future.
current seems to be 12.1, is testing whether 12.0 could work, so many undocumented functions. :)
I have encountered the same issue as in #58. This behaviour exists when running from a clone of the repository, .deb and the appimage. This is on Ubuntu 22.04 with Wolfram Engine 13.0.1.
When I launch Appimage, it always says this at the end.
http://127.0.0.1:8010 is used for WebSockets 2
Open http://127.0.0.1:8091 is used for WebSockets 1
Open http://127.0.0.1:8090 in your browser
/usr/local/Wolfram/WolframEngine/12.1/SystemFiles/Kernel/Binaries/Linux-x86-6\
> 4/WolframKernel
Started
OMP: Error #13: Assertion failure at z_Linux_util.cpp(2338).
OMP: Hint Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
Hi, your product looks promising, but I just couldn't get it installed (Desktop version) on my Mac M1. Tried multiple times over a period of months, but no go.
I tried starting a .nb file, but it wouldn't run. A .wln file with the same name was automatically created, but it doesn't seem to actually work. I'm not sure if I perhaps did something wrong.
Make front-end as a standalone app using Electron.js, which will be able to open .wl
files as notebooks.
I'm having trouble installing the project:
{Assets, build, config.build.wl, .defaultpackages, .editorconfig, electron.css, Examples, .git, .gitattributes, .github, .gitignore, imgs, Kernel, LICENSE, log.html, main.js, package.json, package-lock.json, PacletInfo.wl, preload.js, preloadMain.js, public, README.md, rendererSrc.js, rollup.config2.mjs, rollup.config.mjs, rollup.utils.config.mjs, Scripts, .scss, Services, .shead, Src, Styles, Tests, .vscode}
13.3.0 for Linux x86 (64-bit) (June 12, 2023)
Linux-x86-64
/home/tom/Projects/wolfram-js-frontend
>> LPM version: 11
>> LPM >> project directory >> /home/tom/Projects/wolfram-js-frontend
>> LPM >> fetching paclet infos...
$Aborted>> LPM >> fetching info by JerryI/CSocketListener on a Github...
Get::noopen: Cannot open https://raw.githubusercontent.com/JerryI/CSocketListener/master/PacletInfo.wl.
>> LPM >> ERROR cannot get JerryI/CSocketListener!
>> LPM >> Abortting
You'd think it's internet-related, but I am connected to the internet, and doing curl https://raw.githubusercontent.com/JerryI/CSocketListener/master/PacletInfo.wl
works just fine.
Any ideas what I'm doing wrong?
Any help debugging this issue would be highly appreciated!
Remove Quirk mode from all pages. It slows down the rendering and disables new features of CSS
Is your feature request related to a problem? Please describe.
There is a development approach that allows users and developers to avoid installing a local software environment. Add a .devcontainer folder to the project, write a DockerFile and devcontainer.json. When anyone visits our GitHub repository homepage and presses ,
it will automatically start creating an online virtual machine (Codespace). The virtual machine will have the necessary environment installed, and developers and users can start using it immediately. Additionally, developers can view and modify the code through a web-based VSCode interface. This can prevent situations like "the project runs fine on Alice's machine but not on Bob's". There are also the following advantages:
1.After building, both web pages or electron desktop applications can be accessed through a browser. (Electron desktop applications can be viewed in the browser using noVNC.)
2.The VSCode source repository has also adopted this approach.
https://github.com/microsoft/vscode?tab=readme-ov-file#development-container
Describe the solution you'd like
If this feature is useful for the project, I am more than happy to try adding this feature and submit a pull request.
Vertical layouts can restrict organizational flexibility.
There are times when I'd like to have a set of cells adjacent to my working location in a nb, so I don't have to scroll 'all the way up' or down. In Mathematica, I suppose one could copy and paste cells into a new nb and have two nbs open at once, or create some sort of palette that presents 'pinned' cells, but I think an infinite canvas is a much better solution, and presumably would be easier to implement with an open project than working with M's frontend itself.
In the pkm app Obsidian there's a feature called Canvas.
Users can create cards in an infinite workspace, and each card is a kind of note. Here, in the js-frontend, cards could be an embedded nb or groups of individual cells.
Having free cells / nbs would help with grouping ideas or approaches, for example, one can have areas for function prototyping, function exposition, and maybe another for relevant links to papers etc.
Often I don't understand whether a cell has been evaluated or not, as there is no obvious indication. I would like to see either the time the cell was last run or the number in the history, similar to Mathematica
Will the new version allow users to select their own packages/plugins without having to modify the source code? Perhaps they can simply write the JavaScript code following some guidelines and then install it for either the current session or permanently, depending on their preference.
Packages could be Javascript interfaces for graphs/networks, language processing user interface, and maybe even less common usages like website development.
Plugins would be along the ideas of vs code and obsidian plugins that affect the general user experience with the application.
From @userrand
I was thinking about how I could visually replace lengthy function names like
MultivariateHypergeometricDistribution
without having to redefine a function each time I use it in a session. Like that, under the hood, it's still the same long name but visually I see it as MuHyDi or something and I have nothing to redefine. I could also use an autocomplete/text expansion for the reverse MuHyDi->MultivariateHypergeometricDistribution. Then I realized that this code does that with its syntactic sugar.
My question is how is the syntactic sugar in this code made? Would you happen to know if it's the same idea as rendering latex in obsidian for example? If that's the case then I suppose I could not implement something at the level of the OS where visually on my screen I see something different then the characters that are on the application.
Different types of Dynamics
FrontEndUpdateCell
)Auto-splitting the code on the backend into static (evaluate on the server) and dynamic part (updated by JS)
ImplementFunction
andSlot
in core.js
Store the content of theFunction
somewhere in the browser
Dynamics
from WSP's side (see feature request )Hi, I am trying to run the project from the repository but it gets stuck at this:
jsf`jtp = JTPServer["host" -> ip, "port" -> 8092, "nohup"->True] // JTPServerStart;
I also see some minor errors along the way:
$ wolframscript -f Scripts/run.wls
{Assets, build, config.build.wl, .defaultpackages, .editorconfig, electron.css, Examples, .git, .gitattributes, .github, .gitignore, imgs, Kernel, LICENSE, log.html, main.js, package.json, package-lock.json, .packages, Packages, PacletInfo.wl, preload.js, preloadMain.js, public, README.md, renderer.js, rollup.config.mjs, rollup.utils.config.mjs, Scripts, Services, Src, Styles, Tests, .vscode, wl_packages, wl_packages_lock.wl}
E:\Idea Projects\wolfram-js-frontend
$CacheDirectory::shdw: Symbol $CacheDirectory appears in multiple contexts {EntityFramework`, Prototypes`}; definitions in context EntityFramework` may shadow or be shadowed by other definitions.
>> LPM >> project directory >> E:\Idea Projects\wolfram-js-frontend
>> LPM >> fetching paclet infos...
>> LPM >> fetching info by JerryI/CSocketListener on a Github...
>> LPM >> fetching info by KirillBelovTest/Objects on a Github...
>> LPM >> fetching info by KirillBelovTest/Internal on a Github...
>> LPM >> fetching info by JerryI/TCPServer on a Github...
>> LPM >> fetching info by JerryI/HTTPHandler on a Github...
>> LPM >> fetching info by JerryI/WebSocketHandler on a Github...
>> LPM >> fetching info by JerryI/wl-wsp on a Github...
>> LPM >> fetching info by JerryI/wl-misc on a Github...
>> LPM >> checking cached
>> LPM >> will be REMOVED: 0
>> LPM >> will be INSTALLED: 0
>> LPM >> fetching info by JerryI/CSocketListener on a Github...
>> LPM >> installed 135 remote 135
>> LPM >> fetching info by JerryI/HTTPHandler on a Github...
>> LPM >> installed 135 remote 135
>> LPM >> fetching info by JerryI/TCPServer on a Github...
>> LPM >> installed 139 remote 139
>> LPM >> fetching info by JerryI/WebSocketHandler on a Github...
>> LPM >> installed 1312 remote 1312
>> LPM >> fetching info by JerryI/wl-misc on a Github...
>> LPM >> installed 26 remote 26
>> LPM >> fetching info by JerryI/wl-wsp on a Github...
>> LPM >> installed 106 remote 106
>> LPM >> fetching info by KirillBelovTest/Internal on a Github...
>> LPM >> installed 105 remote 105
>> LPM >> fetching info by KirillBelovTest/Objects on a Github...
>> LPM >> installed 1021 remote 1021
>> LPM >> will be UPDATED: 0
Global`NotebookStoreKernelSymbol::shdw: Symbol NotebookStoreKernelSymbol appears in multiple contexts {Global`, JerryI`WolframJSFrontend`Notebook`}; definitions in context Global` may shadow or be shadowed by other definitions.
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-cells\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-editor\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-graphics3d-threejs\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-graphics-d3\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-html-support\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-hydrator\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-inputs\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-interpreter\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-js-support\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-magic-support\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-markdown-support\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-mermaid-support\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-plotly\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-revealjs\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-snippets\package.json...
* update meta-data from it
checking the package E:\Idea Projects\wolfram-js-frontend\Packages\wljs-wlx-support\package.json...
* update meta-data from it
Checking missing packages...
Checking updates...
wljs-editor :: 0.1.4 -- 0.1.4 is up to date
wljs-graphics3d-threejs :: 0.2.2 -- 0.2.2 is up to date
wljs-graphics-d3 :: 0.4.2 -- 0.4.2 is up to date
wljs-html-support :: 0.0.1 -- 0.0.1 is up to date
wljs-inputs :: 0.1.4 -- 0.1.4 is up to date
wljs-interpreter :: 0.3.5 -- 0.3.5 is up to date
wljs-js-support :: 0.0.1 -- 0.0.1 is up to date
wljs-markdown-support :: 0.0.1 -- 0.0.1 is up to date
wljs-magic-support :: 0.0.2 -- 0.0.2 is up to date
wljs-plotly :: 0.0.2 -- 0.0.2 is up to date
wljs-cells :: 0.2.9 -- 0.2.9 is up to date
wljs-hydrator :: 0.0.1 -- 0.0.1 is up to date
wljs-revealjs :: 0.0.9 -- 0.0.9 is up to date
wljs-wlx-support :: 0.0.5 -- 0.0.5 is up to date
wljs-mermaid-support :: 0.0.1 -- 0.0.1 is up to date
wljs-snippets :: 0.0.1 -- 0.0.1 is up to date
getting modules...
>> LPM >> project directory >> E:\Idea Projects\wolfram-js-frontend\Packages\wljs-wlx-support
>> LPM >> fetching paclet infos...
>> LPM >> fetching info by JerryI/wl-wlx on a Github...
>> LPM >> checking cached
>> LPM >> will be REMOVED: 0
>> LPM >> will be INSTALLED: 0
>> LPM >> fetching info by JerryI/wl-wlx on a Github...
>> LPM >> installed 106 remote 106
>> LPM >> will be UPDATED: 0
>> Snippets >> loading...
First::nofirst: {} has zero length and no first element.
StringDrop::strse: String or list of strings expected at position 1 in StringDrop[First[{}][data], 5].
>> Snippets >> loaded: Crossbar
First::nofirst: {} has zero length and no first element.
StringDrop::strse: String or list of strings expected at position 1 in StringDrop[First[{}][data], 5].
>> Snippets >> loaded: Line tools
First::nofirst: {} has zero length and no first element.
General::stop: Further output of First::nofirst will be suppressed during this calculation.
StringDrop::strse: String or list of strings expected at position 1 in StringDrop[First[{}][data], 5].
General::stop: Further output of StringDrop::strse will be suppressed during this calculation.
>> Snippets >> loaded: List manipulation helpers
>> Snippets >> loaded: Placement assistant
order
wljs-interpreter
wljs-cells
wljs-editor
wljs-graphics3d-threejs
wljs-graphics-d3
wljs-html-support
wljs-hydrator
wljs-inputs
wljs-js-support
wljs-magic-support
wljs-markdown-support
wljs-mermaid-support
wljs-plotly
wljs-wlx-support
wljs-revealjs
wljs-snippets
StringForm[Initializing `1` indices ...., WordData]
Autostart mode is activated
Tested on v13.4 and v14 prerelease kernel. Windows 10
The original idea was suggested by one of the developers - @KirillBelovTest
.html
or whatever web format (already done)wolframscript
installed (or frontend)urlprotocol
to connect to the Kernel using secure websocketsI just downloaded the current M1 version of WLJS Notebook.app (0.7.1) under macOS Sonoma (14.3). When I try to open it, I get an error message from the OS that it is damaged and cannot be opened.
I did uninstall the app and downloaded and installed again, but same issue.
How to fix?
Graphics appear in grey, black, or white (depending on light mode or dark mode and depending on if you call for a color in the code).
Is this a bug on my end, or something that's just not yet supported?
Add an option to the Kernel menu
Remote Kernel
then, the user can enter IP
and PORT
to the remote one, instead of local sandbox
In places where github is blocked (i.e. behind a powerful firewall), although the resources can be fetched through a proxy, the program will try to ping github.com and refuse to start
>> LPM >> project directory >> /home/fred/wolfram-js-frontend/Packages/wljs-wlx-support
>> LPM >> fetching paclet infos...
>> LPM >> fetching info by JerryI/wl-wlx on a Github...
>> LPM >> checking cached
$Aborted
PingTime::ptimeout: No ping echo received from host github.com within the specified timeout.
>> LPM >> ERROR! no internet connection to github.com!
>> LPM >> ERROR! no cache found ;()
This heavy reliation on internet connection is a painful experience...
To avoid using multiple separate feature requests (I have more I just don't want to bother you with so many at once) I will regroup here some of the feature requests that were already answered.
Outline:
Rest of the message (about installation, plans to understand the code and maybe contribute, question about Dynamic):
Hi, this project looks quite interesting. I have not tried it yet. What do the numbers in "open browser with http://127.0.0.1:8090" represent? Also, maybe consider including the command line for downloading a GitHub project for convenience.
I might try this in the future. I am currently learning Javascript and I might try to understand the code and add features in the future. Is the current framework limited to 3D graphics via threejs or is it possible to include other features related to Dynamic?
Is the code currently built in such a way that one could develop a notebook that has different coding languages (python, wolfram language, javascript) in different cells ? Mathematica already does this but it does not have syntax highlighting and short documentation when hovering over functions in other languages.
This question has already been asked for jupyterlab here : jupyterlab/jupyterlab#2815. The author here: jupyterlab/jupyterlab#2815 (comment) claims to have made an implementation that does that but I did not test it. There is also another claim on the same thread here jupyterlab/jupyterlab#2815 (comment).
This is an ambitious task I am just exploring the potential of the project at this moment.
Is it possible to do in place evaluation in the notebook cell ? (for example in an expression 4+2+6, select 4+2, then use ctrl+shift+enter and the 4+2 evaluates to 6 without evaluating the entire cell).
Someone already tried doing this with code mirror 6 here: https://observablehq.com/@tophtucker/eval-in-place (or google in place evaluation codemirror).
Why ?
I like in place evaluation as it allows checking the definition or full definition of a function by using Definition or FullDefinition with in place evaluation which allows me to check the entire function definition while remaining in the same notebook cell (rather than creating a new cell that I then have to delete or searching for the function in the notebook).
In place evaluation can also be used to track a variable x during the evaluation by using Dynamic and placing the variable in a comment like (* Dynamic[x] *) then select Dynamic[x] and ctrl+shift+ enter then evaluate the notebook cell to see x changing inside the comment. Example:
(* Dynamic[x] *) x = 0; Do[x++; Pause[1], 4]
I really need this thing, I can't live without it.
Hi:
My use case is to integrate wolfram code in JS framework like Svelte or even vanilla HTML/CSS/JS. It appears that you have all the pieces to make this possible. However, it is almost impossible to do so unless there is a working example included with all steps needed to make it happen. Can you please consider my request?
Thanks,
Gani -
a small problem.
part of the log.
NaN% | 10173427 bytes out of NaN bytes.
NaN% | 10187347 bytes out of NaN bytes.
NaN% | 10218754 bytes out of NaN bytes.
NaN% | 10248594 bytes out of NaN bytes.
File succesfully downloaded
unzipping...
extracted!
I learned how to use vim not too long ago and probably like many vim users, anything other than vim is tedious. As i understand neovim is made to be embeddable so maybe it is possible to use neovim to handle the editing.
An example of using neovim in an electron app is the neovim extension of vscode (currently I am just using the vim extension). An example of vim in the browser is https://github.com/ajaxorg/ace
PS: I am not sure yet whether I can start looking at the code as you were refactoring the code
use dot and extension
.md
, .js
, .wsp
, .html
etc.. in the beginning of the cell
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.