Is your feature request related to a problem? Please describe.
The monolithic react component makes it very difficult to unwrap when something goes wrong and is not easily extensible by third- or first-party code without a prescriptive API. Additionally, hand-coding things to look like core components loses out on some of the benefits provided by lab, e.g. accessibility and themability improvements.
As a case in point, develop has currently picked up the seemingly-endemic issue of input tags thrashing on focus when value change.
Even if it was extensible, and robust, it would demand whatever downstream provider was using would need to be written in react.
Describe the solution you'd like
Reorganize the top-level structure of the extension to use more core lab components
the top-level widget is a plain-old MainAreaWidget (with a regular toolbar, etc.)
this will improve "active" management, etc.
use the lab IFrame for the actual VideoChat
should further clean up the CSS and mouse behavior
update the provider API (unreleased anyway) more like other lab patterns, with a createNew for room listing and creation
move the various room UIs into their plugins
many of the leaf components will still be react-based tsx, but use lab's VDomRenderer
Describe alternatives you've considered
somehow make react more composable
went down this route, and didn't find a lot of existing patterns that felt very good... this made the various Props objects even longer
drop react altogether
again, already stuck with it in lab, and straight lumino or vanilla dom is annoying
Additional context
branch: develop
this is similar to the effort on jupyterlab-pullrequests
Is your feature request related to a problem? Please describe.
The monolithic react component makes it very difficult to unwrap when something goes wrong and is not easily extensible by third- or first-party code without a prescriptive API. Additionally, hand-coding things to look like core components loses out on some of the benefits provided by lab, e.g. accessibility and themability improvements.
As a case in point,
develop
has currently picked up the seemingly-endemic issue ofinput
tags thrashing on focus whenvalue
change.Even if it was extensible, and robust, it would demand whatever downstream provider was using would need to be written in react.
Describe the solution you'd like
MainAreaWidget
(with a regular toolbar, etc.)IFrame
for the actual VideoChatcreateNew
for room listing and creationVDomRenderer
Describe alternatives you've considered
Props
objects even longerAdditional context
develop
jupyterlab-pullrequests