Open pulyaevskiy opened 3 years ago
@featzima That's great! I don't have the skills to contribute... but I'll keep an eye on it! :)
After going through all the comments, I have few questions.
Disclaimer: I used Zefyr for around two years and then switched to flutter_quill half a year ago. I never worked with Zefyrka. In the last months I fixed a few things on flutter_quill.
- Is zefyr abandoned? It seems from the number of PRs and issues that it is abandoned though :(
I think the maintainer doesn't find the time to work on Zefyr continuously. But about once a year he finds the time and makes good changes to the library. Unfortunately, the changes are not enough for the library to make the library well usable. It is also frustrating that he does not extend collaboration rights so that others can help him maintain. So in my opinion Zefyr is abandoned.
- I see there are two alternative one zefyrka and flutter quill. Both seems to good enough. zefyrka is a seems to be new but direct fork of the zefyr and support all the platforms while flutter quill is quite mature and the maintainer is very active but doesn't support all platform. So anyone who worked on both, what would be your recommendation?
The big advantage of flutter_quill over zefyr is that flutter_quill sticks to the standard (delta format)[https://quilljs.com/docs/delta/]. It also works well on Android, iOS, Windows, macOS and Linux (I haven't tested it on web).
Another advantage of flutter_quill is that the maintainer is very active, but on the other hand relatively inexperienced, which is why PRs are sometimes merged directly without testing, issues are sometimes closed without being resolved and the comments (in my opinion) are a bit rough. Nevertheless, it is super kind of him that he takes the time to maintain this big project.
Why there are no single rich text editor that the community can directly contribute rather than being multiple packages?. This will provide more confidence to the developer that the bugs will be fixed faster and there is no need to go for different location to solve different issues.
Good question, in my opinion there should only be flutter_quill, which is why I am working on it, when I find the time. I think one advantage of Zefyrka is that it can be used directly as a replacement for Zefyr. Whereas flutter_quill uses the standard delta format, so you have to convert your content using this code.
@friebetill Thank you for the quick response.
The big advantage of flutter_quill over zefyr is that flutter_quill sticks to the standard (delta format)[https://quilljs.com/docs/delta/].
I am aware of this and that's why I am edging towards the flutter quill.
It also works well on Android, iOS, Windows, macOS and Linux (I haven't tested it on web).
Actually when I checked on the pub.dev there is only the android and ios tags only, so I thought It only support the mobile but when I checked the example I found all the platforms available and it was no where clearly written that It support all platform, So I think documentation needs some touchup in this regard.
PRs are sometimes merged directly without testing, issues are sometimes closed without being resolved and the comments (in my opinion) are a bit rough.
Yeah I agree with you. Also when I checked the closed issues, there were some issues where there was no solution or indication that the issue was resolved but was closed by the maintainer, So I was somewhat surprised by that.
Nevertheless, it is super kind of him that he takes the time to maintain this big project.
Completely agree on this part.
Good question, in my opinion there should only be flutter_quill, which is why I am working on it, when I find the time. I think one advantage of Zefyrka is that it can be used directly as a replacement for Zefyr. Whereas flutter_quill uses the standard delta format, so you have to convert your content using this code.
Yeah, flutter quill seems to be better in this regard, given the amount invested by the community to resolve the issues and all the contributions. But (Zefryka)[https://github.com/glynskyi/zefyrka] also seems to have some good feature which can be used on the flutter quill. Although I haven't checked the flutter quill deeply so can't be sure that they are already supported or not. Let's see when that will. But from the above discussion I feel flutter quill is better option. Will continue to check both the packages on long term.
I'm using a slightly customized version of Zefyrka and can confirm it's working on web. I could send you a link to my web app to check, but don't know if I can.
We was using Zefyr in our production from the very beginning. However year ago we needed the text color, background color, paragraph alignment and other features so we started to support own fork of Zefyr with required features. However over some time Zefyr support was stopped so we published our fork as Zefyrka
package and continue with that.
We also discussed to use flutter_quill
however it doesn't fit our requirements. Because the desktop and mobile are important platforms for us and because the flutter_quill
has a lot of dependencies that don't have desktop support it's hard to use it.
So my opinion is the following:
flutter_quill
is better choiceZefyrka
is better choiceIMHO, to support three different platforms and driving to reduce dependencies, we should export an interface package as follows. If one choose to do desktop, one should import lib
, desktop
packages. Mobile and web are similar.
lib ┣ reference interface // business logic ┃ interface ┣ define embed and other interfaces ┃ web ┣ reference interface and implement it ┃ mobile ┣ reference interface and implement it ┃ desktop ┣ reference interface and implement it
I can try it out in flutter_quill when I have free time. Also it may be useful to use dependency injection https://medium.com/flutter-community/dependency-injection-in-flutter-f19fb66a0740 https://resocoder.com/2020/02/04/injectable-flutter-dart-equivalent-to-dagger-angular-dependency-injection/
Hey everyone,
Just to answer this question:
Is Zefyr abandoned?
No. I have not been actively contributing to it, which is true. But ultimately it's still a project I'd like to work on.
And actually there are some recent changes which got merged into 1.0-dev branch including support for Flutter 2.x (stable) and some null-safety improvements. Thanks to contributions from @Amir-P .
I'm still pretty limited with my time, but I'm thinking of a way to enable better collaboration. You can expect a pretty slow pace for the time being though.
@pulyaevskiy the 1.0 announcement was made 10 months ago and 7 months of that time went by without a single commit to the 1.0-dev branch. From the perspective of a developer trying to use this package in production, 7 months of absence does constitute the project being abandoned hence why we're moving on to super_editor. What's to stop these delays from recurring if you're the sole maintainer?
I kindly request that you update https://github.com/memspace/zefyr/projects/1 with all the recent 1.0 issues you'd like to be solved then appoint some maintainers to focus specifically on the issues you've curated there?
@pulyaevskiy It's good to see that the creator is still working on the project. And I completely agree with what @britannio said.
I kindly request that you update https://github.com/memspace/zefyr/projects/1 with all the recent 1.0 issues you'd like to be solved then appoint some maintainers to focus specifically on the issues you've curated there?
I believe that no single person can give a large amount of time and have their work of their own but I think the flutter community is sufficiently big and knowledgeable to help you continue to maintain this repo. I think you should get add some contributors to this project who have either have good amount PR's to this repo or whatever way you feel good enough to decide the contributors. But in the end, final decision is yours.
My suggestion is to be really selective on contributors. From my personal experience maintaining flutter_quill repo, most contributors do not have a good grasp of the code base. Some does not even know flutter has master, dev, beta channels and send random PRs for their channel. You don't want them to break your code.
@britannio @0Vipin0
I kindly request that you update https://github.com/memspace/zefyr/projects/1 with all the recent 1.0 issues you'd like to be solved then appoint some maintainers to focus specifically on the issues you've curated there?
I was thinking about something along these lines as well.
Re: contributors
I'd be happy to add contributors to the project. That said, I'd be hesitant to give push or merge permissions right away. The way I'll likely to approach this is to first get an opportunity to work on a few PRs together so that there is good understanding of the codebase and the design choices that were made and to be made still.
From my end I need to work on better documentation, both architectural and conceptual. As well as some actual tech specs for proposed features. Being a sole maintainer makes it much less critical and allows to focus on just coding. This will have to change.
In short, I'm planning to do what @britannio requested. If there are still volunteers to actively contribute to the project, feel free to reach out to me here or via email, whatever works best. We'll arrange some sort of group for collaboration.
Any plan to address #305 "Copy text to clipboard with style" in the 1.0 release? I currently cannot copy & paste content with text styles.
Any plan to address #305 "Copy text to clipboard with style" in the 1.0 release? I currently cannot copy & paste content with text styles.
There is a limitation by Flutter's engine. Currently it's not supported to set data for clipboard other than plain text. Until that isn't changed, there is not much we can do on Zefyr's side. @nipunasudha
Any plan to address #305 "Copy text to clipboard with style" in the 1.0 release? I currently cannot copy & paste content with text styles.
There is a limitation by Flutter's engine. Currently it's not supported to set data for clipboard other than plain text. Until that isn't changed, there is not much we can do on Zefyr's side. @nipunasudha
That's too bad! Tradeoff of having to maintain cross platform support, which is understandable. Thank you very much for the quick response.
Any plan to address #305 "Copy text to clipboard with style" in the 1.0 release? I currently cannot copy & paste content with text styles.
There is a limitation by Flutter's engine. Currently it's not supported to set data for clipboard other than plain text. Until that isn't changed, there is not much we can do on Zefyr's side. @nipunasudha
That's too bad! Tradeoff of having to maintain cross platform support, which is understandable. Thank you very much for the quick response.
There is still an option of writing a custom platform plugin which adds rich text clipboard integration. I believe most platforms which support it use html content to describe rich text. At least from my limited research into this issue a while back.
This would of course depend on whether particular target platform supports setting some form of rich text in the clipboard.
Any plan to address #305 "Copy text to clipboard with style" in the 1.0 release? I currently cannot copy & paste content with text styles.
There is a limitation by Flutter's engine. Currently it's not supported to set data for clipboard other than plain text. Until that isn't changed, there is not much we can do on Zefyr's side. @nipunasudha
That's too bad! Tradeoff of having to maintain cross platform support, which is understandable. Thank you very much for the quick response.
There is still an option of writing a custom platform plugin which adds rich text clipboard integration. I believe most platforms which support it use html content to describe rich text. At least from my limited research into this issue a while back.
This would of course depend on whether particular target platform supports setting some form of rich text in the clipboard.
I was thinking about doing this a few weeks ago but didn't have the time. It's possible at least for mobile platforms which I was interested in.
Thanks to the help the community and especially @Amir-P , @amantoux and @cgestes we just released the first release candidate versions of both Notus and Zefyr packages:
https://pub.dev/packages/zefyr/versions/1.0.0-rc.1 https://pub.dev/packages/notus/versions/1.0.0-rc.1
Please refer to the changelog of both packages for more details. Note that 1.0.0-rc.1 already comes with support for Flutter 2.8 which was just release earlier today.
We're definitely getting closer to the stable release, but it may still be several months away. That said, with release of a release candidate I'm hoping more people would be willing to try the package since it's in a much more stable state, comparing to the last dev release. It is still not a stable release so incomplete functionality and occasional bugs are to be expected.
Zefyr 1.0.0.-rc.2
is out: https://pub.dev/packages/zefyr/versions/1.0.0-rc.2
Shift
+ Click
support for extending selection on desktop (#577)Zefyr 1.0.0.-rc.3
is out: https://pub.dev/packages/zefyr/versions/1.0.0-rc.3
Cmd
+ Click
(macOS) or Ctrl
+ Click
(windows, linux)@pulyaevskiy I noticed the comment for "SpanEmbed", and I see the editor on quilljs can embed latex inline, does this means "the contract" is settled by quilljs? and the "SpanEmbed" can be supported?
https://quilljs.com/docs/formats
/// An object which can be embedded on the same line (inline) with regular text.
///
/// Span embeds are not currently supported by Notus document model and this
/// class exists to establish the contract for future work.
// TODO: document model currently only supports BlockEmbeds and need to be updated to support SpanEmbeds.
On Tue, Dec 28, 2021, 14:05 周向涛 @.***> wrote:
@pulyaevskiy https://github.com/pulyaevskiy I noticed the comment for "SpanEmbed", and I see the editor on quilljs can embed latex inline, does this means "the contract" is settled by quilljs? and the "SpanEmbed" can be supported?
It means that you need to implements embeds for span. It is currently only implemented for blocks. (Full line). Btw Zefyr doesn't strictly follow quilljs formats. It only use the delta format in a similar way.
https://quilljs.com/docs/formats
/// An object which can be embedded on the same line (inline) with regular text. /// /// Span embeds are not currently supported by Notus document model and this /// class exists to establish the contract for future work. // TODO: document model currently only supports BlockEmbeds and need to be updated to support SpanEmbeds.
[image: image] https://user-images.githubusercontent.com/545656/147564370-3c7ae680-43f2-4bfe-b1fc-1099017111d1.png
— Reply to this email directly, view it on GitHub https://github.com/memspace/zefyr/issues/409#issuecomment-1002060323, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAL75IOHIF4YQ7GRFNTSALUTGRXPANCNFSM4R5LHQ6Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID: @.***>
On Tue, Dec 28, 2021, 14:05 周向涛 @.> wrote: @pulyaevskiy https://github.com/pulyaevskiy I noticed the comment for "SpanEmbed", and I see the editor on quilljs can embed latex inline, does this means "the contract" is settled by quilljs? and the "SpanEmbed" can be supported? It means that you need to implements embeds for span. It is currently only implemented for blocks. (Full line). Btw Zefyr doesn't strictly follow quilljs formats. It only use the delta format in a similar way. https://quilljs.com/docs/formats … /// An object which can be embedded on the same line (inline) with regular text. /// /// Span embeds are not currently supported by Notus document model and this /// class exists to establish the contract for future work. // TODO: document model currently only supports BlockEmbeds and need to be updated to support SpanEmbeds. [image: image] https://user-images.githubusercontent.com/545656/147564370-3c7ae680-43f2-4bfe-b1fc-1099017111d1.png — Reply to this email directly, view it on GitHub <#409 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAL75IOHIF4YQ7GRFNTSALUTGRXPANCNFSM4R5LHQ6Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub. You are receiving this because you were mentioned.Message ID: @.>
at zefyr/packages/zefyr/lib/src/widgets/text_line.dart line 122, I think it is restricted the way to build a WidgetSpan as an inline embed, is that correct?
119 @override
120 Widget build(BuildContext context) {
121 assert(debugCheckHasMediaQuery(context));
122 if (widget.node.hasEmbed) {
123 final embed = widget.node.children.single as EmbedNode;
124 return EmbedProxy(child: widget.embedBuilder(context, embed));
125 }
and I modified the code a little, try to make an inline embed widget, it worked. the red frame is where the modify is. maybe, change function "_segmentToTextSpan" to build inline embed to WidgetSpan will enable inline embed?
I'm following the development of this. I want to make a more complicated note taking app.
Many thanks for not making me make something like this. :D
Zefyr1.0 When can I use this?
How are you guys? is work going on? v1.0.0- rc5 does not launch in flutter 3
It's definitely dead, I suppose...
How are you guys? is work going on?
not much happening sadly.
v1.0.0- rc5 does not launch in flutter 3
I may have the fixes you need here (it works with flutter 3): https://github.com/jotshq/zefyr
@cgestes , how do I activate your branch Im trying to migrate from a very old flutter version, and Im having some issues due to missing physics, ZefyrScaffold, ZefyrView
@cgestes , how do I activate your branch Im trying to migrate from a very old flutter version, and Im having some issues due to missing physics, ZefyrScaffold, ZefyrView
Hey , got any solution?
@cgestes , how do I activate your branch Im trying to migrate from a very old flutter version, and Im having some issues due to missing physics, ZefyrScaffold, ZefyrView
Hey , got any solution?
Hey, you can use Fleather for now. It's a fork me and @amantoux working on. https://github.com/fleather-editor/fleather
hello guys. can anybody help me with ZefyrValidator? because i'm working with ZefyrEditor in Flutter and I want to add validator (cannot be empty), but I can't find any clue in the documentation.
Thank you in advance
Hi everyone,
I wanted to post this as an announcement that there is currently work in progress on the new version of Zefyr which will be eventually released as a stable 1.0 version.
There is a lot of changes in this version, it's practically an almost complete rewrite of the package, but it comes with quite a few benefits.
You can head over to https://memspace.github.io/zefyr/#/ and see the editor for yourself in its current state.
The main reason I wanted to get it out there is to let everyone know that there has been some progress lately. Also this is the reason I'm not looking at any PRs at the moment. I'd like to get 1.0-dev branch into a good shape first and then go over the open issues and PRs in order to see which ones are still relevant and if they can be incorporated in the 1.0 release.
The best way for you to stay updated on the progress here is to subscribe to this issue. I will be posting updates in comments below.
The first dev release is out on Pub: https://pub.dev/packages/zefyr/versions/1.0.0-dev.1.0
I'd encourage everyone to give it a try and see if things are working well. Make sure to checkout the changelog for migration instructions.