Git Product home page Git Product logo

wolfram-js-frontend's People

Contributors

asukaminato0721 avatar jerryi avatar userrand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

wolfram-js-frontend's Issues

feature request: Multi coding language support

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.

'uv.h' file not found

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 ?

JS Console: `method destroy is not defined for Association`

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.

Make a proper Wolfram Package

Consider to recreate a typical WL package structure.

  1. Create Kernel folder putting all files from modules folder
  2. Make contexts and subcontexts for each. Isolate using BeginPackage
  3. Put public into "Asserts" of PacketInfo.wl
  4. Deploy to WolframPaclet repository
  5. Make it in a way like Needs[WolframJSFrontned]; StartFrontend[host, port...]
  6. Maintain the possiblity to use Dev environment and run build commands

Kernel fails to start

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

why the hard coded number of points in Ploty ?

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] &

Sidebar randomly overflows sometimes

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.

  • Wolfram: "13.0.1 for Linux x86 (64-bit) (January 29, 2022)"
  • Browser: Firefox 120.0.1 (64-bit)
  • Environment: Running inside Ubuntu Distrobox container, wolframscript exported.
  • OS: Fedora Kinoite fedora:fedora/39/x86_64/kinoite 39.20231221.0

UX wise it currently is one of the most important annoying bugs...

Screenshot_20231224_122012

feature request: In place evaluation

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]

Fail to load

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

image

add minimal supported mathematica version in readme

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. :)

Starts with blank window

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.

support linux

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/.

WLJS on Mac M1 install buggy

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.

PlotLegends and PlotLabels not working correctly

For example:

Plot[{Sin[x], Sin[2 x], Sin[3 x]}, {x, 0, 2 Pi}, PlotLegends -> "Expressions"]

doesn't render at all.

And

Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi}, PlotLabels -> "Expressions"]

Lacks the labels it's supposed to have.

I1n2hgb

Cannot install because of connections issue

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

Remove Quirk mode from all pages. It slows down the rendering and disables new features of CSS

Support Codespace and Devcontainer

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.

[Feature Request] Infinite Canvas interface

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.

Crude example:
A notebook describing arithmetic on expressions with head expr

Crude example of an infinite canvas notebook

Feature request: evaluation time for cells

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

Feature Request: Community Plugins/ Packages

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.

Lack some implements

image

but it can be a frontend ๐Ÿ˜„

RowBox, BoxData, and some underlying layout functions.

maybe there can even be some jsx/tsx or frontend template to semi-auto interpret the string to the dom tree. But using a frontend framework is a double-edged sword.

Interpretation Box support

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.

Dynamics

Different types of Dynamics

  1. Update the whole cell by reevaluating it on server (FrontEndUpdateCell)
  2. Reevaluate the part of the content using pure JS engine (see below)

Auto-splitting the code on the backend into static (evaluate on the server) and dynamic part (updated by JS)
Implement Function and Slot in core.js
Store the content of the Function somewhere in the browser

  1. Use Dynamics from WSP's side (see feature request )

Problems with starting

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

WLJS Notebook.app won't open under Sonoma, reports as damaged

I 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?

Colors don't work

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?

Feature request: Remote Kernels

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

Fail to start due to connection issue

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...

List of feature requests

List of feature requests

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:

  1. Would it be possible to implement Iconize with this framework?
  2. Multiple coding languages
  3. In place evaluaiton
  4. Community Plugins/ Packages

1. Would it be possible to implement Iconize with this framework?


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?


2. Multiple coding languages


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.


3. In place evaluation


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]


4 Community Plugins/ Packages

#21

Example full html code requested to integrate wolfram language in JS framework

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 -

NaN during init

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!

Feature request : Option to use Vim/Neovim

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

Expand cell types

  • Wolfram Language
  • Pure JS with some preprocessor (to embed WF expressions)
  • Pure HTML with WSP preprocessor
  • Markdown with some preprocessor
  • Hidden cell...

use dot and extension
.md, .js, .wsp, .html etc.. in the beginning of the cell

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.