apicurio-studio icon indicating copy to clipboard operation
apicurio-studio copied to clipboard

Multi-byte input in multi-line input form does not behave properly.

Open Yuutakasan opened this issue 3 years ago • 9 comments

In the API edit screen, copying and pasting the following characters into a form and then entering and deleting single byte characters after the following characters causes strange behavior. A strange phenomenon occurs in the markdown input and source editing screens. Is it possible to fix this?

It is hard to explain in words, but it seems that the middle of multi-byte characters are deleted, and single-byte characters that should have been deleted are still displayed.

ああ⇒ああ⇒ああaa

I think I am having a problem with the multi-line input form. The following is the form just after copying and pasting. Normally, after pasting, the input position on the keyboard is supposed to be right after the pasted character, but since the input position is at the end of the multibyte character, it is behaving strangely at this point. image image

I don't seem to have the same problem with the single line input form. image

Yuutakasan avatar Jun 09 '21 05:06 Yuutakasan

This might be a bug in the Ace editor itself...I'm not sure. :(

EricWittmann avatar Jun 10 '21 19:06 EricWittmann

I have seen the same phenomenon. But ,I can't put it into words very clearly, but I somehow feel that Apicurio's symptoms are more strange.

https://ace.c9.io/#nav=embedding image

I've posted an Issue to the Ace Editor. https://github.com/ajaxorg/ace/issues/4512

Yuutakasan avatar Jun 11 '21 00:06 Yuutakasan

It's a little strange, but I think it's less of a problem with the current latest version of AceEditor; upgrading the version of Ace Editor in Apicurio studio might help.

Yuutakasan avatar Jun 15 '21 22:06 Yuutakasan

The problem there is that we're pulling in the Ace editor via brace which appears to no longer be updated with the latest Ace editor. We'll probably need a bit more work to upgrade Ace than just tweaking the version # in package.json sadly.

EricWittmann avatar Jun 21 '21 19:06 EricWittmann

@EricWittmann I think ace-build is the original, but is there a reason why you use brace?

Yuutakasan avatar Jun 23 '21 05:06 Yuutakasan

@EricWittmann I found out that there is a problem with the isFullWidth method of the brace package, which has not been updated for several years.

I found that I can work around the problem by applying a patch like this. https://gist.github.com/sinkuu/021ca0d9f6878dc6165ccf6d784075c4

Yuutakasan avatar Jun 28 '21 04:06 Yuutakasan

I don't recall whether ace-build didn't work or I just didn't know about it. brace is the browserify compatible version. Not sure whether ace-builds is also compatible with browserify. We're very outdated on a lot of our UI stuff. We really need to upgrade to React, Patternfly 4, etc. But that's a ton of work.

EricWittmann avatar Jun 29 '21 14:06 EricWittmann

Interesting patch! I wonder if we could apply that patch during the build in some way.

EricWittmann avatar Jun 29 '21 14:06 EricWittmann

@EricWittmann After checking, I realized that this patch was wrong, and I'm working on fixing it. I'm working on a fix for the patch and will send you a PR.

We have been informed that there is a problem in Thai, so it seems that we need to include this support for each language when considering other language versions. For Japanese, the problem will be solved by a patch that we are preparing. https://github.com/ajaxorg/ace/issues/4512

Yuutakasan avatar Jun 29 '21 22:06 Yuutakasan