-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DISCUSS] Goals and architecture of jupyter-ui-toolkit #5
Comments
Thanks for reaching out @echarles
Thanks for sharing the info.
The idea behind this repository is to evaluate web components as a basic technology to be reuse across Jupyter projects that come with coherent theme, keyboard navigation (for advanced components such tabs panel) and backed with some accessibility coloring rules with the lesser opinionated technological constrains. That said, I'm learning on the way. And very shortly I will use this package in other projects to challenge the technology and some attention point raised during the JupyterLab team meetings. I hope that I could then provide more documentation on good practices.
A behaviour layer seems mandatory to not code yet another framework from scratch.
At first I indeed started with
That indeed will be good if at the team level we could decide what should be the technologies to push forward in the ecosystem. The future Jupyter Software Committee Council would be a good place. But it is unlikely to be up and running in the short future. So seems that a JEP is the best official way for pushing such idea.
That is a important topic indeed although I'm lacking experience on that front. But I happily discuss that further. Although it is not necessary to couple it with starting a toolkit, it should definitely be considered when comparing components technologies and the ease to connect them to a state management system. |
Thx for engaging on this discussion. I am looking the web-components in relation with React.js, and an alternative framework to Fast (https://www.fast.design) is Lit (https://lit.dev) which has the notion of Reactive controllers (https://lit.dev/docs/composition/controllers - not sure what is bring, and not sure if Fast has something similar). |
Indeed I saw that feature in Lit too. I did not spend much time learning Lit neither. For what I got, the best parallel I can make is custom hook in React JS - aka adding behavior to a component without mixing like react-router hooks. In Fast, they don't have such feature. |
I found a confirmation in @lit-labs/react that the reactive controller is a mean similar to the hook mechanism in React. |
Thx, I have integrated that info in the jep proposal datalayer/jupyter-ui@79e83a6 |
React experimental release now supports web components, see codesandbox examples which are pretty self-explanatory
To ease the migration, I wonder if this repo should simply rely on the On facebook/react#11347 (comment), @gaearon clearly mentions Relying on the experimental for now would also allow to try out the performance improvement features planned for v18. |
I quickly try to set it up. But I cannot use it in JupyterLab as the federation is pulling react v17. So I think I will open a branch with a standalone react gallery in v18 experimental while continuing alignment of the components and the react-components packages as it is not yet certain it will be part of v18. |
For try outs, you can force react versions via
If this is not too much work, that will be useful. |
@fcollonval thx for working on this.
I am linking here the work I am doing to create high level React.js components backed by the JupyterLab widgets: with
jupyter-react
https://github.com/datalayer/jupyter-react, you can add live notebooks, cells, terminals... in any React.js application. This can be used in existing solutions like e.g. Docusaurus or rich text editors like Slate or any custom user application. I have gathered an example repository to showcase such usages https://github.com/datalayer/jupyter-examples. If you want to know more on that, I am giving a talk at FOSDEM next Saturday (5th Feb 2022) https://fosdem.org/2022/schedule/event/lt_jupyter (online broadcasting).It would be good to further discuss about the goals of this repository as well as the current technical choice. I dump here a few questions and reflexions and would love to further articulate and formalise in a document based on brainstorming with interested people:
jupyter-ui-toolkit
ships for now some low-level widget (like buttons, slider, select...) but does not provide any guidance on how to build on top of those. On one side, this is good as it allows supporting various technologies (react.js, vue...) but on the other side, there is a risk that developers create disparate and incompatible usage, resulting in frustration and fragmentation.The text was updated successfully, but these errors were encountered: